From 6f1dcbc8d4741a0d03816ee7926e6db3583e1b9c Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Wed, 16 Feb 2022 20:31:04 -0800 Subject: [PATCH 001/150] Update playground to 6.0 --- Elements.Playground/Elements.Playground.csproj | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Elements.Playground/Elements.Playground.csproj b/Elements.Playground/Elements.Playground.csproj index 83a14308e..33d8d40bb 100644 --- a/Elements.Playground/Elements.Playground.csproj +++ b/Elements.Playground/Elements.Playground.csproj @@ -1,11 +1,12 @@ - net5.0 + net6.0 en false false false + true From c509b41da3a2a81cfa23ff718c41af3623930979 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Wed, 16 Feb 2022 20:39:57 -0800 Subject: [PATCH 002/150] Add the default project assets. --- Elements.Wasm/App.razor | 12 + Elements.Wasm/Elements.Wasm.csproj | 19 + Elements.Wasm/Program.cs | 11 + Elements.Wasm/Properties/launchSettings.json | 30 + Elements.Wasm/_Imports.razor | 10 + Elements.Wasm/wwwroot/css/app.css | 64 +++ .../wwwroot/css/bootstrap/bootstrap.min.css | 7 + .../css/bootstrap/bootstrap.min.css.map | 1 + .../wwwroot/css/open-iconic/FONT-LICENSE | 86 +++ .../wwwroot/css/open-iconic/ICON-LICENSE | 21 + .../wwwroot/css/open-iconic/README.md | 114 ++++ .../font/css/open-iconic-bootstrap.min.css | 1 + .../open-iconic/font/fonts/open-iconic.eot | Bin 0 -> 28196 bytes .../open-iconic/font/fonts/open-iconic.otf | Bin 0 -> 20996 bytes .../open-iconic/font/fonts/open-iconic.svg | 543 ++++++++++++++++++ .../open-iconic/font/fonts/open-iconic.ttf | Bin 0 -> 28028 bytes .../open-iconic/font/fonts/open-iconic.woff | Bin 0 -> 14984 bytes Elements.Wasm/wwwroot/favicon.ico | Bin 0 -> 5430 bytes Elements.Wasm/wwwroot/icon-192.png | Bin 0 -> 2626 bytes Elements.Wasm/wwwroot/index.html | 25 + .../wwwroot/sample-data/weather.json | 27 + 21 files changed, 971 insertions(+) create mode 100644 Elements.Wasm/App.razor create mode 100644 Elements.Wasm/Elements.Wasm.csproj create mode 100644 Elements.Wasm/Program.cs create mode 100644 Elements.Wasm/Properties/launchSettings.json create mode 100644 Elements.Wasm/_Imports.razor create mode 100644 Elements.Wasm/wwwroot/css/app.css create mode 100644 Elements.Wasm/wwwroot/css/bootstrap/bootstrap.min.css create mode 100644 Elements.Wasm/wwwroot/css/bootstrap/bootstrap.min.css.map create mode 100644 Elements.Wasm/wwwroot/css/open-iconic/FONT-LICENSE create mode 100644 Elements.Wasm/wwwroot/css/open-iconic/ICON-LICENSE create mode 100644 Elements.Wasm/wwwroot/css/open-iconic/README.md create mode 100644 Elements.Wasm/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css create mode 100644 Elements.Wasm/wwwroot/css/open-iconic/font/fonts/open-iconic.eot create mode 100644 Elements.Wasm/wwwroot/css/open-iconic/font/fonts/open-iconic.otf create mode 100644 Elements.Wasm/wwwroot/css/open-iconic/font/fonts/open-iconic.svg create mode 100644 Elements.Wasm/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf create mode 100644 Elements.Wasm/wwwroot/css/open-iconic/font/fonts/open-iconic.woff create mode 100644 Elements.Wasm/wwwroot/favicon.ico create mode 100644 Elements.Wasm/wwwroot/icon-192.png create mode 100644 Elements.Wasm/wwwroot/index.html create mode 100644 Elements.Wasm/wwwroot/sample-data/weather.json diff --git a/Elements.Wasm/App.razor b/Elements.Wasm/App.razor new file mode 100644 index 000000000..623580d09 --- /dev/null +++ b/Elements.Wasm/App.razor @@ -0,0 +1,12 @@ + + + + + + + Not found + +

Sorry, there's nothing at this address.

+
+
+
diff --git a/Elements.Wasm/Elements.Wasm.csproj b/Elements.Wasm/Elements.Wasm.csproj new file mode 100644 index 000000000..00da8e19b --- /dev/null +++ b/Elements.Wasm/Elements.Wasm.csproj @@ -0,0 +1,19 @@ + + + + net6.0 + enable + enable + true + + + + + + + + + + + + diff --git a/Elements.Wasm/Program.cs b/Elements.Wasm/Program.cs new file mode 100644 index 000000000..4749d1339 --- /dev/null +++ b/Elements.Wasm/Program.cs @@ -0,0 +1,11 @@ +using Microsoft.AspNetCore.Components.Web; +using Microsoft.AspNetCore.Components.WebAssembly.Hosting; +using Elements.Wasm; + +var builder = WebAssemblyHostBuilder.CreateDefault(args); +// builder.RootComponents.Add("#app"); +// builder.RootComponents.Add("head::after"); + +builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); + +await builder.Build().RunAsync(); diff --git a/Elements.Wasm/Properties/launchSettings.json b/Elements.Wasm/Properties/launchSettings.json new file mode 100644 index 000000000..ea9610c7e --- /dev/null +++ b/Elements.Wasm/Properties/launchSettings.json @@ -0,0 +1,30 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:41674", + "sslPort": 44385 + } + }, + "profiles": { + "Elements.Wasm": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "applicationUrl": "https://localhost:7289;http://localhost:5072", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/Elements.Wasm/_Imports.razor b/Elements.Wasm/_Imports.razor new file mode 100644 index 000000000..aae8e8589 --- /dev/null +++ b/Elements.Wasm/_Imports.razor @@ -0,0 +1,10 @@ +@using System.Net.Http +@using System.Net.Http.Json +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.AspNetCore.Components.WebAssembly.Http +@using Microsoft.JSInterop +@using Elements.Wasm +@using Elements.Wasm.Shared diff --git a/Elements.Wasm/wwwroot/css/app.css b/Elements.Wasm/wwwroot/css/app.css new file mode 100644 index 000000000..7157ee8f4 --- /dev/null +++ b/Elements.Wasm/wwwroot/css/app.css @@ -0,0 +1,64 @@ +@import url('open-iconic/font/css/open-iconic-bootstrap.min.css'); + +html, body { + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; +} + +h1:focus { + outline: none; +} + +a, .btn-link { + color: #0071c1; +} + +.btn-primary { + color: #fff; + background-color: #1b6ec2; + border-color: #1861ac; +} + +.content { + padding-top: 1.1rem; +} + +.valid.modified:not([type=checkbox]) { + outline: 1px solid #26b050; +} + +.invalid { + outline: 1px solid red; +} + +.validation-message { + color: red; +} + +#blazor-error-ui { + background: lightyellow; + bottom: 0; + box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2); + display: none; + left: 0; + padding: 0.6rem 1.25rem 0.7rem 1.25rem; + position: fixed; + width: 100%; + z-index: 1000; +} + + #blazor-error-ui .dismiss { + cursor: pointer; + position: absolute; + right: 0.75rem; + top: 0.5rem; + } + +.blazor-error-boundary { + background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121; + padding: 1rem 1rem 1rem 3.7rem; + color: white; +} + + .blazor-error-boundary::after { + content: "An error has occurred." + } diff --git a/Elements.Wasm/wwwroot/css/bootstrap/bootstrap.min.css b/Elements.Wasm/wwwroot/css/bootstrap/bootstrap.min.css new file mode 100644 index 000000000..02ae65b5f --- /dev/null +++ b/Elements.Wasm/wwwroot/css/bootstrap/bootstrap.min.css @@ -0,0 +1,7 @@ +@charset "UTF-8";/*! + * Bootstrap v5.1.0 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors + * Copyright 2011-2021 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-rgb:33,37,41;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;padding-right:var(--bs-gutter-x,.75rem);padding-left:var(--bs-gutter-x,.75rem);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x) * -.5);margin-left:calc(var(--bs-gutter-x) * -.5)}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-bg:transparent;--bs-table-accent-bg:transparent;--bs-table-striped-color:#212529;--bs-table-striped-bg:rgba(0, 0, 0, 0.05);--bs-table-active-color:#212529;--bs-table-active-bg:rgba(0, 0, 0, 0.1);--bs-table-hover-color:#212529;--bs-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg:#cfe2ff;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:#000;border-color:#bacbe6}.table-secondary{--bs-table-bg:#e2e3e5;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:#000;border-color:#cbccce}.table-success{--bs-table-bg:#d1e7dd;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:#000;border-color:#bcd0c7}.table-info{--bs-table-bg:#cff4fc;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:#000;border-color:#badce3}.table-warning{--bs-table-bg:#fff3cd;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:#000;border-color:#e6dbb9}.table-danger{--bs-table-bg:#f8d7da;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:#000;border-color:#dfc2c4}.table-light{--bs-table-bg:#f8f9fa;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:#000;border-color:#dfe0e1}.table-dark{--bs-table-bg:#212529;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:#fff;border-color:#373b3e}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control{padding:1rem .75rem}.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(25,135,84,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#198754}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group .form-control.is-valid,.input-group .form-select.is-valid,.was-validated .input-group .form-control:valid,.was-validated .input-group .form-select:valid{z-index:1}.input-group .form-control.is-valid:focus,.input-group .form-select.is-valid:focus,.was-validated .input-group .form-control:valid:focus,.was-validated .input-group .form-select:valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#dc3545}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#dc3545}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#dc3545}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group .form-control.is-invalid,.input-group .form-select.is-invalid,.was-validated .input-group .form-control:invalid,.was-validated .input-group .form-select:invalid{z-index:2}.input-group .form-control.is-invalid:focus,.input-group .form-select.is-invalid:focus,.was-validated .input-group .form-control:invalid:focus,.was-validated .input-group .form-select:invalid:focus{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-primary{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-primary:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-check:active+.btn-primary,.btn-check:checked+.btn-primary,.btn-primary.active,.btn-primary:active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:active+.btn-primary:focus,.btn-check:checked+.btn-primary:focus,.btn-primary.active:focus,.btn-primary:active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-check:active+.btn-secondary,.btn-check:checked+.btn-secondary,.btn-secondary.active,.btn-secondary:active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:active+.btn-secondary:focus,.btn-check:checked+.btn-secondary:focus,.btn-secondary.active:focus,.btn-secondary:active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-success{color:#fff;background-color:#198754;border-color:#198754}.btn-success:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-check:active+.btn-success,.btn-check:checked+.btn-success,.btn-success.active,.btn-success:active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:active+.btn-success:focus,.btn-check:checked+.btn-success:focus,.btn-success.active:focus,.btn-success:active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-info{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-info:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+.btn-info,.btn-info:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-check:active+.btn-info,.btn-check:checked+.btn-info,.btn-info.active,.btn-info:active,.show>.btn-info.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:active+.btn-info:focus,.btn-check:checked+.btn-info:focus,.btn-info.active:focus,.btn-info:active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-info.disabled,.btn-info:disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-check:active+.btn-warning,.btn-check:checked+.btn-warning,.btn-warning.active,.btn-warning:active,.show>.btn-warning.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:active+.btn-warning:focus,.btn-check:checked+.btn-warning:focus,.btn-warning.active:focus,.btn-warning:active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-check:active+.btn-danger,.btn-check:checked+.btn-danger,.btn-danger.active,.btn-danger:active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:active+.btn-danger:focus,.btn-check:checked+.btn-danger:focus,.btn-danger.active:focus,.btn-danger:active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-light{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-check:active+.btn-light,.btn-check:checked+.btn-light,.btn-light.active,.btn-light:active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:active+.btn-light:focus,.btn-check:checked+.btn-light:focus,.btn-light.active:focus,.btn-light:active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-light.disabled,.btn-light:disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-dark{color:#fff;background-color:#212529;border-color:#212529}.btn-dark:hover{color:#fff;background-color:#1c1f23;border-color:#1a1e21}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#1c1f23;border-color:#1a1e21;box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-check:active+.btn-dark,.btn-check:checked+.btn-dark,.btn-dark.active,.btn-dark:active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:active+.btn-dark:focus,.btn-check:checked+.btn-dark:focus,.btn-dark.active:focus,.btn-dark:active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#212529;border-color:#212529}.btn-outline-primary{color:#0d6efd;border-color:#0d6efd}.btn-outline-primary:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-check:active+.btn-outline-primary,.btn-check:checked+.btn-outline-primary,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show,.btn-outline-primary:active{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:active+.btn-outline-primary:focus,.btn-check:checked+.btn-outline-primary:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus,.btn-outline-primary:active:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#0d6efd;background-color:transparent}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-check:active+.btn-outline-secondary,.btn-check:checked+.btn-outline-secondary,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show,.btn-outline-secondary:active{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:active+.btn-outline-secondary:focus,.btn-check:checked+.btn-outline-secondary:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus,.btn-outline-secondary:active:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-success{color:#198754;border-color:#198754}.btn-outline-success:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-check:active+.btn-outline-success,.btn-check:checked+.btn-outline-success,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show,.btn-outline-success:active{color:#fff;background-color:#198754;border-color:#198754}.btn-check:active+.btn-outline-success:focus,.btn-check:checked+.btn-outline-success:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus,.btn-outline-success:active:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#198754;background-color:transparent}.btn-outline-info{color:#0dcaf0;border-color:#0dcaf0}.btn-outline-info:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-check:active+.btn-outline-info,.btn-check:checked+.btn-outline-info,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show,.btn-outline-info:active{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:active+.btn-outline-info:focus,.btn-check:checked+.btn-outline-info:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus,.btn-outline-info:active:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#0dcaf0;background-color:transparent}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-check:active+.btn-outline-warning,.btn-check:checked+.btn-outline-warning,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show,.btn-outline-warning:active{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:active+.btn-outline-warning:focus,.btn-check:checked+.btn-outline-warning:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus,.btn-outline-warning:active:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-check:active+.btn-outline-danger,.btn-check:checked+.btn-outline-danger,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show,.btn-outline-danger:active{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:active+.btn-outline-danger:focus,.btn-check:checked+.btn-outline-danger:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus,.btn-outline-danger:active:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-check:active+.btn-outline-light,.btn-check:checked+.btn-outline-light,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show,.btn-outline-light:active{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:active+.btn-outline-light:focus,.btn-check:checked+.btn-outline-light:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus,.btn-outline-light:active:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-dark{color:#212529;border-color:#212529}.btn-outline-dark:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-check:active+.btn-outline-dark,.btn-check:checked+.btn-outline-dark,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show,.btn-outline-dark:active{color:#fff;background-color:#212529;border-color:#212529}.btn-check:active+.btn-outline-dark:focus,.btn-check:checked+.btn-outline-dark:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus,.btn-outline-dark:active:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#212529;background-color:transparent}.btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}.btn-link:hover{color:#0a58ca}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropend,.dropstart,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#1e2125;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}.dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:focus,.dropdown-menu-dark .dropdown-item:hover{color:#fff;background-color:rgba(255,255,255,.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;color:#0d6efd;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:#0a58ca}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background:0 0;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:0 0;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#0d6efd}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas-header{display:none}.navbar-expand-sm .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-sm .offcanvas-bottom,.navbar-expand-sm .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas-header{display:none}.navbar-expand-md .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-md .offcanvas-bottom,.navbar-expand-md .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas-header{display:none}.navbar-expand-lg .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-lg .offcanvas-bottom,.navbar-expand-lg .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas-header{display:none}.navbar-expand-xl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xl .offcanvas-bottom,.navbar-expand-xl .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xxl .offcanvas-bottom,.navbar-expand-xxl .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas-header{display:none}.navbar-expand .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand .offcanvas-bottom,.navbar-expand .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.55)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.55);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.55)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.55)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.55);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.55)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1rem 1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}.card-header-pills{margin-right:-.5rem;margin-left:-.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-group>.card{margin-bottom:.75rem}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#212529;text-align:left;background-color:#fff;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#0c63e4;background-color:#e7f1ff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.125)}.accordion-button:not(.collapsed)::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}.accordion-button::after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.accordion-header{margin-bottom:0}.accordion-item{background-color:#fff;border:1px solid rgba(0,0,0,.125)}.accordion-item:first-of-type{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;flex-wrap:wrap;padding:0 0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#0d6efd;text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#0a58ca;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;color:#0a58ca;background-color:#e9ecef;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem 1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{color:#636464;background-color:#fefefe;border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}.alert-dark .alert-link{color:#101214}@-webkit-keyframes progress-bar-stripes{0%{background-position-x:1rem}}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#0d6efd;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#212529;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25);opacity:1}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem rgba(0,0,0,.15);border-radius:.25rem}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal{position:fixed;top:0;left:0;z-index:1055;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .btn-close{padding:.5rem .5rem;margin:-.5rem -.5rem -.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[data-popper-placement^=right],.bs-tooltip-end{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[data-popper-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[data-popper-placement^=left],.bs-tooltip-start{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f0f0f0}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,.2);border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem 1rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@-webkit-keyframes spinner-border{to{transform:rotate(360deg)}}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.offcanvas{position:fixed;bottom:0;z-index:1045;display:flex;flex-direction:column;max-width:100%;visibility:hidden;background-color:#fff;background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1rem}.offcanvas-header .btn-close{padding:.5rem .5rem;margin-top:-.5rem;margin-right:-.5rem;margin-bottom:-.5rem}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;padding:1rem 1rem;overflow-y:auto}.offcanvas-start{top:0;left:0;width:400px;border-right:1px solid rgba(0,0,0,.2);transform:translateX(-100%)}.offcanvas-end{top:0;right:0;width:400px;border-left:1px solid rgba(0,0,0,.2);transform:translateX(100%)}.offcanvas-top{top:0;right:0;left:0;height:30vh;max-height:100%;border-bottom:1px solid rgba(0,0,0,.2);transform:translateY(-100%)}.offcanvas-bottom{right:0;left:0;height:30vh;max-height:100%;border-top:1px solid rgba(0,0,0,.2);transform:translateY(100%)}.offcanvas.show{transform:none}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentColor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{-webkit-animation:placeholder-glow 2s ease-in-out infinite;animation:placeholder-glow 2s ease-in-out infinite}@-webkit-keyframes placeholder-glow{50%{opacity:.2}}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;-webkit-animation:placeholder-wave 2s linear infinite;animation:placeholder-wave 2s linear infinite}@-webkit-keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.link-primary{color:#0d6efd}.link-primary:focus,.link-primary:hover{color:#0a58ca}.link-secondary{color:#6c757d}.link-secondary:focus,.link-secondary:hover{color:#565e64}.link-success{color:#198754}.link-success:focus,.link-success:hover{color:#146c43}.link-info{color:#0dcaf0}.link-info:focus,.link-info:hover{color:#3dd5f3}.link-warning{color:#ffc107}.link-warning:focus,.link-warning:hover{color:#ffcd39}.link-danger{color:#dc3545}.link-danger:focus,.link-danger:hover{color:#b02a37}.link-light{color:#f8f9fa}.link-light:focus,.link-light:hover{color:#f9fafb}.link-dark{color:#212529}.link-dark:focus,.link-dark:hover{color:#1a1e21}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:calc(3 / 4 * 100%)}.ratio-16x9{--bs-aspect-ratio:calc(9 / 16 * 100%)}.ratio-21x9{--bs-aspect-ratio:calc(9 / 21 * 100%)}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:1px;min-height:1em;background-color:currentColor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:1px solid #dee2e6!important}.border-0{border:0!important}.border-top{border-top:1px solid #dee2e6!important}.border-top-0{border-top:0!important}.border-end{border-right:1px solid #dee2e6!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:1px solid #dee2e6!important}.border-start-0{border-left:0!important}.border-primary{border-color:#0d6efd!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#198754!important}.border-info{border-color:#0dcaf0!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#212529!important}.border-white{border-color:#fff!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:#6c757d!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:.25rem!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:.2rem!important}.rounded-2{border-radius:.25rem!important}.rounded-3{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-end{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-start{border-bottom-left-radius:.25rem!important;border-top-left-radius:.25rem!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/Elements.Wasm/wwwroot/css/bootstrap/bootstrap.min.css.map b/Elements.Wasm/wwwroot/css/bootstrap/bootstrap.min.css.map new file mode 100644 index 000000000..afcd9e33e --- /dev/null +++ b/Elements.Wasm/wwwroot/css/bootstrap/bootstrap.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_root.scss","../../scss/_reboot.scss","dist/css/bootstrap.css","../../scss/vendor/_rfs.scss","../../scss/mixins/_border-radius.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/_tables.scss","../../scss/mixins/_table-variants.scss","../../scss/forms/_labels.scss","../../scss/forms/_form-text.scss","../../scss/forms/_form-control.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_gradients.scss","../../scss/forms/_form-select.scss","../../scss/forms/_form-check.scss","../../scss/forms/_form-range.scss","../../scss/forms/_floating-labels.scss","../../scss/forms/_input-group.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/_button-group.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_accordion.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_toasts.scss","../../scss/_modal.scss","../../scss/mixins/_backdrop.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_clearfix.scss","../../scss/_spinners.scss","../../scss/_offcanvas.scss","../../scss/_placeholders.scss","../../scss/helpers/_colored-links.scss","../../scss/helpers/_ratio.scss","../../scss/helpers/_position.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"iBAAA;;;;;ACAA,MAQI,UAAA,QAAA,YAAA,QAAA,YAAA,QAAA,UAAA,QAAA,SAAA,QAAA,YAAA,QAAA,YAAA,QAAA,WAAA,QAAA,UAAA,QAAA,UAAA,QAAA,WAAA,KAAA,UAAA,QAAA,eAAA,QAIA,cAAA,QAAA,cAAA,QAAA,cAAA,QAAA,cAAA,QAAA,cAAA,QAAA,cAAA,QAAA,cAAA,QAAA,cAAA,QAAA,cAAA,QAIA,aAAA,QAAA,eAAA,QAAA,aAAA,QAAA,UAAA,QAAA,aAAA,QAAA,YAAA,QAAA,WAAA,QAAA,UAAA,QAIA,iBAAA,EAAA,CAAA,GAAA,CAAA,IAAA,mBAAA,GAAA,CAAA,GAAA,CAAA,IAAA,iBAAA,EAAA,CAAA,GAAA,CAAA,GAAA,cAAA,EAAA,CAAA,GAAA,CAAA,IAAA,iBAAA,GAAA,CAAA,GAAA,CAAA,EAAA,gBAAA,GAAA,CAAA,EAAA,CAAA,GAAA,eAAA,GAAA,CAAA,GAAA,CAAA,IAAA,cAAA,EAAA,CAAA,EAAA,CAAA,GAGF,eAAA,GAAA,CAAA,GAAA,CAAA,IACA,eAAA,CAAA,CAAA,CAAA,CAAA,EACA,cAAA,EAAA,CAAA,EAAA,CAAA,GAMA,qBAAA,SAAA,CAAA,aAAA,CAAA,UAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,WAAA,CAAA,iBAAA,CAAA,UAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,iBAAA,CAAA,mBACA,oBAAA,cAAA,CAAA,KAAA,CAAA,MAAA,CAAA,QAAA,CAAA,iBAAA,CAAA,aAAA,CAAA,UACA,cAAA,2EAQA,sBAAA,0BACA,oBAAA,KACA,sBAAA,IACA,sBAAA,IACA,gBAAA,QAIA,aAAA,KClCF,EC+CA,QADA,SD3CE,WAAA,WAeE,8CANJ,MAOM,gBAAA,QAcN,KACE,OAAA,EACA,YAAA,2BEmPI,UAAA,yBFjPJ,YAAA,2BACA,YAAA,2BACA,MAAA,qBACA,WAAA,0BACA,iBAAA,kBACA,yBAAA,KACA,4BAAA,YAUF,GACE,OAAA,KAAA,EACA,MAAA,QACA,iBAAA,aACA,OAAA,EACA,QAAA,IAGF,eACE,OAAA,IAUF,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GACE,WAAA,EACA,cAAA,MAGA,YAAA,IACA,YAAA,IAIF,IAAA,GEwMQ,UAAA,uBAlKJ,0BFtCJ,IAAA,GE+MQ,UAAA,QF1MR,IAAA,GEmMQ,UAAA,sBAlKJ,0BFjCJ,IAAA,GE0MQ,UAAA,MFrMR,IAAA,GE8LQ,UAAA,oBAlKJ,0BF5BJ,IAAA,GEqMQ,UAAA,SFhMR,IAAA,GEyLQ,UAAA,sBAlKJ,0BFvBJ,IAAA,GEgMQ,UAAA,QF3LR,IAAA,GEgLM,UAAA,QF3KN,IAAA,GE2KM,UAAA,KFhKN,EACE,WAAA,EACA,cAAA,KCmBF,6BDRA,YAEE,wBAAA,UAAA,OAAA,gBAAA,UAAA,OACA,OAAA,KACA,iCAAA,KAAA,yBAAA,KAMF,QACE,cAAA,KACA,WAAA,OACA,YAAA,QAMF,GCIA,GDFE,aAAA,KCQF,GDLA,GCIA,GDDE,WAAA,EACA,cAAA,KAGF,MCKA,MACA,MAFA,MDAE,cAAA,EAGF,GACE,YAAA,IAKF,GACE,cAAA,MACA,YAAA,EAMF,WACE,OAAA,EAAA,EAAA,KAQF,ECNA,ODQE,YAAA,OAQF,OAAA,ME4EM,UAAA,OFrEN,MAAA,KACE,QAAA,KACA,iBAAA,QASF,ICpBA,IDsBE,SAAA,SEwDI,UAAA,MFtDJ,YAAA,EACA,eAAA,SAGF,IAAM,OAAA,OACN,IAAM,IAAA,MAKN,EACE,MAAA,QACA,gBAAA,UAEA,QACE,MAAA,QAWF,2BAAA,iCAEE,MAAA,QACA,gBAAA,KCxBJ,KACA,ID8BA,IC7BA,KDiCE,YAAA,yBEcI,UAAA,IFZJ,UAAA,IACA,aAAA,cAOF,IACE,QAAA,MACA,WAAA,EACA,cAAA,KACA,SAAA,KEAI,UAAA,OFKJ,SELI,UAAA,QFOF,MAAA,QACA,WAAA,OAIJ,KEZM,UAAA,OFcJ,MAAA,QACA,UAAA,WAGA,OACE,MAAA,QAIJ,IACE,QAAA,MAAA,MExBI,UAAA,OF0BJ,MAAA,KACA,iBAAA,QG7SE,cAAA,MHgTF,QACE,QAAA,EE/BE,UAAA,IFiCF,YAAA,IASJ,OACE,OAAA,EAAA,EAAA,KAMF,ICjDA,IDmDE,eAAA,OAQF,MACE,aAAA,OACA,gBAAA,SAGF,QACE,YAAA,MACA,eAAA,MACA,MAAA,QACA,WAAA,KAOF,GAEE,WAAA,QACA,WAAA,qBCxDF,MAGA,GAFA,MAGA,GDuDA,MCzDA,GD+DE,aAAA,QACA,aAAA,MACA,aAAA,EAQF,MACE,QAAA,aAMF,OAEE,cAAA,EAQF,iCACE,QAAA,ECtEF,OD2EA,MCzEA,SADA,OAEA,SD6EE,OAAA,EACA,YAAA,QE9HI,UAAA,QFgIJ,YAAA,QAIF,OC5EA,OD8EE,eAAA,KAKF,cACE,OAAA,QAGF,OAGE,UAAA,OAGA,gBACE,QAAA,EAOJ,0CACE,QAAA,KClFF,cACA,aACA,cDwFA,OAIE,mBAAA,OCxFF,6BACA,4BACA,6BDyFI,sBACE,OAAA,QAON,mBACE,QAAA,EACA,aAAA,KAKF,SACE,OAAA,SAUF,SACE,UAAA,EACA,QAAA,EACA,OAAA,EACA,OAAA,EAQF,OACE,MAAA,KACA,MAAA,KACA,QAAA,EACA,cAAA,MEnNM,UAAA,sBFsNN,YAAA,QExXE,0BFiXJ,OExMQ,UAAA,QFiNN,SACE,MAAA,KChGJ,kCDuGA,uCCxGA,mCADA,+BAGA,oCAJA,6BAKA,mCD4GE,QAAA,EAGF,4BACE,OAAA,KASF,cACE,eAAA,KACA,mBAAA,UAmBF,4BACE,mBAAA,KAKF,+BACE,QAAA,EAMF,uBACE,KAAA,QAMF,6BACE,KAAA,QACA,mBAAA,OAKF,OACE,QAAA,aAKF,OACE,OAAA,EAOF,QACE,QAAA,UACA,OAAA,QAQF,SACE,eAAA,SAQF,SACE,QAAA,eInlBF,MFyQM,UAAA,QEvQJ,YAAA,IAKA,WFsQM,UAAA,uBEpQJ,YAAA,IACA,YAAA,IFiGA,0BEpGF,WF6QM,UAAA,ME7QN,WFsQM,UAAA,uBEpQJ,YAAA,IACA,YAAA,IFiGA,0BEpGF,WF6QM,UAAA,QE7QN,WFsQM,UAAA,uBEpQJ,YAAA,IACA,YAAA,IFiGA,0BEpGF,WF6QM,UAAA,ME7QN,WFsQM,UAAA,uBEpQJ,YAAA,IACA,YAAA,IFiGA,0BEpGF,WF6QM,UAAA,QE7QN,WFsQM,UAAA,uBEpQJ,YAAA,IACA,YAAA,IFiGA,0BEpGF,WF6QM,UAAA,ME7QN,WFsQM,UAAA,uBEpQJ,YAAA,IACA,YAAA,IFiGA,0BEpGF,WF6QM,UAAA,QEvPR,eCrDE,aAAA,EACA,WAAA,KDyDF,aC1DE,aAAA,EACA,WAAA,KD4DF,kBACE,QAAA,aAEA,mCACE,aAAA,MAUJ,YFsNM,UAAA,OEpNJ,eAAA,UAIF,YACE,cAAA,KF+MI,UAAA,QE5MJ,wBACE,cAAA,EAIJ,mBACE,WAAA,MACA,cAAA,KFqMI,UAAA,OEnMJ,MAAA,QAEA,2BACE,QAAA,KE9FJ,WCIE,UAAA,KAGA,OAAA,KDDF,eACE,QAAA,OACA,iBAAA,KACA,OAAA,IAAA,MAAA,QHGE,cAAA,OIRF,UAAA,KAGA,OAAA,KDcF,QAEE,QAAA,aAGF,YACE,cAAA,MACA,YAAA,EAGF,gBJ+PM,UAAA,OI7PJ,MAAA,QElCA,WPqmBF,iBAGA,cACA,cACA,cAHA,cADA,eQzmBE,MAAA,KACA,cAAA,0BACA,aAAA,0BACA,aAAA,KACA,YAAA,KCwDE,yBF5CE,WAAA,cACE,UAAA,OE2CJ,yBF5CE,WAAA,cAAA,cACE,UAAA,OE2CJ,yBF5CE,WAAA,cAAA,cAAA,cACE,UAAA,OE2CJ,0BF5CE,WAAA,cAAA,cAAA,cAAA,cACE,UAAA,QE2CJ,0BF5CE,WAAA,cAAA,cAAA,cAAA,cAAA,eACE,UAAA,QGfN,KCAA,cAAA,OACA,cAAA,EACA,QAAA,KACA,UAAA,KACA,WAAA,8BACA,aAAA,+BACA,YAAA,+BDHE,OCYF,YAAA,EACA,MAAA,KACA,UAAA,KACA,cAAA,8BACA,aAAA,8BACA,WAAA,mBA+CI,KACE,KAAA,EAAA,EAAA,GAGF,iBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,cACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,UAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,UAxDV,YAAA,YAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,IAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,IAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,IAwDU,WAxDV,YAAA,aAwDU,WAxDV,YAAA,aAmEM,KXusBR,MWrsBU,cAAA,EAGF,KXusBR,MWrsBU,cAAA,EAPF,KXitBR,MW/sBU,cAAA,QAGF,KXitBR,MW/sBU,cAAA,QAPF,KX2tBR,MWztBU,cAAA,OAGF,KX2tBR,MWztBU,cAAA,OAPF,KXquBR,MWnuBU,cAAA,KAGF,KXquBR,MWnuBU,cAAA,KAPF,KX+uBR,MW7uBU,cAAA,OAGF,KX+uBR,MW7uBU,cAAA,OAPF,KXyvBR,MWvvBU,cAAA,KAGF,KXyvBR,MWvvBU,cAAA,KFzDN,yBESE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,YAAA,EAwDU,aAxDV,YAAA,YAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAmEM,QX45BR,SW15BU,cAAA,EAGF,QX45BR,SW15BU,cAAA,EAPF,QXs6BR,SWp6BU,cAAA,QAGF,QXs6BR,SWp6BU,cAAA,QAPF,QXg7BR,SW96BU,cAAA,OAGF,QXg7BR,SW96BU,cAAA,OAPF,QX07BR,SWx7BU,cAAA,KAGF,QX07BR,SWx7BU,cAAA,KAPF,QXo8BR,SWl8BU,cAAA,OAGF,QXo8BR,SWl8BU,cAAA,OAPF,QX88BR,SW58BU,cAAA,KAGF,QX88BR,SW58BU,cAAA,MFzDN,yBESE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,YAAA,EAwDU,aAxDV,YAAA,YAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAmEM,QXinCR,SW/mCU,cAAA,EAGF,QXinCR,SW/mCU,cAAA,EAPF,QX2nCR,SWznCU,cAAA,QAGF,QX2nCR,SWznCU,cAAA,QAPF,QXqoCR,SWnoCU,cAAA,OAGF,QXqoCR,SWnoCU,cAAA,OAPF,QX+oCR,SW7oCU,cAAA,KAGF,QX+oCR,SW7oCU,cAAA,KAPF,QXypCR,SWvpCU,cAAA,OAGF,QXypCR,SWvpCU,cAAA,OAPF,QXmqCR,SWjqCU,cAAA,KAGF,QXmqCR,SWjqCU,cAAA,MFzDN,yBESE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,YAAA,EAwDU,aAxDV,YAAA,YAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAmEM,QXs0CR,SWp0CU,cAAA,EAGF,QXs0CR,SWp0CU,cAAA,EAPF,QXg1CR,SW90CU,cAAA,QAGF,QXg1CR,SW90CU,cAAA,QAPF,QX01CR,SWx1CU,cAAA,OAGF,QX01CR,SWx1CU,cAAA,OAPF,QXo2CR,SWl2CU,cAAA,KAGF,QXo2CR,SWl2CU,cAAA,KAPF,QX82CR,SW52CU,cAAA,OAGF,QX82CR,SW52CU,cAAA,OAPF,QXw3CR,SWt3CU,cAAA,KAGF,QXw3CR,SWt3CU,cAAA,MFzDN,0BESE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,YAAA,EAwDU,aAxDV,YAAA,YAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAmEM,QX2hDR,SWzhDU,cAAA,EAGF,QX2hDR,SWzhDU,cAAA,EAPF,QXqiDR,SWniDU,cAAA,QAGF,QXqiDR,SWniDU,cAAA,QAPF,QX+iDR,SW7iDU,cAAA,OAGF,QX+iDR,SW7iDU,cAAA,OAPF,QXyjDR,SWvjDU,cAAA,KAGF,QXyjDR,SWvjDU,cAAA,KAPF,QXmkDR,SWjkDU,cAAA,OAGF,QXmkDR,SWjkDU,cAAA,OAPF,QX6kDR,SW3kDU,cAAA,KAGF,QX6kDR,SW3kDU,cAAA,MFzDN,0BESE,SACE,KAAA,EAAA,EAAA,GAGF,qBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,cAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,cAxDV,YAAA,EAwDU,cAxDV,YAAA,YAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,IAwDU,eAxDV,YAAA,aAwDU,eAxDV,YAAA,aAmEM,SXgvDR,UW9uDU,cAAA,EAGF,SXgvDR,UW9uDU,cAAA,EAPF,SX0vDR,UWxvDU,cAAA,QAGF,SX0vDR,UWxvDU,cAAA,QAPF,SXowDR,UWlwDU,cAAA,OAGF,SXowDR,UWlwDU,cAAA,OAPF,SX8wDR,UW5wDU,cAAA,KAGF,SX8wDR,UW5wDU,cAAA,KAPF,SXwxDR,UWtxDU,cAAA,OAGF,SXwxDR,UWtxDU,cAAA,OAPF,SXkyDR,UWhyDU,cAAA,KAGF,SXkyDR,UWhyDU,cAAA,MCpHV,OACE,cAAA,YACA,qBAAA,YACA,yBAAA,QACA,sBAAA,oBACA,wBAAA,QACA,qBAAA,mBACA,uBAAA,QACA,oBAAA,qBAEA,MAAA,KACA,cAAA,KACA,MAAA,QACA,eAAA,IACA,aAAA,QAOA,yBACE,QAAA,MAAA,MACA,iBAAA,mBACA,oBAAA,IACA,WAAA,MAAA,EAAA,EAAA,EAAA,OAAA,0BAGF,aACE,eAAA,QAGF,aACE,eAAA,OAIF,uCACE,oBAAA,aASJ,aACE,aAAA,IAUA,4BACE,QAAA,OAAA,OAeF,gCACE,aAAA,IAAA,EAGA,kCACE,aAAA,EAAA,IAOJ,oCACE,oBAAA,EASF,yCACE,qBAAA,2BACA,MAAA,8BAQJ,cACE,qBAAA,0BACA,MAAA,6BAQA,4BACE,qBAAA,yBACA,MAAA,4BCxHF,eAME,cAAA,QACA,sBAAA,QACA,yBAAA,KACA,qBAAA,QACA,wBAAA,KACA,oBAAA,QACA,uBAAA,KAEA,MAAA,KACA,aAAA,QAfF,iBAME,cAAA,QACA,sBAAA,QACA,yBAAA,KACA,qBAAA,QACA,wBAAA,KACA,oBAAA,QACA,uBAAA,KAEA,MAAA,KACA,aAAA,QAfF,eAME,cAAA,QACA,sBAAA,QACA,yBAAA,KACA,qBAAA,QACA,wBAAA,KACA,oBAAA,QACA,uBAAA,KAEA,MAAA,KACA,aAAA,QAfF,YAME,cAAA,QACA,sBAAA,QACA,yBAAA,KACA,qBAAA,QACA,wBAAA,KACA,oBAAA,QACA,uBAAA,KAEA,MAAA,KACA,aAAA,QAfF,eAME,cAAA,QACA,sBAAA,QACA,yBAAA,KACA,qBAAA,QACA,wBAAA,KACA,oBAAA,QACA,uBAAA,KAEA,MAAA,KACA,aAAA,QAfF,cAME,cAAA,QACA,sBAAA,QACA,yBAAA,KACA,qBAAA,QACA,wBAAA,KACA,oBAAA,QACA,uBAAA,KAEA,MAAA,KACA,aAAA,QAfF,aAME,cAAA,QACA,sBAAA,QACA,yBAAA,KACA,qBAAA,QACA,wBAAA,KACA,oBAAA,QACA,uBAAA,KAEA,MAAA,KACA,aAAA,QAfF,YAME,cAAA,QACA,sBAAA,QACA,yBAAA,KACA,qBAAA,QACA,wBAAA,KACA,oBAAA,QACA,uBAAA,KAEA,MAAA,KACA,aAAA,QDgIA,kBACE,WAAA,KACA,2BAAA,MHvEF,4BGqEA,qBACE,WAAA,KACA,2BAAA,OHvEF,4BGqEA,qBACE,WAAA,KACA,2BAAA,OHvEF,4BGqEA,qBACE,WAAA,KACA,2BAAA,OHvEF,6BGqEA,qBACE,WAAA,KACA,2BAAA,OHvEF,6BGqEA,sBACE,WAAA,KACA,2BAAA,OE/IN,YACE,cAAA,MASF,gBACE,YAAA,oBACA,eAAA,oBACA,cAAA,EboRI,UAAA,QahRJ,YAAA,IAIF,mBACE,YAAA,kBACA,eAAA,kBb0QI,UAAA,QatQN,mBACE,YAAA,mBACA,eAAA,mBboQI,UAAA,QcjSN,WACE,WAAA,OdgSI,UAAA,Oc5RJ,MAAA,QCLF,cACE,QAAA,MACA,MAAA,KACA,QAAA,QAAA,Of8RI,UAAA,Ke3RJ,YAAA,IACA,YAAA,IACA,MAAA,QACA,iBAAA,KACA,gBAAA,YACA,OAAA,IAAA,MAAA,QACA,mBAAA,KAAA,gBAAA,KAAA,WAAA,KdGE,cAAA,OeHE,WAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YAIA,uCDhBN,cCiBQ,WAAA,MDGN,yBACE,SAAA,OAEA,wDACE,OAAA,QAKJ,oBACE,MAAA,QACA,iBAAA,KACA,aAAA,QACA,QAAA,EAKE,WAAA,EAAA,EAAA,EAAA,OAAA,qBAOJ,2CAEE,OAAA,MAIF,gCACE,MAAA,QAEA,QAAA,EAHF,2BACE,MAAA,QAEA,QAAA,EAQF,uBAAA,wBAEE,iBAAA,QAGA,QAAA,EAIF,oCACE,QAAA,QAAA,OACA,OAAA,SAAA,QACA,mBAAA,OAAA,kBAAA,OACA,MAAA,QE3EF,iBAAA,QF6EE,eAAA,KACA,aAAA,QACA,aAAA,MACA,aAAA,EACA,wBAAA,IACA,cAAA,ECtEE,WAAA,MAAA,KAAA,WAAA,CAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YAIA,uCDuDJ,oCCtDM,WAAA,MDqEN,yEACE,iBAAA,QAGF,0CACE,QAAA,QAAA,OACA,OAAA,SAAA,QACA,mBAAA,OAAA,kBAAA,OACA,MAAA,QE9FF,iBAAA,QFgGE,eAAA,KACA,aAAA,QACA,aAAA,MACA,aAAA,EACA,wBAAA,IACA,cAAA,ECzFE,mBAAA,MAAA,KAAA,WAAA,CAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YAAA,WAAA,MAAA,KAAA,WAAA,CAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YAIA,uCD0EJ,0CCzEM,mBAAA,KAAA,WAAA,MDwFN,+EACE,iBAAA,QASJ,wBACE,QAAA,MACA,MAAA,KACA,QAAA,QAAA,EACA,cAAA,EACA,YAAA,IACA,MAAA,QACA,iBAAA,YACA,OAAA,MAAA,YACA,aAAA,IAAA,EAEA,wCAAA,wCAEE,cAAA,EACA,aAAA,EAWJ,iBACE,WAAA,0BACA,QAAA,OAAA,MfmJI,UAAA,QClRF,cAAA,McmIF,uCACE,QAAA,OAAA,MACA,OAAA,QAAA,OACA,mBAAA,MAAA,kBAAA,MAGF,6CACE,QAAA,OAAA,MACA,OAAA,QAAA,OACA,mBAAA,MAAA,kBAAA,MAIJ,iBACE,WAAA,yBACA,QAAA,MAAA,KfgII,UAAA,QClRF,cAAA,McsJF,uCACE,QAAA,MAAA,KACA,OAAA,OAAA,MACA,mBAAA,KAAA,kBAAA,KAGF,6CACE,QAAA,MAAA,KACA,OAAA,OAAA,MACA,mBAAA,KAAA,kBAAA,KAQF,sBACE,WAAA,2BAGF,yBACE,WAAA,0BAGF,yBACE,WAAA,yBAKJ,oBACE,MAAA,KACA,OAAA,KACA,QAAA,QAEA,mDACE,OAAA,QAGF,uCACE,OAAA,Md/LA,cAAA,OcmMF,0CACE,OAAA,MdpMA,cAAA,OiBdJ,aACE,QAAA,MACA,MAAA,KACA,QAAA,QAAA,QAAA,QAAA,OAEA,mBAAA,oBlB2RI,UAAA,KkBxRJ,YAAA,IACA,YAAA,IACA,MAAA,QACA,iBAAA,KACA,iBAAA,gOACA,kBAAA,UACA,oBAAA,MAAA,OAAA,OACA,gBAAA,KAAA,KACA,OAAA,IAAA,MAAA,QjBFE,cAAA,OeHE,WAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YESJ,mBAAA,KAAA,gBAAA,KAAA,WAAA,KFLI,uCEfN,aFgBQ,WAAA,MEMN,mBACE,aAAA,QACA,QAAA,EAKE,WAAA,EAAA,EAAA,EAAA,OAAA,qBAIJ,uBAAA,mCAEE,cAAA,OACA,iBAAA,KAGF,sBAEE,iBAAA,QAKF,4BACE,MAAA,YACA,YAAA,EAAA,EAAA,EAAA,QAIJ,gBACE,YAAA,OACA,eAAA,OACA,aAAA,MlByOI,UAAA,QkBrON,gBACE,YAAA,MACA,eAAA,MACA,aAAA,KlBkOI,UAAA,QmBjSN,YACE,QAAA,MACA,WAAA,OACA,aAAA,MACA,cAAA,QAEA,8BACE,MAAA,KACA,YAAA,OAIJ,kBACE,MAAA,IACA,OAAA,IACA,WAAA,MACA,eAAA,IACA,iBAAA,KACA,kBAAA,UACA,oBAAA,OACA,gBAAA,QACA,OAAA,IAAA,MAAA,gBACA,mBAAA,KAAA,gBAAA,KAAA,WAAA,KACA,2BAAA,MAAA,aAAA,MAGA,iClBXE,cAAA,MkBeF,8BAEE,cAAA,IAGF,yBACE,OAAA,gBAGF,wBACE,aAAA,QACA,QAAA,EACA,WAAA,EAAA,EAAA,EAAA,OAAA,qBAGF,0BACE,iBAAA,QACA,aAAA,QAEA,yCAII,iBAAA,8NAIJ,sCAII,iBAAA,sIAKN,+CACE,iBAAA,QACA,aAAA,QAKE,iBAAA,wNAIJ,2BACE,eAAA,KACA,OAAA,KACA,QAAA,GAOA,6CAAA,8CACE,QAAA,GAcN,aACE,aAAA,MAEA,+BACE,MAAA,IACA,YAAA,OACA,iBAAA,uJACA,oBAAA,KAAA,OlB9FA,cAAA,IeHE,WAAA,oBAAA,KAAA,YAIA,uCGyFJ,+BHxFM,WAAA,MGgGJ,qCACE,iBAAA,yIAGF,uCACE,oBAAA,MAAA,OAKE,iBAAA,sIAMR,mBACE,QAAA,aACA,aAAA,KAGF,WACE,SAAA,SACA,KAAA,cACA,eAAA,KAIE,yBAAA,0BACE,eAAA,KACA,OAAA,KACA,QAAA,IC9IN,YACE,MAAA,KACA,OAAA,OACA,QAAA,EACA,iBAAA,YACA,mBAAA,KAAA,gBAAA,KAAA,WAAA,KAEA,kBACE,QAAA,EAIA,wCAA0B,WAAA,EAAA,EAAA,EAAA,IAAA,IAAA,CAAA,EAAA,EAAA,EAAA,OAAA,qBAC1B,oCAA0B,WAAA,EAAA,EAAA,EAAA,IAAA,IAAA,CAAA,EAAA,EAAA,EAAA,OAAA,qBAG5B,8BACE,OAAA,EAGF,kCACE,MAAA,KACA,OAAA,KACA,WAAA,QHzBF,iBAAA,QG2BE,OAAA,EnBZA,cAAA,KeHE,mBAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YAAA,WAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YImBF,mBAAA,KAAA,WAAA,KJfE,uCIMJ,kCJLM,mBAAA,KAAA,WAAA,MIgBJ,yCHjCF,iBAAA,QGsCA,2CACE,MAAA,KACA,OAAA,MACA,MAAA,YACA,OAAA,QACA,iBAAA,QACA,aAAA,YnB7BA,cAAA,KmBkCF,8BACE,MAAA,KACA,OAAA,KHnDF,iBAAA,QGqDE,OAAA,EnBtCA,cAAA,KeHE,gBAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YAAA,WAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YI6CF,gBAAA,KAAA,WAAA,KJzCE,uCIiCJ,8BJhCM,gBAAA,KAAA,WAAA,MI0CJ,qCH3DF,iBAAA,QGgEA,8BACE,MAAA,KACA,OAAA,MACA,MAAA,YACA,OAAA,QACA,iBAAA,QACA,aAAA,YnBvDA,cAAA,KmB4DF,qBACE,eAAA,KAEA,2CACE,iBAAA,QAGF,uCACE,iBAAA,QCvFN,eACE,SAAA,SAEA,6BtB+iFF,4BsB7iFI,OAAA,mBACA,YAAA,KAGF,qBACE,SAAA,SACA,IAAA,EACA,KAAA,EACA,OAAA,KACA,QAAA,KAAA,OACA,eAAA,KACA,OAAA,IAAA,MAAA,YACA,iBAAA,EAAA,ELDE,WAAA,QAAA,IAAA,WAAA,CAAA,UAAA,IAAA,YAIA,uCKXJ,qBLYM,WAAA,MKCN,6BACE,QAAA,KAAA,OAEA,+CACE,MAAA,YADF,0CACE,MAAA,YAGF,0DAEE,YAAA,SACA,eAAA,QAHF,mCAAA,qDAEE,YAAA,SACA,eAAA,QAGF,8CACE,YAAA,SACA,eAAA,QAIJ,4BACE,YAAA,SACA,eAAA,QAMA,gEACE,QAAA,IACA,UAAA,WAAA,mBAAA,mBAFF,yCtBmjFJ,2DACA,kCsBnjFM,QAAA,IACA,UAAA,WAAA,mBAAA,mBAKF,oDACE,QAAA,IACA,UAAA,WAAA,mBAAA,mBCtDN,aACE,SAAA,SACA,QAAA,KACA,UAAA,KACA,YAAA,QACA,MAAA,KAEA,2BvB2mFF,0BuBzmFI,SAAA,SACA,KAAA,EAAA,EAAA,KACA,MAAA,GACA,UAAA,EAIF,iCvBymFF,gCuBvmFI,QAAA,EAMF,kBACE,SAAA,SACA,QAAA,EAEA,wBACE,QAAA,EAWN,kBACE,QAAA,KACA,YAAA,OACA,QAAA,QAAA,OtBsPI,UAAA,KsBpPJ,YAAA,IACA,YAAA,IACA,MAAA,QACA,WAAA,OACA,YAAA,OACA,iBAAA,QACA,OAAA,IAAA,MAAA,QrBpCE,cAAA,OFuoFJ,qBuBzlFA,8BvBulFA,6BACA,kCuBplFE,QAAA,MAAA,KtBgOI,UAAA,QClRF,cAAA,MFgpFJ,qBuBzlFA,8BvBulFA,6BACA,kCuBplFE,QAAA,OAAA,MtBuNI,UAAA,QClRF,cAAA,MqBgEJ,6BvBulFA,6BuBrlFE,cAAA,KvB0lFF,uEuB7kFI,8FrB/DA,wBAAA,EACA,2BAAA,EFgpFJ,iEuB3kFI,2FrBtEA,wBAAA,EACA,2BAAA,EqBgFF,0IACE,YAAA,KrBpEA,uBAAA,EACA,0BAAA,EsBzBF,gBACE,QAAA,KACA,MAAA,KACA,WAAA,OvByQE,UAAA,OuBtQF,MAAA,QAGF,eACE,SAAA,SACA,IAAA,KACA,QAAA,EACA,QAAA,KACA,UAAA,KACA,QAAA,OAAA,MACA,WAAA,MvB4PE,UAAA,QuBzPF,MAAA,KACA,iBAAA,mBtB1BA,cAAA,OFmsFJ,0BACA,yBwBrqFI,sCxBmqFJ,qCwBjqFM,QAAA,MA9CF,uBAAA,mCAoDE,aAAA,QAGE,cAAA,qBACA,iBAAA,2OACA,kBAAA,UACA,oBAAA,MAAA,wBAAA,OACA,gBAAA,sBAAA,sBAGF,6BAAA,yCACE,aAAA,QACA,WAAA,EAAA,EAAA,EAAA,OAAA,oBAhEJ,2CAAA,+BAyEI,cAAA,qBACA,oBAAA,IAAA,wBAAA,MAAA,wBA1EJ,sBAAA,kCAiFE,aAAA,QAGE,kDAAA,gDAAA,8DAAA,4DAEE,cAAA,SACA,iBAAA,+NAAA,CAAA,2OACA,oBAAA,MAAA,OAAA,MAAA,CAAA,OAAA,MAAA,QACA,gBAAA,KAAA,IAAA,CAAA,sBAAA,sBAIJ,4BAAA,wCACE,aAAA,QACA,WAAA,EAAA,EAAA,EAAA,OAAA,oBA/FJ,2BAAA,uCAsGE,aAAA,QAEA,mCAAA,+CACE,iBAAA,QAGF,iCAAA,6CACE,WAAA,EAAA,EAAA,EAAA,OAAA,oBAGF,6CAAA,yDACE,MAAA,QAKJ,qDACE,YAAA,KAvHF,oCxBwwFJ,mCwBxwFI,gDxBuwFJ,+CwBxoFQ,QAAA,EAIF,0CxB0oFN,yCwB1oFM,sDxByoFN,qDwBxoFQ,QAAA,EAjHN,kBACE,QAAA,KACA,MAAA,KACA,WAAA,OvByQE,UAAA,OuBtQF,MAAA,QAGF,iBACE,SAAA,SACA,IAAA,KACA,QAAA,EACA,QAAA,KACA,UAAA,KACA,QAAA,OAAA,MACA,WAAA,MvB4PE,UAAA,QuBzPF,MAAA,KACA,iBAAA,mBtB1BA,cAAA,OF4xFJ,8BACA,6BwB9vFI,0CxB4vFJ,yCwB1vFM,QAAA,MA9CF,yBAAA,qCAoDE,aAAA,QAGE,cAAA,qBACA,iBAAA,2TACA,kBAAA,UACA,oBAAA,MAAA,wBAAA,OACA,gBAAA,sBAAA,sBAGF,+BAAA,2CACE,aAAA,QACA,WAAA,EAAA,EAAA,EAAA,OAAA,oBAhEJ,6CAAA,iCAyEI,cAAA,qBACA,oBAAA,IAAA,wBAAA,MAAA,wBA1EJ,wBAAA,oCAiFE,aAAA,QAGE,oDAAA,kDAAA,gEAAA,8DAEE,cAAA,SACA,iBAAA,+NAAA,CAAA,2TACA,oBAAA,MAAA,OAAA,MAAA,CAAA,OAAA,MAAA,QACA,gBAAA,KAAA,IAAA,CAAA,sBAAA,sBAIJ,8BAAA,0CACE,aAAA,QACA,WAAA,EAAA,EAAA,EAAA,OAAA,oBA/FJ,6BAAA,yCAsGE,aAAA,QAEA,qCAAA,iDACE,iBAAA,QAGF,mCAAA,+CACE,WAAA,EAAA,EAAA,EAAA,OAAA,oBAGF,+CAAA,2DACE,MAAA,QAKJ,uDACE,YAAA,KAvHF,sCxBi2FJ,qCwBj2FI,kDxBg2FJ,iDwB/tFQ,QAAA,EAEF,4CxBmuFN,2CwBnuFM,wDxBkuFN,uDwBjuFQ,QAAA,ECtIR,KACE,QAAA,aAEA,YAAA,IACA,YAAA,IACA,MAAA,QACA,WAAA,OACA,gBAAA,KAEA,eAAA,OACA,OAAA,QACA,oBAAA,KAAA,iBAAA,KAAA,YAAA,KACA,iBAAA,YACA,OAAA,IAAA,MAAA,YC8GA,QAAA,QAAA,OzBsKI,UAAA,KClRF,cAAA,OeHE,WAAA,MAAA,KAAA,WAAA,CAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YAIA,uCQhBN,KRiBQ,WAAA,MQAN,WACE,MAAA,QAIF,sBAAA,WAEE,QAAA,EACA,WAAA,EAAA,EAAA,EAAA,OAAA,qBAcF,cAAA,cAAA,uBAGE,eAAA,KACA,QAAA,IAYF,aCvCA,MAAA,KRhBA,iBAAA,QQkBA,aAAA,QAGA,mBACE,MAAA,KRtBF,iBAAA,QQwBE,aAAA,QAGF,8BAAA,mBAEE,MAAA,KR7BF,iBAAA,QQ+BE,aAAA,QAKE,WAAA,EAAA,EAAA,EAAA,OAAA,oBAIJ,+BAAA,gCAAA,oBAAA,oBAAA,mCAKE,MAAA,KACA,iBAAA,QAGA,aAAA,QAEA,qCAAA,sCAAA,0BAAA,0BAAA,yCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,oBAKN,sBAAA,sBAEE,MAAA,KACA,iBAAA,QAGA,aAAA,QDZF,eCvCA,MAAA,KRhBA,iBAAA,QQkBA,aAAA,QAGA,qBACE,MAAA,KRtBF,iBAAA,QQwBE,aAAA,QAGF,gCAAA,qBAEE,MAAA,KR7BF,iBAAA,QQ+BE,aAAA,QAKE,WAAA,EAAA,EAAA,EAAA,OAAA,qBAIJ,iCAAA,kCAAA,sBAAA,sBAAA,qCAKE,MAAA,KACA,iBAAA,QAGA,aAAA,QAEA,uCAAA,wCAAA,4BAAA,4BAAA,2CAKI,WAAA,EAAA,EAAA,EAAA,OAAA,qBAKN,wBAAA,wBAEE,MAAA,KACA,iBAAA,QAGA,aAAA,QDZF,aCvCA,MAAA,KRhBA,iBAAA,QQkBA,aAAA,QAGA,mBACE,MAAA,KRtBF,iBAAA,QQwBE,aAAA,QAGF,8BAAA,mBAEE,MAAA,KR7BF,iBAAA,QQ+BE,aAAA,QAKE,WAAA,EAAA,EAAA,EAAA,OAAA,oBAIJ,+BAAA,gCAAA,oBAAA,oBAAA,mCAKE,MAAA,KACA,iBAAA,QAGA,aAAA,QAEA,qCAAA,sCAAA,0BAAA,0BAAA,yCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,oBAKN,sBAAA,sBAEE,MAAA,KACA,iBAAA,QAGA,aAAA,QDZF,UCvCA,MAAA,KRhBA,iBAAA,QQkBA,aAAA,QAGA,gBACE,MAAA,KRtBF,iBAAA,QQwBE,aAAA,QAGF,2BAAA,gBAEE,MAAA,KR7BF,iBAAA,QQ+BE,aAAA,QAKE,WAAA,EAAA,EAAA,EAAA,OAAA,oBAIJ,4BAAA,6BAAA,iBAAA,iBAAA,gCAKE,MAAA,KACA,iBAAA,QAGA,aAAA,QAEA,kCAAA,mCAAA,uBAAA,uBAAA,sCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,oBAKN,mBAAA,mBAEE,MAAA,KACA,iBAAA,QAGA,aAAA,QDZF,aCvCA,MAAA,KRhBA,iBAAA,QQkBA,aAAA,QAGA,mBACE,MAAA,KRtBF,iBAAA,QQwBE,aAAA,QAGF,8BAAA,mBAEE,MAAA,KR7BF,iBAAA,QQ+BE,aAAA,QAKE,WAAA,EAAA,EAAA,EAAA,OAAA,mBAIJ,+BAAA,gCAAA,oBAAA,oBAAA,mCAKE,MAAA,KACA,iBAAA,QAGA,aAAA,QAEA,qCAAA,sCAAA,0BAAA,0BAAA,yCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,mBAKN,sBAAA,sBAEE,MAAA,KACA,iBAAA,QAGA,aAAA,QDZF,YCvCA,MAAA,KRhBA,iBAAA,QQkBA,aAAA,QAGA,kBACE,MAAA,KRtBF,iBAAA,QQwBE,aAAA,QAGF,6BAAA,kBAEE,MAAA,KR7BF,iBAAA,QQ+BE,aAAA,QAKE,WAAA,EAAA,EAAA,EAAA,OAAA,mBAIJ,8BAAA,+BAAA,mBAAA,mBAAA,kCAKE,MAAA,KACA,iBAAA,QAGA,aAAA,QAEA,oCAAA,qCAAA,yBAAA,yBAAA,wCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,mBAKN,qBAAA,qBAEE,MAAA,KACA,iBAAA,QAGA,aAAA,QDZF,WCvCA,MAAA,KRhBA,iBAAA,QQkBA,aAAA,QAGA,iBACE,MAAA,KRtBF,iBAAA,QQwBE,aAAA,QAGF,4BAAA,iBAEE,MAAA,KR7BF,iBAAA,QQ+BE,aAAA,QAKE,WAAA,EAAA,EAAA,EAAA,OAAA,qBAIJ,6BAAA,8BAAA,kBAAA,kBAAA,iCAKE,MAAA,KACA,iBAAA,QAGA,aAAA,QAEA,mCAAA,oCAAA,wBAAA,wBAAA,uCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,qBAKN,oBAAA,oBAEE,MAAA,KACA,iBAAA,QAGA,aAAA,QDZF,UCvCA,MAAA,KRhBA,iBAAA,QQkBA,aAAA,QAGA,gBACE,MAAA,KRtBF,iBAAA,QQwBE,aAAA,QAGF,2BAAA,gBAEE,MAAA,KR7BF,iBAAA,QQ+BE,aAAA,QAKE,WAAA,EAAA,EAAA,EAAA,OAAA,kBAIJ,4BAAA,6BAAA,iBAAA,iBAAA,gCAKE,MAAA,KACA,iBAAA,QAGA,aAAA,QAEA,kCAAA,mCAAA,uBAAA,uBAAA,sCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,kBAKN,mBAAA,mBAEE,MAAA,KACA,iBAAA,QAGA,aAAA,QDNF,qBCmBA,MAAA,QACA,aAAA,QAEA,2BACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,sCAAA,2BAEE,WAAA,EAAA,EAAA,EAAA,OAAA,oBAGF,uCAAA,wCAAA,4BAAA,0CAAA,4BAKE,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,6CAAA,8CAAA,kCAAA,gDAAA,kCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,oBAKN,8BAAA,8BAEE,MAAA,QACA,iBAAA,YDvDF,uBCmBA,MAAA,QACA,aAAA,QAEA,6BACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,wCAAA,6BAEE,WAAA,EAAA,EAAA,EAAA,OAAA,qBAGF,yCAAA,0CAAA,8BAAA,4CAAA,8BAKE,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,+CAAA,gDAAA,oCAAA,kDAAA,oCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,qBAKN,gCAAA,gCAEE,MAAA,QACA,iBAAA,YDvDF,qBCmBA,MAAA,QACA,aAAA,QAEA,2BACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,sCAAA,2BAEE,WAAA,EAAA,EAAA,EAAA,OAAA,mBAGF,uCAAA,wCAAA,4BAAA,0CAAA,4BAKE,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,6CAAA,8CAAA,kCAAA,gDAAA,kCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,mBAKN,8BAAA,8BAEE,MAAA,QACA,iBAAA,YDvDF,kBCmBA,MAAA,QACA,aAAA,QAEA,wBACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,mCAAA,wBAEE,WAAA,EAAA,EAAA,EAAA,OAAA,oBAGF,oCAAA,qCAAA,yBAAA,uCAAA,yBAKE,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,0CAAA,2CAAA,+BAAA,6CAAA,+BAKI,WAAA,EAAA,EAAA,EAAA,OAAA,oBAKN,2BAAA,2BAEE,MAAA,QACA,iBAAA,YDvDF,qBCmBA,MAAA,QACA,aAAA,QAEA,2BACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,sCAAA,2BAEE,WAAA,EAAA,EAAA,EAAA,OAAA,mBAGF,uCAAA,wCAAA,4BAAA,0CAAA,4BAKE,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,6CAAA,8CAAA,kCAAA,gDAAA,kCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,mBAKN,8BAAA,8BAEE,MAAA,QACA,iBAAA,YDvDF,oBCmBA,MAAA,QACA,aAAA,QAEA,0BACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,qCAAA,0BAEE,WAAA,EAAA,EAAA,EAAA,OAAA,mBAGF,sCAAA,uCAAA,2BAAA,yCAAA,2BAKE,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,4CAAA,6CAAA,iCAAA,+CAAA,iCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,mBAKN,6BAAA,6BAEE,MAAA,QACA,iBAAA,YDvDF,mBCmBA,MAAA,QACA,aAAA,QAEA,yBACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,oCAAA,yBAEE,WAAA,EAAA,EAAA,EAAA,OAAA,qBAGF,qCAAA,sCAAA,0BAAA,wCAAA,0BAKE,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,2CAAA,4CAAA,gCAAA,8CAAA,gCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,qBAKN,4BAAA,4BAEE,MAAA,QACA,iBAAA,YDvDF,kBCmBA,MAAA,QACA,aAAA,QAEA,wBACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,mCAAA,wBAEE,WAAA,EAAA,EAAA,EAAA,OAAA,kBAGF,oCAAA,qCAAA,yBAAA,uCAAA,yBAKE,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,0CAAA,2CAAA,+BAAA,6CAAA,+BAKI,WAAA,EAAA,EAAA,EAAA,OAAA,kBAKN,2BAAA,2BAEE,MAAA,QACA,iBAAA,YD3CJ,UACE,YAAA,IACA,MAAA,QACA,gBAAA,UAEA,gBACE,MAAA,QAQF,mBAAA,mBAEE,MAAA,QAWJ,mBAAA,QCuBE,QAAA,MAAA,KzBsKI,UAAA,QClRF,cAAA,MuByFJ,mBAAA,QCmBE,QAAA,OAAA,MzBsKI,UAAA,QClRF,cAAA,MyBnBJ,MVgBM,WAAA,QAAA,KAAA,OAIA,uCUpBN,MVqBQ,WAAA,MUlBN,iBACE,QAAA,EAMF,qBACE,QAAA,KAIJ,YACE,OAAA,EACA,SAAA,OVDI,WAAA,OAAA,KAAA,KAIA,uCULN,YVMQ,WAAA,MUDN,gCACE,MAAA,EACA,OAAA,KVNE,WAAA,MAAA,KAAA,KAIA,uCUAJ,gCVCM,WAAA,MjBs3GR,UADA,SAEA,W4B34GA,QAIE,SAAA,SAGF,iBACE,YAAA,OCqBE,wBACE,QAAA,aACA,YAAA,OACA,eAAA,OACA,QAAA,GAhCJ,WAAA,KAAA,MACA,aAAA,KAAA,MAAA,YACA,cAAA,EACA,YAAA,KAAA,MAAA,YAqDE,8BACE,YAAA,ED3CN,eACE,SAAA,SACA,QAAA,KACA,QAAA,KACA,UAAA,MACA,QAAA,MAAA,EACA,OAAA,E3B+QI,UAAA,K2B7QJ,MAAA,QACA,WAAA,KACA,WAAA,KACA,iBAAA,KACA,gBAAA,YACA,OAAA,IAAA,MAAA,gB1BVE,cAAA,O0BcF,+BACE,IAAA,KACA,KAAA,EACA,WAAA,QAYA,qBACE,cAAA,MAEA,qCACE,MAAA,KACA,KAAA,EAIJ,mBACE,cAAA,IAEA,mCACE,MAAA,EACA,KAAA,KnBCJ,yBmBfA,wBACE,cAAA,MAEA,wCACE,MAAA,KACA,KAAA,EAIJ,sBACE,cAAA,IAEA,sCACE,MAAA,EACA,KAAA,MnBCJ,yBmBfA,wBACE,cAAA,MAEA,wCACE,MAAA,KACA,KAAA,EAIJ,sBACE,cAAA,IAEA,sCACE,MAAA,EACA,KAAA,MnBCJ,yBmBfA,wBACE,cAAA,MAEA,wCACE,MAAA,KACA,KAAA,EAIJ,sBACE,cAAA,IAEA,sCACE,MAAA,EACA,KAAA,MnBCJ,0BmBfA,wBACE,cAAA,MAEA,wCACE,MAAA,KACA,KAAA,EAIJ,sBACE,cAAA,IAEA,sCACE,MAAA,EACA,KAAA,MnBCJ,0BmBfA,yBACE,cAAA,MAEA,yCACE,MAAA,KACA,KAAA,EAIJ,uBACE,cAAA,IAEA,uCACE,MAAA,EACA,KAAA,MAUN,uCACE,IAAA,KACA,OAAA,KACA,WAAA,EACA,cAAA,QC9CA,gCACE,QAAA,aACA,YAAA,OACA,eAAA,OACA,QAAA,GAzBJ,WAAA,EACA,aAAA,KAAA,MAAA,YACA,cAAA,KAAA,MACA,YAAA,KAAA,MAAA,YA8CE,sCACE,YAAA,ED0BJ,wCACE,IAAA,EACA,MAAA,KACA,KAAA,KACA,WAAA,EACA,YAAA,QC5DA,iCACE,QAAA,aACA,YAAA,OACA,eAAA,OACA,QAAA,GAlBJ,WAAA,KAAA,MAAA,YACA,aAAA,EACA,cAAA,KAAA,MAAA,YACA,YAAA,KAAA,MAuCE,uCACE,YAAA,EDoCF,iCACE,eAAA,EAMJ,0CACE,IAAA,EACA,MAAA,KACA,KAAA,KACA,WAAA,EACA,aAAA,QC7EA,mCACE,QAAA,aACA,YAAA,OACA,eAAA,OACA,QAAA,GAWA,mCACE,QAAA,KAGF,oCACE,QAAA,aACA,aAAA,OACA,eAAA,OACA,QAAA,GA9BN,WAAA,KAAA,MAAA,YACA,aAAA,KAAA,MACA,cAAA,KAAA,MAAA,YAiCE,yCACE,YAAA,EDqDF,oCACE,eAAA,EAON,kBACE,OAAA,EACA,OAAA,MAAA,EACA,SAAA,OACA,WAAA,IAAA,MAAA,gBAMF,eACE,QAAA,MACA,MAAA,KACA,QAAA,OAAA,KACA,MAAA,KACA,YAAA,IACA,MAAA,QACA,WAAA,QACA,gBAAA,KACA,YAAA,OACA,iBAAA,YACA,OAAA,EAcA,qBAAA,qBAEE,MAAA,QVzJF,iBAAA,QU8JA,sBAAA,sBAEE,MAAA,KACA,gBAAA,KVjKF,iBAAA,QUqKA,wBAAA,wBAEE,MAAA,QACA,eAAA,KACA,iBAAA,YAMJ,oBACE,QAAA,MAIF,iBACE,QAAA,MACA,QAAA,MAAA,KACA,cAAA,E3B0GI,UAAA,Q2BxGJ,MAAA,QACA,YAAA,OAIF,oBACE,QAAA,MACA,QAAA,OAAA,KACA,MAAA,QAIF,oBACE,MAAA,QACA,iBAAA,QACA,aAAA,gBAGA,mCACE,MAAA,QAEA,yCAAA,yCAEE,MAAA,KVhNJ,iBAAA,sBUoNE,0CAAA,0CAEE,MAAA,KVtNJ,iBAAA,QU0NE,4CAAA,4CAEE,MAAA,QAIJ,sCACE,aAAA,gBAGF,wCACE,MAAA,QAGF,qCACE,MAAA,QE5OJ,W9B2rHA,oB8BzrHE,SAAA,SACA,QAAA,YACA,eAAA,O9B6rHF,yB8B3rHE,gBACE,SAAA,SACA,KAAA,EAAA,EAAA,K9BmsHJ,4CACA,0CAIA,gCADA,gCADA,+BADA,+B8BhsHE,mC9ByrHF,iCAIA,uBADA,uBADA,sBADA,sB8BprHI,QAAA,EAKJ,aACE,QAAA,KACA,UAAA,KACA,gBAAA,WAEA,0BACE,MAAA,K9BgsHJ,wC8B1rHE,kCAEE,YAAA,K9B4rHJ,4C8BxrHE,uD5BRE,wBAAA,EACA,2BAAA,EFqsHJ,6C8BrrHE,+B9BorHF,iCEvrHI,uBAAA,EACA,0BAAA,E4BqBJ,uBACE,cAAA,SACA,aAAA,SAEA,8BAAA,uCAAA,sCAGE,YAAA,EAGF,0CACE,aAAA,EAIJ,0CAAA,+BACE,cAAA,QACA,aAAA,QAGF,0CAAA,+BACE,cAAA,OACA,aAAA,OAoBF,oBACE,eAAA,OACA,YAAA,WACA,gBAAA,OAEA,yB9BmpHF,+B8BjpHI,MAAA,K9BqpHJ,iD8BlpHE,2CAEE,WAAA,K9BopHJ,qD8BhpHE,gE5BvFE,2BAAA,EACA,0BAAA,EF2uHJ,sD8BhpHE,8B5B1GE,uBAAA,EACA,wBAAA,E6BxBJ,KACE,QAAA,KACA,UAAA,KACA,aAAA,EACA,cAAA,EACA,WAAA,KAGF,UACE,QAAA,MACA,QAAA,MAAA,KAGA,MAAA,QACA,gBAAA,KdHI,WAAA,MAAA,KAAA,WAAA,CAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,YAIA,uCcPN,UdQQ,WAAA,McCN,gBAAA,gBAEE,MAAA,QAKF,mBACE,MAAA,QACA,eAAA,KACA,OAAA,QAQJ,UACE,cAAA,IAAA,MAAA,QAEA,oBACE,cAAA,KACA,WAAA,IACA,OAAA,IAAA,MAAA,Y7BlBA,uBAAA,OACA,wBAAA,O6BoBA,0BAAA,0BAEE,aAAA,QAAA,QAAA,QAEA,UAAA,QAGF,6BACE,MAAA,QACA,iBAAA,YACA,aAAA,Y/BixHN,mC+B7wHE,2BAEE,MAAA,QACA,iBAAA,KACA,aAAA,QAAA,QAAA,KAGF,yBAEE,WAAA,K7B5CA,uBAAA,EACA,wBAAA,E6BuDF,qBACE,WAAA,IACA,OAAA,E7BnEA,cAAA,O6BuEF,4B/BmwHF,2B+BjwHI,MAAA,KbxFF,iBAAA,QlB+1HF,oB+B5vHE,oBAEE,KAAA,EAAA,EAAA,KACA,WAAA,O/B+vHJ,yB+B1vHE,yBAEE,WAAA,EACA,UAAA,EACA,WAAA,OAMF,8B/BuvHF,mC+BtvHI,MAAA,KAUF,uBACE,QAAA,KAEF,qBACE,QAAA,MCxHJ,QACE,SAAA,SACA,QAAA,KACA,UAAA,KACA,YAAA,OACA,gBAAA,cACA,YAAA,MAEA,eAAA,MAOA,mBhCs2HF,yBAGA,sBADA,sBADA,sBAGA,sBACA,uBgC12HI,QAAA,KACA,UAAA,QACA,YAAA,OACA,gBAAA,cAoBJ,cACE,YAAA,SACA,eAAA,SACA,aAAA,K/B2OI,UAAA,Q+BzOJ,gBAAA,KACA,YAAA,OAaF,YACE,QAAA,KACA,eAAA,OACA,aAAA,EACA,cAAA,EACA,WAAA,KAEA,sBACE,cAAA,EACA,aAAA,EAGF,2BACE,SAAA,OASJ,aACE,YAAA,MACA,eAAA,MAYF,iBACE,WAAA,KACA,UAAA,EAGA,YAAA,OAIF,gBACE,QAAA,OAAA,O/B6KI,UAAA,Q+B3KJ,YAAA,EACA,iBAAA,YACA,OAAA,IAAA,MAAA,Y9BzGE,cAAA,OeHE,WAAA,WAAA,KAAA,YAIA,uCemGN,gBflGQ,WAAA,Me2GN,sBACE,gBAAA,KAGF,sBACE,gBAAA,KACA,QAAA,EACA,WAAA,EAAA,EAAA,EAAA,OAMJ,qBACE,QAAA,aACA,MAAA,MACA,OAAA,MACA,eAAA,OACA,kBAAA,UACA,oBAAA,OACA,gBAAA,KAGF,mBACE,WAAA,6BACA,WAAA,KvB1FE,yBuBsGA,kBAEI,UAAA,OACA,gBAAA,WAEA,8BACE,eAAA,IAEA,6CACE,SAAA,SAGF,wCACE,cAAA,MACA,aAAA,MAIJ,qCACE,SAAA,QAGF,mCACE,QAAA,eACA,WAAA,KAGF,kCACE,QAAA,KAGF,oCACE,QAAA,KAGF,6BACE,SAAA,QACA,OAAA,EACA,QAAA,KACA,UAAA,EACA,WAAA,kBACA,iBAAA,YACA,aAAA,EACA,YAAA,EfhMJ,WAAA,KekMI,UAAA,KhC+yHV,oCgC7yHQ,iCAEE,OAAA,KACA,WAAA,EACA,cAAA,EAGF,kCACE,QAAA,KACA,UAAA,EACA,QAAA,EACA,WAAA,SvBhKN,yBuBsGA,kBAEI,UAAA,OACA,gBAAA,WAEA,8BACE,eAAA,IAEA,6CACE,SAAA,SAGF,wCACE,cAAA,MACA,aAAA,MAIJ,qCACE,SAAA,QAGF,mCACE,QAAA,eACA,WAAA,KAGF,kCACE,QAAA,KAGF,oCACE,QAAA,KAGF,6BACE,SAAA,QACA,OAAA,EACA,QAAA,KACA,UAAA,EACA,WAAA,kBACA,iBAAA,YACA,aAAA,EACA,YAAA,EfhMJ,WAAA,KekMI,UAAA,KhCo2HV,oCgCl2HQ,iCAEE,OAAA,KACA,WAAA,EACA,cAAA,EAGF,kCACE,QAAA,KACA,UAAA,EACA,QAAA,EACA,WAAA,SvBhKN,yBuBsGA,kBAEI,UAAA,OACA,gBAAA,WAEA,8BACE,eAAA,IAEA,6CACE,SAAA,SAGF,wCACE,cAAA,MACA,aAAA,MAIJ,qCACE,SAAA,QAGF,mCACE,QAAA,eACA,WAAA,KAGF,kCACE,QAAA,KAGF,oCACE,QAAA,KAGF,6BACE,SAAA,QACA,OAAA,EACA,QAAA,KACA,UAAA,EACA,WAAA,kBACA,iBAAA,YACA,aAAA,EACA,YAAA,EfhMJ,WAAA,KekMI,UAAA,KhCy5HV,oCgCv5HQ,iCAEE,OAAA,KACA,WAAA,EACA,cAAA,EAGF,kCACE,QAAA,KACA,UAAA,EACA,QAAA,EACA,WAAA,SvBhKN,0BuBsGA,kBAEI,UAAA,OACA,gBAAA,WAEA,8BACE,eAAA,IAEA,6CACE,SAAA,SAGF,wCACE,cAAA,MACA,aAAA,MAIJ,qCACE,SAAA,QAGF,mCACE,QAAA,eACA,WAAA,KAGF,kCACE,QAAA,KAGF,oCACE,QAAA,KAGF,6BACE,SAAA,QACA,OAAA,EACA,QAAA,KACA,UAAA,EACA,WAAA,kBACA,iBAAA,YACA,aAAA,EACA,YAAA,EfhMJ,WAAA,KekMI,UAAA,KhC88HV,oCgC58HQ,iCAEE,OAAA,KACA,WAAA,EACA,cAAA,EAGF,kCACE,QAAA,KACA,UAAA,EACA,QAAA,EACA,WAAA,SvBhKN,0BuBsGA,mBAEI,UAAA,OACA,gBAAA,WAEA,+BACE,eAAA,IAEA,8CACE,SAAA,SAGF,yCACE,cAAA,MACA,aAAA,MAIJ,sCACE,SAAA,QAGF,oCACE,QAAA,eACA,WAAA,KAGF,mCACE,QAAA,KAGF,qCACE,QAAA,KAGF,8BACE,SAAA,QACA,OAAA,EACA,QAAA,KACA,UAAA,EACA,WAAA,kBACA,iBAAA,YACA,aAAA,EACA,YAAA,EfhMJ,WAAA,KekMI,UAAA,KhCmgIV,qCgCjgIQ,kCAEE,OAAA,KACA,WAAA,EACA,cAAA,EAGF,mCACE,QAAA,KACA,UAAA,EACA,QAAA,EACA,WAAA,SA1DN,eAEI,UAAA,OACA,gBAAA,WAEA,2BACE,eAAA,IAEA,0CACE,SAAA,SAGF,qCACE,cAAA,MACA,aAAA,MAIJ,kCACE,SAAA,QAGF,gCACE,QAAA,eACA,WAAA,KAGF,+BACE,QAAA,KAGF,iCACE,QAAA,KAGF,0BACE,SAAA,QACA,OAAA,EACA,QAAA,KACA,UAAA,EACA,WAAA,kBACA,iBAAA,YACA,aAAA,EACA,YAAA,EfhMJ,WAAA,KekMI,UAAA,KhCujIV,iCgCrjIQ,8BAEE,OAAA,KACA,WAAA,EACA,cAAA,EAGF,+BACE,QAAA,KACA,UAAA,EACA,QAAA,EACA,WAAA,QAcR,4BACE,MAAA,eAEA,kCAAA,kCAEE,MAAA,eAKF,oCACE,MAAA,gBAEA,0CAAA,0CAEE,MAAA,eAGF,6CACE,MAAA,ehCqiIR,2CgCjiII,0CAEE,MAAA,eAIJ,8BACE,MAAA,gBACA,aAAA,eAGF,mCACE,iBAAA,4OAGF,2BACE,MAAA,gBAEA,6BhC8hIJ,mCADA,mCgC1hIM,MAAA,eAOJ,2BACE,MAAA,KAEA,iCAAA,iCAEE,MAAA,KAKF,mCACE,MAAA,sBAEA,yCAAA,yCAEE,MAAA,sBAGF,4CACE,MAAA,sBhCqhIR,0CgCjhII,yCAEE,MAAA,KAIJ,6BACE,MAAA,sBACA,aAAA,qBAGF,kCACE,iBAAA,kPAGF,0BACE,MAAA,sBACA,4BhC+gIJ,kCADA,kCgC3gIM,MAAA,KCvUN,MACE,SAAA,SACA,QAAA,KACA,eAAA,OACA,UAAA,EAEA,UAAA,WACA,iBAAA,KACA,gBAAA,WACA,OAAA,IAAA,MAAA,iB/BME,cAAA,O+BFF,SACE,aAAA,EACA,YAAA,EAGF,kBACE,WAAA,QACA,cAAA,QAEA,8BACE,iBAAA,E/BCF,uBAAA,mBACA,wBAAA,mB+BEA,6BACE,oBAAA,E/BUF,2BAAA,mBACA,0BAAA,mB+BJF,+BjCk1IF,+BiCh1II,WAAA,EAIJ,WAGE,KAAA,EAAA,EAAA,KACA,QAAA,KAAA,KAIF,YACE,cAAA,MAGF,eACE,WAAA,QACA,cAAA,EAGF,sBACE,cAAA,EAQA,sBACE,YAAA,KAQJ,aACE,QAAA,MAAA,KACA,cAAA,EAEA,iBAAA,gBACA,cAAA,IAAA,MAAA,iBAEA,yB/BpEE,cAAA,mBAAA,mBAAA,EAAA,E+ByEJ,aACE,QAAA,MAAA,KAEA,iBAAA,gBACA,WAAA,IAAA,MAAA,iBAEA,wB/B/EE,cAAA,EAAA,EAAA,mBAAA,mB+ByFJ,kBACE,aAAA,OACA,cAAA,OACA,YAAA,OACA,cAAA,EAUF,mBACE,aAAA,OACA,YAAA,OAIF,kBACE,SAAA,SACA,IAAA,EACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,K/BnHE,cAAA,mB+BuHJ,UjCozIA,iBADA,ciChzIE,MAAA,KAGF,UjCmzIA,cEv6II,uBAAA,mBACA,wBAAA,mB+BwHJ,UjCozIA,iBE/5II,2BAAA,mBACA,0BAAA,mB+BuHF,kBACE,cAAA,OxBpGA,yBwBgGJ,YAQI,QAAA,KACA,UAAA,IAAA,KAGA,kBAEE,KAAA,EAAA,EAAA,GACA,cAAA,EAEA,wBACE,YAAA,EACA,YAAA,EAKA,mC/BpJJ,wBAAA,EACA,2BAAA,EF+7IJ,gDiCzyIU,iDAGE,wBAAA,EjC0yIZ,gDiCxyIU,oDAGE,2BAAA,EAIJ,oC/BrJJ,uBAAA,EACA,0BAAA,EF67IJ,iDiCtyIU,kDAGE,uBAAA,EjCuyIZ,iDiCryIU,qDAGE,0BAAA,GC7MZ,kBACE,SAAA,SACA,QAAA,KACA,YAAA,OACA,MAAA,KACA,QAAA,KAAA,QjC4RI,UAAA,KiC1RJ,MAAA,QACA,WAAA,KACA,iBAAA,KACA,OAAA,EhCKE,cAAA,EgCHF,gBAAA,KjBAI,WAAA,MAAA,KAAA,WAAA,CAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,WAAA,CAAA,cAAA,KAAA,KAIA,uCiBhBN,kBjBiBQ,WAAA,MiBFN,kCACE,MAAA,QACA,iBAAA,QACA,WAAA,MAAA,EAAA,KAAA,EAAA,iBAEA,yCACE,iBAAA,gRACA,UAAA,gBAKJ,yBACE,YAAA,EACA,MAAA,QACA,OAAA,QACA,YAAA,KACA,QAAA,GACA,iBAAA,gRACA,kBAAA,UACA,gBAAA,QjBvBE,WAAA,UAAA,IAAA,YAIA,uCiBWJ,yBjBVM,WAAA,MiBsBN,wBACE,QAAA,EAGF,wBACE,QAAA,EACA,aAAA,QACA,QAAA,EACA,WAAA,EAAA,EAAA,EAAA,OAAA,qBAIJ,kBACE,cAAA,EAGF,gBACE,iBAAA,KACA,OAAA,IAAA,MAAA,iBAEA,8BhCnCE,uBAAA,OACA,wBAAA,OgCqCA,gDhCtCA,uBAAA,mBACA,wBAAA,mBgC0CF,oCACE,WAAA,EAIF,6BhClCE,2BAAA,OACA,0BAAA,OgCqCE,yDhCtCF,2BAAA,mBACA,0BAAA,mBgC0CA,iDhC3CA,2BAAA,OACA,0BAAA,OgCgDJ,gBACE,QAAA,KAAA,QASA,qCACE,aAAA,EAGF,iCACE,aAAA,EACA,YAAA,EhCxFA,cAAA,EgC2FA,6CAAgB,WAAA,EAChB,4CAAe,cAAA,EAEf,mDhC9FA,cAAA,EiCnBJ,YACE,QAAA,KACA,UAAA,KACA,QAAA,EAAA,EACA,cAAA,KAEA,WAAA,KAOA,kCACE,aAAA,MAEA,0CACE,MAAA,KACA,cAAA,MACA,MAAA,QACA,QAAA,kCAIJ,wBACE,MAAA,QCzBJ,YACE,QAAA,KhCGA,aAAA,EACA,WAAA,KgCAF,WACE,SAAA,SACA,QAAA,MACA,MAAA,QACA,gBAAA,KACA,iBAAA,KACA,OAAA,IAAA,MAAA,QnBKI,WAAA,MAAA,KAAA,WAAA,CAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YAIA,uCmBfN,WnBgBQ,WAAA,MmBPN,iBACE,QAAA,EACA,MAAA,QAEA,iBAAA,QACA,aAAA,QAGF,iBACE,QAAA,EACA,MAAA,QACA,iBAAA,QACA,QAAA,EACA,WAAA,EAAA,EAAA,EAAA,OAAA,qBAKF,wCACE,YAAA,KAGF,6BACE,QAAA,EACA,MAAA,KlBlCF,iBAAA,QkBoCE,aAAA,QAGF,+BACE,MAAA,QACA,eAAA,KACA,iBAAA,KACA,aAAA,QC3CF,WACE,QAAA,QAAA,OAOI,kCnCqCJ,uBAAA,OACA,0BAAA,OmChCI,iCnCiBJ,wBAAA,OACA,2BAAA,OmChCF,0BACE,QAAA,OAAA,OpCgSE,UAAA,QoCzRE,iDnCqCJ,uBAAA,MACA,0BAAA,MmChCI,gDnCiBJ,wBAAA,MACA,2BAAA,MmChCF,0BACE,QAAA,OAAA,MpCgSE,UAAA,QoCzRE,iDnCqCJ,uBAAA,MACA,0BAAA,MmChCI,gDnCiBJ,wBAAA,MACA,2BAAA,MoC/BJ,OACE,QAAA,aACA,QAAA,MAAA,MrC8RI,UAAA,MqC5RJ,YAAA,IACA,YAAA,EACA,MAAA,KACA,WAAA,OACA,YAAA,OACA,eAAA,SpCKE,cAAA,OoCAF,aACE,QAAA,KAKJ,YACE,SAAA,SACA,IAAA,KCvBF,OACE,SAAA,SACA,QAAA,KAAA,KACA,cAAA,KACA,OAAA,IAAA,MAAA,YrCWE,cAAA,OqCNJ,eAEE,MAAA,QAIF,YACE,YAAA,IAQF,mBACE,cAAA,KAGA,8BACE,SAAA,SACA,IAAA,EACA,MAAA,EACA,QAAA,EACA,QAAA,QAAA,KAeF,eClDA,MAAA,QtBEA,iBAAA,QsBAA,aAAA,QAEA,2BACE,MAAA,QD6CF,iBClDA,MAAA,QtBEA,iBAAA,QsBAA,aAAA,QAEA,6BACE,MAAA,QD6CF,eClDA,MAAA,QtBEA,iBAAA,QsBAA,aAAA,QAEA,2BACE,MAAA,QD6CF,YClDA,MAAA,QtBEA,iBAAA,QsBAA,aAAA,QAEA,wBACE,MAAA,QD6CF,eClDA,MAAA,QtBEA,iBAAA,QsBAA,aAAA,QAEA,2BACE,MAAA,QD6CF,cClDA,MAAA,QtBEA,iBAAA,QsBAA,aAAA,QAEA,0BACE,MAAA,QD6CF,aClDA,MAAA,QtBEA,iBAAA,QsBAA,aAAA,QAEA,yBACE,MAAA,QD6CF,YClDA,MAAA,QtBEA,iBAAA,QsBAA,aAAA,QAEA,wBACE,MAAA,QCHF,wCACE,GAAK,sBAAA,MADP,gCACE,GAAK,sBAAA,MAKT,UACE,QAAA,KACA,OAAA,KACA,SAAA,OxCwRI,UAAA,OwCtRJ,iBAAA,QvCIE,cAAA,OuCCJ,cACE,QAAA,KACA,eAAA,OACA,gBAAA,OACA,SAAA,OACA,MAAA,KACA,WAAA,OACA,YAAA,OACA,iBAAA,QxBZI,WAAA,MAAA,IAAA,KAIA,uCwBAN,cxBCQ,WAAA,MwBWR,sBvBYE,iBAAA,iKuBVA,gBAAA,KAAA,KAIA,uBACE,kBAAA,GAAA,OAAA,SAAA,qBAAA,UAAA,GAAA,OAAA,SAAA,qBAGE,uCAJJ,uBAKM,kBAAA,KAAA,UAAA,MCvCR,YACE,QAAA,KACA,eAAA,OAGA,aAAA,EACA,cAAA,ExCSE,cAAA,OwCLJ,qBACE,gBAAA,KACA,cAAA,QAEA,gCAEE,QAAA,uBAAA,KACA,kBAAA,QAUJ,wBACE,MAAA,KACA,MAAA,QACA,WAAA,QAGA,8BAAA,8BAEE,QAAA,EACA,MAAA,QACA,gBAAA,KACA,iBAAA,QAGF,+BACE,MAAA,QACA,iBAAA,QASJ,iBACE,SAAA,SACA,QAAA,MACA,QAAA,MAAA,KACA,MAAA,QACA,gBAAA,KACA,iBAAA,KACA,OAAA,IAAA,MAAA,iBAEA,6BxCrCE,uBAAA,QACA,wBAAA,QwCwCF,4BxC3BE,2BAAA,QACA,0BAAA,QwC8BF,0BAAA,0BAEE,MAAA,QACA,eAAA,KACA,iBAAA,KAIF,wBACE,QAAA,EACA,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,kCACE,iBAAA,EAEA,yCACE,WAAA,KACA,iBAAA,IAcF,uBACE,eAAA,IAGE,oDxCrCJ,0BAAA,OAZA,wBAAA,EwCsDI,mDxCtDJ,wBAAA,OAYA,0BAAA,EwC+CI,+CACE,WAAA,EAGF,yDACE,iBAAA,IACA,kBAAA,EAEA,gEACE,YAAA,KACA,kBAAA,IjCpER,yBiC4CA,0BACE,eAAA,IAGE,uDxCrCJ,0BAAA,OAZA,wBAAA,EwCsDI,sDxCtDJ,wBAAA,OAYA,0BAAA,EwC+CI,kDACE,WAAA,EAGF,4DACE,iBAAA,IACA,kBAAA,EAEA,mEACE,YAAA,KACA,kBAAA,KjCpER,yBiC4CA,0BACE,eAAA,IAGE,uDxCrCJ,0BAAA,OAZA,wBAAA,EwCsDI,sDxCtDJ,wBAAA,OAYA,0BAAA,EwC+CI,kDACE,WAAA,EAGF,4DACE,iBAAA,IACA,kBAAA,EAEA,mEACE,YAAA,KACA,kBAAA,KjCpER,yBiC4CA,0BACE,eAAA,IAGE,uDxCrCJ,0BAAA,OAZA,wBAAA,EwCsDI,sDxCtDJ,wBAAA,OAYA,0BAAA,EwC+CI,kDACE,WAAA,EAGF,4DACE,iBAAA,IACA,kBAAA,EAEA,mEACE,YAAA,KACA,kBAAA,KjCpER,0BiC4CA,0BACE,eAAA,IAGE,uDxCrCJ,0BAAA,OAZA,wBAAA,EwCsDI,sDxCtDJ,wBAAA,OAYA,0BAAA,EwC+CI,kDACE,WAAA,EAGF,4DACE,iBAAA,IACA,kBAAA,EAEA,mEACE,YAAA,KACA,kBAAA,KjCpER,0BiC4CA,2BACE,eAAA,IAGE,wDxCrCJ,0BAAA,OAZA,wBAAA,EwCsDI,uDxCtDJ,wBAAA,OAYA,0BAAA,EwC+CI,mDACE,WAAA,EAGF,6DACE,iBAAA,IACA,kBAAA,EAEA,oEACE,YAAA,KACA,kBAAA,KAcZ,kBxC9HI,cAAA,EwCiIF,mCACE,aAAA,EAAA,EAAA,IAEA,8CACE,oBAAA,ECpJJ,yBACE,MAAA,QACA,iBAAA,QAGE,sDAAA,sDAEE,MAAA,QACA,iBAAA,QAGF,uDACE,MAAA,KACA,iBAAA,QACA,aAAA,QAdN,2BACE,MAAA,QACA,iBAAA,QAGE,wDAAA,wDAEE,MAAA,QACA,iBAAA,QAGF,yDACE,MAAA,KACA,iBAAA,QACA,aAAA,QAdN,yBACE,MAAA,QACA,iBAAA,QAGE,sDAAA,sDAEE,MAAA,QACA,iBAAA,QAGF,uDACE,MAAA,KACA,iBAAA,QACA,aAAA,QAdN,sBACE,MAAA,QACA,iBAAA,QAGE,mDAAA,mDAEE,MAAA,QACA,iBAAA,QAGF,oDACE,MAAA,KACA,iBAAA,QACA,aAAA,QAdN,yBACE,MAAA,QACA,iBAAA,QAGE,sDAAA,sDAEE,MAAA,QACA,iBAAA,QAGF,uDACE,MAAA,KACA,iBAAA,QACA,aAAA,QAdN,wBACE,MAAA,QACA,iBAAA,QAGE,qDAAA,qDAEE,MAAA,QACA,iBAAA,QAGF,sDACE,MAAA,KACA,iBAAA,QACA,aAAA,QAdN,uBACE,MAAA,QACA,iBAAA,QAGE,oDAAA,oDAEE,MAAA,QACA,iBAAA,QAGF,qDACE,MAAA,KACA,iBAAA,QACA,aAAA,QAdN,sBACE,MAAA,QACA,iBAAA,QAGE,mDAAA,mDAEE,MAAA,QACA,iBAAA,QAGF,oDACE,MAAA,KACA,iBAAA,QACA,aAAA,QCbR,WACE,WAAA,YACA,MAAA,IACA,OAAA,IACA,QAAA,MAAA,MACA,MAAA,KACA,WAAA,YAAA,0TAAA,MAAA,CAAA,IAAA,KAAA,UACA,OAAA,E1COE,cAAA,O0CLF,QAAA,GAGA,iBACE,MAAA,KACA,gBAAA,KACA,QAAA,IAGF,iBACE,QAAA,EACA,WAAA,EAAA,EAAA,EAAA,OAAA,qBACA,QAAA,EAGF,oBAAA,oBAEE,eAAA,KACA,oBAAA,KAAA,iBAAA,KAAA,YAAA,KACA,QAAA,IAIJ,iBACE,OAAA,UAAA,gBAAA,iBCtCF,OACE,MAAA,MACA,UAAA,K5CmSI,UAAA,Q4ChSJ,eAAA,KACA,iBAAA,sBACA,gBAAA,YACA,OAAA,IAAA,MAAA,eACA,WAAA,EAAA,MAAA,KAAA,gB3CUE,cAAA,O2CPF,eACE,QAAA,EAGF,kBACE,QAAA,KAIJ,iBACE,MAAA,oBAAA,MAAA,iBAAA,MAAA,YACA,UAAA,KACA,eAAA,KAEA,mCACE,cAAA,OAIJ,cACE,QAAA,KACA,YAAA,OACA,QAAA,MAAA,OACA,MAAA,QACA,iBAAA,sBACA,gBAAA,YACA,cAAA,IAAA,MAAA,gB3CVE,uBAAA,mBACA,wBAAA,mB2CYF,yBACE,aAAA,SACA,YAAA,OAIJ,YACE,QAAA,OACA,UAAA,WC1CF,OACE,SAAA,MACA,IAAA,EACA,KAAA,EACA,QAAA,KACA,QAAA,KACA,MAAA,KACA,OAAA,KACA,WAAA,OACA,WAAA,KAGA,QAAA,EAOF,cACE,SAAA,SACA,MAAA,KACA,OAAA,MAEA,eAAA,KAGA,0B7BlBI,WAAA,UAAA,IAAA,S6BoBF,UAAA,mB7BhBE,uC6BcJ,0B7BbM,WAAA,M6BiBN,0BACE,UAAA,KAIF,kCACE,UAAA,YAIJ,yBACE,OAAA,kBAEA,wCACE,WAAA,KACA,SAAA,OAGF,qCACE,WAAA,KAIJ,uBACE,QAAA,KACA,YAAA,OACA,WAAA,kBAIF,eACE,SAAA,SACA,QAAA,KACA,eAAA,OACA,MAAA,KAGA,eAAA,KACA,iBAAA,KACA,gBAAA,YACA,OAAA,IAAA,MAAA,e5C3DE,cAAA,M4C+DF,QAAA,EAIF,gBCpFE,SAAA,MACA,IAAA,EACA,KAAA,EACA,QAAA,KACA,MAAA,MACA,OAAA,MACA,iBAAA,KAGA,qBAAS,QAAA,EACT,qBAAS,QAAA,GDgFX,cACE,QAAA,KACA,YAAA,EACA,YAAA,OACA,gBAAA,cACA,QAAA,KAAA,KACA,cAAA,IAAA,MAAA,Q5CtEE,uBAAA,kBACA,wBAAA,kB4CwEF,yBACE,QAAA,MAAA,MACA,OAAA,OAAA,OAAA,OAAA,KAKJ,aACE,cAAA,EACA,YAAA,IAKF,YACE,SAAA,SAGA,KAAA,EAAA,EAAA,KACA,QAAA,KAIF,cACE,QAAA,KACA,UAAA,KACA,YAAA,EACA,YAAA,OACA,gBAAA,SACA,QAAA,OACA,WAAA,IAAA,MAAA,Q5CzFE,2BAAA,kBACA,0BAAA,kB4C8FF,gBACE,OAAA,OrC3EA,yBqCkFF,cACE,UAAA,MACA,OAAA,QAAA,KAGF,yBACE,OAAA,oBAGF,uBACE,WAAA,oBAOF,UAAY,UAAA,OrCnGV,yBqCuGF,U9CywKF,U8CvwKI,UAAA,OrCzGA,0BqC8GF,UAAY,UAAA,QASV,kBACE,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EAEA,iCACE,OAAA,KACA,OAAA,E5C3KJ,cAAA,E4C+KE,gC5C/KF,cAAA,E4CmLE,8BACE,WAAA,KAGF,gC5CvLF,cAAA,EOyDA,4BqC0GA,0BACE,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EAEA,yCACE,OAAA,KACA,OAAA,E5C3KJ,cAAA,E4C+KE,wC5C/KF,cAAA,E4CmLE,sCACE,WAAA,KAGF,wC5CvLF,cAAA,GOyDA,4BqC0GA,0BACE,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EAEA,yCACE,OAAA,KACA,OAAA,E5C3KJ,cAAA,E4C+KE,wC5C/KF,cAAA,E4CmLE,sCACE,WAAA,KAGF,wC5CvLF,cAAA,GOyDA,4BqC0GA,0BACE,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EAEA,yCACE,OAAA,KACA,OAAA,E5C3KJ,cAAA,E4C+KE,wC5C/KF,cAAA,E4CmLE,sCACE,WAAA,KAGF,wC5CvLF,cAAA,GOyDA,6BqC0GA,0BACE,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EAEA,yCACE,OAAA,KACA,OAAA,E5C3KJ,cAAA,E4C+KE,wC5C/KF,cAAA,E4CmLE,sCACE,WAAA,KAGF,wC5CvLF,cAAA,GOyDA,6BqC0GA,2BACE,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EAEA,0CACE,OAAA,KACA,OAAA,E5C3KJ,cAAA,E4C+KE,yC5C/KF,cAAA,E4CmLE,uCACE,WAAA,KAGF,yC5CvLF,cAAA,G8ClBJ,SACE,SAAA,SACA,QAAA,KACA,QAAA,MACA,OAAA,ECJA,YAAA,0BAEA,WAAA,OACA,YAAA,IACA,YAAA,IACA,WAAA,KACA,WAAA,MACA,gBAAA,KACA,YAAA,KACA,eAAA,KACA,eAAA,OACA,WAAA,OACA,aAAA,OACA,YAAA,OACA,WAAA,KhDsRI,UAAA,Q+C1RJ,UAAA,WACA,QAAA,EAEA,cAAS,QAAA,GAET,wBACE,SAAA,SACA,QAAA,MACA,MAAA,MACA,OAAA,MAEA,gCACE,SAAA,SACA,QAAA,GACA,aAAA,YACA,aAAA,MAKN,6CAAA,gBACE,QAAA,MAAA,EAEA,4DAAA,+BACE,OAAA,EAEA,oEAAA,uCACE,IAAA,KACA,aAAA,MAAA,MAAA,EACA,iBAAA,KAKN,+CAAA,gBACE,QAAA,EAAA,MAEA,8DAAA,+BACE,KAAA,EACA,MAAA,MACA,OAAA,MAEA,sEAAA,uCACE,MAAA,KACA,aAAA,MAAA,MAAA,MAAA,EACA,mBAAA,KAKN,gDAAA,mBACE,QAAA,MAAA,EAEA,+DAAA,kCACE,IAAA,EAEA,uEAAA,0CACE,OAAA,KACA,aAAA,EAAA,MAAA,MACA,oBAAA,KAKN,8CAAA,kBACE,QAAA,EAAA,MAEA,6DAAA,iCACE,MAAA,EACA,MAAA,MACA,OAAA,MAEA,qEAAA,yCACE,KAAA,KACA,aAAA,MAAA,EAAA,MAAA,MACA,kBAAA,KAqBN,eACE,UAAA,MACA,QAAA,OAAA,MACA,MAAA,KACA,WAAA,OACA,iBAAA,K9C7FE,cAAA,OgDnBJ,SACE,SAAA,SACA,IAAA,EACA,KAAA,EACA,QAAA,KACA,QAAA,MACA,UAAA,MDLA,YAAA,0BAEA,WAAA,OACA,YAAA,IACA,YAAA,IACA,WAAA,KACA,WAAA,MACA,gBAAA,KACA,YAAA,KACA,eAAA,KACA,eAAA,OACA,WAAA,OACA,aAAA,OACA,YAAA,OACA,WAAA,KhDsRI,UAAA,QiDzRJ,UAAA,WACA,iBAAA,KACA,gBAAA,YACA,OAAA,IAAA,MAAA,ehDIE,cAAA,MgDAF,wBACE,SAAA,SACA,QAAA,MACA,MAAA,KACA,OAAA,MAEA,+BAAA,gCAEE,SAAA,SACA,QAAA,MACA,QAAA,GACA,aAAA,YACA,aAAA,MAMJ,4DAAA,+BACE,OAAA,mBAEA,oEAAA,uCACE,OAAA,EACA,aAAA,MAAA,MAAA,EACA,iBAAA,gBAGF,mEAAA,sCACE,OAAA,IACA,aAAA,MAAA,MAAA,EACA,iBAAA,KAMJ,8DAAA,+BACE,KAAA,mBACA,MAAA,MACA,OAAA,KAEA,sEAAA,uCACE,KAAA,EACA,aAAA,MAAA,MAAA,MAAA,EACA,mBAAA,gBAGF,qEAAA,sCACE,KAAA,IACA,aAAA,MAAA,MAAA,MAAA,EACA,mBAAA,KAMJ,+DAAA,kCACE,IAAA,mBAEA,uEAAA,0CACE,IAAA,EACA,aAAA,EAAA,MAAA,MAAA,MACA,oBAAA,gBAGF,sEAAA,yCACE,IAAA,IACA,aAAA,EAAA,MAAA,MAAA,MACA,oBAAA,KAKJ,wEAAA,2CACE,SAAA,SACA,IAAA,EACA,KAAA,IACA,QAAA,MACA,MAAA,KACA,YAAA,OACA,QAAA,GACA,cAAA,IAAA,MAAA,QAKF,6DAAA,iCACE,MAAA,mBACA,MAAA,MACA,OAAA,KAEA,qEAAA,yCACE,MAAA,EACA,aAAA,MAAA,EAAA,MAAA,MACA,kBAAA,gBAGF,oEAAA,wCACE,MAAA,IACA,aAAA,MAAA,EAAA,MAAA,MACA,kBAAA,KAqBN,gBACE,QAAA,MAAA,KACA,cAAA,EjDuJI,UAAA,KiDpJJ,iBAAA,QACA,cAAA,IAAA,MAAA,ehDtHE,uBAAA,kBACA,wBAAA,kBgDwHF,sBACE,QAAA,KAIJ,cACE,QAAA,KAAA,KACA,MAAA,QC/IF,UACE,SAAA,SAGF,wBACE,aAAA,MAGF,gBACE,SAAA,SACA,MAAA,KACA,SAAA,OCtBA,uBACE,QAAA,MACA,MAAA,KACA,QAAA,GDuBJ,eACE,SAAA,SACA,QAAA,KACA,MAAA,KACA,MAAA,KACA,aAAA,MACA,4BAAA,OAAA,oBAAA,OlClBI,WAAA,UAAA,IAAA,YAIA,uCkCQN,elCPQ,WAAA,MjBgzLR,oBACA,oBmDhyLA,sBAGE,QAAA,MnDmyLF,0BmD/xLA,8CAEE,UAAA,iBnDkyLF,4BmD/xLA,4CAEE,UAAA,kBAWA,8BACE,QAAA,EACA,oBAAA,QACA,UAAA,KnD0xLJ,uDACA,qDmDxxLE,qCAGE,QAAA,EACA,QAAA,EnDyxLJ,yCmDtxLE,2CAEE,QAAA,EACA,QAAA,ElC/DE,WAAA,QAAA,GAAA,IAIA,uCjBq1LN,yCmD7xLE,2ClCvDM,WAAA,MjB01LR,uBmDtxLA,uBAEE,SAAA,SACA,IAAA,EACA,OAAA,EACA,QAAA,EAEA,QAAA,KACA,YAAA,OACA,gBAAA,OACA,MAAA,IACA,QAAA,EACA,MAAA,KACA,WAAA,OACA,WAAA,IACA,OAAA,EACA,QAAA,GlCzFI,WAAA,QAAA,KAAA,KAIA,uCjB82LN,uBmDzyLA,uBlCpEQ,WAAA,MjBm3LR,6BADA,6BmD1xLE,6BAAA,6BAEE,MAAA,KACA,gBAAA,KACA,QAAA,EACA,QAAA,GAGJ,uBACE,KAAA,EAGF,uBACE,MAAA,EnD8xLF,4BmDzxLA,4BAEE,QAAA,aACA,MAAA,KACA,OAAA,KACA,kBAAA,UACA,oBAAA,IACA,gBAAA,KAAA,KAWF,4BACE,iBAAA,wPAEF,4BACE,iBAAA,yPAQF,qBACE,SAAA,SACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,EACA,QAAA,KACA,gBAAA,OACA,QAAA,EAEA,aAAA,IACA,cAAA,KACA,YAAA,IACA,WAAA,KAEA,sCACE,WAAA,YACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,OAAA,IACA,QAAA,EACA,aAAA,IACA,YAAA,IACA,YAAA,OACA,OAAA,QACA,iBAAA,KACA,gBAAA,YACA,OAAA,EAEA,WAAA,KAAA,MAAA,YACA,cAAA,KAAA,MAAA,YACA,QAAA,GlC5KE,WAAA,QAAA,IAAA,KAIA,uCkCwJJ,sClCvJM,WAAA,MkC2KN,6BACE,QAAA,EASJ,kBACE,SAAA,SACA,MAAA,IACA,OAAA,QACA,KAAA,IACA,YAAA,QACA,eAAA,QACA,MAAA,KACA,WAAA,OnDoxLF,2CmD9wLE,2CAEE,OAAA,UAAA,eAGF,qDACE,iBAAA,KAGF,iCACE,MAAA,KE7NJ,kCACE,GAAK,UAAA,gBADP,0BACE,GAAK,UAAA,gBAIP,gBACE,QAAA,aACA,MAAA,KACA,OAAA,KACA,eAAA,QACA,OAAA,MAAA,MAAA,aACA,mBAAA,YAEA,cAAA,IACA,kBAAA,KAAA,OAAA,SAAA,eAAA,UAAA,KAAA,OAAA,SAAA,eAGF,mBACE,MAAA,KACA,OAAA,KACA,aAAA,KAQF,gCACE,GACE,UAAA,SAEF,IACE,QAAA,EACA,UAAA,MANJ,wBACE,GACE,UAAA,SAEF,IACE,QAAA,EACA,UAAA,MAKJ,cACE,QAAA,aACA,MAAA,KACA,OAAA,KACA,eAAA,QACA,iBAAA,aAEA,cAAA,IACA,QAAA,EACA,kBAAA,KAAA,OAAA,SAAA,aAAA,UAAA,KAAA,OAAA,SAAA,aAGF,iBACE,MAAA,KACA,OAAA,KAIA,uCACE,gBrDo/LJ,cqDl/LM,2BAAA,KAAA,mBAAA,MCjEN,WACE,SAAA,MACA,OAAA,EACA,QAAA,KACA,QAAA,KACA,eAAA,OACA,UAAA,KAEA,WAAA,OACA,iBAAA,KACA,gBAAA,YACA,QAAA,ErCKI,WAAA,UAAA,IAAA,YAIA,uCqCpBN,WrCqBQ,WAAA,MqCLR,oBPdE,SAAA,MACA,IAAA,EACA,KAAA,EACA,QAAA,KACA,MAAA,MACA,OAAA,MACA,iBAAA,KAGA,yBAAS,QAAA,EACT,yBAAS,QAAA,GOQX,kBACE,QAAA,KACA,YAAA,OACA,gBAAA,cACA,QAAA,KAAA,KAEA,6BACE,QAAA,MAAA,MACA,WAAA,OACA,aAAA,OACA,cAAA,OAIJ,iBACE,cAAA,EACA,YAAA,IAGF,gBACE,UAAA,EACA,QAAA,KAAA,KACA,WAAA,KAGF,iBACE,IAAA,EACA,KAAA,EACA,MAAA,MACA,aAAA,IAAA,MAAA,eACA,UAAA,kBAGF,eACE,IAAA,EACA,MAAA,EACA,MAAA,MACA,YAAA,IAAA,MAAA,eACA,UAAA,iBAGF,eACE,IAAA,EACA,MAAA,EACA,KAAA,EACA,OAAA,KACA,WAAA,KACA,cAAA,IAAA,MAAA,eACA,UAAA,kBAGF,kBACE,MAAA,EACA,KAAA,EACA,OAAA,KACA,WAAA,KACA,WAAA,IAAA,MAAA,eACA,UAAA,iBAGF,gBACE,UAAA,KCjFF,aACE,QAAA,aACA,WAAA,IACA,eAAA,OACA,OAAA,KACA,iBAAA,aACA,QAAA,GAEA,yBACE,QAAA,aACA,QAAA,GAKJ,gBACE,WAAA,KAGF,gBACE,WAAA,KAGF,gBACE,WAAA,MAKA,+BACE,kBAAA,iBAAA,GAAA,YAAA,SAAA,UAAA,iBAAA,GAAA,YAAA,SAIJ,oCACE,IACE,QAAA,IAFJ,4BACE,IACE,QAAA,IAIJ,kBACE,mBAAA,8DAAA,WAAA,8DACA,kBAAA,KAAA,KAAA,UAAA,KAAA,KACA,kBAAA,iBAAA,GAAA,OAAA,SAAA,UAAA,iBAAA,GAAA,OAAA,SAGF,oCACE,KACE,sBAAA,MAAA,GAAA,cAAA,MAAA,IAFJ,4BACE,KACE,sBAAA,MAAA,GAAA,cAAA,MAAA,IH9CF,iBACE,QAAA,MACA,MAAA,KACA,QAAA,GIJF,cACE,MAAA,QAGE,oBAAA,oBAEE,MAAA,QANN,gBACE,MAAA,QAGE,sBAAA,sBAEE,MAAA,QANN,cACE,MAAA,QAGE,oBAAA,oBAEE,MAAA,QANN,WACE,MAAA,QAGE,iBAAA,iBAEE,MAAA,QANN,cACE,MAAA,QAGE,oBAAA,oBAEE,MAAA,QANN,aACE,MAAA,QAGE,mBAAA,mBAEE,MAAA,QANN,YACE,MAAA,QAGE,kBAAA,kBAEE,MAAA,QANN,WACE,MAAA,QAGE,iBAAA,iBAEE,MAAA,QCLR,OACE,SAAA,SACA,MAAA,KAEA,eACE,QAAA,MACA,YAAA,uBACA,QAAA,GAGF,SACE,SAAA,SACA,IAAA,EACA,KAAA,EACA,MAAA,KACA,OAAA,KAKF,WACE,kBAAA,KADF,WACE,kBAAA,mBADF,YACE,kBAAA,oBADF,YACE,kBAAA,oBCrBJ,WACE,SAAA,MACA,IAAA,EACA,MAAA,EACA,KAAA,EACA,QAAA,KAGF,cACE,SAAA,MACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,KAQE,YACE,SAAA,eAAA,SAAA,OACA,IAAA,EACA,QAAA,KjDqCF,yBiDxCA,eACE,SAAA,eAAA,SAAA,OACA,IAAA,EACA,QAAA,MjDqCF,yBiDxCA,eACE,SAAA,eAAA,SAAA,OACA,IAAA,EACA,QAAA,MjDqCF,yBiDxCA,eACE,SAAA,eAAA,SAAA,OACA,IAAA,EACA,QAAA,MjDqCF,0BiDxCA,eACE,SAAA,eAAA,SAAA,OACA,IAAA,EACA,QAAA,MjDqCF,0BiDxCA,gBACE,SAAA,eAAA,SAAA,OACA,IAAA,EACA,QAAA,MCzBN,QACE,QAAA,KACA,eAAA,IACA,YAAA,OACA,WAAA,QAGF,QACE,QAAA,KACA,KAAA,EAAA,EAAA,KACA,eAAA,OACA,WAAA,QCRF,iB5Dk4MA,0D6D93ME,SAAA,mBACA,MAAA,cACA,OAAA,cACA,QAAA,YACA,OAAA,eACA,SAAA,iBACA,KAAA,wBACA,YAAA,iBACA,OAAA,YCXA,uBACE,SAAA,SACA,IAAA,EACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,EACA,QAAA,GCRJ,eCAE,SAAA,OACA,cAAA,SACA,YAAA,OCNF,IACE,QAAA,aACA,WAAA,QACA,MAAA,IACA,WAAA,IACA,iBAAA,aACA,QAAA,ICyDM,gBAOI,eAAA,mBAPJ,WAOI,eAAA,cAPJ,cAOI,eAAA,iBAPJ,cAOI,eAAA,iBAPJ,mBAOI,eAAA,sBAPJ,gBAOI,eAAA,mBAPJ,aAOI,MAAA,eAPJ,WAOI,MAAA,gBAPJ,YAOI,MAAA,eAPJ,WAOI,QAAA,YAPJ,YAOI,QAAA,cAPJ,YAOI,QAAA,aAPJ,YAOI,QAAA,cAPJ,aAOI,QAAA,YAPJ,eAOI,SAAA,eAPJ,iBAOI,SAAA,iBAPJ,kBAOI,SAAA,kBAPJ,iBAOI,SAAA,iBAPJ,UAOI,QAAA,iBAPJ,gBAOI,QAAA,uBAPJ,SAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,SAOI,QAAA,gBAPJ,aAOI,QAAA,oBAPJ,cAOI,QAAA,qBAPJ,QAOI,QAAA,eAPJ,eAOI,QAAA,sBAPJ,QAOI,QAAA,eAPJ,QAOI,WAAA,EAAA,MAAA,KAAA,0BAPJ,WAOI,WAAA,EAAA,QAAA,OAAA,2BAPJ,WAOI,WAAA,EAAA,KAAA,KAAA,2BAPJ,aAOI,WAAA,eAPJ,iBAOI,SAAA,iBAPJ,mBAOI,SAAA,mBAPJ,mBAOI,SAAA,mBAPJ,gBAOI,SAAA,gBAPJ,iBAOI,SAAA,yBAAA,SAAA,iBAPJ,OAOI,IAAA,YAPJ,QAOI,IAAA,cAPJ,SAOI,IAAA,eAPJ,UAOI,OAAA,YAPJ,WAOI,OAAA,cAPJ,YAOI,OAAA,eAPJ,SAOI,KAAA,YAPJ,UAOI,KAAA,cAPJ,WAOI,KAAA,eAPJ,OAOI,MAAA,YAPJ,QAOI,MAAA,cAPJ,SAOI,MAAA,eAPJ,kBAOI,UAAA,+BAPJ,oBAOI,UAAA,2BAPJ,oBAOI,UAAA,2BAPJ,QAOI,OAAA,IAAA,MAAA,kBAPJ,UAOI,OAAA,YAPJ,YAOI,WAAA,IAAA,MAAA,kBAPJ,cAOI,WAAA,YAPJ,YAOI,aAAA,IAAA,MAAA,kBAPJ,cAOI,aAAA,YAPJ,eAOI,cAAA,IAAA,MAAA,kBAPJ,iBAOI,cAAA,YAPJ,cAOI,YAAA,IAAA,MAAA,kBAPJ,gBAOI,YAAA,YAPJ,gBAOI,aAAA,kBAPJ,kBAOI,aAAA,kBAPJ,gBAOI,aAAA,kBAPJ,aAOI,aAAA,kBAPJ,gBAOI,aAAA,kBAPJ,eAOI,aAAA,kBAPJ,cAOI,aAAA,kBAPJ,aAOI,aAAA,kBAPJ,cAOI,aAAA,eAPJ,UAOI,aAAA,cAPJ,UAOI,aAAA,cAPJ,UAOI,aAAA,cAPJ,UAOI,aAAA,cAPJ,UAOI,aAAA,cAPJ,MAOI,MAAA,cAPJ,MAOI,MAAA,cAPJ,MAOI,MAAA,cAPJ,OAOI,MAAA,eAPJ,QAOI,MAAA,eAPJ,QAOI,UAAA,eAPJ,QAOI,MAAA,gBAPJ,YAOI,UAAA,gBAPJ,MAOI,OAAA,cAPJ,MAOI,OAAA,cAPJ,MAOI,OAAA,cAPJ,OAOI,OAAA,eAPJ,QAOI,OAAA,eAPJ,QAOI,WAAA,eAPJ,QAOI,OAAA,gBAPJ,YAOI,WAAA,gBAPJ,WAOI,KAAA,EAAA,EAAA,eAPJ,UAOI,eAAA,cAPJ,aAOI,eAAA,iBAPJ,kBAOI,eAAA,sBAPJ,qBAOI,eAAA,yBAPJ,aAOI,UAAA,YAPJ,aAOI,UAAA,YAPJ,eAOI,YAAA,YAPJ,eAOI,YAAA,YAPJ,WAOI,UAAA,eAPJ,aAOI,UAAA,iBAPJ,mBAOI,UAAA,uBAPJ,OAOI,IAAA,YAPJ,OAOI,IAAA,iBAPJ,OAOI,IAAA,gBAPJ,OAOI,IAAA,eAPJ,OAOI,IAAA,iBAPJ,OAOI,IAAA,eAPJ,uBAOI,gBAAA,qBAPJ,qBAOI,gBAAA,mBAPJ,wBAOI,gBAAA,iBAPJ,yBAOI,gBAAA,wBAPJ,wBAOI,gBAAA,uBAPJ,wBAOI,gBAAA,uBAPJ,mBAOI,YAAA,qBAPJ,iBAOI,YAAA,mBAPJ,oBAOI,YAAA,iBAPJ,sBAOI,YAAA,mBAPJ,qBAOI,YAAA,kBAPJ,qBAOI,cAAA,qBAPJ,mBAOI,cAAA,mBAPJ,sBAOI,cAAA,iBAPJ,uBAOI,cAAA,wBAPJ,sBAOI,cAAA,uBAPJ,uBAOI,cAAA,kBAPJ,iBAOI,WAAA,eAPJ,kBAOI,WAAA,qBAPJ,gBAOI,WAAA,mBAPJ,mBAOI,WAAA,iBAPJ,qBAOI,WAAA,mBAPJ,oBAOI,WAAA,kBAPJ,aAOI,MAAA,aAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,KAOI,OAAA,YAPJ,KAOI,OAAA,iBAPJ,KAOI,OAAA,gBAPJ,KAOI,OAAA,eAPJ,KAOI,OAAA,iBAPJ,KAOI,OAAA,eAPJ,QAOI,OAAA,eAPJ,MAOI,aAAA,YAAA,YAAA,YAPJ,MAOI,aAAA,iBAAA,YAAA,iBAPJ,MAOI,aAAA,gBAAA,YAAA,gBAPJ,MAOI,aAAA,eAAA,YAAA,eAPJ,MAOI,aAAA,iBAAA,YAAA,iBAPJ,MAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,MAOI,WAAA,YAAA,cAAA,YAPJ,MAOI,WAAA,iBAAA,cAAA,iBAPJ,MAOI,WAAA,gBAAA,cAAA,gBAPJ,MAOI,WAAA,eAAA,cAAA,eAPJ,MAOI,WAAA,iBAAA,cAAA,iBAPJ,MAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,MAOI,WAAA,YAPJ,MAOI,WAAA,iBAPJ,MAOI,WAAA,gBAPJ,MAOI,WAAA,eAPJ,MAOI,WAAA,iBAPJ,MAOI,WAAA,eAPJ,SAOI,WAAA,eAPJ,MAOI,aAAA,YAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,gBAPJ,MAOI,aAAA,eAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,eAPJ,SAOI,aAAA,eAPJ,MAOI,cAAA,YAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,gBAPJ,MAOI,cAAA,eAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,eAPJ,SAOI,cAAA,eAPJ,MAOI,YAAA,YAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,gBAPJ,MAOI,YAAA,eAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,eAPJ,SAOI,YAAA,eAPJ,KAOI,QAAA,YAPJ,KAOI,QAAA,iBAPJ,KAOI,QAAA,gBAPJ,KAOI,QAAA,eAPJ,KAOI,QAAA,iBAPJ,KAOI,QAAA,eAPJ,MAOI,cAAA,YAAA,aAAA,YAPJ,MAOI,cAAA,iBAAA,aAAA,iBAPJ,MAOI,cAAA,gBAAA,aAAA,gBAPJ,MAOI,cAAA,eAAA,aAAA,eAPJ,MAOI,cAAA,iBAAA,aAAA,iBAPJ,MAOI,cAAA,eAAA,aAAA,eAPJ,MAOI,YAAA,YAAA,eAAA,YAPJ,MAOI,YAAA,iBAAA,eAAA,iBAPJ,MAOI,YAAA,gBAAA,eAAA,gBAPJ,MAOI,YAAA,eAAA,eAAA,eAPJ,MAOI,YAAA,iBAAA,eAAA,iBAPJ,MAOI,YAAA,eAAA,eAAA,eAPJ,MAOI,YAAA,YAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,gBAPJ,MAOI,YAAA,eAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,eAPJ,MAOI,cAAA,YAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,gBAPJ,MAOI,cAAA,eAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,eAPJ,MAOI,eAAA,YAPJ,MAOI,eAAA,iBAPJ,MAOI,eAAA,gBAPJ,MAOI,eAAA,eAPJ,MAOI,eAAA,iBAPJ,MAOI,eAAA,eAPJ,MAOI,aAAA,YAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,gBAPJ,MAOI,aAAA,eAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,eAPJ,gBAOI,YAAA,mCAPJ,MAOI,UAAA,iCAPJ,MAOI,UAAA,gCAPJ,MAOI,UAAA,8BAPJ,MAOI,UAAA,gCAPJ,MAOI,UAAA,kBAPJ,MAOI,UAAA,eAPJ,YAOI,WAAA,iBAPJ,YAOI,WAAA,iBAPJ,UAOI,YAAA,cAPJ,YAOI,YAAA,kBAPJ,WAOI,YAAA,cAPJ,SAOI,YAAA,cAPJ,WAOI,YAAA,iBAPJ,MAOI,YAAA,YAPJ,OAOI,YAAA,eAPJ,SAOI,YAAA,cAPJ,OAOI,YAAA,YAPJ,YAOI,WAAA,eAPJ,UAOI,WAAA,gBAPJ,aAOI,WAAA,iBAPJ,sBAOI,gBAAA,eAPJ,2BAOI,gBAAA,oBAPJ,8BAOI,gBAAA,uBAPJ,gBAOI,eAAA,oBAPJ,gBAOI,eAAA,oBAPJ,iBAOI,eAAA,qBAPJ,WAOI,YAAA,iBAPJ,aAOI,YAAA,iBAPJ,YAOI,UAAA,qBAAA,WAAA,qBAPJ,cAIQ,kBAAA,EAGJ,MAAA,6DAPJ,gBAIQ,kBAAA,EAGJ,MAAA,+DAPJ,cAIQ,kBAAA,EAGJ,MAAA,6DAPJ,WAIQ,kBAAA,EAGJ,MAAA,0DAPJ,cAIQ,kBAAA,EAGJ,MAAA,6DAPJ,aAIQ,kBAAA,EAGJ,MAAA,4DAPJ,YAIQ,kBAAA,EAGJ,MAAA,2DAPJ,WAIQ,kBAAA,EAGJ,MAAA,0DAPJ,YAIQ,kBAAA,EAGJ,MAAA,2DAPJ,YAIQ,kBAAA,EAGJ,MAAA,2DAPJ,WAIQ,kBAAA,EAGJ,MAAA,0DAPJ,YAIQ,kBAAA,EAGJ,MAAA,kBAPJ,eAIQ,kBAAA,EAGJ,MAAA,yBAPJ,eAIQ,kBAAA,EAGJ,MAAA,+BAPJ,YAIQ,kBAAA,EAGJ,MAAA,kBAjBJ,iBACE,kBAAA,KADF,iBACE,kBAAA,IADF,iBACE,kBAAA,KADF,kBACE,kBAAA,EASF,YAIQ,gBAAA,EAGJ,iBAAA,2DAPJ,cAIQ,gBAAA,EAGJ,iBAAA,6DAPJ,YAIQ,gBAAA,EAGJ,iBAAA,2DAPJ,SAIQ,gBAAA,EAGJ,iBAAA,wDAPJ,YAIQ,gBAAA,EAGJ,iBAAA,2DAPJ,WAIQ,gBAAA,EAGJ,iBAAA,0DAPJ,UAIQ,gBAAA,EAGJ,iBAAA,yDAPJ,SAIQ,gBAAA,EAGJ,iBAAA,wDAPJ,UAIQ,gBAAA,EAGJ,iBAAA,yDAPJ,UAIQ,gBAAA,EAGJ,iBAAA,yDAPJ,SAIQ,gBAAA,EAGJ,iBAAA,wDAPJ,gBAIQ,gBAAA,EAGJ,iBAAA,sBAjBJ,eACE,gBAAA,IADF,eACE,gBAAA,KADF,eACE,gBAAA,IADF,eACE,gBAAA,KADF,gBACE,gBAAA,EASF,aAOI,iBAAA,6BAPJ,iBAOI,oBAAA,cAAA,iBAAA,cAAA,YAAA,cAPJ,kBAOI,oBAAA,eAAA,iBAAA,eAAA,YAAA,eAPJ,kBAOI,oBAAA,eAAA,iBAAA,eAAA,YAAA,eAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,eAPJ,SAOI,cAAA,iBAPJ,WAOI,cAAA,YAPJ,WAOI,cAAA,gBAPJ,WAOI,cAAA,iBAPJ,WAOI,cAAA,gBAPJ,gBAOI,cAAA,cAPJ,cAOI,cAAA,gBAPJ,aAOI,uBAAA,iBAAA,wBAAA,iBAPJ,aAOI,wBAAA,iBAAA,2BAAA,iBAPJ,gBAOI,2BAAA,iBAAA,0BAAA,iBAPJ,eAOI,0BAAA,iBAAA,uBAAA,iBAPJ,SAOI,WAAA,kBAPJ,WAOI,WAAA,iBzDPR,yByDAI,gBAOI,MAAA,eAPJ,cAOI,MAAA,gBAPJ,eAOI,MAAA,eAPJ,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,UAOI,IAAA,YAPJ,UAOI,IAAA,iBAPJ,UAOI,IAAA,gBAPJ,UAOI,IAAA,eAPJ,UAOI,IAAA,iBAPJ,UAOI,IAAA,eAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,aAAA,YAAA,YAAA,YAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,gBAAA,YAAA,gBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,YAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,cAAA,YAAA,aAAA,YAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,gBAAA,aAAA,gBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,eAOI,WAAA,eAPJ,aAOI,WAAA,gBAPJ,gBAOI,WAAA,kBzDPR,yByDAI,gBAOI,MAAA,eAPJ,cAOI,MAAA,gBAPJ,eAOI,MAAA,eAPJ,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,UAOI,IAAA,YAPJ,UAOI,IAAA,iBAPJ,UAOI,IAAA,gBAPJ,UAOI,IAAA,eAPJ,UAOI,IAAA,iBAPJ,UAOI,IAAA,eAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,aAAA,YAAA,YAAA,YAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,gBAAA,YAAA,gBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,YAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,cAAA,YAAA,aAAA,YAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,gBAAA,aAAA,gBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,eAOI,WAAA,eAPJ,aAOI,WAAA,gBAPJ,gBAOI,WAAA,kBzDPR,yByDAI,gBAOI,MAAA,eAPJ,cAOI,MAAA,gBAPJ,eAOI,MAAA,eAPJ,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,UAOI,IAAA,YAPJ,UAOI,IAAA,iBAPJ,UAOI,IAAA,gBAPJ,UAOI,IAAA,eAPJ,UAOI,IAAA,iBAPJ,UAOI,IAAA,eAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,aAAA,YAAA,YAAA,YAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,gBAAA,YAAA,gBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,YAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,cAAA,YAAA,aAAA,YAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,gBAAA,aAAA,gBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,eAOI,WAAA,eAPJ,aAOI,WAAA,gBAPJ,gBAOI,WAAA,kBzDPR,0ByDAI,gBAOI,MAAA,eAPJ,cAOI,MAAA,gBAPJ,eAOI,MAAA,eAPJ,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,UAOI,IAAA,YAPJ,UAOI,IAAA,iBAPJ,UAOI,IAAA,gBAPJ,UAOI,IAAA,eAPJ,UAOI,IAAA,iBAPJ,UAOI,IAAA,eAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,aAAA,YAAA,YAAA,YAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,gBAAA,YAAA,gBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,YAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,cAAA,YAAA,aAAA,YAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,gBAAA,aAAA,gBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,eAOI,WAAA,eAPJ,aAOI,WAAA,gBAPJ,gBAOI,WAAA,kBzDPR,0ByDAI,iBAOI,MAAA,eAPJ,eAOI,MAAA,gBAPJ,gBAOI,MAAA,eAPJ,cAOI,QAAA,iBAPJ,oBAOI,QAAA,uBAPJ,aAOI,QAAA,gBAPJ,YAOI,QAAA,eAPJ,aAOI,QAAA,gBAPJ,iBAOI,QAAA,oBAPJ,kBAOI,QAAA,qBAPJ,YAOI,QAAA,eAPJ,mBAOI,QAAA,sBAPJ,YAOI,QAAA,eAPJ,eAOI,KAAA,EAAA,EAAA,eAPJ,cAOI,eAAA,cAPJ,iBAOI,eAAA,iBAPJ,sBAOI,eAAA,sBAPJ,yBAOI,eAAA,yBAPJ,iBAOI,UAAA,YAPJ,iBAOI,UAAA,YAPJ,mBAOI,YAAA,YAPJ,mBAOI,YAAA,YAPJ,eAOI,UAAA,eAPJ,iBAOI,UAAA,iBAPJ,uBAOI,UAAA,uBAPJ,WAOI,IAAA,YAPJ,WAOI,IAAA,iBAPJ,WAOI,IAAA,gBAPJ,WAOI,IAAA,eAPJ,WAOI,IAAA,iBAPJ,WAOI,IAAA,eAPJ,2BAOI,gBAAA,qBAPJ,yBAOI,gBAAA,mBAPJ,4BAOI,gBAAA,iBAPJ,6BAOI,gBAAA,wBAPJ,4BAOI,gBAAA,uBAPJ,4BAOI,gBAAA,uBAPJ,uBAOI,YAAA,qBAPJ,qBAOI,YAAA,mBAPJ,wBAOI,YAAA,iBAPJ,0BAOI,YAAA,mBAPJ,yBAOI,YAAA,kBAPJ,yBAOI,cAAA,qBAPJ,uBAOI,cAAA,mBAPJ,0BAOI,cAAA,iBAPJ,2BAOI,cAAA,wBAPJ,0BAOI,cAAA,uBAPJ,2BAOI,cAAA,kBAPJ,qBAOI,WAAA,eAPJ,sBAOI,WAAA,qBAPJ,oBAOI,WAAA,mBAPJ,uBAOI,WAAA,iBAPJ,yBAOI,WAAA,mBAPJ,wBAOI,WAAA,kBAPJ,iBAOI,MAAA,aAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,gBAOI,MAAA,YAPJ,SAOI,OAAA,YAPJ,SAOI,OAAA,iBAPJ,SAOI,OAAA,gBAPJ,SAOI,OAAA,eAPJ,SAOI,OAAA,iBAPJ,SAOI,OAAA,eAPJ,YAOI,OAAA,eAPJ,UAOI,aAAA,YAAA,YAAA,YAPJ,UAOI,aAAA,iBAAA,YAAA,iBAPJ,UAOI,aAAA,gBAAA,YAAA,gBAPJ,UAOI,aAAA,eAAA,YAAA,eAPJ,UAOI,aAAA,iBAAA,YAAA,iBAPJ,UAOI,aAAA,eAAA,YAAA,eAPJ,aAOI,aAAA,eAAA,YAAA,eAPJ,UAOI,WAAA,YAAA,cAAA,YAPJ,UAOI,WAAA,iBAAA,cAAA,iBAPJ,UAOI,WAAA,gBAAA,cAAA,gBAPJ,UAOI,WAAA,eAAA,cAAA,eAPJ,UAOI,WAAA,iBAAA,cAAA,iBAPJ,UAOI,WAAA,eAAA,cAAA,eAPJ,aAOI,WAAA,eAAA,cAAA,eAPJ,UAOI,WAAA,YAPJ,UAOI,WAAA,iBAPJ,UAOI,WAAA,gBAPJ,UAOI,WAAA,eAPJ,UAOI,WAAA,iBAPJ,UAOI,WAAA,eAPJ,aAOI,WAAA,eAPJ,UAOI,aAAA,YAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,gBAPJ,UAOI,aAAA,eAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,eAPJ,aAOI,aAAA,eAPJ,UAOI,cAAA,YAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,gBAPJ,UAOI,cAAA,eAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,eAPJ,aAOI,cAAA,eAPJ,UAOI,YAAA,YAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,gBAPJ,UAOI,YAAA,eAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,eAPJ,aAOI,YAAA,eAPJ,SAOI,QAAA,YAPJ,SAOI,QAAA,iBAPJ,SAOI,QAAA,gBAPJ,SAOI,QAAA,eAPJ,SAOI,QAAA,iBAPJ,SAOI,QAAA,eAPJ,UAOI,cAAA,YAAA,aAAA,YAPJ,UAOI,cAAA,iBAAA,aAAA,iBAPJ,UAOI,cAAA,gBAAA,aAAA,gBAPJ,UAOI,cAAA,eAAA,aAAA,eAPJ,UAOI,cAAA,iBAAA,aAAA,iBAPJ,UAOI,cAAA,eAAA,aAAA,eAPJ,UAOI,YAAA,YAAA,eAAA,YAPJ,UAOI,YAAA,iBAAA,eAAA,iBAPJ,UAOI,YAAA,gBAAA,eAAA,gBAPJ,UAOI,YAAA,eAAA,eAAA,eAPJ,UAOI,YAAA,iBAAA,eAAA,iBAPJ,UAOI,YAAA,eAAA,eAAA,eAPJ,UAOI,YAAA,YAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,gBAPJ,UAOI,YAAA,eAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,eAPJ,UAOI,cAAA,YAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,gBAPJ,UAOI,cAAA,eAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,eAPJ,UAOI,eAAA,YAPJ,UAOI,eAAA,iBAPJ,UAOI,eAAA,gBAPJ,UAOI,eAAA,eAPJ,UAOI,eAAA,iBAPJ,UAOI,eAAA,eAPJ,UAOI,aAAA,YAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,gBAPJ,UAOI,aAAA,eAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,eAPJ,gBAOI,WAAA,eAPJ,cAOI,WAAA,gBAPJ,iBAOI,WAAA,kBCnDZ,0BD4CQ,MAOI,UAAA,iBAPJ,MAOI,UAAA,eAPJ,MAOI,UAAA,kBAPJ,MAOI,UAAA,kBChCZ,aDyBQ,gBAOI,QAAA,iBAPJ,sBAOI,QAAA,uBAPJ,eAOI,QAAA,gBAPJ,cAOI,QAAA,eAPJ,eAOI,QAAA,gBAPJ,mBAOI,QAAA,oBAPJ,oBAOI,QAAA,qBAPJ,cAOI,QAAA,eAPJ,qBAOI,QAAA,sBAPJ,cAOI,QAAA","sourcesContent":["/*!\n * Bootstrap v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n// scss-docs-start import-stack\n// Configuration\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"utilities\";\n\n// Layout & components\n@import \"root\";\n@import \"reboot\";\n@import \"type\";\n@import \"images\";\n@import \"containers\";\n@import \"grid\";\n@import \"tables\";\n@import \"forms\";\n@import \"buttons\";\n@import \"transitions\";\n@import \"dropdown\";\n@import \"button-group\";\n@import \"nav\";\n@import \"navbar\";\n@import \"card\";\n@import \"accordion\";\n@import \"breadcrumb\";\n@import \"pagination\";\n@import \"badge\";\n@import \"alert\";\n@import \"progress\";\n@import \"list-group\";\n@import \"close\";\n@import \"toasts\";\n@import \"modal\";\n@import \"tooltip\";\n@import \"popover\";\n@import \"carousel\";\n@import \"spinners\";\n@import \"offcanvas\";\n@import \"placeholders\";\n\n// Helpers\n@import \"helpers\";\n\n// Utilities\n@import \"utilities/api\";\n// scss-docs-end import-stack\n",":root {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$variable-prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$variable-prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$variable-prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$variable-prefix}#{$color}-rgb: #{$value};\n }\n\n --#{$variable-prefix}white-rgb: #{to-rgb($white)};\n --#{$variable-prefix}black-rgb: #{to-rgb($black)};\n --#{$variable-prefix}body-rgb: #{to-rgb($body-color)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$variable-prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$variable-prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$variable-prefix}gradient: #{$gradient};\n\n // Root and body\n // stylelint-disable custom-property-empty-line-before\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$variable-prefix}root-font-size: #{$font-size-root};\n }\n --#{$variable-prefix}body-font-family: #{$font-family-base};\n --#{$variable-prefix}body-font-size: #{$font-size-base};\n --#{$variable-prefix}body-font-weight: #{$font-weight-base};\n --#{$variable-prefix}body-line-height: #{$line-height-base};\n --#{$variable-prefix}body-color: #{$body-color};\n @if $body-text-align != null {\n --#{$variable-prefix}body-text-align: #{$body-text-align};\n }\n --#{$variable-prefix}body-bg: #{$body-bg};\n // scss-docs-end root-body-variables\n // stylelint-enable custom-property-empty-line-before\n}\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n @if $font-size-root != null {\n font-size: var(--#{$variable-prefix}-root-font-size);\n }\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n margin: 0; // 1\n font-family: var(--#{$variable-prefix}body-font-family);\n @include font-size(var(--#{$variable-prefix}body-font-size));\n font-weight: var(--#{$variable-prefix}body-font-weight);\n line-height: var(--#{$variable-prefix}body-line-height);\n color: var(--#{$variable-prefix}body-color);\n text-align: var(--#{$variable-prefix}body-text-align);\n background-color: var(--#{$variable-prefix}body-bg); // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n// 2. Set correct height and prevent the `size` attribute to make the `hr` look like an input field\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n background-color: currentColor;\n border: 0;\n opacity: $hr-opacity;\n}\n\nhr:not([size]) {\n height: $hr-height; // 2\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

`-`

` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: $headings-color;\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-bs-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-bs-original-title] { // 1\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n text-decoration-skip-ink: none; // 4\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n\n &:hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n direction: ltr #{\"/* rtl:ignore */\"};\n unicode-bidi: bidi-override;\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: $code-color;\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-` \ No newline at end of file From ff4a309c44af470b2bf37e9c760d5f1f6c91f7ab Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Thu, 17 Feb 2022 11:06:15 -0800 Subject: [PATCH 011/150] Disable validation on construction. --- Elements.Wasm/ElementsWrapper.cs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Elements.Wasm/ElementsWrapper.cs b/Elements.Wasm/ElementsWrapper.cs index cf67e51f8..f47f784a9 100644 --- a/Elements.Wasm/ElementsWrapper.cs +++ b/Elements.Wasm/ElementsWrapper.cs @@ -4,6 +4,7 @@ using Elements.Geometry; using Elements.Serialization.glTF; using Elements.Spatial; +using Elements.Validators; using Microsoft.JSInterop; using System.Diagnostics; @@ -18,6 +19,8 @@ public static Task ModelFromJson(string json) [JSInvokable] public static Task ModelToGlbBase64(string json) { + Validator.DisableValidationOnConstruction = true; + var model = Model.FromJson(json, out _, false); return Task.FromResult(model.ToBase64String()); } @@ -25,10 +28,16 @@ public static Task ModelToGlbBase64(string json) [JSInvokable] public static Task ModelToGlbBytes(string json) { + Validator.DisableValidationOnConstruction = true; + var sw = new Stopwatch(); sw.Start(); - var model = Model.FromJson(json, out _, false); + var model = Model.FromJson(json, out var errors, false); Console.WriteLine($"{sw.ElapsedMilliseconds}ms for creating the model from json."); + foreach (var error in errors) + { + Console.WriteLine(error); + } sw.Restart(); var result = Task.FromResult(model.ToGlTF()); Console.WriteLine($"{sw.ElapsedMilliseconds}ms for creating the glb from json."); From 67f83079fbc7b3cecebabbb69ffe738f8a4d94ca Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Fri, 18 Feb 2022 02:06:58 -0800 Subject: [PATCH 012/150] Progress on System.Text.Json serialization APIs. --- Elements/src/Elements.csproj | 1 + Elements/src/Geometry/Polygon.cs | 1 + Elements/src/Geometry/Representation.cs | 1 + Elements/src/Geometry/Solids/Extrude.cs | 1 + Elements/src/Geometry/Solids/Lamina.cs | 1 + .../src/Geometry/Solids/SolidOperation.cs | 2 + Elements/src/Geometry/Solids/Sweep.cs | 1 + Elements/src/Material.cs | 1 + Elements/src/Model.cs | 62 +++- Elements/src/Panel.cs | 4 +- .../JSON/JsonInheritanceConverter.cs | 2 +- .../src/Serialization/JSON/ModelConverter.cs | 294 ++++++++++++++++++ Elements/test/Elements.Tests.csproj | 1 + Elements/test/ModelTests.cs | 9 + 14 files changed, 377 insertions(+), 4 deletions(-) create mode 100644 Elements/src/Serialization/JSON/ModelConverter.cs diff --git a/Elements/src/Elements.csproj b/Elements/src/Elements.csproj index 2c6151ad5..2b986c40b 100644 --- a/Elements/src/Elements.csproj +++ b/Elements/src/Elements.csproj @@ -22,6 +22,7 @@ + diff --git a/Elements/src/Geometry/Polygon.cs b/Elements/src/Geometry/Polygon.cs index 10249835d..ce9a006ae 100644 --- a/Elements/src/Geometry/Polygon.cs +++ b/Elements/src/Geometry/Polygon.cs @@ -29,6 +29,7 @@ public partial class Polygon : Polyline /// /// A collection of vertex locations. [Newtonsoft.Json.JsonConstructor] + [System.Text.Json.Serialization.JsonConstructor] public Polygon(IList @vertices) : base(vertices) { if (!Validator.DisableValidationOnConstruction) diff --git a/Elements/src/Geometry/Representation.cs b/Elements/src/Geometry/Representation.cs index ecd151dac..b6697e060 100644 --- a/Elements/src/Geometry/Representation.cs +++ b/Elements/src/Geometry/Representation.cs @@ -16,6 +16,7 @@ public class Representation /// /// A collection of solid operations. [Newtonsoft.Json.JsonConstructor] + [System.Text.Json.Serialization.JsonConstructor] public Representation(IList @solidOperations) { this.SolidOperations = @solidOperations; diff --git a/Elements/src/Geometry/Solids/Extrude.cs b/Elements/src/Geometry/Solids/Extrude.cs index 5ee408fb6..dadcfba5d 100644 --- a/Elements/src/Geometry/Solids/Extrude.cs +++ b/Elements/src/Geometry/Solids/Extrude.cs @@ -66,6 +66,7 @@ public Vector3 Direction /// /// [Newtonsoft.Json.JsonConstructor] + [System.Text.Json.Serialization.JsonConstructor] public Extrude(Profile @profile, double @height, Vector3 @direction, bool @isVoid) : base(isVoid) { diff --git a/Elements/src/Geometry/Solids/Lamina.cs b/Elements/src/Geometry/Solids/Lamina.cs index 0d381b7c2..37dc6e834 100644 --- a/Elements/src/Geometry/Solids/Lamina.cs +++ b/Elements/src/Geometry/Solids/Lamina.cs @@ -49,6 +49,7 @@ public IList Voids /// /// [Newtonsoft.Json.JsonConstructor] + [System.Text.Json.Serialization.JsonConstructor] public Lamina(Polygon @perimeter, IList @voids, bool @isVoid) : base(isVoid) { diff --git a/Elements/src/Geometry/Solids/SolidOperation.cs b/Elements/src/Geometry/Solids/SolidOperation.cs index d7d56111c..ef6fe50b0 100644 --- a/Elements/src/Geometry/Solids/SolidOperation.cs +++ b/Elements/src/Geometry/Solids/SolidOperation.cs @@ -19,6 +19,7 @@ public abstract class SolidOperation /// The solid operation's solid. /// [JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] public Solid Solid { get { return _solid; } @@ -33,6 +34,7 @@ public Solid Solid /// /// [Newtonsoft.Json.JsonConstructor] + [System.Text.Json.Serialization.JsonConstructor] public SolidOperation(bool @isVoid) { this.IsVoid = @isVoid; diff --git a/Elements/src/Geometry/Solids/Sweep.cs b/Elements/src/Geometry/Solids/Sweep.cs index 0514a2283..c3fc60aa7 100644 --- a/Elements/src/Geometry/Solids/Sweep.cs +++ b/Elements/src/Geometry/Solids/Sweep.cs @@ -19,6 +19,7 @@ public partial class Sweep : SolidOperation, System.ComponentModel.INotifyProper /// /// [Newtonsoft.Json.JsonConstructor] + [System.Text.Json.Serialization.JsonConstructor] public Sweep(Profile @profile, Curve @curve, double @startSetback, double @endSetback, double @profileRotation, bool @isVoid) : base(isVoid) { diff --git a/Elements/src/Material.cs b/Elements/src/Material.cs index 64e7df29a..310669a21 100644 --- a/Elements/src/Material.cs +++ b/Elements/src/Material.cs @@ -68,6 +68,7 @@ public class Material : Element /// The id of the material. /// The name of the material. [Newtonsoft.Json.JsonConstructor] + [System.Text.Json.Serialization.JsonConstructor] public Material(Color @color, double @specularFactor, double @glossinessFactor, bool @unlit, string @texture, bool @doubleSided, bool @repeatTexture, string @normalTexture, bool @interpolateTexture, System.Guid @id = default, string @name = null) : base(id, name) { diff --git a/Elements/src/Model.cs b/Elements/src/Model.cs index 3425a7fcd..b38e6dd9f 100644 --- a/Elements/src/Model.cs +++ b/Elements/src/Model.cs @@ -12,6 +12,7 @@ using Elements.Geometry.Solids; using Elements.GeoJSON; using System.IO; +using System.Text.Json; namespace Elements { @@ -233,7 +234,7 @@ public void ToJson(string path, bool gatherSubElements = true) using (StreamWriter writer = new StreamWriter(s)) using (JsonTextWriter jsonWriter = new JsonTextWriter(writer)) { - var serializer = new JsonSerializer(); + var serializer = new Newtonsoft.Json.JsonSerializer(); serializer.Serialize(jsonWriter, exportModel); jsonWriter.Flush(); } @@ -272,7 +273,7 @@ public static Model FromJson(string json, out List errors, bool forceTyp deserializationErrors.AddRange(typeLoadErrors); } - var model = Newtonsoft.Json.JsonConvert.DeserializeObject(json, new JsonSerializerSettings() + var model = JsonConvert.DeserializeObject(json, new JsonSerializerSettings() { Error = (sender, args) => { @@ -290,6 +291,63 @@ public static Model FromJson(string json, bool forceTypeReload = false) return FromJson(json, out _, forceTypeReload); } + ///

+ /// Deserialize a model from JSON + /// + public string ToJsonNew() + { + var serializerOptions = new JsonSerializerOptions() + { + WriteIndented = true + }; + + var elements = new Dictionary(); + + var typeCache = JsonInheritanceConverter.BuildAppDomainTypeCache(out _); + + serializerOptions.Converters.Add(new ElementConverterFactory(elements)); + serializerOptions.Converters.Add(new ModelConverter()); + serializerOptions.Converters.Add(new DiscriminatorConverterFactory()); + + return System.Text.Json.JsonSerializer.Serialize(this, serializerOptions); + } + + public static Model FromJsonNew(string json) + { + var elements = new Dictionary(); + var typeCache = JsonInheritanceConverter.BuildAppDomainTypeCache(out _); + + var model = new Model(); + using (var document = JsonDocument.Parse(json)) + { + JsonElement root = document.RootElement; + var serializerOptions = new JsonSerializerOptions() + { + WriteIndented = true, + PropertyNameCaseInsensitive = true + }; + JsonElement transformElement = root.GetProperty("Transform"); + JsonElement elementsElement = root.GetProperty("Elements"); + + serializerOptions.Converters.Add(new ElementConverterFactory(elements, typeCache, elementsElement)); + serializerOptions.Converters.Add(new DiscriminatorConverterFactory(typeCache)); + + // Set the transform + model.Transform = System.Text.Json.JsonSerializer.Deserialize(transformElement.ToString(), serializerOptions); + + // Create the elements + foreach (var elementElement in elementsElement.EnumerateObject()) + { + var discriminator = elementElement.Value.GetProperty("discriminator").GetString(); + var subType = PropertySerializationExtensions.GetObjectSubtype(typeof(Element), discriminator, typeCache); + var element = (Element)System.Text.Json.JsonSerializer.Deserialize(elementElement.Value.ToString(), subType, serializerOptions); + model.AddElement(element, false); + } + } + + return model; + } + private List RecursiveGatherSubElements(object obj) { // A dictionary created for the purpose of caching properties diff --git a/Elements/src/Panel.cs b/Elements/src/Panel.cs index 94b5c94c9..7edc60a77 100644 --- a/Elements/src/Panel.cs +++ b/Elements/src/Panel.cs @@ -2,6 +2,7 @@ using Elements.Geometry.Solids; using System; using System.Collections.Generic; +using System.Text.Json.Serialization; namespace Elements { @@ -16,7 +17,7 @@ public class Panel : GeometricElement /// /// The perimeter of the panel. /// - public Polygon Perimeter { get; } + public Polygon Perimeter { get; internal set; } /// /// Create a panel. @@ -29,6 +30,7 @@ public class Panel : GeometricElement /// The id of the panel. /// The name of the panel. /// Thrown when the provided perimeter points are not coplanar. + [JsonConstructor] public Panel(Polygon perimeter, Material material = null, Transform transform = null, diff --git a/Elements/src/Serialization/JSON/JsonInheritanceConverter.cs b/Elements/src/Serialization/JSON/JsonInheritanceConverter.cs index fa14a117f..d05007940 100644 --- a/Elements/src/Serialization/JSON/JsonInheritanceConverter.cs +++ b/Elements/src/Serialization/JSON/JsonInheritanceConverter.cs @@ -68,7 +68,7 @@ public JsonInheritanceConverter(string discriminator) /// Elements.Serialization.JSON.JsonInheritanceConverter. /// /// A dictionary containing all found types keyed by their full name. - private static Dictionary BuildAppDomainTypeCache(out List failedAssemblyErrors) + internal static Dictionary BuildAppDomainTypeCache(out List failedAssemblyErrors) { var typeCache = new Dictionary(); diff --git a/Elements/src/Serialization/JSON/ModelConverter.cs b/Elements/src/Serialization/JSON/ModelConverter.cs new file mode 100644 index 000000000..68fe64362 --- /dev/null +++ b/Elements/src/Serialization/JSON/ModelConverter.cs @@ -0,0 +1,294 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text.Json; +using System.Text.Json.Serialization; +using Elements.Geometry; +using Elements.Geometry.Solids; +using Elements.Spatial; + +namespace Elements.Serialization.JSON +{ + public static class PropertySerializationExtensions + { + public static void WriteProperties(this object value, Utf8JsonWriter writer, JsonSerializerOptions options) + { + writer.WriteString("discriminator", value.GetDiscriminatorName()); + + var pinfos = value.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance); + foreach (var pinfo in pinfos) + { + // Skip ignored properties + var attrib = pinfo.GetCustomAttribute(); + if (attrib != null) + { + continue; + } + + // TODO: Use the Newtonsoft version as well. + var newtonIgnore = pinfo.GetCustomAttribute(); + if (newtonIgnore != null) + { + continue; + } + + writer.WritePropertyName(pinfo.Name); + JsonSerializer.Serialize(writer, pinfo.GetValue(value), pinfo.PropertyType, options); + } + } + + private static string GetDiscriminatorName(this object value) + { + var t = value.GetType(); + if (t.IsGenericType) + { + return $"{t.FullName.Split('`').First()}<{string.Join(",", t.GenericTypeArguments.Select(arg => arg.FullName))}>"; + } + else + { + return t.FullName.Split('`').First(); + } + } + + public static Type GetObjectSubtype(Type objectType, string discriminator, Dictionary typeCache) + { + // Check the type cache. + if (discriminator != null && typeCache.ContainsKey(discriminator)) + { + return typeCache[discriminator]; + } + + // Check for proxy generics. + if (discriminator != null && discriminator.StartsWith("Elements.ElementProxy<")) + { + var typeNames = discriminator.Split('<')[1].Split('>')[0].Split(','); // We do this split because in theory we can serialize with multiple generics + var typeName = typeNames.FirstOrDefault(); + var generic = typeCache[typeName]; + var proxy = typeof(ElementProxy<>).MakeGenericType(generic); + return proxy; + } + + // If it's not in the type cache see if it's got a representation. + // Import it as a GeometricElement. + // if (jObject.TryGetValue("Representation", out _)) + // { + // return typeof(GeometricElement); + // } + + // The default behavior for this converter, as provided by nJSONSchema + // is to return the base objectType if a derived type can't be found. + return objectType; + } + } + + public class DiscriminatorConverterFactory : JsonConverterFactory + { + private Dictionary _typeCache; + + public DiscriminatorConverterFactory(Dictionary typeCache = null) + { + _typeCache = typeCache; + } + + public override bool CanConvert(Type typeToConvert) + { + return typeToConvert == typeof(Curve) + || typeToConvert == typeof(Grid1d) + || typeToConvert == typeof(Grid2d) + || typeToConvert == typeof(SolidOperation); + } + + public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options) + { + if (typeToConvert == typeof(Curve)) + { + return new DiscriminatorConverter(_typeCache); + } + else if (typeToConvert == typeof(Grid1d)) + { + return new DiscriminatorConverter(_typeCache); + } + else if (typeToConvert == typeof(Grid2d)) + { + return new DiscriminatorConverter(_typeCache); + } + else if (typeToConvert == typeof(SolidOperation)) + { + return new DiscriminatorConverter(_typeCache); + } + + throw new JsonException("A discriminator converter could not be found."); + } + } + + public class DiscriminatorConverter : JsonConverter + { + private Dictionary _typeCache; + + public DiscriminatorConverter(Dictionary typeCache) + { + _typeCache = typeCache; + } + + public override TDiscriminated Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + using (var doc = JsonDocument.ParseValue(ref reader)) + { + var root = doc.RootElement; + var discriminator = root.GetProperty("discriminator").GetString(); + var subType = _typeCache[discriminator]; + return (TDiscriminated)JsonSerializer.Deserialize(root, subType, options); + } + } + + public override void Write(Utf8JsonWriter writer, TDiscriminated value, JsonSerializerOptions options) + { + writer.WriteStartObject(); + value.WriteProperties(writer, options); + writer.WriteEndObject(); + } + } + + public class ElementConverterFactory : JsonConverterFactory + { + private Dictionary _elements; + + private Dictionary _typeCache; + + JsonElement _documentElements; + + public ElementConverterFactory(Dictionary elements, + Dictionary typeCache = null, + JsonElement documentElements = default) + { + _elements = elements; + _documentElements = documentElements; + _typeCache = typeCache; + } + + public override bool CanConvert(Type typeToConvert) + { + return typeof(Element).IsAssignableFrom(typeToConvert); + } + + public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options) + { + if (typeToConvert == typeof(Material)) + { + return new ElementConverter(_elements, _typeCache, _documentElements); + } + else if (typeToConvert == typeof(Profile)) + { + return new ElementConverter(_elements, _typeCache, _documentElements); + } + else if (typeToConvert == typeof(GeometricElement)) + { + return new ElementConverter(_elements, _typeCache, _documentElements); + } + else + { + return new ElementConverter(_elements, _typeCache, _documentElements); + } + } + } + + public class ElementConverter : JsonConverter where TElement : Element + { + private Dictionary _elements; + private Dictionary _typeCache; + JsonElement _documentElements; + + public ElementConverter(Dictionary elements, + Dictionary typeCache, + JsonElement documentElements) + { + _elements = elements; + _typeCache = typeCache; + _documentElements = documentElements; + } + + public override TElement Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + TElement e; + if (reader.TokenType == JsonTokenType.String) + { + var id = reader.GetGuid(); + if (_elements.ContainsKey(id)) + { + Console.WriteLine($"Found element {id} already in the cache."); + e = (TElement)_elements[id]; + return e; + } + else + { + Console.WriteLine($"Couldn't find element {id}. Building it."); + // This element hasn't been built yet. + // Pause and go build it. + // This may be dangerous if circular references are introduced. + if (_documentElements.TryGetProperty(reader.GetString(), out var element)) + { + e = JsonSerializer.Deserialize(element.ToString(), options); + _elements.Add(e.Id, e); + return e; + } + } + throw new JsonException(); + } + + using (var doc = JsonDocument.ParseValue(ref reader)) + { + var root = doc.RootElement; + var discriminator = root.GetProperty("discriminator").GetString(); + var subType = _typeCache[discriminator]; + e = (TElement)JsonSerializer.Deserialize(root, subType, options); + _elements.Add(e.Id, e); + return e; + } + } + + public override void Write(Utf8JsonWriter writer, TElement value, JsonSerializerOptions options) + { + if (writer.CurrentDepth > 2) + { + writer.WriteStringValue(value.Id.ToString()); + } + else + { + writer.WriteStartObject(); + value.WriteProperties(writer, options); + writer.WriteEndObject(); + } + } + } + + public class ModelConverter : JsonConverter + { + + public override Model Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + throw new NotImplementedException(); + } + + public override void Write(Utf8JsonWriter writer, Model value, JsonSerializerOptions options) + { + writer.WriteStartObject(); + + // Write the transform + writer.WritePropertyName("Transform"); + JsonSerializer.Serialize(writer, value.Transform); + + //Write the elements dictionary + writer.WritePropertyName("Elements"); + writer.WriteStartObject(); + foreach (var kvp in value.Elements) + { + writer.WritePropertyName(kvp.Key.ToString()); + JsonSerializer.Serialize(writer, kvp.Value, kvp.Value.GetType(), options); + } + writer.WriteEndObject(); + + writer.WriteEndObject(); + } + } +} \ No newline at end of file diff --git a/Elements/test/Elements.Tests.csproj b/Elements/test/Elements.Tests.csproj index a56a04145..8eb74774a 100644 --- a/Elements/test/Elements.Tests.csproj +++ b/Elements/test/Elements.Tests.csproj @@ -9,6 +9,7 @@ + diff --git a/Elements/test/ModelTests.cs b/Elements/test/ModelTests.cs index c8e8b0faa..5aebd4b34 100644 --- a/Elements/test/ModelTests.cs +++ b/Elements/test/ModelTests.cs @@ -353,6 +353,15 @@ public void HandlesAllDocumentedSubElements() Assert.False(Model.IsValidForRecursiveAddition(typeof(object))); } + [Fact] + public void SerializesNew() + { + var model = QuadPanelModel(); + var json = model.ToJsonNew(); + _output.WriteLine(json); + var newModel = Model.FromJsonNew(json); + } + private Model QuadPanelModel() { var model = new Model(); From e14d4b0a934e4bda6e09e9e91166a3fd53fb35e4 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Mon, 21 Feb 2022 07:45:38 -0800 Subject: [PATCH 013/150] Element id serialization still broken. But closer. --- Elements/src/GeometricElement.cs | 2 + Elements/src/Model.cs | 20 +-- .../src/Serialization/JSON/ModelConverter.cs | 142 +++++++++++++----- 3 files changed, 119 insertions(+), 45 deletions(-) diff --git a/Elements/src/GeometricElement.cs b/Elements/src/GeometricElement.cs index 89749a507..35cd183d0 100644 --- a/Elements/src/GeometricElement.cs +++ b/Elements/src/GeometricElement.cs @@ -6,6 +6,7 @@ using Elements.Geometry; using Elements.Geometry.Solids; using Elements.Interfaces; +using Elements.Serialization.JSON; using Newtonsoft.Json; namespace Elements @@ -22,6 +23,7 @@ public class GeometricElement : Element /// The element's material. [Newtonsoft.Json.JsonProperty("Material", Required = Newtonsoft.Json.Required.AllowNull)] + [System.Text.Json.Serialization.JsonConverter(typeof(ElementIdConverter))] public Material Material { get; set; } /// The element's representation. diff --git a/Elements/src/Model.cs b/Elements/src/Model.cs index b38e6dd9f..957369690 100644 --- a/Elements/src/Model.cs +++ b/Elements/src/Model.cs @@ -303,8 +303,6 @@ public string ToJsonNew() var elements = new Dictionary(); - var typeCache = JsonInheritanceConverter.BuildAppDomainTypeCache(out _); - serializerOptions.Converters.Add(new ElementConverterFactory(elements)); serializerOptions.Converters.Add(new ModelConverter()); serializerOptions.Converters.Add(new DiscriminatorConverterFactory()); @@ -321,26 +319,30 @@ public static Model FromJsonNew(string json) using (var document = JsonDocument.Parse(json)) { JsonElement root = document.RootElement; - var serializerOptions = new JsonSerializerOptions() + JsonElement transformElement = root.GetProperty("Transform"); + JsonElement elementsElement = root.GetProperty("Elements"); + + // Two converters are required. One that handles all element + // deserialization (including discriminator handling), and + // one that handles deserialization of types with discriminators. + var options = new JsonSerializerOptions() { WriteIndented = true, PropertyNameCaseInsensitive = true }; - JsonElement transformElement = root.GetProperty("Transform"); - JsonElement elementsElement = root.GetProperty("Elements"); - serializerOptions.Converters.Add(new ElementConverterFactory(elements, typeCache, elementsElement)); - serializerOptions.Converters.Add(new DiscriminatorConverterFactory(typeCache)); + options.Converters.Add(new ElementConverterFactory(elements, typeCache, elementsElement)); + options.Converters.Add(new DiscriminatorConverterFactory(typeCache)); // Set the transform - model.Transform = System.Text.Json.JsonSerializer.Deserialize(transformElement.ToString(), serializerOptions); + model.Transform = System.Text.Json.JsonSerializer.Deserialize(transformElement.ToString(), options); // Create the elements foreach (var elementElement in elementsElement.EnumerateObject()) { var discriminator = elementElement.Value.GetProperty("discriminator").GetString(); var subType = PropertySerializationExtensions.GetObjectSubtype(typeof(Element), discriminator, typeCache); - var element = (Element)System.Text.Json.JsonSerializer.Deserialize(elementElement.Value.ToString(), subType, serializerOptions); + var element = (Element)System.Text.Json.JsonSerializer.Deserialize(elementElement.Value.ToString(), subType, options); model.AddElement(element, false); } } diff --git a/Elements/src/Serialization/JSON/ModelConverter.cs b/Elements/src/Serialization/JSON/ModelConverter.cs index 68fe64362..0eec4850d 100644 --- a/Elements/src/Serialization/JSON/ModelConverter.cs +++ b/Elements/src/Serialization/JSON/ModelConverter.cs @@ -51,6 +51,15 @@ private static string GetDiscriminatorName(this object value) } } + public static JsonSerializerOptions CopyAndRemoveConverter(this JsonSerializerOptions options, Type converterType) + { + var copy = new JsonSerializerOptions(options); + for (var i = copy.Converters.Count - 1; i >= 0; i--) + if (copy.Converters[i].GetType() == converterType) + copy.Converters.RemoveAt(i); + return copy; + } + public static Type GetObjectSubtype(Type objectType, string discriminator, Dictionary typeCache) { // Check the type cache. @@ -152,14 +161,25 @@ public override void Write(Utf8JsonWriter writer, TDiscriminated value, JsonSeri public class ElementConverterFactory : JsonConverterFactory { - private Dictionary _elements; - - private Dictionary _typeCache; - - JsonElement _documentElements; - + private readonly Dictionary _elements; + + private readonly Dictionary _typeCache; + + /// + /// An element representing the Elements property on the + /// model object being deserialized. This is used to do + /// forward-looking deserialization of nested references. + /// + private readonly JsonElement _documentElements; + + /// + /// Construct an element converter factory. + /// + /// A cache of elements. + /// A cache of types. + /// The elements node of a model being deserialized. public ElementConverterFactory(Dictionary elements, - Dictionary typeCache = null, + Dictionary typeCache = null, JsonElement documentElements = default) { _elements = elements; @@ -193,11 +213,44 @@ public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializer } } + public class ElementIdConverter : JsonConverter where TElement : Element + { + private readonly Dictionary _elements; + + public ElementIdConverter() + { + _elements = new Dictionary(); + } + + public ElementIdConverter(Dictionary elements) + { + _elements = elements; + } + + public override TElement Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + var id = reader.GetGuid(); + if (_elements.ContainsKey(id)) + { + return (TElement)_elements[id]; + } + else + { + return null; + } + } + + public override void Write(Utf8JsonWriter writer, TElement value, JsonSerializerOptions options) + { + writer.WriteStringValue(value.Id.ToString()); + } + } + public class ElementConverter : JsonConverter where TElement : Element { - private Dictionary _elements; - private Dictionary _typeCache; - JsonElement _documentElements; + private readonly Dictionary _elements; + private readonly Dictionary _typeCache; + private readonly JsonElement _documentElements; public ElementConverter(Dictionary elements, Dictionary typeCache, @@ -210,38 +263,55 @@ public ElementConverter(Dictionary elements, public override TElement Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { - TElement e; - if (reader.TokenType == JsonTokenType.String) + using (var doc = JsonDocument.ParseValue(ref reader)) { - var id = reader.GetGuid(); - if (_elements.ContainsKey(id)) - { - Console.WriteLine($"Found element {id} already in the cache."); - e = (TElement)_elements[id]; - return e; - } - else + var root = doc.RootElement; + + var discriminator = root.GetProperty("discriminator").GetString(); + var subType = _typeCache[discriminator]; + + // Use the type info to get all properties which are Element + // references, and deserialize those first. + + // TODO: This *should* support serialization of elements in + // any order, removing the requirement to do any kind of recursive + // sub-element searching. We can remove that code from the model. + var elementProperties = subType.GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(p => typeof(Element).IsAssignableFrom(p.PropertyType)); + foreach (var elementProperty in elementProperties) { - Console.WriteLine($"Couldn't find element {id}. Building it."); - // This element hasn't been built yet. - // Pause and go build it. - // This may be dangerous if circular references are introduced. - if (_documentElements.TryGetProperty(reader.GetString(), out var element)) + var prop = root.GetProperty(elementProperty.Name); + if (prop.TryGetGuid(out var referencedId)) { - e = JsonSerializer.Deserialize(element.ToString(), options); - _elements.Add(e.Id, e); - return e; + if (_elements.ContainsKey(referencedId)) + { + continue; + } + + if (_documentElements.TryGetProperty(referencedId.ToString(), out var propertyBody)) + { + if (propertyBody.TryGetProperty("discriminator", out var elementBody)) + { + var referencedElement = (Element)prop.Deserialize(elementProperty.PropertyType); + _elements[referencedId] = referencedElement; + } + } + else + { + // The reference cannot be found. It's either not + // a direct reference, as in the case of a cross-model + // reference, or it's just broken. + _elements[referencedId] = null; + } } } - throw new JsonException(); - } - using (var doc = JsonDocument.ParseValue(ref reader)) - { - var root = doc.RootElement; - var discriminator = root.GetProperty("discriminator").GetString(); - var subType = _typeCache[discriminator]; - e = (TElement)JsonSerializer.Deserialize(root, subType, options); + // Deserialize without further specifying the converter to avoid an infinite loop. + var o = new JsonSerializerOptions() + { + PropertyNameCaseInsensitive = true + }; + o.Converters.Add(new DiscriminatorConverterFactory(_typeCache)); + TElement e = (TElement)root.Deserialize(subType, o); _elements.Add(e.Id, e); return e; } From a7feb353b72e3abd3533ec22b4aad5f05d1d145c Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Mon, 21 Feb 2022 16:32:44 -0800 Subject: [PATCH 014/150] Refactoring into files. --- Elements/src/GeometricElement.cs | 1 - Elements/src/Model.cs | 6 +- .../JSON/DiscriminatorConverter.cs | 78 +++++ .../Serialization/JSON/ElementConverter.cs | 152 ++++++++ .../Serialization/JSON/ElementIdConverter.cs | 64 ++++ .../src/Serialization/JSON/ModelConverter.cs | 330 +----------------- .../JSON/PropertySerializationExtensions.cs | 90 +++++ 7 files changed, 388 insertions(+), 333 deletions(-) create mode 100644 Elements/src/Serialization/JSON/DiscriminatorConverter.cs create mode 100644 Elements/src/Serialization/JSON/ElementConverter.cs create mode 100644 Elements/src/Serialization/JSON/ElementIdConverter.cs create mode 100644 Elements/src/Serialization/JSON/PropertySerializationExtensions.cs diff --git a/Elements/src/GeometricElement.cs b/Elements/src/GeometricElement.cs index 35cd183d0..27f33d57c 100644 --- a/Elements/src/GeometricElement.cs +++ b/Elements/src/GeometricElement.cs @@ -23,7 +23,6 @@ public class GeometricElement : Element /// The element's material. [Newtonsoft.Json.JsonProperty("Material", Required = Newtonsoft.Json.Required.AllowNull)] - [System.Text.Json.Serialization.JsonConverter(typeof(ElementIdConverter))] public Material Material { get; set; } /// The element's representation. diff --git a/Elements/src/Model.cs b/Elements/src/Model.cs index 957369690..399f79e43 100644 --- a/Elements/src/Model.cs +++ b/Elements/src/Model.cs @@ -322,15 +322,15 @@ public static Model FromJsonNew(string json) JsonElement transformElement = root.GetProperty("Transform"); JsonElement elementsElement = root.GetProperty("Elements"); - // Two converters are required. One that handles all element - // deserialization (including discriminator handling), and - // one that handles deserialization of types with discriminators. var options = new JsonSerializerOptions() { WriteIndented = true, PropertyNameCaseInsensitive = true }; + // Two converters are required. One that handles all element + // deserialization (including discriminator handling), and + // one that handles only deserialization of types with discriminators. options.Converters.Add(new ElementConverterFactory(elements, typeCache, elementsElement)); options.Converters.Add(new DiscriminatorConverterFactory(typeCache)); diff --git a/Elements/src/Serialization/JSON/DiscriminatorConverter.cs b/Elements/src/Serialization/JSON/DiscriminatorConverter.cs new file mode 100644 index 000000000..fa0f3df24 --- /dev/null +++ b/Elements/src/Serialization/JSON/DiscriminatorConverter.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using System.Text.Json; +using System.Text.Json.Serialization; +using Elements.Geometry; +using Elements.Geometry.Solids; +using Elements.Spatial; + +namespace Elements.Serialization.JSON +{ + internal class DiscriminatorConverterFactory : JsonConverterFactory + { + private readonly Dictionary _typeCache; + + public DiscriminatorConverterFactory(Dictionary typeCache = null) + { + _typeCache = typeCache; + } + + public override bool CanConvert(Type typeToConvert) + { + return typeToConvert == typeof(Curve) + || typeToConvert == typeof(Grid1d) + || typeToConvert == typeof(Grid2d) + || typeToConvert == typeof(SolidOperation); + } + + public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options) + { + if (typeToConvert == typeof(Curve)) + { + return new DiscriminatorConverter(_typeCache); + } + else if (typeToConvert == typeof(Grid1d)) + { + return new DiscriminatorConverter(_typeCache); + } + else if (typeToConvert == typeof(Grid2d)) + { + return new DiscriminatorConverter(_typeCache); + } + else if (typeToConvert == typeof(SolidOperation)) + { + return new DiscriminatorConverter(_typeCache); + } + + throw new JsonException("A discriminator converter could not be found."); + } + } + + internal class DiscriminatorConverter : JsonConverter + { + private Dictionary _typeCache; + + public DiscriminatorConverter(Dictionary typeCache) + { + _typeCache = typeCache; + } + + public override TDiscriminated Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + using (var doc = JsonDocument.ParseValue(ref reader)) + { + var root = doc.RootElement; + var discriminator = root.GetProperty("discriminator").GetString(); + var subType = _typeCache[discriminator]; + return (TDiscriminated)JsonSerializer.Deserialize(root, subType, options); + } + } + + public override void Write(Utf8JsonWriter writer, TDiscriminated value, JsonSerializerOptions options) + { + writer.WriteStartObject(); + value.WriteProperties(writer, options); + writer.WriteEndObject(); + } + } +} \ No newline at end of file diff --git a/Elements/src/Serialization/JSON/ElementConverter.cs b/Elements/src/Serialization/JSON/ElementConverter.cs new file mode 100644 index 000000000..7dd289f39 --- /dev/null +++ b/Elements/src/Serialization/JSON/ElementConverter.cs @@ -0,0 +1,152 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text.Json; +using System.Text.Json.Serialization; +using Elements.Geometry; + +namespace Elements.Serialization.JSON +{ + internal class ElementConverterFactory : JsonConverterFactory + { + private readonly Dictionary _elements; + + private readonly Dictionary _typeCache; + + /// + /// An element representing the Elements property on the + /// model object being deserialized. This is used to do + /// forward-looking deserialization of nested references. + /// + private readonly JsonElement _documentElements; + + /// + /// Construct an element converter factory. + /// + /// A cache of elements. + /// A cache of types. + /// The elements node of a model being deserialized. + public ElementConverterFactory(Dictionary elements, + Dictionary typeCache = null, + JsonElement documentElements = default) + { + _elements = elements; + _documentElements = documentElements; + _typeCache = typeCache; + } + + public override bool CanConvert(Type typeToConvert) + { + return typeof(Element).IsAssignableFrom(typeToConvert); + } + + public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options) + { + if (typeToConvert == typeof(Material)) + { + return new ElementConverter(_elements, _typeCache, _documentElements); + } + else if (typeToConvert == typeof(Profile)) + { + return new ElementConverter(_elements, _typeCache, _documentElements); + } + else if (typeToConvert == typeof(GeometricElement)) + { + return new ElementConverter(_elements, _typeCache, _documentElements); + } + else + { + return new ElementConverter(_elements, _typeCache, _documentElements); + } + } + } + + internal class ElementConverter : JsonConverter where TElement : Element + { + private readonly Dictionary _elements; + private readonly Dictionary _typeCache; + private readonly JsonElement _documentElements; + + public ElementConverter(Dictionary elements, + Dictionary typeCache, + JsonElement documentElements) + { + _elements = elements; + _typeCache = typeCache; + _documentElements = documentElements; + } + + public override TElement Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + using (var doc = JsonDocument.ParseValue(ref reader)) + { + var root = doc.RootElement; + + var discriminator = root.GetProperty("discriminator").GetString(); + var subType = _typeCache[discriminator]; + + // Use the type info to get all properties which are Element + // references, and deserialize those first. + + // TODO: This *should* support serialization of elements in + // any order, removing the requirement to do any kind of recursive + // sub-element searching. We can remove that code from the model. + var elementProperties = subType.GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(p => typeof(Element).IsAssignableFrom(p.PropertyType)); + foreach (var elementProperty in elementProperties) + { + var prop = root.GetProperty(elementProperty.Name); + if (prop.TryGetGuid(out var referencedId)) + { + if (_elements.ContainsKey(referencedId)) + { + continue; + } + + if (_documentElements.TryGetProperty(referencedId.ToString(), out var propertyBody)) + { + if (propertyBody.TryGetProperty("discriminator", out var elementBody)) + { + var referencedElement = (Element)prop.Deserialize(elementProperty.PropertyType); + _elements[referencedId] = referencedElement; + } + } + else + { + // The reference cannot be found. It's either not + // a direct reference, as in the case of a cross-model + // reference, or it's just broken. + _elements[referencedId] = null; + } + } + } + + // Deserialize without further specifying the converter to avoid an infinite loop. + var o = new JsonSerializerOptions() + { + PropertyNameCaseInsensitive = true + }; + // Reuse the existing discriminator factory converter. + o.Converters.Add(options.Converters.First(c => c.GetType() == typeof(DiscriminatorConverterFactory))); + o.Converters.Add(new ElementIdConverterFactory(_elements)); + TElement e = (TElement)root.Deserialize(subType, o); + _elements.Add(e.Id, e); + return e; + } + } + + public override void Write(Utf8JsonWriter writer, TElement value, JsonSerializerOptions options) + { + if (writer.CurrentDepth > 2) + { + writer.WriteStringValue(value.Id.ToString()); + } + else + { + writer.WriteStartObject(); + value.WriteProperties(writer, options); + writer.WriteEndObject(); + } + } + } +} \ No newline at end of file diff --git a/Elements/src/Serialization/JSON/ElementIdConverter.cs b/Elements/src/Serialization/JSON/ElementIdConverter.cs new file mode 100644 index 000000000..c88176ef0 --- /dev/null +++ b/Elements/src/Serialization/JSON/ElementIdConverter.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace Elements.Serialization.JSON +{ + internal class ElementIdConverterFactory : JsonConverterFactory + { + private readonly Dictionary _elements; + + public ElementIdConverterFactory(Dictionary elements) + { + _elements = elements; + } + + public override bool CanConvert(Type typeToConvert) + { + return typeof(Element).IsAssignableFrom(typeToConvert); + } + + public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options) + { + var elementIdConverterType = typeof(ElementIdConverter<>); + var typeArgs = new[] { typeToConvert }; + var converterType = elementIdConverterType.MakeGenericType(typeArgs); + var converter = Activator.CreateInstance(converterType, new[] { _elements }) as JsonConverter; + return converter; + } + } + + internal class ElementIdConverter : JsonConverter where TElement : Element + { + private readonly Dictionary _elements; + + public ElementIdConverter() + { + _elements = new Dictionary(); + } + + public ElementIdConverter(Dictionary elements) + { + _elements = elements; + } + + public override TElement Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + var id = reader.GetGuid(); + if (_elements.ContainsKey(id)) + { + return (TElement)_elements[id]; + } + else + { + return null; + } + } + + public override void Write(Utf8JsonWriter writer, TElement value, JsonSerializerOptions options) + { + writer.WriteStringValue(value.Id.ToString()); + } + } +} \ No newline at end of file diff --git a/Elements/src/Serialization/JSON/ModelConverter.cs b/Elements/src/Serialization/JSON/ModelConverter.cs index 0eec4850d..e120e7b69 100644 --- a/Elements/src/Serialization/JSON/ModelConverter.cs +++ b/Elements/src/Serialization/JSON/ModelConverter.cs @@ -1,338 +1,10 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; using System.Text.Json; using System.Text.Json.Serialization; -using Elements.Geometry; -using Elements.Geometry.Solids; -using Elements.Spatial; namespace Elements.Serialization.JSON { - public static class PropertySerializationExtensions - { - public static void WriteProperties(this object value, Utf8JsonWriter writer, JsonSerializerOptions options) - { - writer.WriteString("discriminator", value.GetDiscriminatorName()); - - var pinfos = value.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance); - foreach (var pinfo in pinfos) - { - // Skip ignored properties - var attrib = pinfo.GetCustomAttribute(); - if (attrib != null) - { - continue; - } - - // TODO: Use the Newtonsoft version as well. - var newtonIgnore = pinfo.GetCustomAttribute(); - if (newtonIgnore != null) - { - continue; - } - - writer.WritePropertyName(pinfo.Name); - JsonSerializer.Serialize(writer, pinfo.GetValue(value), pinfo.PropertyType, options); - } - } - - private static string GetDiscriminatorName(this object value) - { - var t = value.GetType(); - if (t.IsGenericType) - { - return $"{t.FullName.Split('`').First()}<{string.Join(",", t.GenericTypeArguments.Select(arg => arg.FullName))}>"; - } - else - { - return t.FullName.Split('`').First(); - } - } - - public static JsonSerializerOptions CopyAndRemoveConverter(this JsonSerializerOptions options, Type converterType) - { - var copy = new JsonSerializerOptions(options); - for (var i = copy.Converters.Count - 1; i >= 0; i--) - if (copy.Converters[i].GetType() == converterType) - copy.Converters.RemoveAt(i); - return copy; - } - - public static Type GetObjectSubtype(Type objectType, string discriminator, Dictionary typeCache) - { - // Check the type cache. - if (discriminator != null && typeCache.ContainsKey(discriminator)) - { - return typeCache[discriminator]; - } - - // Check for proxy generics. - if (discriminator != null && discriminator.StartsWith("Elements.ElementProxy<")) - { - var typeNames = discriminator.Split('<')[1].Split('>')[0].Split(','); // We do this split because in theory we can serialize with multiple generics - var typeName = typeNames.FirstOrDefault(); - var generic = typeCache[typeName]; - var proxy = typeof(ElementProxy<>).MakeGenericType(generic); - return proxy; - } - - // If it's not in the type cache see if it's got a representation. - // Import it as a GeometricElement. - // if (jObject.TryGetValue("Representation", out _)) - // { - // return typeof(GeometricElement); - // } - - // The default behavior for this converter, as provided by nJSONSchema - // is to return the base objectType if a derived type can't be found. - return objectType; - } - } - - public class DiscriminatorConverterFactory : JsonConverterFactory - { - private Dictionary _typeCache; - - public DiscriminatorConverterFactory(Dictionary typeCache = null) - { - _typeCache = typeCache; - } - - public override bool CanConvert(Type typeToConvert) - { - return typeToConvert == typeof(Curve) - || typeToConvert == typeof(Grid1d) - || typeToConvert == typeof(Grid2d) - || typeToConvert == typeof(SolidOperation); - } - - public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options) - { - if (typeToConvert == typeof(Curve)) - { - return new DiscriminatorConverter(_typeCache); - } - else if (typeToConvert == typeof(Grid1d)) - { - return new DiscriminatorConverter(_typeCache); - } - else if (typeToConvert == typeof(Grid2d)) - { - return new DiscriminatorConverter(_typeCache); - } - else if (typeToConvert == typeof(SolidOperation)) - { - return new DiscriminatorConverter(_typeCache); - } - - throw new JsonException("A discriminator converter could not be found."); - } - } - - public class DiscriminatorConverter : JsonConverter - { - private Dictionary _typeCache; - - public DiscriminatorConverter(Dictionary typeCache) - { - _typeCache = typeCache; - } - - public override TDiscriminated Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - using (var doc = JsonDocument.ParseValue(ref reader)) - { - var root = doc.RootElement; - var discriminator = root.GetProperty("discriminator").GetString(); - var subType = _typeCache[discriminator]; - return (TDiscriminated)JsonSerializer.Deserialize(root, subType, options); - } - } - - public override void Write(Utf8JsonWriter writer, TDiscriminated value, JsonSerializerOptions options) - { - writer.WriteStartObject(); - value.WriteProperties(writer, options); - writer.WriteEndObject(); - } - } - - public class ElementConverterFactory : JsonConverterFactory - { - private readonly Dictionary _elements; - - private readonly Dictionary _typeCache; - - /// - /// An element representing the Elements property on the - /// model object being deserialized. This is used to do - /// forward-looking deserialization of nested references. - /// - private readonly JsonElement _documentElements; - - /// - /// Construct an element converter factory. - /// - /// A cache of elements. - /// A cache of types. - /// The elements node of a model being deserialized. - public ElementConverterFactory(Dictionary elements, - Dictionary typeCache = null, - JsonElement documentElements = default) - { - _elements = elements; - _documentElements = documentElements; - _typeCache = typeCache; - } - - public override bool CanConvert(Type typeToConvert) - { - return typeof(Element).IsAssignableFrom(typeToConvert); - } - - public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options) - { - if (typeToConvert == typeof(Material)) - { - return new ElementConverter(_elements, _typeCache, _documentElements); - } - else if (typeToConvert == typeof(Profile)) - { - return new ElementConverter(_elements, _typeCache, _documentElements); - } - else if (typeToConvert == typeof(GeometricElement)) - { - return new ElementConverter(_elements, _typeCache, _documentElements); - } - else - { - return new ElementConverter(_elements, _typeCache, _documentElements); - } - } - } - - public class ElementIdConverter : JsonConverter where TElement : Element - { - private readonly Dictionary _elements; - - public ElementIdConverter() - { - _elements = new Dictionary(); - } - - public ElementIdConverter(Dictionary elements) - { - _elements = elements; - } - - public override TElement Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - var id = reader.GetGuid(); - if (_elements.ContainsKey(id)) - { - return (TElement)_elements[id]; - } - else - { - return null; - } - } - - public override void Write(Utf8JsonWriter writer, TElement value, JsonSerializerOptions options) - { - writer.WriteStringValue(value.Id.ToString()); - } - } - - public class ElementConverter : JsonConverter where TElement : Element - { - private readonly Dictionary _elements; - private readonly Dictionary _typeCache; - private readonly JsonElement _documentElements; - - public ElementConverter(Dictionary elements, - Dictionary typeCache, - JsonElement documentElements) - { - _elements = elements; - _typeCache = typeCache; - _documentElements = documentElements; - } - - public override TElement Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - using (var doc = JsonDocument.ParseValue(ref reader)) - { - var root = doc.RootElement; - - var discriminator = root.GetProperty("discriminator").GetString(); - var subType = _typeCache[discriminator]; - - // Use the type info to get all properties which are Element - // references, and deserialize those first. - - // TODO: This *should* support serialization of elements in - // any order, removing the requirement to do any kind of recursive - // sub-element searching. We can remove that code from the model. - var elementProperties = subType.GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(p => typeof(Element).IsAssignableFrom(p.PropertyType)); - foreach (var elementProperty in elementProperties) - { - var prop = root.GetProperty(elementProperty.Name); - if (prop.TryGetGuid(out var referencedId)) - { - if (_elements.ContainsKey(referencedId)) - { - continue; - } - - if (_documentElements.TryGetProperty(referencedId.ToString(), out var propertyBody)) - { - if (propertyBody.TryGetProperty("discriminator", out var elementBody)) - { - var referencedElement = (Element)prop.Deserialize(elementProperty.PropertyType); - _elements[referencedId] = referencedElement; - } - } - else - { - // The reference cannot be found. It's either not - // a direct reference, as in the case of a cross-model - // reference, or it's just broken. - _elements[referencedId] = null; - } - } - } - - // Deserialize without further specifying the converter to avoid an infinite loop. - var o = new JsonSerializerOptions() - { - PropertyNameCaseInsensitive = true - }; - o.Converters.Add(new DiscriminatorConverterFactory(_typeCache)); - TElement e = (TElement)root.Deserialize(subType, o); - _elements.Add(e.Id, e); - return e; - } - } - - public override void Write(Utf8JsonWriter writer, TElement value, JsonSerializerOptions options) - { - if (writer.CurrentDepth > 2) - { - writer.WriteStringValue(value.Id.ToString()); - } - else - { - writer.WriteStartObject(); - value.WriteProperties(writer, options); - writer.WriteEndObject(); - } - } - } - - public class ModelConverter : JsonConverter + internal class ModelConverter : JsonConverter { public override Model Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) diff --git a/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs b/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs new file mode 100644 index 000000000..f82364dd6 --- /dev/null +++ b/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs @@ -0,0 +1,90 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace Elements.Serialization.JSON +{ + internal static class PropertySerializationExtensions + { + public static void WriteProperties(this object value, Utf8JsonWriter writer, JsonSerializerOptions options) + { + writer.WriteString("discriminator", value.GetDiscriminatorName()); + + var pinfos = value.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance); + foreach (var pinfo in pinfos) + { + // Skip ignored properties + var attrib = pinfo.GetCustomAttribute(); + if (attrib != null) + { + continue; + } + + // TODO: Use the Newtonsoft version as well. + var newtonIgnore = pinfo.GetCustomAttribute(); + if (newtonIgnore != null) + { + continue; + } + + writer.WritePropertyName(pinfo.Name); + JsonSerializer.Serialize(writer, pinfo.GetValue(value), pinfo.PropertyType, options); + } + } + + private static string GetDiscriminatorName(this object value) + { + var t = value.GetType(); + if (t.IsGenericType) + { + return $"{t.FullName.Split('`').First()}<{string.Join(",", t.GenericTypeArguments.Select(arg => arg.FullName))}>"; + } + else + { + return t.FullName.Split('`').First(); + } + } + + public static JsonSerializerOptions CopyAndRemoveConverter(this JsonSerializerOptions options, Type converterType) + { + var copy = new JsonSerializerOptions(options); + for (var i = copy.Converters.Count - 1; i >= 0; i--) + if (copy.Converters[i].GetType() == converterType) + copy.Converters.RemoveAt(i); + return copy; + } + + public static Type GetObjectSubtype(Type objectType, string discriminator, Dictionary typeCache) + { + // Check the type cache. + if (discriminator != null && typeCache.ContainsKey(discriminator)) + { + return typeCache[discriminator]; + } + + // Check for proxy generics. + if (discriminator != null && discriminator.StartsWith("Elements.ElementProxy<")) + { + var typeNames = discriminator.Split('<')[1].Split('>')[0].Split(','); // We do this split because in theory we can serialize with multiple generics + var typeName = typeNames.FirstOrDefault(); + var generic = typeCache[typeName]; + var proxy = typeof(ElementProxy<>).MakeGenericType(generic); + return proxy; + } + + // If it's not in the type cache see if it's got a representation. + // Import it as a GeometricElement. + // if (jObject.TryGetValue("Representation", out _)) + // { + // return typeof(GeometricElement); + // } + + // The default behavior for this converter, as provided by nJSONSchema + // is to return the base objectType if a derived type can't be found. + return objectType; + } + } +} \ No newline at end of file From e5305a02c996685f6c0bdbd90c877041f0521662 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Mon, 21 Feb 2022 17:23:28 -0800 Subject: [PATCH 015/150] Add reference resolver. --- Elements/src/GeometricElement.cs | 1 + Elements/src/Model.cs | 18 +++-- .../Serialization/JSON/ElementConverter.cs | 40 +++++----- .../Serialization/JSON/ElementIdConverter.cs | 20 ++--- .../JSON/ElementReferenceResolver.cs | 77 +++++++++++++++++++ 5 files changed, 120 insertions(+), 36 deletions(-) create mode 100644 Elements/src/Serialization/JSON/ElementReferenceResolver.cs diff --git a/Elements/src/GeometricElement.cs b/Elements/src/GeometricElement.cs index 27f33d57c..35cd183d0 100644 --- a/Elements/src/GeometricElement.cs +++ b/Elements/src/GeometricElement.cs @@ -23,6 +23,7 @@ public class GeometricElement : Element /// The element's material. [Newtonsoft.Json.JsonProperty("Material", Required = Newtonsoft.Json.Required.AllowNull)] + [System.Text.Json.Serialization.JsonConverter(typeof(ElementIdConverter))] public Material Material { get; set; } /// The element's representation. diff --git a/Elements/src/Model.cs b/Elements/src/Model.cs index 399f79e43..a2387c68b 100644 --- a/Elements/src/Model.cs +++ b/Elements/src/Model.cs @@ -301,9 +301,7 @@ public string ToJsonNew() WriteIndented = true }; - var elements = new Dictionary(); - - serializerOptions.Converters.Add(new ElementConverterFactory(elements)); + serializerOptions.Converters.Add(new ElementConverterFactory()); serializerOptions.Converters.Add(new ModelConverter()); serializerOptions.Converters.Add(new DiscriminatorConverterFactory()); @@ -312,7 +310,6 @@ public string ToJsonNew() public static Model FromJsonNew(string json) { - var elements = new Dictionary(); var typeCache = JsonInheritanceConverter.BuildAppDomainTypeCache(out _); var model = new Model(); @@ -331,10 +328,15 @@ public static Model FromJsonNew(string json) // Two converters are required. One that handles all element // deserialization (including discriminator handling), and // one that handles only deserialization of types with discriminators. - options.Converters.Add(new ElementConverterFactory(elements, typeCache, elementsElement)); + options.Converters.Add(new ElementConverterFactory(typeCache, elementsElement)); options.Converters.Add(new DiscriminatorConverterFactory(typeCache)); - // Set the transform + // Our custom reference handler will cache elements by id as + // they are deserialized, supporting reading elements by id + // from JSON. + var refHandler = new ElementReferenceHandler(); + options.ReferenceHandler = refHandler; + model.Transform = System.Text.Json.JsonSerializer.Deserialize(transformElement.ToString(), options); // Create the elements @@ -345,6 +347,10 @@ public static Model FromJsonNew(string json) var element = (Element)System.Text.Json.JsonSerializer.Deserialize(elementElement.Value.ToString(), subType, options); model.AddElement(element, false); } + + // Resetting the reference handler, empties the internal + // elements cache. + refHandler.Reset(); } return model; diff --git a/Elements/src/Serialization/JSON/ElementConverter.cs b/Elements/src/Serialization/JSON/ElementConverter.cs index 7dd289f39..a55549f0d 100644 --- a/Elements/src/Serialization/JSON/ElementConverter.cs +++ b/Elements/src/Serialization/JSON/ElementConverter.cs @@ -10,7 +10,6 @@ namespace Elements.Serialization.JSON { internal class ElementConverterFactory : JsonConverterFactory { - private readonly Dictionary _elements; private readonly Dictionary _typeCache; @@ -24,14 +23,11 @@ internal class ElementConverterFactory : JsonConverterFactory /// /// Construct an element converter factory. /// - /// A cache of elements. /// A cache of types. /// The elements node of a model being deserialized. - public ElementConverterFactory(Dictionary elements, - Dictionary typeCache = null, + public ElementConverterFactory(Dictionary typeCache = null, JsonElement documentElements = default) { - _elements = elements; _documentElements = documentElements; _typeCache = typeCache; } @@ -45,34 +41,31 @@ public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializer { if (typeToConvert == typeof(Material)) { - return new ElementConverter(_elements, _typeCache, _documentElements); + return new ElementConverter(_typeCache, _documentElements); } else if (typeToConvert == typeof(Profile)) { - return new ElementConverter(_elements, _typeCache, _documentElements); + return new ElementConverter(_typeCache, _documentElements); } else if (typeToConvert == typeof(GeometricElement)) { - return new ElementConverter(_elements, _typeCache, _documentElements); + return new ElementConverter(_typeCache, _documentElements); } else { - return new ElementConverter(_elements, _typeCache, _documentElements); + return new ElementConverter(_typeCache, _documentElements); } } } internal class ElementConverter : JsonConverter where TElement : Element { - private readonly Dictionary _elements; private readonly Dictionary _typeCache; private readonly JsonElement _documentElements; - public ElementConverter(Dictionary elements, - Dictionary typeCache, + public ElementConverter(Dictionary typeCache, JsonElement documentElements) { - _elements = elements; _typeCache = typeCache; _documentElements = documentElements; } @@ -81,6 +74,8 @@ public override TElement Read(ref Utf8JsonReader reader, Type typeToConvert, Jso { using (var doc = JsonDocument.ParseValue(ref reader)) { + var resolver = options.ReferenceHandler.CreateResolver(); + var root = doc.RootElement; var discriminator = root.GetProperty("discriminator").GetString(); @@ -98,7 +93,7 @@ public override TElement Read(ref Utf8JsonReader reader, Type typeToConvert, Jso var prop = root.GetProperty(elementProperty.Name); if (prop.TryGetGuid(out var referencedId)) { - if (_elements.ContainsKey(referencedId)) + if (resolver.ResolveReference(referencedId.ToString()) != null) { continue; } @@ -108,29 +103,32 @@ public override TElement Read(ref Utf8JsonReader reader, Type typeToConvert, Jso if (propertyBody.TryGetProperty("discriminator", out var elementBody)) { var referencedElement = (Element)prop.Deserialize(elementProperty.PropertyType); - _elements[referencedId] = referencedElement; + resolver.AddReference(referencedId.ToString(), referencedElement); } } else { // The reference cannot be found. It's either not // a direct reference, as in the case of a cross-model - // reference, or it's just broken. - _elements[referencedId] = null; + // reference, or it's just broken. + resolver.AddReference(referencedId.ToString(), null); } } } - // Deserialize without further specifying the converter to avoid an infinite loop. + // Create new JSON serializer options, reusing the existing + // discriminator factory converter and reference resolver, + // but don't pass the element converter because it will result + // in an infinite loop. var o = new JsonSerializerOptions() { PropertyNameCaseInsensitive = true }; - // Reuse the existing discriminator factory converter. o.Converters.Add(options.Converters.First(c => c.GetType() == typeof(DiscriminatorConverterFactory))); - o.Converters.Add(new ElementIdConverterFactory(_elements)); + o.ReferenceHandler = options.ReferenceHandler; + TElement e = (TElement)root.Deserialize(subType, o); - _elements.Add(e.Id, e); + resolver.AddReference(e.Id.ToString(), e); return e; } } diff --git a/Elements/src/Serialization/JSON/ElementIdConverter.cs b/Elements/src/Serialization/JSON/ElementIdConverter.cs index c88176ef0..3641d538e 100644 --- a/Elements/src/Serialization/JSON/ElementIdConverter.cs +++ b/Elements/src/Serialization/JSON/ElementIdConverter.cs @@ -45,15 +45,17 @@ public ElementIdConverter(Dictionary elements) public override TElement Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { - var id = reader.GetGuid(); - if (_elements.ContainsKey(id)) - { - return (TElement)_elements[id]; - } - else - { - return null; - } + var id = reader.GetString(); + // if (_elements.ContainsKey(id)) + // { + // return (TElement)_elements[id]; + // } + // else + // { + // return null; + // } + var resolver = options.ReferenceHandler.CreateResolver(); + return (TElement)resolver.ResolveReference(id.ToString()); } public override void Write(Utf8JsonWriter writer, TElement value, JsonSerializerOptions options) diff --git a/Elements/src/Serialization/JSON/ElementReferenceResolver.cs b/Elements/src/Serialization/JSON/ElementReferenceResolver.cs new file mode 100644 index 000000000..ba2766318 --- /dev/null +++ b/Elements/src/Serialization/JSON/ElementReferenceResolver.cs @@ -0,0 +1,77 @@ +using System.Collections.Generic; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace Elements.Serialization.JSON +{ + // This is a hack of the reference resolver. + // We don't actually use reference resolution (ex: $ref, $id) in our element converter, + // but we use a reference resolver because it can be passed down through + // serialization and made available to both properties with converter + // attributes, and objects serialized/deserialized using converters + // from the serializer's options. + // https://docs.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-preserve-references?pivots=dotnet-6-0#persist-reference-metadata-across-multiple-serialization-and-deserialization-calls + internal class ElementReferenceResolver : ReferenceResolver + { + // private uint _referenceCount; + private readonly Dictionary _referenceIdToObjectMap = new Dictionary(); + private readonly Dictionary _objectToReferenceIdMap = new Dictionary(); + + public override void AddReference(string referenceId, object value) + { + // TODO: Enable this when we move to a .net version that supports TryAdd + // if (!_referenceIdToObjectMap.TryAdd(referenceId, value)) + // { + // throw new JsonException(); + // } + + if (_referenceIdToObjectMap == null) + { + throw new JsonException(nameof(_referenceIdToObjectMap)); + } + + if (!_referenceIdToObjectMap.ContainsKey(referenceId)) + { + _referenceIdToObjectMap.Add(referenceId, value); + } + } + + public override string GetReference(object value, out bool alreadyExists) + { + if (_objectToReferenceIdMap.TryGetValue(value, out string referenceId)) + { + alreadyExists = true; + } + else + { + // _referenceCount++; + // referenceId = _referenceCount.ToString(); + _objectToReferenceIdMap.Add(value, referenceId); + alreadyExists = false; + } + + return referenceId; + } + + public override object ResolveReference(string referenceId) + { + if (!_referenceIdToObjectMap.TryGetValue(referenceId, out object value)) + { + // In the default version of this reference resolver + // they throw an exception when a reference cannot be found. + // But we want to be more permissive and just return null. + return null; + } + + return value; + } + } + + internal class ElementReferenceHandler : ReferenceHandler + { + public ElementReferenceHandler() => Reset(); + private ReferenceResolver _rootedResolver; + public override ReferenceResolver CreateResolver() => _rootedResolver; + public void Reset() => _rootedResolver = new ElementReferenceResolver(); + } +} \ No newline at end of file From 2856f1f5a39422776cc3962d0bfbf492e8c255dd Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Mon, 21 Feb 2022 22:52:04 -0800 Subject: [PATCH 016/150] Do it all with one converter. --- Elements.Wasm/ElementsWrapper.cs | 10 +- Elements.Wasm/wwwroot/index.html | 2 +- Elements/src/Element.cs | 2 + Elements/src/GeometricElement.cs | 4 +- Elements/src/Geometry/Curve.cs | 2 + Elements/src/Geometry/Profile.cs | 1 + .../Geometry/Profiles/WideFlangeProfile.cs | 30 ++-- Elements/src/Geometry/Solids/Extrude.cs | 2 + .../src/Geometry/Solids/SolidOperation.cs | 2 + Elements/src/Geometry/Solids/Sweep.cs | 3 + Elements/src/Model.cs | 30 ++-- .../JSON/DiscriminatorConverter.cs | 78 ----------- .../Serialization/JSON/ElementConverter.cs | 128 ++++-------------- .../Serialization/JSON/ElementIdConverter.cs | 66 --------- .../JSON/ElementReferenceResolver.cs | 16 ++- .../JSON/PropertySerializationExtensions.cs | 35 +++++ Elements/src/Spatial/Grid1d.cs | 2 + Elements/src/Spatial/Grid2d.cs | 2 + Elements/src/StructuralFraming.cs | 2 + Elements/test/Grid2dElement.cs | 2 + Elements/test/ModelTests.cs | 16 +++ Elements/test/StructuralFramingTests.cs | 10 +- 22 files changed, 147 insertions(+), 298 deletions(-) delete mode 100644 Elements/src/Serialization/JSON/DiscriminatorConverter.cs delete mode 100644 Elements/src/Serialization/JSON/ElementIdConverter.cs diff --git a/Elements.Wasm/ElementsWrapper.cs b/Elements.Wasm/ElementsWrapper.cs index f47f784a9..826c4b3a9 100644 --- a/Elements.Wasm/ElementsWrapper.cs +++ b/Elements.Wasm/ElementsWrapper.cs @@ -13,7 +13,7 @@ public static class ElementsAPI [JSInvokable] public static Task ModelFromJson(string json) { - return Task.FromResult(Model.FromJson(json, out _, false)); + return Task.FromResult(Model.FromJsonNew(json)); } [JSInvokable] @@ -21,7 +21,7 @@ public static Task ModelToGlbBase64(string json) { Validator.DisableValidationOnConstruction = true; - var model = Model.FromJson(json, out _, false); + var model = Model.FromJsonNew(json); return Task.FromResult(model.ToBase64String()); } @@ -32,12 +32,8 @@ public static Task ModelToGlbBytes(string json) var sw = new Stopwatch(); sw.Start(); - var model = Model.FromJson(json, out var errors, false); + var model = Model.FromJsonNew(json); Console.WriteLine($"{sw.ElapsedMilliseconds}ms for creating the model from json."); - foreach (var error in errors) - { - Console.WriteLine(error); - } sw.Restart(); var result = Task.FromResult(model.ToGlTF()); Console.WriteLine($"{sw.ElapsedMilliseconds}ms for creating the glb from json."); diff --git a/Elements.Wasm/wwwroot/index.html b/Elements.Wasm/wwwroot/index.html index 514143a86..c09b3a3ad 100644 --- a/Elements.Wasm/wwwroot/index.html +++ b/Elements.Wasm/wwwroot/index.html @@ -11,7 +11,7 @@ - diff --git a/Elements/src/Element.cs b/Elements/src/Element.cs index 3fd2a399d..eacba9ad2 100644 --- a/Elements/src/Element.cs +++ b/Elements/src/Element.cs @@ -1,4 +1,5 @@ using System; +using Elements.Serialization.JSON; namespace Elements { @@ -6,6 +7,7 @@ namespace Elements /// An object which is identified with a unique identifier and a name. /// [Newtonsoft.Json.JsonConverter(typeof(Elements.Serialization.JSON.JsonInheritanceConverter), "discriminator")] + [System.Text.Json.Serialization.JsonConverter(typeof(ElementConverter))] public abstract class Element : System.ComponentModel.INotifyPropertyChanged { private System.Guid _id; diff --git a/Elements/src/GeometricElement.cs b/Elements/src/GeometricElement.cs index 35cd183d0..fe39187ed 100644 --- a/Elements/src/GeometricElement.cs +++ b/Elements/src/GeometricElement.cs @@ -1,8 +1,6 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Threading; -using System.Threading.Tasks; using Elements.Geometry; using Elements.Geometry.Solids; using Elements.Interfaces; @@ -23,7 +21,7 @@ public class GeometricElement : Element /// The element's material. [Newtonsoft.Json.JsonProperty("Material", Required = Newtonsoft.Json.Required.AllowNull)] - [System.Text.Json.Serialization.JsonConverter(typeof(ElementIdConverter))] + [System.Text.Json.Serialization.JsonConverter(typeof(ElementConverter))] public Material Material { get; set; } /// The element's representation. diff --git a/Elements/src/Geometry/Curve.cs b/Elements/src/Geometry/Curve.cs index 9d4267597..9ca10abc1 100644 --- a/Elements/src/Geometry/Curve.cs +++ b/Elements/src/Geometry/Curve.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using Elements.Geometry.Interfaces; +using Elements.Serialization.JSON; namespace Elements.Geometry { @@ -7,6 +8,7 @@ namespace Elements.Geometry /// The abstract base class for all curves. /// [Newtonsoft.Json.JsonConverter(typeof(Elements.Serialization.JSON.JsonInheritanceConverter), "discriminator")] + [System.Text.Json.Serialization.JsonConverter(typeof(ElementConverter))] public abstract partial class Curve : ICurve, ITransformable { /// diff --git a/Elements/src/Geometry/Profile.cs b/Elements/src/Geometry/Profile.cs index e7beb3a47..4d95b2f0b 100644 --- a/Elements/src/Geometry/Profile.cs +++ b/Elements/src/Geometry/Profile.cs @@ -33,6 +33,7 @@ internal Profile() { } /// The id of the profile. /// The name of the profile. [Newtonsoft.Json.JsonConstructor] + [System.Text.Json.Serialization.JsonConstructor] public Profile(Polygon @perimeter, IList @voids, Guid @id = default, string @name = null) : base(id, name) { diff --git a/Elements/src/Geometry/Profiles/WideFlangeProfile.cs b/Elements/src/Geometry/Profiles/WideFlangeProfile.cs index bf01d7490..d59241311 100644 --- a/Elements/src/Geometry/Profiles/WideFlangeProfile.cs +++ b/Elements/src/Geometry/Profiles/WideFlangeProfile.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; +using Elements.Serialization.JSON; using Newtonsoft.Json; namespace Elements.Geometry.Profiles @@ -50,15 +51,15 @@ public enum HorizontalAlignment public class WideFlangeProfile : Profile { [JsonIgnore] - public double A { get; internal set; } + public double A { get; set; } - public double d { get; internal set; } + public double d { get; set; } - public double tw { get; internal set; } + public double tw { get; set; } - public double bf { get; internal set; } + public double bf { get; set; } - public double tf { get; internal set; } + public double tf { get; set; } [JsonIgnore] public string T { get; internal set; } @@ -129,28 +130,21 @@ public class WideFlangeProfile : Profile /// /// /// - /// - /// - /// - /// [JsonConstructor] + [System.Text.Json.Serialization.JsonConstructor] public WideFlangeProfile(string name, Guid id, double bf = 0.1, double d = 0.05, double tf = 0.005, - double tw = 0.005, - VerticalAlignment verticalAlignment = VerticalAlignment.Center, - HorizontalAlignment horizontalAlignment = HorizontalAlignment.Center, - double verticalOffset = 0.0, - double horizontalOffset = 0.0) : base(CreateProfile(bf, + double tw = 0.005) : base(CreateProfile(bf, d, tf, tw, - verticalAlignment, - horizontalAlignment, - verticalOffset, - horizontalOffset), new List(), id, name) + VerticalAlignment.Center, + HorizontalAlignment.Center, + 0, + 0), new List(), id, name) { this.bf = bf; this.d = d; diff --git a/Elements/src/Geometry/Solids/Extrude.cs b/Elements/src/Geometry/Solids/Extrude.cs index dadcfba5d..6d316879f 100644 --- a/Elements/src/Geometry/Solids/Extrude.cs +++ b/Elements/src/Geometry/Solids/Extrude.cs @@ -1,4 +1,5 @@ using System; +using Elements.Serialization.JSON; using Elements.Validators; namespace Elements.Geometry.Solids @@ -14,6 +15,7 @@ public class Extrude : SolidOperation, System.ComponentModel.INotifyPropertyChan /// The id of the profile to extrude. [Newtonsoft.Json.JsonProperty("Profile", Required = Newtonsoft.Json.Required.AllowNull)] + [System.Text.Json.Serialization.JsonConverter(typeof(ElementConverter))] public Profile Profile { get { return _profile; } diff --git a/Elements/src/Geometry/Solids/SolidOperation.cs b/Elements/src/Geometry/Solids/SolidOperation.cs index ef6fe50b0..6256c72ae 100644 --- a/Elements/src/Geometry/Solids/SolidOperation.cs +++ b/Elements/src/Geometry/Solids/SolidOperation.cs @@ -1,3 +1,4 @@ +using Elements.Serialization.JSON; using Newtonsoft.Json; namespace Elements.Geometry.Solids @@ -6,6 +7,7 @@ namespace Elements.Geometry.Solids /// The base class for all operations which create solids. /// [Newtonsoft.Json.JsonConverter(typeof(Elements.Serialization.JSON.JsonInheritanceConverter), "discriminator")] + [System.Text.Json.Serialization.JsonConverter(typeof(ElementConverter))] public abstract class SolidOperation { internal Solid _solid; diff --git a/Elements/src/Geometry/Solids/Sweep.cs b/Elements/src/Geometry/Solids/Sweep.cs index c3fc60aa7..1c3a9c1be 100644 --- a/Elements/src/Geometry/Solids/Sweep.cs +++ b/Elements/src/Geometry/Solids/Sweep.cs @@ -1,3 +1,5 @@ +using Elements.Serialization.JSON; + namespace Elements.Geometry.Solids { /// A sweep of a profile along a curve. @@ -35,6 +37,7 @@ public Sweep(Profile @profile, Curve @curve, double @startSetback, double @endSe /// The id of the profile to be swept along the curve. [Newtonsoft.Json.JsonProperty("Profile", Required = Newtonsoft.Json.Required.AllowNull)] + [System.Text.Json.Serialization.JsonConverter(typeof(ElementConverter))] public Profile Profile { get { return _profile; } diff --git a/Elements/src/Model.cs b/Elements/src/Model.cs index a2387c68b..70da8dd99 100644 --- a/Elements/src/Model.cs +++ b/Elements/src/Model.cs @@ -13,6 +13,7 @@ using Elements.GeoJSON; using System.IO; using System.Text.Json; +using System.Diagnostics; namespace Elements { @@ -302,17 +303,17 @@ public string ToJsonNew() }; serializerOptions.Converters.Add(new ElementConverterFactory()); - serializerOptions.Converters.Add(new ModelConverter()); - serializerOptions.Converters.Add(new DiscriminatorConverterFactory()); - return System.Text.Json.JsonSerializer.Serialize(this, serializerOptions); } public static Model FromJsonNew(string json) { + var sw = new Stopwatch(); + sw.Start(); var typeCache = JsonInheritanceConverter.BuildAppDomainTypeCache(out _); + Console.WriteLine($"{sw.ElapsedMilliseconds}ms for creating type cache."); - var model = new Model(); + Model model = null; using (var document = JsonDocument.Parse(json)) { JsonElement root = document.RootElement; @@ -325,32 +326,17 @@ public static Model FromJsonNew(string json) PropertyNameCaseInsensitive = true }; - // Two converters are required. One that handles all element - // deserialization (including discriminator handling), and - // one that handles only deserialization of types with discriminators. - options.Converters.Add(new ElementConverterFactory(typeCache, elementsElement)); - options.Converters.Add(new DiscriminatorConverterFactory(typeCache)); - // Our custom reference handler will cache elements by id as // they are deserialized, supporting reading elements by id // from JSON. - var refHandler = new ElementReferenceHandler(); + var refHandler = new ElementReferenceHandler(typeCache, elementsElement); options.ReferenceHandler = refHandler; - model.Transform = System.Text.Json.JsonSerializer.Deserialize(transformElement.ToString(), options); - - // Create the elements - foreach (var elementElement in elementsElement.EnumerateObject()) - { - var discriminator = elementElement.Value.GetProperty("discriminator").GetString(); - var subType = PropertySerializationExtensions.GetObjectSubtype(typeof(Element), discriminator, typeCache); - var element = (Element)System.Text.Json.JsonSerializer.Deserialize(elementElement.Value.ToString(), subType, options); - model.AddElement(element, false); - } + model = System.Text.Json.JsonSerializer.Deserialize(json, options); // Resetting the reference handler, empties the internal // elements cache. - refHandler.Reset(); + refHandler.Reset(typeCache, elementsElement); } return model; diff --git a/Elements/src/Serialization/JSON/DiscriminatorConverter.cs b/Elements/src/Serialization/JSON/DiscriminatorConverter.cs deleted file mode 100644 index fa0f3df24..000000000 --- a/Elements/src/Serialization/JSON/DiscriminatorConverter.cs +++ /dev/null @@ -1,78 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text.Json; -using System.Text.Json.Serialization; -using Elements.Geometry; -using Elements.Geometry.Solids; -using Elements.Spatial; - -namespace Elements.Serialization.JSON -{ - internal class DiscriminatorConverterFactory : JsonConverterFactory - { - private readonly Dictionary _typeCache; - - public DiscriminatorConverterFactory(Dictionary typeCache = null) - { - _typeCache = typeCache; - } - - public override bool CanConvert(Type typeToConvert) - { - return typeToConvert == typeof(Curve) - || typeToConvert == typeof(Grid1d) - || typeToConvert == typeof(Grid2d) - || typeToConvert == typeof(SolidOperation); - } - - public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options) - { - if (typeToConvert == typeof(Curve)) - { - return new DiscriminatorConverter(_typeCache); - } - else if (typeToConvert == typeof(Grid1d)) - { - return new DiscriminatorConverter(_typeCache); - } - else if (typeToConvert == typeof(Grid2d)) - { - return new DiscriminatorConverter(_typeCache); - } - else if (typeToConvert == typeof(SolidOperation)) - { - return new DiscriminatorConverter(_typeCache); - } - - throw new JsonException("A discriminator converter could not be found."); - } - } - - internal class DiscriminatorConverter : JsonConverter - { - private Dictionary _typeCache; - - public DiscriminatorConverter(Dictionary typeCache) - { - _typeCache = typeCache; - } - - public override TDiscriminated Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - using (var doc = JsonDocument.ParseValue(ref reader)) - { - var root = doc.RootElement; - var discriminator = root.GetProperty("discriminator").GetString(); - var subType = _typeCache[discriminator]; - return (TDiscriminated)JsonSerializer.Deserialize(root, subType, options); - } - } - - public override void Write(Utf8JsonWriter writer, TDiscriminated value, JsonSerializerOptions options) - { - writer.WriteStartObject(); - value.WriteProperties(writer, options); - writer.WriteEndObject(); - } - } -} \ No newline at end of file diff --git a/Elements/src/Serialization/JSON/ElementConverter.cs b/Elements/src/Serialization/JSON/ElementConverter.cs index a55549f0d..25845b1af 100644 --- a/Elements/src/Serialization/JSON/ElementConverter.cs +++ b/Elements/src/Serialization/JSON/ElementConverter.cs @@ -1,37 +1,12 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; +using System.Diagnostics; using System.Text.Json; using System.Text.Json.Serialization; -using Elements.Geometry; namespace Elements.Serialization.JSON { internal class ElementConverterFactory : JsonConverterFactory { - - private readonly Dictionary _typeCache; - - /// - /// An element representing the Elements property on the - /// model object being deserialized. This is used to do - /// forward-looking deserialization of nested references. - /// - private readonly JsonElement _documentElements; - - /// - /// Construct an element converter factory. - /// - /// A cache of types. - /// The elements node of a model being deserialized. - public ElementConverterFactory(Dictionary typeCache = null, - JsonElement documentElements = default) - { - _documentElements = documentElements; - _typeCache = typeCache; - } - public override bool CanConvert(Type typeToConvert) { return typeof(Element).IsAssignableFrom(typeToConvert); @@ -39,47 +14,35 @@ public override bool CanConvert(Type typeToConvert) public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options) { - if (typeToConvert == typeof(Material)) - { - return new ElementConverter(_typeCache, _documentElements); - } - else if (typeToConvert == typeof(Profile)) - { - return new ElementConverter(_typeCache, _documentElements); - } - else if (typeToConvert == typeof(GeometricElement)) - { - return new ElementConverter(_typeCache, _documentElements); - } - else - { - return new ElementConverter(_typeCache, _documentElements); - } + var elementConverter = typeof(ElementConverter<>); + var typeArgs = new[] { typeToConvert }; + var converterType = elementConverter.MakeGenericType(typeArgs); + var converter = Activator.CreateInstance(converterType) as JsonConverter; + return converter; } } - internal class ElementConverter : JsonConverter where TElement : Element + internal class ElementConverter : JsonConverter { - private readonly Dictionary _typeCache; - private readonly JsonElement _documentElements; - - public ElementConverter(Dictionary typeCache, - JsonElement documentElements) + public override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { - _typeCache = typeCache; - _documentElements = documentElements; - } + var sw = new Stopwatch(); + sw.Start(); - public override TElement Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - using (var doc = JsonDocument.ParseValue(ref reader)) + var resolver = options.ReferenceHandler.CreateResolver() as ElementReferenceResolver; + + if (reader.TokenType == JsonTokenType.String) { - var resolver = options.ReferenceHandler.CreateResolver(); + var id = reader.GetString(); + return (T)resolver.ResolveReference(id.ToString()); + } + using (var doc = JsonDocument.ParseValue(ref reader)) + { var root = doc.RootElement; var discriminator = root.GetProperty("discriminator").GetString(); - var subType = _typeCache[discriminator]; + var derivedType = resolver.TypeCache[discriminator]; // Use the type info to get all properties which are Element // references, and deserialize those first. @@ -87,57 +50,24 @@ public override TElement Read(ref Utf8JsonReader reader, Type typeToConvert, Jso // TODO: This *should* support serialization of elements in // any order, removing the requirement to do any kind of recursive // sub-element searching. We can remove that code from the model. - var elementProperties = subType.GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(p => typeof(Element).IsAssignableFrom(p.PropertyType)); - foreach (var elementProperty in elementProperties) - { - var prop = root.GetProperty(elementProperty.Name); - if (prop.TryGetGuid(out var referencedId)) - { - if (resolver.ResolveReference(referencedId.ToString()) != null) - { - continue; - } + PropertySerializationExtensions.DeserializeElementProperties(derivedType, root, resolver, resolver.DocumentElements); - if (_documentElements.TryGetProperty(referencedId.ToString(), out var propertyBody)) - { - if (propertyBody.TryGetProperty("discriminator", out var elementBody)) - { - var referencedElement = (Element)prop.Deserialize(elementProperty.PropertyType); - resolver.AddReference(referencedId.ToString(), referencedElement); - } - } - else - { - // The reference cannot be found. It's either not - // a direct reference, as in the case of a cross-model - // reference, or it's just broken. - resolver.AddReference(referencedId.ToString(), null); - } - } - } - - // Create new JSON serializer options, reusing the existing - // discriminator factory converter and reference resolver, - // but don't pass the element converter because it will result - // in an infinite loop. - var o = new JsonSerializerOptions() + T e = (T)root.Deserialize(derivedType, options); + if (typeof(Element).IsAssignableFrom(derivedType)) { - PropertyNameCaseInsensitive = true - }; - o.Converters.Add(options.Converters.First(c => c.GetType() == typeof(DiscriminatorConverterFactory))); - o.ReferenceHandler = options.ReferenceHandler; - - TElement e = (TElement)root.Deserialize(subType, o); - resolver.AddReference(e.Id.ToString(), e); + resolver.AddReference(((Element)(object)e).Id.ToString(), e); + } + Console.WriteLine($"{sw.ElapsedMilliseconds}ms for deserializing type."); return e; } } - public override void Write(Utf8JsonWriter writer, TElement value, JsonSerializerOptions options) + public override void Write(Utf8JsonWriter writer, T value, JsonSerializerOptions options) { - if (writer.CurrentDepth > 2) + var isElement = typeof(Element).IsAssignableFrom(value.GetType()); + if (writer.CurrentDepth > 2 && isElement) { - writer.WriteStringValue(value.Id.ToString()); + writer.WriteStringValue(((Element)(object)value).Id.ToString()); } else { diff --git a/Elements/src/Serialization/JSON/ElementIdConverter.cs b/Elements/src/Serialization/JSON/ElementIdConverter.cs deleted file mode 100644 index 3641d538e..000000000 --- a/Elements/src/Serialization/JSON/ElementIdConverter.cs +++ /dev/null @@ -1,66 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace Elements.Serialization.JSON -{ - internal class ElementIdConverterFactory : JsonConverterFactory - { - private readonly Dictionary _elements; - - public ElementIdConverterFactory(Dictionary elements) - { - _elements = elements; - } - - public override bool CanConvert(Type typeToConvert) - { - return typeof(Element).IsAssignableFrom(typeToConvert); - } - - public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options) - { - var elementIdConverterType = typeof(ElementIdConverter<>); - var typeArgs = new[] { typeToConvert }; - var converterType = elementIdConverterType.MakeGenericType(typeArgs); - var converter = Activator.CreateInstance(converterType, new[] { _elements }) as JsonConverter; - return converter; - } - } - - internal class ElementIdConverter : JsonConverter where TElement : Element - { - private readonly Dictionary _elements; - - public ElementIdConverter() - { - _elements = new Dictionary(); - } - - public ElementIdConverter(Dictionary elements) - { - _elements = elements; - } - - public override TElement Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - var id = reader.GetString(); - // if (_elements.ContainsKey(id)) - // { - // return (TElement)_elements[id]; - // } - // else - // { - // return null; - // } - var resolver = options.ReferenceHandler.CreateResolver(); - return (TElement)resolver.ResolveReference(id.ToString()); - } - - public override void Write(Utf8JsonWriter writer, TElement value, JsonSerializerOptions options) - { - writer.WriteStringValue(value.Id.ToString()); - } - } -} \ No newline at end of file diff --git a/Elements/src/Serialization/JSON/ElementReferenceResolver.cs b/Elements/src/Serialization/JSON/ElementReferenceResolver.cs index ba2766318..47641a762 100644 --- a/Elements/src/Serialization/JSON/ElementReferenceResolver.cs +++ b/Elements/src/Serialization/JSON/ElementReferenceResolver.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using System.Text.Json; using System.Text.Json.Serialization; @@ -13,10 +14,19 @@ namespace Elements.Serialization.JSON // https://docs.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-preserve-references?pivots=dotnet-6-0#persist-reference-metadata-across-multiple-serialization-and-deserialization-calls internal class ElementReferenceResolver : ReferenceResolver { - // private uint _referenceCount; + public Dictionary TypeCache { get; } + public JsonElement DocumentElements { get; } + private readonly Dictionary _referenceIdToObjectMap = new Dictionary(); private readonly Dictionary _objectToReferenceIdMap = new Dictionary(); + public ElementReferenceResolver(Dictionary typeCache, JsonElement documentElements) + { + Console.WriteLine("Constructing a new reference resolver."); + TypeCache = typeCache; + DocumentElements = documentElements; + } + public override void AddReference(string referenceId, object value) { // TODO: Enable this when we move to a .net version that supports TryAdd @@ -69,9 +79,9 @@ public override object ResolveReference(string referenceId) internal class ElementReferenceHandler : ReferenceHandler { - public ElementReferenceHandler() => Reset(); + public ElementReferenceHandler(Dictionary typeCache, JsonElement documentElements) => Reset(typeCache, documentElements); private ReferenceResolver _rootedResolver; public override ReferenceResolver CreateResolver() => _rootedResolver; - public void Reset() => _rootedResolver = new ElementReferenceResolver(); + public void Reset(Dictionary typeCache, JsonElement documentElements) => _rootedResolver = new ElementReferenceResolver(typeCache, documentElements); } } \ No newline at end of file diff --git a/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs b/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs index f82364dd6..4e60a947d 100644 --- a/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs +++ b/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs @@ -86,5 +86,40 @@ public static Type GetObjectSubtype(Type objectType, string discriminator, Dicti // is to return the base objectType if a derived type can't be found. return objectType; } + + public static void DeserializeElementProperties(Type derivedType, + JsonElement root, + ReferenceResolver resolver, + JsonElement documentElements) + { + var elementProperties = derivedType.GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(p => typeof(Element).IsAssignableFrom(p.PropertyType)); + foreach (var elementProperty in elementProperties) + { + var prop = root.GetProperty(elementProperty.Name); + if (prop.TryGetGuid(out var referencedId)) + { + if (resolver.ResolveReference(referencedId.ToString()) != null) + { + continue; + } + + if (documentElements.TryGetProperty(referencedId.ToString(), out var propertyBody)) + { + if (propertyBody.TryGetProperty("discriminator", out var elementBody)) + { + var referencedElement = (Element)prop.Deserialize(elementProperty.PropertyType); + resolver.AddReference(referencedId.ToString(), referencedElement); + } + } + else + { + // The reference cannot be found. It's either not + // a direct reference, as in the case of a cross-model + // reference, or it's just broken. + resolver.AddReference(referencedId.ToString(), null); + } + } + } + } } } \ No newline at end of file diff --git a/Elements/src/Spatial/Grid1d.cs b/Elements/src/Spatial/Grid1d.cs index e8289414c..7b43e5f2e 100644 --- a/Elements/src/Spatial/Grid1d.cs +++ b/Elements/src/Spatial/Grid1d.cs @@ -3,6 +3,7 @@ using System.Collections.Specialized; using System.Linq; using Elements.Geometry; +using Elements.Serialization.JSON; using Newtonsoft.Json; namespace Elements.Spatial @@ -14,6 +15,7 @@ namespace Elements.Spatial /// [!code-csharp[Main](../../Elements/test/Grid1dTests.cs?name=example)] /// [Newtonsoft.Json.JsonConverter(typeof(Elements.Serialization.JSON.JsonInheritanceConverter), "discriminator")] + [System.Text.Json.Serialization.JsonConverter(typeof(ElementConverter))] public class Grid1d { #region Properties diff --git a/Elements/src/Spatial/Grid2d.cs b/Elements/src/Spatial/Grid2d.cs index 13068ea37..649619a75 100644 --- a/Elements/src/Spatial/Grid2d.cs +++ b/Elements/src/Spatial/Grid2d.cs @@ -3,6 +3,7 @@ using System.Linq; using Elements.Geometry; using Elements.Geometry.Interfaces; +using Elements.Serialization.JSON; using Newtonsoft.Json; namespace Elements.Spatial @@ -14,6 +15,7 @@ namespace Elements.Spatial /// [!code-csharp[Main](../../Elements/test/Grid2dTests.cs?name=example)] /// [Newtonsoft.Json.JsonConverter(typeof(Elements.Serialization.JSON.JsonInheritanceConverter), "discriminator")] + [System.Text.Json.Serialization.JsonConverter(typeof(ElementConverter))] public class Grid2d { #region Properties diff --git a/Elements/src/StructuralFraming.cs b/Elements/src/StructuralFraming.cs index 6a1854764..cff46db06 100644 --- a/Elements/src/StructuralFraming.cs +++ b/Elements/src/StructuralFraming.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using Elements.Geometry; using Elements.Geometry.Solids; +using Elements.Serialization.JSON; namespace Elements { @@ -28,6 +29,7 @@ public abstract class StructuralFraming : GeometricElement /// /// The structural framing's profile. /// + [System.Text.Json.Serialization.JsonConverter(typeof(ElementConverter))] public Profile Profile { get; set; } /// diff --git a/Elements/test/Grid2dElement.cs b/Elements/test/Grid2dElement.cs index f86a4194b..956aecbc4 100644 --- a/Elements/test/Grid2dElement.cs +++ b/Elements/test/Grid2dElement.cs @@ -1,9 +1,11 @@ +using Elements.Serialization.JSON; using Elements.Spatial; namespace Elements { /// Just a test [Newtonsoft.Json.JsonConverter(typeof(Elements.Serialization.JSON.JsonInheritanceConverter), "discriminator")] + [System.Text.Json.Serialization.JsonConverter(typeof(ElementConverter))] public partial class Grid2dElement : Element { /// contains a grid diff --git a/Elements/test/ModelTests.cs b/Elements/test/ModelTests.cs index 5aebd4b34..db1f42166 100644 --- a/Elements/test/ModelTests.cs +++ b/Elements/test/ModelTests.cs @@ -11,6 +11,7 @@ using Xunit.Abstractions; using Newtonsoft.Json.Linq; using System.Threading.Tasks; +using Elements.Geometry.Profiles; namespace Elements.Tests { @@ -362,6 +363,21 @@ public void SerializesNew() var newModel = Model.FromJsonNew(json); } + [Fact] + public void SerializesOneBeamNew() + { + var profiles = new WideFlangeProfileFactory(); + var w = profiles.GetProfileByType(WideFlangeProfileType.W44x335); + + var line = new Line(Vector3.Origin, new Vector3(5, 5)); + var beam = new Beam(line, w); + var model = new Model(); + model.AddElement(beam); + var json = model.ToJsonNew(); + _output.WriteLine(json); + var newModel = Model.FromJsonNew(json); + } + private Model QuadPanelModel() { var model = new Model(); diff --git a/Elements/test/StructuralFramingTests.cs b/Elements/test/StructuralFramingTests.cs index 11b6d4c30..6936884ad 100644 --- a/Elements/test/StructuralFramingTests.cs +++ b/Elements/test/StructuralFramingTests.cs @@ -4,6 +4,7 @@ using System.Linq; using Xunit; using System.Diagnostics; +using Xunit.Abstractions; namespace Elements.Tests { @@ -21,8 +22,11 @@ public enum BeamType private WideFlangeProfile _testProfile; - public StructuralFramingTests() + private ITestOutputHelper _output; + + public StructuralFramingTests(ITestOutputHelper output) { + _output = output; _testProfile = _wideFlangeFactory.GetProfileByType(WideFlangeProfileType.W10x100); } @@ -57,6 +61,10 @@ public void BeamExample() this.Model.AddElements(polyT); this.Model.AddElement(arcBeam); this.Model.AddElements(arcT); + + var json = this.Model.ToJsonNew(); + _output.WriteLine(json); + var newModel = Model.FromJsonNew(json); } [Theory] From c97b42a3179d202565525c637b0ef8b46e048dc6 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Mon, 21 Feb 2022 23:18:59 -0800 Subject: [PATCH 017/150] Some better test infrastructure. --- Elements.Wasm/ElementsWrapper.cs | 36 ++++++++++++++++++++++++++++ Elements.Wasm/wwwroot/index.html | 12 ++++++++-- Elements.Wasm/wwwroot/js/Elements.js | 4 ++++ 3 files changed, 50 insertions(+), 2 deletions(-) diff --git a/Elements.Wasm/ElementsWrapper.cs b/Elements.Wasm/ElementsWrapper.cs index 826c4b3a9..f064519a5 100644 --- a/Elements.Wasm/ElementsWrapper.cs +++ b/Elements.Wasm/ElementsWrapper.cs @@ -7,6 +7,7 @@ using Elements.Validators; using Microsoft.JSInterop; using System.Diagnostics; +using System.Text; public static class ElementsAPI { @@ -25,6 +26,41 @@ public static Task ModelToGlbBase64(string json) return Task.FromResult(model.ToBase64String()); } + [JSInvokable] + public static Task Test() + { + var sw = new Stopwatch(); + sw.Start(); + var sb = new StringBuilder(); + + var model = new Model(); + var r = new Random(); + var size = 10; + for (var i = 0; i < 100; i++) + { + var start = new Vector3(r.NextDouble() * size, r.NextDouble() * size, r.NextDouble() * size); + var end = new Vector3(r.NextDouble() * size, r.NextDouble() * size, r.NextDouble() * size); + var line = new Line(start, end); + var beam = new Beam(line, Polygon.L(0.1, 0.1, 0.05)); + model.AddElement(beam); + } + sb.AppendLine($"{sw.ElapsedMilliseconds}ms for creating test beams."); + sw.Restart(); + + var json = model.ToJsonNew(); + sb.AppendLine($"{sw.ElapsedMilliseconds}ms for serializing model."); + sw.Restart(); + + var newModel = Model.FromJsonNew(json); + sb.AppendLine($"{sw.ElapsedMilliseconds}ms for deserializing model."); + sw.Restart(); + + var result = Task.FromResult(newModel.ToGlTF()); + sb.AppendLine($"{sw.ElapsedMilliseconds}ms for creating the glb."); + return Task.FromResult(sb.ToString()); + + } + [JSInvokable] public static Task ModelToGlbBytes(string json) { diff --git a/Elements.Wasm/wwwroot/index.html b/Elements.Wasm/wwwroot/index.html index c09b3a3ad..45f8b900c 100644 --- a/Elements.Wasm/wwwroot/index.html +++ b/Elements.Wasm/wwwroot/index.html @@ -11,8 +11,16 @@ - + + +
\ No newline at end of file diff --git a/Elements.Wasm/wwwroot/js/Elements.js b/Elements.Wasm/wwwroot/js/Elements.js index eadd36109..988568f8c 100644 --- a/Elements.Wasm/wwwroot/js/Elements.js +++ b/Elements.Wasm/wwwroot/js/Elements.js @@ -10,6 +10,10 @@ class Elements { async modelToGlbBytes(json) { return DotNet.invokeMethodAsync('Elements.Wasm', 'ModelToGlbBytes', json) } + + async test() { + return DotNet.invokeMethodAsync('Elements.Wasm', 'Test') + } } window.elements = new Elements(); \ No newline at end of file From 4d1db85838c23915542118ba6660b73d8a5b0121 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Tue, 22 Feb 2022 00:56:43 -0800 Subject: [PATCH 018/150] More debugging view. --- Elements.Wasm/ElementsWrapper.cs | 20 +- Elements.Wasm/wwwroot/index.html | 90 +- Elements.Wasm/wwwroot/js/GLTFLoader.js | 3186 + Elements.Wasm/wwwroot/js/three.js | 49160 ++++++++++++++++ Elements/src/Geometry/Solids/Sweep.cs | 1 + .../Serialization/JSON/ElementConverter.cs | 6 +- 6 files changed, 52450 insertions(+), 13 deletions(-) create mode 100644 Elements.Wasm/wwwroot/js/GLTFLoader.js create mode 100644 Elements.Wasm/wwwroot/js/three.js diff --git a/Elements.Wasm/ElementsWrapper.cs b/Elements.Wasm/ElementsWrapper.cs index f064519a5..ca38190da 100644 --- a/Elements.Wasm/ElementsWrapper.cs +++ b/Elements.Wasm/ElementsWrapper.cs @@ -27,8 +27,10 @@ public static Task ModelToGlbBase64(string json) } [JSInvokable] - public static Task Test() + public static Task Test() { + Validator.DisableValidationOnConstruction = true; + var sw = new Stopwatch(); sw.Start(); var sb = new StringBuilder(); @@ -36,12 +38,13 @@ public static Task Test() var model = new Model(); var r = new Random(); var size = 10; + var profile = Polygon.L(0.1, 0.1, 0.05); for (var i = 0; i < 100; i++) { var start = new Vector3(r.NextDouble() * size, r.NextDouble() * size, r.NextDouble() * size); var end = new Vector3(r.NextDouble() * size, r.NextDouble() * size, r.NextDouble() * size); var line = new Line(start, end); - var beam = new Beam(line, Polygon.L(0.1, 0.1, 0.05)); + var beam = new Beam(line, profile); model.AddElement(beam); } sb.AppendLine($"{sw.ElapsedMilliseconds}ms for creating test beams."); @@ -55,10 +58,19 @@ public static Task Test() sb.AppendLine($"{sw.ElapsedMilliseconds}ms for deserializing model."); sw.Restart(); - var result = Task.FromResult(newModel.ToGlTF()); + var result = newModel.ToGlTF(); sb.AppendLine($"{sw.ElapsedMilliseconds}ms for creating the glb."); - return Task.FromResult(sb.ToString()); + return Task.FromResult(new TestResult() + { + Glb = result, + Results = sb.ToString() + }); + } + public class TestResult + { + public byte[] Glb { get; set; } + public string Results { get; set; } } [JSInvokable] diff --git a/Elements.Wasm/wwwroot/index.html b/Elements.Wasm/wwwroot/index.html index 45f8b900c..5c964f8c1 100644 --- a/Elements.Wasm/wwwroot/index.html +++ b/Elements.Wasm/wwwroot/index.html @@ -6,21 +6,99 @@ Elements.Wasm + + - - -
+ +
\ No newline at end of file diff --git a/Elements.Wasm/wwwroot/js/GLTFLoader.js b/Elements.Wasm/wwwroot/js/GLTFLoader.js new file mode 100644 index 000000000..b39fa42c6 --- /dev/null +++ b/Elements.Wasm/wwwroot/js/GLTFLoader.js @@ -0,0 +1,3186 @@ +/** + * @author Rich Tibbett / https://github.com/richtr + * @author mrdoob / http://mrdoob.com/ + * @author Tony Parisi / http://www.tonyparisi.com/ + * @author Takahiro / https://github.com/takahirox + * @author Don McCurdy / https://www.donmccurdy.com + */ + +THREE.GLTFLoader = ( function () { + + function GLTFLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager; + this.dracoLoader = null; + + } + + GLTFLoader.prototype = { + + constructor: GLTFLoader, + + crossOrigin: 'anonymous', + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var resourcePath; + + if ( this.resourcePath !== undefined ) { + + resourcePath = this.resourcePath; + + } else if ( this.path !== undefined ) { + + resourcePath = this.path; + + } else { + + resourcePath = THREE.LoaderUtils.extractUrlBase( url ); + + } + + // Tells the LoadingManager to track an extra item, which resolves after + // the model is fully loaded. This means the count of items loaded will + // be incorrect, but ensures manager.onLoad() does not fire early. + scope.manager.itemStart( url ); + + var _onError = function ( e ) { + + if ( onError ) { + + onError( e ); + + } else { + + console.error( e ); + + } + + scope.manager.itemError( url ); + scope.manager.itemEnd( url ); + + }; + + var loader = new THREE.FileLoader( scope.manager ); + + loader.setPath( this.path ); + loader.setResponseType( 'arraybuffer' ); + + loader.load( url, function ( data ) { + + try { + + scope.parse( data, resourcePath, function ( gltf ) { + + onLoad( gltf ); + + scope.manager.itemEnd( url ); + + }, _onError ); + + } catch ( e ) { + + _onError( e ); + + } + + }, onProgress, _onError ); + + }, + + setCrossOrigin: function ( value ) { + + this.crossOrigin = value; + return this; + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + }, + + setResourcePath: function ( value ) { + + this.resourcePath = value; + return this; + + }, + + setDRACOLoader: function ( dracoLoader ) { + + this.dracoLoader = dracoLoader; + return this; + + }, + + parse: function ( data, path, onLoad, onError ) { + + var content; + var extensions = {}; + + if ( typeof data === 'string' ) { + + content = data; + + } else { + + var magic = THREE.LoaderUtils.decodeText( new Uint8Array( data, 0, 4 ) ); + + if ( magic === BINARY_EXTENSION_HEADER_MAGIC ) { + + try { + + extensions[ EXTENSIONS.KHR_BINARY_GLTF ] = new GLTFBinaryExtension( data ); + + } catch ( error ) { + + if ( onError ) onError( error ); + return; + + } + + content = extensions[ EXTENSIONS.KHR_BINARY_GLTF ].content; + + } else { + + content = THREE.LoaderUtils.decodeText( new Uint8Array( data ) ); + + } + + } + + var json = JSON.parse( content ); + + if ( json.asset === undefined || json.asset.version[ 0 ] < 2 ) { + + if ( onError ) onError( new Error( 'THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported. Use LegacyGLTFLoader instead.' ) ); + return; + + } + + if ( json.extensionsUsed ) { + + for ( var i = 0; i < json.extensionsUsed.length; ++ i ) { + + var extensionName = json.extensionsUsed[ i ]; + var extensionsRequired = json.extensionsRequired || []; + + switch ( extensionName ) { + + case EXTENSIONS.KHR_LIGHTS_PUNCTUAL: + extensions[ extensionName ] = new GLTFLightsExtension( json ); + break; + + case EXTENSIONS.KHR_MATERIALS_UNLIT: + extensions[ extensionName ] = new GLTFMaterialsUnlitExtension( json ); + break; + + case EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: + extensions[ extensionName ] = new GLTFMaterialsPbrSpecularGlossinessExtension( json ); + break; + + case EXTENSIONS.KHR_DRACO_MESH_COMPRESSION: + extensions[ extensionName ] = new GLTFDracoMeshCompressionExtension( json, this.dracoLoader ); + break; + + case EXTENSIONS.MSFT_TEXTURE_DDS: + extensions[ EXTENSIONS.MSFT_TEXTURE_DDS ] = new GLTFTextureDDSExtension(); + break; + + case EXTENSIONS.KHR_TEXTURE_TRANSFORM: + extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] = new GLTFTextureTransformExtension( json ); + break; + + default: + + if ( extensionsRequired.indexOf( extensionName ) >= 0 ) { + + console.warn( 'THREE.GLTFLoader: Unknown extension "' + extensionName + '".' ); + + } + + } + + } + + } + + var parser = new GLTFParser( json, extensions, { + + path: path || this.resourcePath || '', + crossOrigin: this.crossOrigin, + manager: this.manager + + } ); + + parser.parse( onLoad, onError ); + + } + + }; + + /* GLTFREGISTRY */ + + function GLTFRegistry() { + + var objects = {}; + + return { + + get: function ( key ) { + + return objects[ key ]; + + }, + + add: function ( key, object ) { + + objects[ key ] = object; + + }, + + remove: function ( key ) { + + delete objects[ key ]; + + }, + + removeAll: function () { + + objects = {}; + + } + + }; + + } + + /*********************************/ + /********** EXTENSIONS ***********/ + /*********************************/ + + var EXTENSIONS = { + KHR_BINARY_GLTF: 'KHR_binary_glTF', + KHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression', + KHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual', + KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: 'KHR_materials_pbrSpecularGlossiness', + KHR_MATERIALS_UNLIT: 'KHR_materials_unlit', + KHR_TEXTURE_TRANSFORM: 'KHR_texture_transform', + MSFT_TEXTURE_DDS: 'MSFT_texture_dds' + }; + + /** + * DDS Texture Extension + * + * Specification: + * https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/MSFT_texture_dds + * + */ + function GLTFTextureDDSExtension() { + + if ( ! THREE.DDSLoader ) { + + throw new Error( 'THREE.GLTFLoader: Attempting to load .dds texture without importing THREE.DDSLoader' ); + + } + + this.name = EXTENSIONS.MSFT_TEXTURE_DDS; + this.ddsLoader = new THREE.DDSLoader(); + + } + + /** + * Lights Extension + * + * Specification: PENDING + */ + function GLTFLightsExtension( json ) { + + this.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL; + + var extension = ( json.extensions && json.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ] ) || {}; + this.lightDefs = extension.lights || []; + + } + + GLTFLightsExtension.prototype.loadLight = function ( lightIndex ) { + + var lightDef = this.lightDefs[ lightIndex ]; + var lightNode; + + var color = new THREE.Color( 0xffffff ); + if ( lightDef.color !== undefined ) color.fromArray( lightDef.color ); + + var range = lightDef.range !== undefined ? lightDef.range : 0; + + switch ( lightDef.type ) { + + case 'directional': + lightNode = new THREE.DirectionalLight( color ); + lightNode.target.position.set( 0, 0, - 1 ); + lightNode.add( lightNode.target ); + break; + + case 'point': + lightNode = new THREE.PointLight( color ); + lightNode.distance = range; + break; + + case 'spot': + lightNode = new THREE.SpotLight( color ); + lightNode.distance = range; + // Handle spotlight properties. + lightDef.spot = lightDef.spot || {}; + lightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== undefined ? lightDef.spot.innerConeAngle : 0; + lightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== undefined ? lightDef.spot.outerConeAngle : Math.PI / 4.0; + lightNode.angle = lightDef.spot.outerConeAngle; + lightNode.penumbra = 1.0 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle; + lightNode.target.position.set( 0, 0, - 1 ); + lightNode.add( lightNode.target ); + break; + + default: + throw new Error( 'THREE.GLTFLoader: Unexpected light type, "' + lightDef.type + '".' ); + + } + + // Some lights (e.g. spot) default to a position other than the origin. Reset the position + // here, because node-level parsing will only override position if explicitly specified. + lightNode.position.set( 0, 0, 0 ); + + lightNode.decay = 2; + + if ( lightDef.intensity !== undefined ) lightNode.intensity = lightDef.intensity; + + lightNode.name = lightDef.name || ( 'light_' + lightIndex ); + + return Promise.resolve( lightNode ); + + }; + + /** + * Unlit Materials Extension (pending) + * + * PR: https://github.com/KhronosGroup/glTF/pull/1163 + */ + function GLTFMaterialsUnlitExtension() { + + this.name = EXTENSIONS.KHR_MATERIALS_UNLIT; + + } + + GLTFMaterialsUnlitExtension.prototype.getMaterialType = function () { + + return THREE.MeshBasicMaterial; + + }; + + GLTFMaterialsUnlitExtension.prototype.extendParams = function ( materialParams, materialDef, parser ) { + + var pending = []; + + materialParams.color = new THREE.Color( 1.0, 1.0, 1.0 ); + materialParams.opacity = 1.0; + + var metallicRoughness = materialDef.pbrMetallicRoughness; + + if ( metallicRoughness ) { + + if ( Array.isArray( metallicRoughness.baseColorFactor ) ) { + + var array = metallicRoughness.baseColorFactor; + + materialParams.color.fromArray( array ); + materialParams.opacity = array[ 3 ]; + + } + + if ( metallicRoughness.baseColorTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture ) ); + + } + + } + + return Promise.all( pending ); + + }; + + /* BINARY EXTENSION */ + + var BINARY_EXTENSION_BUFFER_NAME = 'binary_glTF'; + var BINARY_EXTENSION_HEADER_MAGIC = 'glTF'; + var BINARY_EXTENSION_HEADER_LENGTH = 12; + var BINARY_EXTENSION_CHUNK_TYPES = { JSON: 0x4E4F534A, BIN: 0x004E4942 }; + + function GLTFBinaryExtension( data ) { + + this.name = EXTENSIONS.KHR_BINARY_GLTF; + this.content = null; + this.body = null; + + var headerView = new DataView( data, 0, BINARY_EXTENSION_HEADER_LENGTH ); + + this.header = { + magic: THREE.LoaderUtils.decodeText( new Uint8Array( data.slice( 0, 4 ) ) ), + version: headerView.getUint32( 4, true ), + length: headerView.getUint32( 8, true ) + }; + + if ( this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC ) { + + throw new Error( 'THREE.GLTFLoader: Unsupported glTF-Binary header.' ); + + } else if ( this.header.version < 2.0 ) { + + throw new Error( 'THREE.GLTFLoader: Legacy binary file detected. Use LegacyGLTFLoader instead.' ); + + } + + var chunkView = new DataView( data, BINARY_EXTENSION_HEADER_LENGTH ); + var chunkIndex = 0; + + while ( chunkIndex < chunkView.byteLength ) { + + var chunkLength = chunkView.getUint32( chunkIndex, true ); + chunkIndex += 4; + + var chunkType = chunkView.getUint32( chunkIndex, true ); + chunkIndex += 4; + + if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON ) { + + var contentArray = new Uint8Array( data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength ); + this.content = THREE.LoaderUtils.decodeText( contentArray ); + + } else if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN ) { + + var byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex; + this.body = data.slice( byteOffset, byteOffset + chunkLength ); + + } + + // Clients must ignore chunks with unknown types. + + chunkIndex += chunkLength; + + } + + if ( this.content === null ) { + + throw new Error( 'THREE.GLTFLoader: JSON content not found.' ); + + } + + } + + /** + * DRACO Mesh Compression Extension + * + * Specification: https://github.com/KhronosGroup/glTF/pull/874 + */ + function GLTFDracoMeshCompressionExtension( json, dracoLoader ) { + + if ( ! dracoLoader ) { + + throw new Error( 'THREE.GLTFLoader: No DRACOLoader instance provided.' ); + + } + + this.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION; + this.json = json; + this.dracoLoader = dracoLoader; + + } + + GLTFDracoMeshCompressionExtension.prototype.decodePrimitive = function ( primitive, parser ) { + + var json = this.json; + var dracoLoader = this.dracoLoader; + var bufferViewIndex = primitive.extensions[ this.name ].bufferView; + var gltfAttributeMap = primitive.extensions[ this.name ].attributes; + var threeAttributeMap = {}; + var attributeNormalizedMap = {}; + var attributeTypeMap = {}; + + for ( var attributeName in gltfAttributeMap ) { + + var threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase(); + + threeAttributeMap[ threeAttributeName ] = gltfAttributeMap[ attributeName ]; + + } + + for ( attributeName in primitive.attributes ) { + + var threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase(); + + if ( gltfAttributeMap[ attributeName ] !== undefined ) { + + var accessorDef = json.accessors[ primitive.attributes[ attributeName ] ]; + var componentType = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ]; + + attributeTypeMap[ threeAttributeName ] = componentType; + attributeNormalizedMap[ threeAttributeName ] = accessorDef.normalized === true; + + } + + } + + return parser.getDependency( 'bufferView', bufferViewIndex ).then( function ( bufferView ) { + + return new Promise( function ( resolve ) { + + dracoLoader.decodeDracoFile( bufferView, function ( geometry ) { + + for ( var attributeName in geometry.attributes ) { + + var attribute = geometry.attributes[ attributeName ]; + var normalized = attributeNormalizedMap[ attributeName ]; + + if ( normalized !== undefined ) attribute.normalized = normalized; + + } + + resolve( geometry ); + + }, threeAttributeMap, attributeTypeMap ); + + } ); + + } ); + + }; + + /** + * Texture Transform Extension + * + * Specification: + */ + function GLTFTextureTransformExtension() { + + this.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM; + + } + + GLTFTextureTransformExtension.prototype.extendTexture = function ( texture, transform ) { + + texture = texture.clone(); + + if ( transform.offset !== undefined ) { + + texture.offset.fromArray( transform.offset ); + + } + + if ( transform.rotation !== undefined ) { + + texture.rotation = transform.rotation; + + } + + if ( transform.scale !== undefined ) { + + texture.repeat.fromArray( transform.scale ); + + } + + if ( transform.texCoord !== undefined ) { + + console.warn( 'THREE.GLTFLoader: Custom UV sets in "' + this.name + '" extension not yet supported.' ); + + } + + texture.needsUpdate = true; + + return texture; + + }; + + /** + * Specular-Glossiness Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_pbrSpecularGlossiness + */ + function GLTFMaterialsPbrSpecularGlossinessExtension() { + + return { + + name: EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS, + + specularGlossinessParams: [ + 'color', + 'map', + 'lightMap', + 'lightMapIntensity', + 'aoMap', + 'aoMapIntensity', + 'emissive', + 'emissiveIntensity', + 'emissiveMap', + 'bumpMap', + 'bumpScale', + 'normalMap', + 'displacementMap', + 'displacementScale', + 'displacementBias', + 'specularMap', + 'specular', + 'glossinessMap', + 'glossiness', + 'alphaMap', + 'envMap', + 'envMapIntensity', + 'refractionRatio', + ], + + getMaterialType: function () { + + return THREE.ShaderMaterial; + + }, + + extendParams: function ( materialParams, materialDef, parser ) { + + var pbrSpecularGlossiness = materialDef.extensions[ this.name ]; + + var shader = THREE.ShaderLib[ 'standard' ]; + + var uniforms = THREE.UniformsUtils.clone( shader.uniforms ); + + var specularMapParsFragmentChunk = [ + '#ifdef USE_SPECULARMAP', + ' uniform sampler2D specularMap;', + '#endif' + ].join( '\n' ); + + var glossinessMapParsFragmentChunk = [ + '#ifdef USE_GLOSSINESSMAP', + ' uniform sampler2D glossinessMap;', + '#endif' + ].join( '\n' ); + + var specularMapFragmentChunk = [ + 'vec3 specularFactor = specular;', + '#ifdef USE_SPECULARMAP', + ' vec4 texelSpecular = texture2D( specularMap, vUv );', + ' texelSpecular = sRGBToLinear( texelSpecular );', + ' // reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture', + ' specularFactor *= texelSpecular.rgb;', + '#endif' + ].join( '\n' ); + + var glossinessMapFragmentChunk = [ + 'float glossinessFactor = glossiness;', + '#ifdef USE_GLOSSINESSMAP', + ' vec4 texelGlossiness = texture2D( glossinessMap, vUv );', + ' // reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture', + ' glossinessFactor *= texelGlossiness.a;', + '#endif' + ].join( '\n' ); + + var lightPhysicalFragmentChunk = [ + 'PhysicalMaterial material;', + 'material.diffuseColor = diffuseColor.rgb;', + 'material.specularRoughness = clamp( 1.0 - glossinessFactor, 0.04, 1.0 );', + 'material.specularColor = specularFactor.rgb;', + ].join( '\n' ); + + var fragmentShader = shader.fragmentShader + .replace( 'uniform float roughness;', 'uniform vec3 specular;' ) + .replace( 'uniform float metalness;', 'uniform float glossiness;' ) + .replace( '#include ', specularMapParsFragmentChunk ) + .replace( '#include ', glossinessMapParsFragmentChunk ) + .replace( '#include ', specularMapFragmentChunk ) + .replace( '#include ', glossinessMapFragmentChunk ) + .replace( '#include ', lightPhysicalFragmentChunk ); + + delete uniforms.roughness; + delete uniforms.metalness; + delete uniforms.roughnessMap; + delete uniforms.metalnessMap; + + uniforms.specular = { value: new THREE.Color().setHex( 0x111111 ) }; + uniforms.glossiness = { value: 0.5 }; + uniforms.specularMap = { value: null }; + uniforms.glossinessMap = { value: null }; + + materialParams.vertexShader = shader.vertexShader; + materialParams.fragmentShader = fragmentShader; + materialParams.uniforms = uniforms; + materialParams.defines = { 'STANDARD': '' }; + + materialParams.color = new THREE.Color( 1.0, 1.0, 1.0 ); + materialParams.opacity = 1.0; + + var pending = []; + + if ( Array.isArray( pbrSpecularGlossiness.diffuseFactor ) ) { + + var array = pbrSpecularGlossiness.diffuseFactor; + + materialParams.color.fromArray( array ); + materialParams.opacity = array[ 3 ]; + + } + + if ( pbrSpecularGlossiness.diffuseTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'map', pbrSpecularGlossiness.diffuseTexture ) ); + + } + + materialParams.emissive = new THREE.Color( 0.0, 0.0, 0.0 ); + materialParams.glossiness = pbrSpecularGlossiness.glossinessFactor !== undefined ? pbrSpecularGlossiness.glossinessFactor : 1.0; + materialParams.specular = new THREE.Color( 1.0, 1.0, 1.0 ); + + if ( Array.isArray( pbrSpecularGlossiness.specularFactor ) ) { + + materialParams.specular.fromArray( pbrSpecularGlossiness.specularFactor ); + + } + + if ( pbrSpecularGlossiness.specularGlossinessTexture !== undefined ) { + + var specGlossMapDef = pbrSpecularGlossiness.specularGlossinessTexture; + pending.push( parser.assignTexture( materialParams, 'glossinessMap', specGlossMapDef ) ); + pending.push( parser.assignTexture( materialParams, 'specularMap', specGlossMapDef ) ); + + } + + return Promise.all( pending ); + + }, + + createMaterial: function ( params ) { + + // setup material properties based on MeshStandardMaterial for Specular-Glossiness + + var material = new THREE.ShaderMaterial( { + defines: params.defines, + vertexShader: params.vertexShader, + fragmentShader: params.fragmentShader, + uniforms: params.uniforms, + fog: true, + lights: true, + opacity: params.opacity, + transparent: params.transparent + } ); + + material.isGLTFSpecularGlossinessMaterial = true; + + material.color = params.color; + + material.map = params.map === undefined ? null : params.map; + + material.lightMap = null; + material.lightMapIntensity = 1.0; + + material.aoMap = params.aoMap === undefined ? null : params.aoMap; + material.aoMapIntensity = 1.0; + + material.emissive = params.emissive; + material.emissiveIntensity = 1.0; + material.emissiveMap = params.emissiveMap === undefined ? null : params.emissiveMap; + + material.bumpMap = params.bumpMap === undefined ? null : params.bumpMap; + material.bumpScale = 1; + + material.normalMap = params.normalMap === undefined ? null : params.normalMap; + + if ( params.normalScale ) material.normalScale = params.normalScale; + + material.displacementMap = null; + material.displacementScale = 1; + material.displacementBias = 0; + + material.specularMap = params.specularMap === undefined ? null : params.specularMap; + material.specular = params.specular; + + material.glossinessMap = params.glossinessMap === undefined ? null : params.glossinessMap; + material.glossiness = params.glossiness; + + material.alphaMap = null; + + material.envMap = params.envMap === undefined ? null : params.envMap; + material.envMapIntensity = 1.0; + + material.refractionRatio = 0.98; + + material.extensions.derivatives = true; + + return material; + + }, + + /** + * Clones a GLTFSpecularGlossinessMaterial instance. The ShaderMaterial.copy() method can + * copy only properties it knows about or inherits, and misses many properties that would + * normally be defined by MeshStandardMaterial. + * + * This method allows GLTFSpecularGlossinessMaterials to be cloned in the process of + * loading a glTF model, but cloning later (e.g. by the user) would require these changes + * AND also updating `.onBeforeRender` on the parent mesh. + * + * @param {THREE.ShaderMaterial} source + * @return {THREE.ShaderMaterial} + */ + cloneMaterial: function ( source ) { + + var target = source.clone(); + + target.isGLTFSpecularGlossinessMaterial = true; + + var params = this.specularGlossinessParams; + + for ( var i = 0, il = params.length; i < il; i ++ ) { + + var value = source[ params[ i ] ]; + target[ params[ i ] ] = ( value && value.isColor ) ? value.clone() : value; + + } + + return target; + + }, + + // Here's based on refreshUniformsCommon() and refreshUniformsStandard() in WebGLRenderer. + refreshUniforms: function ( renderer, scene, camera, geometry, material, group ) { + + if ( material.isGLTFSpecularGlossinessMaterial !== true ) { + + return; + + } + + var uniforms = material.uniforms; + var defines = material.defines; + + uniforms.opacity.value = material.opacity; + + uniforms.diffuse.value.copy( material.color ); + uniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity ); + + uniforms.map.value = material.map; + uniforms.specularMap.value = material.specularMap; + uniforms.alphaMap.value = material.alphaMap; + + uniforms.lightMap.value = material.lightMap; + uniforms.lightMapIntensity.value = material.lightMapIntensity; + + uniforms.aoMap.value = material.aoMap; + uniforms.aoMapIntensity.value = material.aoMapIntensity; + + // uv repeat and offset setting priorities + // 1. color map + // 2. specular map + // 3. normal map + // 4. bump map + // 5. alpha map + // 6. emissive map + + var uvScaleMap; + + if ( material.map ) { + + uvScaleMap = material.map; + + } else if ( material.specularMap ) { + + uvScaleMap = material.specularMap; + + } else if ( material.displacementMap ) { + + uvScaleMap = material.displacementMap; + + } else if ( material.normalMap ) { + + uvScaleMap = material.normalMap; + + } else if ( material.bumpMap ) { + + uvScaleMap = material.bumpMap; + + } else if ( material.glossinessMap ) { + + uvScaleMap = material.glossinessMap; + + } else if ( material.alphaMap ) { + + uvScaleMap = material.alphaMap; + + } else if ( material.emissiveMap ) { + + uvScaleMap = material.emissiveMap; + + } + + if ( uvScaleMap !== undefined ) { + + // backwards compatibility + if ( uvScaleMap.isWebGLRenderTarget ) { + + uvScaleMap = uvScaleMap.texture; + + } + + if ( uvScaleMap.matrixAutoUpdate === true ) { + + uvScaleMap.updateMatrix(); + + } + + uniforms.uvTransform.value.copy( uvScaleMap.matrix ); + + } + + if ( material.envMap ) { + + uniforms.envMap.value = material.envMap; + uniforms.envMapIntensity.value = material.envMapIntensity; + + // don't flip CubeTexture envMaps, flip everything else: + // WebGLRenderTargetCube will be flipped for backwards compatibility + // WebGLRenderTargetCube.texture will be flipped because it's a Texture and NOT a CubeTexture + // this check must be handled differently, or removed entirely, if WebGLRenderTargetCube uses a CubeTexture in the future + uniforms.flipEnvMap.value = material.envMap.isCubeTexture ? - 1 : 1; + + uniforms.reflectivity.value = material.reflectivity; + uniforms.refractionRatio.value = material.refractionRatio; + + uniforms.maxMipLevel.value = renderer.properties.get( material.envMap ).__maxMipLevel; + + } + + uniforms.specular.value.copy( material.specular ); + uniforms.glossiness.value = material.glossiness; + + uniforms.glossinessMap.value = material.glossinessMap; + + uniforms.emissiveMap.value = material.emissiveMap; + uniforms.bumpMap.value = material.bumpMap; + uniforms.normalMap.value = material.normalMap; + + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + + if ( uniforms.glossinessMap.value !== null && defines.USE_GLOSSINESSMAP === undefined ) { + + defines.USE_GLOSSINESSMAP = ''; + // set USE_ROUGHNESSMAP to enable vUv + defines.USE_ROUGHNESSMAP = ''; + + } + + if ( uniforms.glossinessMap.value === null && defines.USE_GLOSSINESSMAP !== undefined ) { + + delete defines.USE_GLOSSINESSMAP; + delete defines.USE_ROUGHNESSMAP; + + } + + } + + }; + + } + + /*********************************/ + /********** INTERPOLATION ********/ + /*********************************/ + + // Spline Interpolation + // Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation + function GLTFCubicSplineInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + THREE.Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); + + } + + GLTFCubicSplineInterpolant.prototype = Object.create( THREE.Interpolant.prototype ); + GLTFCubicSplineInterpolant.prototype.constructor = GLTFCubicSplineInterpolant; + + GLTFCubicSplineInterpolant.prototype.copySampleValue_ = function ( index ) { + + // Copies a sample value to the result buffer. See description of glTF + // CUBICSPLINE values layout in interpolate_() function below. + + var result = this.resultBuffer, + values = this.sampleValues, + valueSize = this.valueSize, + offset = index * valueSize * 3 + valueSize; + + for ( var i = 0; i !== valueSize; i ++ ) { + + result[ i ] = values[ offset + i ]; + + } + + return result; + + }; + + GLTFCubicSplineInterpolant.prototype.beforeStart_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_; + + GLTFCubicSplineInterpolant.prototype.afterEnd_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_; + + GLTFCubicSplineInterpolant.prototype.interpolate_ = function ( i1, t0, t, t1 ) { + + var result = this.resultBuffer; + var values = this.sampleValues; + var stride = this.valueSize; + + var stride2 = stride * 2; + var stride3 = stride * 3; + + var td = t1 - t0; + + var p = ( t - t0 ) / td; + var pp = p * p; + var ppp = pp * p; + + var offset1 = i1 * stride3; + var offset0 = offset1 - stride3; + + var s2 = - 2 * ppp + 3 * pp; + var s3 = ppp - pp; + var s0 = 1 - s2; + var s1 = s3 - pp + p; + + // Layout of keyframe output values for CUBICSPLINE animations: + // [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ] + for ( var i = 0; i !== stride; i ++ ) { + + var p0 = values[ offset0 + i + stride ]; // splineVertex_k + var m0 = values[ offset0 + i + stride2 ] * td; // outTangent_k * (t_k+1 - t_k) + var p1 = values[ offset1 + i + stride ]; // splineVertex_k+1 + var m1 = values[ offset1 + i ] * td; // inTangent_k+1 * (t_k+1 - t_k) + + result[ i ] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1; + + } + + return result; + + }; + + /*********************************/ + /********** INTERNALS ************/ + /*********************************/ + + /* CONSTANTS */ + + var WEBGL_CONSTANTS = { + FLOAT: 5126, + //FLOAT_MAT2: 35674, + FLOAT_MAT3: 35675, + FLOAT_MAT4: 35676, + FLOAT_VEC2: 35664, + FLOAT_VEC3: 35665, + FLOAT_VEC4: 35666, + LINEAR: 9729, + REPEAT: 10497, + SAMPLER_2D: 35678, + POINTS: 0, + LINES: 1, + LINE_LOOP: 2, + LINE_STRIP: 3, + TRIANGLES: 4, + TRIANGLE_STRIP: 5, + TRIANGLE_FAN: 6, + UNSIGNED_BYTE: 5121, + UNSIGNED_SHORT: 5123 + }; + + var WEBGL_TYPE = { + 5126: Number, + //35674: THREE.Matrix2, + 35675: THREE.Matrix3, + 35676: THREE.Matrix4, + 35664: THREE.Vector2, + 35665: THREE.Vector3, + 35666: THREE.Vector4, + 35678: THREE.Texture + }; + + var WEBGL_COMPONENT_TYPES = { + 5120: Int8Array, + 5121: Uint8Array, + 5122: Int16Array, + 5123: Uint16Array, + 5125: Uint32Array, + 5126: Float32Array + }; + + var WEBGL_FILTERS = { + 9728: THREE.NearestFilter, + 9729: THREE.LinearFilter, + 9984: THREE.NearestMipMapNearestFilter, + 9985: THREE.LinearMipMapNearestFilter, + 9986: THREE.NearestMipMapLinearFilter, + 9987: THREE.LinearMipMapLinearFilter + }; + + var WEBGL_WRAPPINGS = { + 33071: THREE.ClampToEdgeWrapping, + 33648: THREE.MirroredRepeatWrapping, + 10497: THREE.RepeatWrapping + }; + + var WEBGL_SIDES = { + 1028: THREE.BackSide, // Culling front + 1029: THREE.FrontSide // Culling back + //1032: THREE.NoSide // Culling front and back, what to do? + }; + + var WEBGL_DEPTH_FUNCS = { + 512: THREE.NeverDepth, + 513: THREE.LessDepth, + 514: THREE.EqualDepth, + 515: THREE.LessEqualDepth, + 516: THREE.GreaterEqualDepth, + 517: THREE.NotEqualDepth, + 518: THREE.GreaterEqualDepth, + 519: THREE.AlwaysDepth + }; + + var WEBGL_BLEND_EQUATIONS = { + 32774: THREE.AddEquation, + 32778: THREE.SubtractEquation, + 32779: THREE.ReverseSubtractEquation + }; + + var WEBGL_BLEND_FUNCS = { + 0: THREE.ZeroFactor, + 1: THREE.OneFactor, + 768: THREE.SrcColorFactor, + 769: THREE.OneMinusSrcColorFactor, + 770: THREE.SrcAlphaFactor, + 771: THREE.OneMinusSrcAlphaFactor, + 772: THREE.DstAlphaFactor, + 773: THREE.OneMinusDstAlphaFactor, + 774: THREE.DstColorFactor, + 775: THREE.OneMinusDstColorFactor, + 776: THREE.SrcAlphaSaturateFactor + // The followings are not supported by Three.js yet + //32769: CONSTANT_COLOR, + //32770: ONE_MINUS_CONSTANT_COLOR, + //32771: CONSTANT_ALPHA, + //32772: ONE_MINUS_CONSTANT_COLOR + }; + + var WEBGL_TYPE_SIZES = { + 'SCALAR': 1, + 'VEC2': 2, + 'VEC3': 3, + 'VEC4': 4, + 'MAT2': 4, + 'MAT3': 9, + 'MAT4': 16 + }; + + var ATTRIBUTES = { + POSITION: 'position', + NORMAL: 'normal', + TANGENT: 'tangent', + TEXCOORD_0: 'uv', + TEXCOORD_1: 'uv2', + COLOR_0: 'color', + WEIGHTS_0: 'skinWeight', + JOINTS_0: 'skinIndex', + }; + + var PATH_PROPERTIES = { + scale: 'scale', + translation: 'position', + rotation: 'quaternion', + weights: 'morphTargetInfluences' + }; + + var INTERPOLATION = { + CUBICSPLINE: undefined, // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each + // keyframe track will be initialized with a default interpolation type, then modified. + LINEAR: THREE.InterpolateLinear, + STEP: THREE.InterpolateDiscrete + }; + + var STATES_ENABLES = { + 2884: 'CULL_FACE', + 2929: 'DEPTH_TEST', + 3042: 'BLEND', + 3089: 'SCISSOR_TEST', + 32823: 'POLYGON_OFFSET_FILL', + 32926: 'SAMPLE_ALPHA_TO_COVERAGE' + }; + + var ALPHA_MODES = { + OPAQUE: 'OPAQUE', + MASK: 'MASK', + BLEND: 'BLEND' + }; + + var MIME_TYPE_FORMATS = { + 'image/png': THREE.RGBAFormat, + 'image/jpeg': THREE.RGBFormat + }; + + /* UTILITY FUNCTIONS */ + + function resolveURL( url, path ) { + + // Invalid URL + if ( typeof url !== 'string' || url === '' ) return ''; + + // Absolute URL http://,https://,// + if ( /^(https?:)?\/\//i.test( url ) ) return url; + + // Data URI + if ( /^data:.*,.*$/i.test( url ) ) return url; + + // Blob URL + if ( /^blob:.*$/i.test( url ) ) return url; + + // Relative URL + return path + url; + + } + + var defaultMaterial; + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material + */ + function createDefaultMaterial() { + + defaultMaterial = defaultMaterial || new THREE.MeshStandardMaterial( { + color: 0xFFFFFF, + emissive: 0x000000, + metalness: 1, + roughness: 1, + transparent: false, + depthTest: true, + side: THREE.FrontSide + } ); + + return defaultMaterial; + + } + + function addUnknownExtensionsToUserData( knownExtensions, object, objectDef ) { + + // Add unknown glTF extensions to an object's userData. + + for ( var name in objectDef.extensions ) { + + if ( knownExtensions[ name ] === undefined ) { + + object.userData.gltfExtensions = object.userData.gltfExtensions || {}; + object.userData.gltfExtensions[ name ] = objectDef.extensions[ name ]; + + } + + } + + } + + /** + * @param {THREE.Object3D|THREE.Material|THREE.BufferGeometry} object + * @param {GLTF.definition} gltfDef + */ + function assignExtrasToUserData( object, gltfDef ) { + + if ( gltfDef.extras !== undefined ) { + + if ( typeof gltfDef.extras === 'object' ) { + + Object.assign( object.userData, gltfDef.extras ); + + } else { + + console.warn( 'THREE.GLTFLoader: Ignoring primitive type .extras, ' + gltfDef.extras ); + + } + + } + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets + * + * @param {THREE.BufferGeometry} geometry + * @param {Array} targets + * @param {GLTFParser} parser + * @return {Promise} + */ + function addMorphTargets( geometry, targets, parser ) { + + var hasMorphPosition = false; + var hasMorphNormal = false; + + for ( var i = 0, il = targets.length; i < il; i ++ ) { + + var target = targets[ i ]; + + if ( target.POSITION !== undefined ) hasMorphPosition = true; + if ( target.NORMAL !== undefined ) hasMorphNormal = true; + + if ( hasMorphPosition && hasMorphNormal ) break; + + } + + if ( ! hasMorphPosition && ! hasMorphNormal ) return Promise.resolve( geometry ); + + var pendingPositionAccessors = []; + var pendingNormalAccessors = []; + + for ( var i = 0, il = targets.length; i < il; i ++ ) { + + var target = targets[ i ]; + + if ( hasMorphPosition ) { + + var pendingAccessor = target.POSITION !== undefined + ? parser.getDependency( 'accessor', target.POSITION ) + : geometry.attributes.position; + + pendingPositionAccessors.push( pendingAccessor ); + + } + + if ( hasMorphNormal ) { + + var pendingAccessor = target.NORMAL !== undefined + ? parser.getDependency( 'accessor', target.NORMAL ) + : geometry.attributes.normal; + + pendingNormalAccessors.push( pendingAccessor ); + + } + + } + + return Promise.all( [ + Promise.all( pendingPositionAccessors ), + Promise.all( pendingNormalAccessors ) + ] ).then( function ( accessors ) { + + var morphPositions = accessors[ 0 ]; + var morphNormals = accessors[ 1 ]; + + // Clone morph target accessors before modifying them. + + for ( var i = 0, il = morphPositions.length; i < il; i ++ ) { + + if ( geometry.attributes.position === morphPositions[ i ] ) continue; + + morphPositions[ i ] = cloneBufferAttribute( morphPositions[ i ] ); + + } + + for ( var i = 0, il = morphNormals.length; i < il; i ++ ) { + + if ( geometry.attributes.normal === morphNormals[ i ] ) continue; + + morphNormals[ i ] = cloneBufferAttribute( morphNormals[ i ] ); + + } + + for ( var i = 0, il = targets.length; i < il; i ++ ) { + + var target = targets[ i ]; + var attributeName = 'morphTarget' + i; + + if ( hasMorphPosition ) { + + // Three.js morph position is absolute value. The formula is + // basePosition + // + weight0 * ( morphPosition0 - basePosition ) + // + weight1 * ( morphPosition1 - basePosition ) + // ... + // while the glTF one is relative + // basePosition + // + weight0 * glTFmorphPosition0 + // + weight1 * glTFmorphPosition1 + // ... + // then we need to convert from relative to absolute here. + + if ( target.POSITION !== undefined ) { + + var positionAttribute = morphPositions[ i ]; + positionAttribute.name = attributeName; + + var position = geometry.attributes.position; + + for ( var j = 0, jl = positionAttribute.count; j < jl; j ++ ) { + + positionAttribute.setXYZ( + j, + positionAttribute.getX( j ) + position.getX( j ), + positionAttribute.getY( j ) + position.getY( j ), + positionAttribute.getZ( j ) + position.getZ( j ) + ); + + } + + } + + } + + if ( hasMorphNormal ) { + + // see target.POSITION's comment + + if ( target.NORMAL !== undefined ) { + + var normalAttribute = morphNormals[ i ]; + normalAttribute.name = attributeName; + + var normal = geometry.attributes.normal; + + for ( var j = 0, jl = normalAttribute.count; j < jl; j ++ ) { + + normalAttribute.setXYZ( + j, + normalAttribute.getX( j ) + normal.getX( j ), + normalAttribute.getY( j ) + normal.getY( j ), + normalAttribute.getZ( j ) + normal.getZ( j ) + ); + + } + + } + + } + + } + + if ( hasMorphPosition ) geometry.morphAttributes.position = morphPositions; + if ( hasMorphNormal ) geometry.morphAttributes.normal = morphNormals; + + return geometry; + + } ); + + } + + /** + * @param {THREE.Mesh} mesh + * @param {GLTF.Mesh} meshDef + */ + function updateMorphTargets( mesh, meshDef ) { + + mesh.updateMorphTargets(); + + if ( meshDef.weights !== undefined ) { + + for ( var i = 0, il = meshDef.weights.length; i < il; i ++ ) { + + mesh.morphTargetInfluences[ i ] = meshDef.weights[ i ]; + + } + + } + + // .extras has user-defined data, so check that .extras.targetNames is an array. + if ( meshDef.extras && Array.isArray( meshDef.extras.targetNames ) ) { + + var targetNames = meshDef.extras.targetNames; + + if ( mesh.morphTargetInfluences.length === targetNames.length ) { + + mesh.morphTargetDictionary = {}; + + for ( var i = 0, il = targetNames.length; i < il; i ++ ) { + + mesh.morphTargetDictionary[ targetNames[ i ] ] = i; + + } + + } else { + + console.warn( 'THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.' ); + + } + + } + + } + function isObjectEqual( a, b ) { + + if ( Object.keys( a ).length !== Object.keys( b ).length ) return false; + + for ( var key in a ) { + + if ( a[ key ] !== b[ key ] ) return false; + + } + + return true; + + } + + function createPrimitiveKey( primitiveDef ) { + + var dracoExtension = primitiveDef.extensions && primitiveDef.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ]; + var geometryKey; + + if ( dracoExtension ) { + + geometryKey = 'draco:' + dracoExtension.bufferView + + ':' + dracoExtension.indices + + ':' + createAttributesKey( dracoExtension.attributes ); + + } else { + + geometryKey = primitiveDef.indices + ':' + createAttributesKey( primitiveDef.attributes ) + ':' + primitiveDef.mode; + + } + + return geometryKey; + + } + + function createAttributesKey( attributes ) { + + var attributesKey = ''; + + var keys = Object.keys( attributes ).sort(); + + for ( var i = 0, il = keys.length; i < il; i ++ ) { + + attributesKey += keys[ i ] + ':' + attributes[ keys[ i ] ] + ';'; + + } + + return attributesKey; + + } + + function cloneBufferAttribute( attribute ) { + + if ( attribute.isInterleavedBufferAttribute ) { + + var count = attribute.count; + var itemSize = attribute.itemSize; + var array = attribute.array.slice( 0, count * itemSize ); + + for ( var i = 0, j = 0; i < count; ++ i ) { + + array[ j ++ ] = attribute.getX( i ); + if ( itemSize >= 2 ) array[ j ++ ] = attribute.getY( i ); + if ( itemSize >= 3 ) array[ j ++ ] = attribute.getZ( i ); + if ( itemSize >= 4 ) array[ j ++ ] = attribute.getW( i ); + + } + + return new THREE.BufferAttribute( array, itemSize, attribute.normalized ); + + } + + return attribute.clone(); + + } + + /* GLTF PARSER */ + + function GLTFParser( json, extensions, options ) { + + this.json = json || {}; + this.extensions = extensions || {}; + this.options = options || {}; + + // loader object cache + this.cache = new GLTFRegistry(); + + // BufferGeometry caching + this.primitiveCache = {}; + + this.textureLoader = new THREE.TextureLoader( this.options.manager ); + this.textureLoader.setCrossOrigin( this.options.crossOrigin ); + + this.fileLoader = new THREE.FileLoader( this.options.manager ); + this.fileLoader.setResponseType( 'arraybuffer' ); + + } + + GLTFParser.prototype.parse = function ( onLoad, onError ) { + + var parser = this; + var json = this.json; + var extensions = this.extensions; + + // Clear the loader cache + this.cache.removeAll(); + + // Mark the special nodes/meshes in json for efficient parse + this.markDefs(); + + Promise.all( [ + + this.getDependencies( 'scene' ), + this.getDependencies( 'animation' ), + this.getDependencies( 'camera' ), + + ] ).then( function ( dependencies ) { + + var result = { + scene: dependencies[ 0 ][ json.scene || 0 ], + scenes: dependencies[ 0 ], + animations: dependencies[ 1 ], + cameras: dependencies[ 2 ], + asset: json.asset, + parser: parser, + userData: {} + }; + + addUnknownExtensionsToUserData( extensions, result, json ); + + onLoad( result ); + + } ).catch( onError ); + + }; + + /** + * Marks the special nodes/meshes in json for efficient parse. + */ + GLTFParser.prototype.markDefs = function () { + + var nodeDefs = this.json.nodes || []; + var skinDefs = this.json.skins || []; + var meshDefs = this.json.meshes || []; + + var meshReferences = {}; + var meshUses = {}; + + // Nothing in the node definition indicates whether it is a Bone or an + // Object3D. Use the skins' joint references to mark bones. + for ( var skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex ++ ) { + + var joints = skinDefs[ skinIndex ].joints; + + for ( var i = 0, il = joints.length; i < il; i ++ ) { + + nodeDefs[ joints[ i ] ].isBone = true; + + } + + } + + // Meshes can (and should) be reused by multiple nodes in a glTF asset. To + // avoid having more than one THREE.Mesh with the same name, count + // references and rename instances below. + // + // Example: CesiumMilkTruck sample model reuses "Wheel" meshes. + for ( var nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) { + + var nodeDef = nodeDefs[ nodeIndex ]; + + if ( nodeDef.mesh !== undefined ) { + + if ( meshReferences[ nodeDef.mesh ] === undefined ) { + + meshReferences[ nodeDef.mesh ] = meshUses[ nodeDef.mesh ] = 0; + + } + + meshReferences[ nodeDef.mesh ] ++; + + // Nothing in the mesh definition indicates whether it is + // a SkinnedMesh or Mesh. Use the node's mesh reference + // to mark SkinnedMesh if node has skin. + if ( nodeDef.skin !== undefined ) { + + meshDefs[ nodeDef.mesh ].isSkinnedMesh = true; + + } + + } + + } + + this.json.meshReferences = meshReferences; + this.json.meshUses = meshUses; + + }; + + /** + * Requests the specified dependency asynchronously, with caching. + * @param {string} type + * @param {number} index + * @return {Promise} + */ + GLTFParser.prototype.getDependency = function ( type, index ) { + + var cacheKey = type + ':' + index; + var dependency = this.cache.get( cacheKey ); + + if ( ! dependency ) { + + switch ( type ) { + + case 'scene': + dependency = this.loadScene( index ); + break; + + case 'node': + dependency = this.loadNode( index ); + break; + + case 'mesh': + dependency = this.loadMesh( index ); + break; + + case 'accessor': + dependency = this.loadAccessor( index ); + break; + + case 'bufferView': + dependency = this.loadBufferView( index ); + break; + + case 'buffer': + dependency = this.loadBuffer( index ); + break; + + case 'material': + dependency = this.loadMaterial( index ); + break; + + case 'texture': + dependency = this.loadTexture( index ); + break; + + case 'skin': + dependency = this.loadSkin( index ); + break; + + case 'animation': + dependency = this.loadAnimation( index ); + break; + + case 'camera': + dependency = this.loadCamera( index ); + break; + + case 'light': + dependency = this.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].loadLight( index ); + break; + + default: + throw new Error( 'Unknown type: ' + type ); + + } + + this.cache.add( cacheKey, dependency ); + + } + + return dependency; + + }; + + /** + * Requests all dependencies of the specified type asynchronously, with caching. + * @param {string} type + * @return {Promise>} + */ + GLTFParser.prototype.getDependencies = function ( type ) { + + var dependencies = this.cache.get( type ); + + if ( ! dependencies ) { + + var parser = this; + var defs = this.json[ type + ( type === 'mesh' ? 'es' : 's' ) ] || []; + + dependencies = Promise.all( defs.map( function ( def, index ) { + + return parser.getDependency( type, index ); + + } ) ); + + this.cache.add( type, dependencies ); + + } + + return dependencies; + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views + * @param {number} bufferIndex + * @return {Promise} + */ + GLTFParser.prototype.loadBuffer = function ( bufferIndex ) { + + var bufferDef = this.json.buffers[ bufferIndex ]; + var loader = this.fileLoader; + + if ( bufferDef.type && bufferDef.type !== 'arraybuffer' ) { + + throw new Error( 'THREE.GLTFLoader: ' + bufferDef.type + ' buffer type is not supported.' ); + + } + + // If present, GLB container is required to be the first buffer. + if ( bufferDef.uri === undefined && bufferIndex === 0 ) { + + return Promise.resolve( this.extensions[ EXTENSIONS.KHR_BINARY_GLTF ].body ); + + } + + var options = this.options; + + return new Promise( function ( resolve, reject ) { + + loader.load( resolveURL( bufferDef.uri, options.path ), resolve, undefined, function () { + + reject( new Error( 'THREE.GLTFLoader: Failed to load buffer "' + bufferDef.uri + '".' ) ); + + } ); + + } ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views + * @param {number} bufferViewIndex + * @return {Promise} + */ + GLTFParser.prototype.loadBufferView = function ( bufferViewIndex ) { + + var bufferViewDef = this.json.bufferViews[ bufferViewIndex ]; + + return this.getDependency( 'buffer', bufferViewDef.buffer ).then( function ( buffer ) { + + var byteLength = bufferViewDef.byteLength || 0; + var byteOffset = bufferViewDef.byteOffset || 0; + return buffer.slice( byteOffset, byteOffset + byteLength ); + + } ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors + * @param {number} accessorIndex + * @return {Promise} + */ + GLTFParser.prototype.loadAccessor = function ( accessorIndex ) { + + var parser = this; + var json = this.json; + + var accessorDef = this.json.accessors[ accessorIndex ]; + + if ( accessorDef.bufferView === undefined && accessorDef.sparse === undefined ) { + + // Ignore empty accessors, which may be used to declare runtime + // information about attributes coming from another source (e.g. Draco + // compression extension). + return Promise.resolve( null ); + + } + + var pendingBufferViews = []; + + if ( accessorDef.bufferView !== undefined ) { + + pendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.bufferView ) ); + + } else { + + pendingBufferViews.push( null ); + + } + + if ( accessorDef.sparse !== undefined ) { + + pendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.indices.bufferView ) ); + pendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.values.bufferView ) ); + + } + + return Promise.all( pendingBufferViews ).then( function ( bufferViews ) { + + var bufferView = bufferViews[ 0 ]; + + var itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ]; + var TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ]; + + // For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12. + var elementBytes = TypedArray.BYTES_PER_ELEMENT; + var itemBytes = elementBytes * itemSize; + var byteOffset = accessorDef.byteOffset || 0; + var byteStride = accessorDef.bufferView !== undefined ? json.bufferViews[ accessorDef.bufferView ].byteStride : undefined; + var normalized = accessorDef.normalized === true; + var array, bufferAttribute; + + // The buffer is not interleaved if the stride is the item size in bytes. + if ( byteStride && byteStride !== itemBytes ) { + + var ibCacheKey = 'InterleavedBuffer:' + accessorDef.bufferView + ':' + accessorDef.componentType; + var ib = parser.cache.get( ibCacheKey ); + + if ( ! ib ) { + + // Use the full buffer if it's interleaved. + array = new TypedArray( bufferView ); + + // Integer parameters to IB/IBA are in array elements, not bytes. + ib = new THREE.InterleavedBuffer( array, byteStride / elementBytes ); + + parser.cache.add( ibCacheKey, ib ); + + } + + bufferAttribute = new THREE.InterleavedBufferAttribute( ib, itemSize, byteOffset / elementBytes, normalized ); + + } else { + + if ( bufferView === null ) { + + array = new TypedArray( accessorDef.count * itemSize ); + + } else { + + array = new TypedArray( bufferView, byteOffset, accessorDef.count * itemSize ); + + } + + bufferAttribute = new THREE.BufferAttribute( array, itemSize, normalized ); + + } + + // https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors + if ( accessorDef.sparse !== undefined ) { + + var itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR; + var TypedArrayIndices = WEBGL_COMPONENT_TYPES[ accessorDef.sparse.indices.componentType ]; + + var byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0; + var byteOffsetValues = accessorDef.sparse.values.byteOffset || 0; + + var sparseIndices = new TypedArrayIndices( bufferViews[ 1 ], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices ); + var sparseValues = new TypedArray( bufferViews[ 2 ], byteOffsetValues, accessorDef.sparse.count * itemSize ); + + if ( bufferView !== null ) { + + // Avoid modifying the original ArrayBuffer, if the bufferView wasn't initialized with zeroes. + bufferAttribute.setArray( bufferAttribute.array.slice() ); + + } + + for ( var i = 0, il = sparseIndices.length; i < il; i ++ ) { + + var index = sparseIndices[ i ]; + + bufferAttribute.setX( index, sparseValues[ i * itemSize ] ); + if ( itemSize >= 2 ) bufferAttribute.setY( index, sparseValues[ i * itemSize + 1 ] ); + if ( itemSize >= 3 ) bufferAttribute.setZ( index, sparseValues[ i * itemSize + 2 ] ); + if ( itemSize >= 4 ) bufferAttribute.setW( index, sparseValues[ i * itemSize + 3 ] ); + if ( itemSize >= 5 ) throw new Error( 'THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.' ); + + } + + } + + return bufferAttribute; + + } ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures + * @param {number} textureIndex + * @return {Promise} + */ + GLTFParser.prototype.loadTexture = function ( textureIndex ) { + + var parser = this; + var json = this.json; + var options = this.options; + var textureLoader = this.textureLoader; + + var URL = window.URL || window.webkitURL; + + var textureDef = json.textures[ textureIndex ]; + + var textureExtensions = textureDef.extensions || {}; + + var source; + + if ( textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ] ) { + + source = json.images[ textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ].source ]; + + } else { + + source = json.images[ textureDef.source ]; + + } + + var sourceURI = source.uri; + var isObjectURL = false; + + if ( source.bufferView !== undefined ) { + + // Load binary image data from bufferView, if provided. + + sourceURI = parser.getDependency( 'bufferView', source.bufferView ).then( function ( bufferView ) { + + isObjectURL = true; + var blob = new Blob( [ bufferView ], { type: source.mimeType } ); + sourceURI = URL.createObjectURL( blob ); + return sourceURI; + + } ); + + } + + return Promise.resolve( sourceURI ).then( function ( sourceURI ) { + + // Load Texture resource. + + var loader = THREE.Loader.Handlers.get( sourceURI ); + + if ( ! loader ) { + + loader = textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ] + ? parser.extensions[ EXTENSIONS.MSFT_TEXTURE_DDS ].ddsLoader + : textureLoader; + + } + + return new Promise( function ( resolve, reject ) { + + loader.load( resolveURL( sourceURI, options.path ), resolve, undefined, reject ); + + } ); + + } ).then( function ( texture ) { + + // Clean up resources and configure Texture. + + if ( isObjectURL === true ) { + + URL.revokeObjectURL( sourceURI ); + + } + + texture.flipY = false; + + if ( textureDef.name !== undefined ) texture.name = textureDef.name; + + // Ignore unknown mime types, like DDS files. + if ( source.mimeType in MIME_TYPE_FORMATS ) { + + texture.format = MIME_TYPE_FORMATS[ source.mimeType ]; + + } + + var samplers = json.samplers || {}; + var sampler = samplers[ textureDef.sampler ] || {}; + + texture.magFilter = WEBGL_FILTERS[ sampler.magFilter ] || THREE.LinearFilter; + texture.minFilter = WEBGL_FILTERS[ sampler.minFilter ] || THREE.LinearMipMapLinearFilter; + texture.wrapS = WEBGL_WRAPPINGS[ sampler.wrapS ] || THREE.RepeatWrapping; + texture.wrapT = WEBGL_WRAPPINGS[ sampler.wrapT ] || THREE.RepeatWrapping; + + return texture; + + } ); + + }; + + /** + * Asynchronously assigns a texture to the given material parameters. + * @param {Object} materialParams + * @param {string} mapName + * @param {Object} mapDef + * @return {Promise} + */ + GLTFParser.prototype.assignTexture = function ( materialParams, mapName, mapDef ) { + + var parser = this; + + return this.getDependency( 'texture', mapDef.index ).then( function ( texture ) { + + if ( ! texture.isCompressedTexture ) { + + switch ( mapName ) { + + case 'aoMap': + case 'emissiveMap': + case 'metalnessMap': + case 'normalMap': + case 'roughnessMap': + texture.format = THREE.RGBFormat; + break; + + } + + } + + if ( parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] ) { + + var transform = mapDef.extensions !== undefined ? mapDef.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] : undefined; + + if ( transform ) { + + texture = parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ].extendTexture( texture, transform ); + + } + + } + + materialParams[ mapName ] = texture; + + } ); + + }; + + /** + * Assigns final material to a Mesh, Line, or Points instance. The instance + * already has a material (generated from the glTF material options alone) + * but reuse of the same glTF material may require multiple threejs materials + * to accomodate different primitive types, defines, etc. New materials will + * be created if necessary, and reused from a cache. + * @param {THREE.Object3D} mesh Mesh, Line, or Points instance. + */ + GLTFParser.prototype.assignFinalMaterial = function ( mesh ) { + + var geometry = mesh.geometry; + var material = mesh.material; + var extensions = this.extensions; + + var useVertexTangents = geometry.attributes.tangent !== undefined; + var useVertexColors = geometry.attributes.color !== undefined; + var useFlatShading = geometry.attributes.normal === undefined; + var useSkinning = mesh.isSkinnedMesh === true; + var useMorphTargets = Object.keys( geometry.morphAttributes ).length > 0; + var useMorphNormals = useMorphTargets && geometry.morphAttributes.normal !== undefined; + + if ( mesh.isPoints ) { + + var cacheKey = 'PointsMaterial:' + material.uuid; + + var pointsMaterial = this.cache.get( cacheKey ); + + if ( ! pointsMaterial ) { + + pointsMaterial = new THREE.PointsMaterial(); + THREE.Material.prototype.copy.call( pointsMaterial, material ); + pointsMaterial.color.copy( material.color ); + pointsMaterial.map = material.map; + pointsMaterial.lights = false; // PointsMaterial doesn't support lights yet + + this.cache.add( cacheKey, pointsMaterial ); + + } + + material = pointsMaterial; + + } else if ( mesh.isLine ) { + + var cacheKey = 'LineBasicMaterial:' + material.uuid; + + var lineMaterial = this.cache.get( cacheKey ); + + if ( ! lineMaterial ) { + + lineMaterial = new THREE.LineBasicMaterial(); + THREE.Material.prototype.copy.call( lineMaterial, material ); + lineMaterial.color.copy( material.color ); + lineMaterial.lights = false; // LineBasicMaterial doesn't support lights yet + + this.cache.add( cacheKey, lineMaterial ); + + } + + material = lineMaterial; + + } + + // Clone the material if it will be modified + if ( useVertexTangents || useVertexColors || useFlatShading || useSkinning || useMorphTargets ) { + + var cacheKey = 'ClonedMaterial:' + material.uuid + ':'; + + if ( material.isGLTFSpecularGlossinessMaterial ) cacheKey += 'specular-glossiness:'; + if ( useSkinning ) cacheKey += 'skinning:'; + if ( useVertexTangents ) cacheKey += 'vertex-tangents:'; + if ( useVertexColors ) cacheKey += 'vertex-colors:'; + if ( useFlatShading ) cacheKey += 'flat-shading:'; + if ( useMorphTargets ) cacheKey += 'morph-targets:'; + if ( useMorphNormals ) cacheKey += 'morph-normals:'; + + var cachedMaterial = this.cache.get( cacheKey ); + + if ( ! cachedMaterial ) { + + cachedMaterial = material.isGLTFSpecularGlossinessMaterial + ? extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].cloneMaterial( material ) + : material.clone(); + + if ( useSkinning ) cachedMaterial.skinning = true; + if ( useVertexTangents ) cachedMaterial.vertexTangents = true; + if ( useVertexColors ) cachedMaterial.vertexColors = THREE.VertexColors; + if ( useFlatShading ) cachedMaterial.flatShading = true; + if ( useMorphTargets ) cachedMaterial.morphTargets = true; + if ( useMorphNormals ) cachedMaterial.morphNormals = true; + + this.cache.add( cacheKey, cachedMaterial ); + + } + + material = cachedMaterial; + + } + + // workarounds for mesh and geometry + + if ( material.aoMap && geometry.attributes.uv2 === undefined && geometry.attributes.uv !== undefined ) { + + console.log( 'THREE.GLTFLoader: Duplicating UVs to support aoMap.' ); + geometry.addAttribute( 'uv2', new THREE.BufferAttribute( geometry.attributes.uv.array, 2 ) ); + + } + + if ( material.isGLTFSpecularGlossinessMaterial ) { + + // for GLTFSpecularGlossinessMaterial(ShaderMaterial) uniforms runtime update + mesh.onBeforeRender = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].refreshUniforms; + + } + + mesh.material = material; + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials + * @param {number} materialIndex + * @return {Promise} + */ + GLTFParser.prototype.loadMaterial = function ( materialIndex ) { + + var parser = this; + var json = this.json; + var extensions = this.extensions; + var materialDef = json.materials[ materialIndex ]; + + var materialType; + var materialParams = {}; + var materialExtensions = materialDef.extensions || {}; + + var pending = []; + + if ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ] ) { + + var sgExtension = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ]; + materialType = sgExtension.getMaterialType(); + pending.push( sgExtension.extendParams( materialParams, materialDef, parser ) ); + + } else if ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ] ) { + + var kmuExtension = extensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ]; + materialType = kmuExtension.getMaterialType(); + pending.push( kmuExtension.extendParams( materialParams, materialDef, parser ) ); + + } else { + + // Specification: + // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material + + materialType = THREE.MeshStandardMaterial; + + var metallicRoughness = materialDef.pbrMetallicRoughness || {}; + + materialParams.color = new THREE.Color( 1.0, 1.0, 1.0 ); + materialParams.opacity = 1.0; + + if ( Array.isArray( metallicRoughness.baseColorFactor ) ) { + + var array = metallicRoughness.baseColorFactor; + + materialParams.color.fromArray( array ); + materialParams.opacity = array[ 3 ]; + + } + + if ( metallicRoughness.baseColorTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture ) ); + + } + + materialParams.metalness = metallicRoughness.metallicFactor !== undefined ? metallicRoughness.metallicFactor : 1.0; + materialParams.roughness = metallicRoughness.roughnessFactor !== undefined ? metallicRoughness.roughnessFactor : 1.0; + + if ( metallicRoughness.metallicRoughnessTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'metalnessMap', metallicRoughness.metallicRoughnessTexture ) ); + pending.push( parser.assignTexture( materialParams, 'roughnessMap', metallicRoughness.metallicRoughnessTexture ) ); + + } + + } + + if ( materialDef.doubleSided === true ) { + + materialParams.side = THREE.DoubleSide; + + } + + var alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE; + + if ( alphaMode === ALPHA_MODES.BLEND ) { + + materialParams.transparent = true; + + } else { + + materialParams.transparent = false; + + if ( alphaMode === ALPHA_MODES.MASK ) { + + materialParams.alphaTest = materialDef.alphaCutoff !== undefined ? materialDef.alphaCutoff : 0.5; + + } + + } + + if ( materialDef.normalTexture !== undefined && materialType !== THREE.MeshBasicMaterial ) { + + pending.push( parser.assignTexture( materialParams, 'normalMap', materialDef.normalTexture ) ); + + materialParams.normalScale = new THREE.Vector2( 1, 1 ); + + if ( materialDef.normalTexture.scale !== undefined ) { + + materialParams.normalScale.set( materialDef.normalTexture.scale, materialDef.normalTexture.scale ); + + } + + } + + if ( materialDef.occlusionTexture !== undefined && materialType !== THREE.MeshBasicMaterial ) { + + pending.push( parser.assignTexture( materialParams, 'aoMap', materialDef.occlusionTexture ) ); + + if ( materialDef.occlusionTexture.strength !== undefined ) { + + materialParams.aoMapIntensity = materialDef.occlusionTexture.strength; + + } + + } + + if ( materialDef.emissiveFactor !== undefined && materialType !== THREE.MeshBasicMaterial ) { + + materialParams.emissive = new THREE.Color().fromArray( materialDef.emissiveFactor ); + + } + + if ( materialDef.emissiveTexture !== undefined && materialType !== THREE.MeshBasicMaterial ) { + + pending.push( parser.assignTexture( materialParams, 'emissiveMap', materialDef.emissiveTexture ) ); + + } + + return Promise.all( pending ).then( function () { + + var material; + + if ( materialType === THREE.ShaderMaterial ) { + + material = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].createMaterial( materialParams ); + + } else { + + material = new materialType( materialParams ); + + } + + if ( materialDef.name !== undefined ) material.name = materialDef.name; + + // baseColorTexture, emissiveTexture, and specularGlossinessTexture use sRGB encoding. + if ( material.map ) material.map.encoding = THREE.sRGBEncoding; + if ( material.emissiveMap ) material.emissiveMap.encoding = THREE.sRGBEncoding; + if ( material.specularMap ) material.specularMap.encoding = THREE.sRGBEncoding; + + assignExtrasToUserData( material, materialDef ); + + if ( materialDef.extensions ) addUnknownExtensionsToUserData( extensions, material, materialDef ); + + return material; + + } ); + + }; + + /** + * @param {THREE.BufferGeometry} geometry + * @param {GLTF.Primitive} primitiveDef + * @param {GLTFParser} parser + * @return {Promise} + */ + function addPrimitiveAttributes( geometry, primitiveDef, parser ) { + + var attributes = primitiveDef.attributes; + + var pending = []; + + function assignAttributeAccessor( accessorIndex, attributeName ) { + + return parser.getDependency( 'accessor', accessorIndex ) + .then( function ( accessor ) { + + geometry.addAttribute( attributeName, accessor ); + + } ); + + } + + for ( var gltfAttributeName in attributes ) { + + var threeAttributeName = ATTRIBUTES[ gltfAttributeName ] || gltfAttributeName.toLowerCase(); + + // Skip attributes already provided by e.g. Draco extension. + if ( threeAttributeName in geometry.attributes ) continue; + + pending.push( assignAttributeAccessor( attributes[ gltfAttributeName ], threeAttributeName ) ); + + } + + if ( primitiveDef.indices !== undefined && ! geometry.index ) { + + var accessor = parser.getDependency( 'accessor', primitiveDef.indices ).then( function ( accessor ) { + + geometry.setIndex( accessor ); + + } ); + + pending.push( accessor ); + + } + + assignExtrasToUserData( geometry, primitiveDef ); + + return Promise.all( pending ).then( function () { + + return primitiveDef.targets !== undefined + ? addMorphTargets( geometry, primitiveDef.targets, parser ) + : geometry; + + } ); + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry + * + * Creates BufferGeometries from primitives. + * + * @param {Array} primitives + * @return {Promise>} + */ + GLTFParser.prototype.loadGeometries = function ( primitives ) { + + var parser = this; + var extensions = this.extensions; + var cache = this.primitiveCache; + + function createDracoPrimitive( primitive ) { + + return extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] + .decodePrimitive( primitive, parser ) + .then( function ( geometry ) { + + return addPrimitiveAttributes( geometry, primitive, parser ); + + } ); + + } + + var pending = []; + + for ( var i = 0, il = primitives.length; i < il; i ++ ) { + + var primitive = primitives[ i ]; + var cacheKey = createPrimitiveKey( primitive ); + + // See if we've already created this geometry + var cached = cache[ cacheKey ]; + + if ( cached ) { + + // Use the cached geometry if it exists + pending.push( cached.promise ); + + } else { + + var geometryPromise; + + if ( primitive.extensions && primitive.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] ) { + + // Use DRACO geometry if available + geometryPromise = createDracoPrimitive( primitive ); + + } else { + + // Otherwise create a new geometry + geometryPromise = addPrimitiveAttributes( new THREE.BufferGeometry(), primitive, parser ); + + } + + // Cache this geometry + cache[ cacheKey ] = { primitive: primitive, promise: geometryPromise }; + + pending.push( geometryPromise ); + + } + + } + + return Promise.all( pending ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes + * @param {number} meshIndex + * @return {Promise} + */ + GLTFParser.prototype.loadMesh = function ( meshIndex ) { + + var parser = this; + var json = this.json; + var extensions = this.extensions; + + var meshDef = json.meshes[ meshIndex ]; + var primitives = meshDef.primitives; + + var pending = []; + + for ( var i = 0, il = primitives.length; i < il; i ++ ) { + + var material = primitives[ i ].material === undefined + ? createDefaultMaterial() + : this.getDependency( 'material', primitives[ i ].material ); + + pending.push( material ); + + } + + return Promise.all( pending ).then( function ( originalMaterials ) { + + return parser.loadGeometries( primitives ).then( function ( geometries ) { + + var meshes = []; + + for ( var i = 0, il = geometries.length; i < il; i ++ ) { + + var geometry = geometries[ i ]; + var primitive = primitives[ i ]; + + // 1. create Mesh + + var mesh; + + var material = originalMaterials[ i ]; + + if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLES || + primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP || + primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN || + primitive.mode === undefined ) { + + // .isSkinnedMesh isn't in glTF spec. See .markDefs() + mesh = meshDef.isSkinnedMesh === true + ? new THREE.SkinnedMesh( geometry, material ) + : new THREE.Mesh( geometry, material ); + + if ( mesh.isSkinnedMesh === true ) mesh.normalizeSkinWeights(); // #15319 + + if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ) { + + mesh.drawMode = THREE.TriangleStripDrawMode; + + } else if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ) { + + mesh.drawMode = THREE.TriangleFanDrawMode; + + } + + } else if ( primitive.mode === WEBGL_CONSTANTS.LINES ) { + + mesh = new THREE.LineSegments( geometry, material ); + + } else if ( primitive.mode === WEBGL_CONSTANTS.LINE_STRIP ) { + + mesh = new THREE.Line( geometry, material ); + + } else if ( primitive.mode === WEBGL_CONSTANTS.LINE_LOOP ) { + + mesh = new THREE.LineLoop( geometry, material ); + + } else if ( primitive.mode === WEBGL_CONSTANTS.POINTS ) { + + mesh = new THREE.Points( geometry, material ); + + } else { + + throw new Error( 'THREE.GLTFLoader: Primitive mode unsupported: ' + primitive.mode ); + + } + + if ( Object.keys( mesh.geometry.morphAttributes ).length > 0 ) { + + updateMorphTargets( mesh, meshDef ); + + } + + mesh.name = meshDef.name || ( 'mesh_' + meshIndex ); + + if ( geometries.length > 1 ) mesh.name += '_' + i; + + assignExtrasToUserData( mesh, meshDef ); + + parser.assignFinalMaterial( mesh ); + + meshes.push( mesh ); + + } + + if ( meshes.length === 1 ) { + + return meshes[ 0 ]; + + } + + var group = new THREE.Group(); + + for ( var i = 0, il = meshes.length; i < il; i ++ ) { + + group.add( meshes[ i ] ); + + } + + return group; + + } ); + + } ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras + * @param {number} cameraIndex + * @return {Promise} + */ + GLTFParser.prototype.loadCamera = function ( cameraIndex ) { + + var camera; + var cameraDef = this.json.cameras[ cameraIndex ]; + var params = cameraDef[ cameraDef.type ]; + + if ( ! params ) { + + console.warn( 'THREE.GLTFLoader: Missing camera parameters.' ); + return; + + } + + if ( cameraDef.type === 'perspective' ) { + + camera = new THREE.PerspectiveCamera( THREE.Math.radToDeg( params.yfov ), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6 ); + + } else if ( cameraDef.type === 'orthographic' ) { + + camera = new THREE.OrthographicCamera( params.xmag / - 2, params.xmag / 2, params.ymag / 2, params.ymag / - 2, params.znear, params.zfar ); + + } + + if ( cameraDef.name !== undefined ) camera.name = cameraDef.name; + + assignExtrasToUserData( camera, cameraDef ); + + return Promise.resolve( camera ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins + * @param {number} skinIndex + * @return {Promise} + */ + GLTFParser.prototype.loadSkin = function ( skinIndex ) { + + var skinDef = this.json.skins[ skinIndex ]; + + var skinEntry = { joints: skinDef.joints }; + + if ( skinDef.inverseBindMatrices === undefined ) { + + return Promise.resolve( skinEntry ); + + } + + return this.getDependency( 'accessor', skinDef.inverseBindMatrices ).then( function ( accessor ) { + + skinEntry.inverseBindMatrices = accessor; + + return skinEntry; + + } ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations + * @param {number} animationIndex + * @return {Promise} + */ + GLTFParser.prototype.loadAnimation = function ( animationIndex ) { + + var json = this.json; + + var animationDef = json.animations[ animationIndex ]; + + var pendingNodes = []; + var pendingInputAccessors = []; + var pendingOutputAccessors = []; + var pendingSamplers = []; + var pendingTargets = []; + + for ( var i = 0, il = animationDef.channels.length; i < il; i ++ ) { + + var channel = animationDef.channels[ i ]; + var sampler = animationDef.samplers[ channel.sampler ]; + var target = channel.target; + var name = target.node !== undefined ? target.node : target.id; // NOTE: target.id is deprecated. + var input = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.input ] : sampler.input; + var output = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.output ] : sampler.output; + + pendingNodes.push( this.getDependency( 'node', name ) ); + pendingInputAccessors.push( this.getDependency( 'accessor', input ) ); + pendingOutputAccessors.push( this.getDependency( 'accessor', output ) ); + pendingSamplers.push( sampler ); + pendingTargets.push( target ); + + } + + return Promise.all( [ + + Promise.all( pendingNodes ), + Promise.all( pendingInputAccessors ), + Promise.all( pendingOutputAccessors ), + Promise.all( pendingSamplers ), + Promise.all( pendingTargets ) + + ] ).then( function ( dependencies ) { + + var nodes = dependencies[ 0 ]; + var inputAccessors = dependencies[ 1 ]; + var outputAccessors = dependencies[ 2 ]; + var samplers = dependencies[ 3 ]; + var targets = dependencies[ 4 ]; + + var tracks = []; + + for ( var i = 0, il = nodes.length; i < il; i ++ ) { + + var node = nodes[ i ]; + var inputAccessor = inputAccessors[ i ]; + var outputAccessor = outputAccessors[ i ]; + var sampler = samplers[ i ]; + var target = targets[ i ]; + + if ( node === undefined ) continue; + + node.updateMatrix(); + node.matrixAutoUpdate = true; + + var TypedKeyframeTrack; + + switch ( PATH_PROPERTIES[ target.path ] ) { + + case PATH_PROPERTIES.weights: + + TypedKeyframeTrack = THREE.NumberKeyframeTrack; + break; + + case PATH_PROPERTIES.rotation: + + TypedKeyframeTrack = THREE.QuaternionKeyframeTrack; + break; + + case PATH_PROPERTIES.position: + case PATH_PROPERTIES.scale: + default: + + TypedKeyframeTrack = THREE.VectorKeyframeTrack; + break; + + } + + var targetName = node.name ? node.name : node.uuid; + + var interpolation = sampler.interpolation !== undefined ? INTERPOLATION[ sampler.interpolation ] : THREE.InterpolateLinear; + + var targetNames = []; + + if ( PATH_PROPERTIES[ target.path ] === PATH_PROPERTIES.weights ) { + + // Node may be a THREE.Group (glTF mesh with several primitives) or a THREE.Mesh. + node.traverse( function ( object ) { + + if ( object.isMesh === true && object.morphTargetInfluences ) { + + targetNames.push( object.name ? object.name : object.uuid ); + + } + + } ); + + } else { + + targetNames.push( targetName ); + + } + + for ( var j = 0, jl = targetNames.length; j < jl; j ++ ) { + + var track = new TypedKeyframeTrack( + targetNames[ j ] + '.' + PATH_PROPERTIES[ target.path ], + inputAccessor.array, + outputAccessor.array, + interpolation + ); + + // Override interpolation with custom factory method. + if ( sampler.interpolation === 'CUBICSPLINE' ) { + + track.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline( result ) { + + // A CUBICSPLINE keyframe in glTF has three output values for each input value, + // representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize() + // must be divided by three to get the interpolant's sampleSize argument. + + return new GLTFCubicSplineInterpolant( this.times, this.values, this.getValueSize() / 3, result ); + + }; + + // Mark as CUBICSPLINE. `track.getInterpolation()` doesn't support custom interpolants. + track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true; + + } + + tracks.push( track ); + + } + + } + + var name = animationDef.name !== undefined ? animationDef.name : 'animation_' + animationIndex; + + return new THREE.AnimationClip( name, undefined, tracks ); + + } ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy + * @param {number} nodeIndex + * @return {Promise} + */ + GLTFParser.prototype.loadNode = function ( nodeIndex ) { + + var json = this.json; + var extensions = this.extensions; + var parser = this; + + var meshReferences = json.meshReferences; + var meshUses = json.meshUses; + + var nodeDef = json.nodes[ nodeIndex ]; + + return ( function () { + + // .isBone isn't in glTF spec. See .markDefs + if ( nodeDef.isBone === true ) { + + return Promise.resolve( new THREE.Bone() ); + + } else if ( nodeDef.mesh !== undefined ) { + + return parser.getDependency( 'mesh', nodeDef.mesh ).then( function ( mesh ) { + + var node; + + if ( meshReferences[ nodeDef.mesh ] > 1 ) { + + var instanceNum = meshUses[ nodeDef.mesh ] ++; + + node = mesh.clone(); + node.name += '_instance_' + instanceNum; + + // onBeforeRender copy for Specular-Glossiness + node.onBeforeRender = mesh.onBeforeRender; + + for ( var i = 0, il = node.children.length; i < il; i ++ ) { + + node.children[ i ].name += '_instance_' + instanceNum; + node.children[ i ].onBeforeRender = mesh.children[ i ].onBeforeRender; + + } + + } else { + + node = mesh; + + } + + // if weights are provided on the node, override weights on the mesh. + if ( nodeDef.weights !== undefined ) { + + node.traverse( function ( o ) { + + if ( ! o.isMesh ) return; + + for ( var i = 0, il = nodeDef.weights.length; i < il; i ++ ) { + + o.morphTargetInfluences[ i ] = nodeDef.weights[ i ]; + + } + + } ); + + } + + return node; + + } ); + + } else if ( nodeDef.camera !== undefined ) { + + return parser.getDependency( 'camera', nodeDef.camera ); + + } else if ( nodeDef.extensions + && nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ] + && nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light !== undefined ) { + + return parser.getDependency( 'light', nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light ); + + } else { + + return Promise.resolve( new THREE.Object3D() ); + + } + + }() ).then( function ( node ) { + + if ( nodeDef.name !== undefined ) { + + node.userData.name = nodeDef.name; + node.name = THREE.PropertyBinding.sanitizeNodeName( nodeDef.name ); + + } + + assignExtrasToUserData( node, nodeDef ); + + if ( nodeDef.extensions ) addUnknownExtensionsToUserData( extensions, node, nodeDef ); + + if ( nodeDef.matrix !== undefined ) { + + var matrix = new THREE.Matrix4(); + matrix.fromArray( nodeDef.matrix ); + node.applyMatrix( matrix ); + + } else { + + if ( nodeDef.translation !== undefined ) { + + node.position.fromArray( nodeDef.translation ); + + } + + if ( nodeDef.rotation !== undefined ) { + + node.quaternion.fromArray( nodeDef.rotation ); + + } + + if ( nodeDef.scale !== undefined ) { + + node.scale.fromArray( nodeDef.scale ); + + } + + } + + return node; + + } ); + + }; + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes + * @param {number} sceneIndex + * @return {Promise} + */ + GLTFParser.prototype.loadScene = function () { + + // scene node hierachy builder + + function buildNodeHierachy( nodeId, parentObject, json, parser ) { + + var nodeDef = json.nodes[ nodeId ]; + + return parser.getDependency( 'node', nodeId ).then( function ( node ) { + + if ( nodeDef.skin === undefined ) return node; + + // build skeleton here as well + + var skinEntry; + + return parser.getDependency( 'skin', nodeDef.skin ).then( function ( skin ) { + + skinEntry = skin; + + var pendingJoints = []; + + for ( var i = 0, il = skinEntry.joints.length; i < il; i ++ ) { + + pendingJoints.push( parser.getDependency( 'node', skinEntry.joints[ i ] ) ); + + } + + return Promise.all( pendingJoints ); + + } ).then( function ( jointNodes ) { + + var meshes = node.isGroup === true ? node.children : [ node ]; + + for ( var i = 0, il = meshes.length; i < il; i ++ ) { + + var mesh = meshes[ i ]; + + var bones = []; + var boneInverses = []; + + for ( var j = 0, jl = jointNodes.length; j < jl; j ++ ) { + + var jointNode = jointNodes[ j ]; + + if ( jointNode ) { + + bones.push( jointNode ); + + var mat = new THREE.Matrix4(); + + if ( skinEntry.inverseBindMatrices !== undefined ) { + + mat.fromArray( skinEntry.inverseBindMatrices.array, j * 16 ); + + } + + boneInverses.push( mat ); + + } else { + + console.warn( 'THREE.GLTFLoader: Joint "%s" could not be found.', skinEntry.joints[ j ] ); + + } + + } + + mesh.bind( new THREE.Skeleton( bones, boneInverses ), mesh.matrixWorld ); + + } + + return node; + + } ); + + } ).then( function ( node ) { + + // build node hierachy + + parentObject.add( node ); + + var pending = []; + + if ( nodeDef.children ) { + + var children = nodeDef.children; + + for ( var i = 0, il = children.length; i < il; i ++ ) { + + var child = children[ i ]; + pending.push( buildNodeHierachy( child, node, json, parser ) ); + + } + + } + + return Promise.all( pending ); + + } ); + + } + + return function loadScene( sceneIndex ) { + + var json = this.json; + var extensions = this.extensions; + var sceneDef = this.json.scenes[ sceneIndex ]; + var parser = this; + + var scene = new THREE.Scene(); + if ( sceneDef.name !== undefined ) scene.name = sceneDef.name; + + assignExtrasToUserData( scene, sceneDef ); + + if ( sceneDef.extensions ) addUnknownExtensionsToUserData( extensions, scene, sceneDef ); + + var nodeIds = sceneDef.nodes || []; + + var pending = []; + + for ( var i = 0, il = nodeIds.length; i < il; i ++ ) { + + pending.push( buildNodeHierachy( nodeIds[ i ], scene, json, parser ) ); + + } + + return Promise.all( pending ).then( function () { + + return scene; + + } ); + + }; + + }(); + + return GLTFLoader; + +} )(); diff --git a/Elements.Wasm/wwwroot/js/three.js b/Elements.Wasm/wwwroot/js/three.js new file mode 100644 index 000000000..d54e44fb7 --- /dev/null +++ b/Elements.Wasm/wwwroot/js/three.js @@ -0,0 +1,49160 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = global || self, factory(global.THREE = {})); +}(this, function (exports) { 'use strict'; + + // Polyfills + + if ( Number.EPSILON === undefined ) { + + Number.EPSILON = Math.pow( 2, - 52 ); + + } + + if ( Number.isInteger === undefined ) { + + // Missing in IE + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger + + Number.isInteger = function ( value ) { + + return typeof value === 'number' && isFinite( value ) && Math.floor( value ) === value; + + }; + + } + + // + + if ( Math.sign === undefined ) { + + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign + + Math.sign = function ( x ) { + + return ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x; + + }; + + } + + if ( 'name' in Function.prototype === false ) { + + // Missing in IE + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name + + Object.defineProperty( Function.prototype, 'name', { + + get: function () { + + return this.toString().match( /^\s*function\s*([^\(\s]*)/ )[ 1 ]; + + } + + } ); + + } + + if ( Object.assign === undefined ) { + + // Missing in IE + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign + + ( function () { + + Object.assign = function ( target ) { + + if ( target === undefined || target === null ) { + + throw new TypeError( 'Cannot convert undefined or null to object' ); + + } + + var output = Object( target ); + + for ( var index = 1; index < arguments.length; index ++ ) { + + var source = arguments[ index ]; + + if ( source !== undefined && source !== null ) { + + for ( var nextKey in source ) { + + if ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) { + + output[ nextKey ] = source[ nextKey ]; + + } + + } + + } + + } + + return output; + + }; + + } )(); + + } + + /** + * https://github.com/mrdoob/eventdispatcher.js/ + */ + + function EventDispatcher() {} + + Object.assign( EventDispatcher.prototype, { + + addEventListener: function ( type, listener ) { + + if ( this._listeners === undefined ) this._listeners = {}; + + var listeners = this._listeners; + + if ( listeners[ type ] === undefined ) { + + listeners[ type ] = []; + + } + + if ( listeners[ type ].indexOf( listener ) === - 1 ) { + + listeners[ type ].push( listener ); + + } + + }, + + hasEventListener: function ( type, listener ) { + + if ( this._listeners === undefined ) return false; + + var listeners = this._listeners; + + return listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1; + + }, + + removeEventListener: function ( type, listener ) { + + if ( this._listeners === undefined ) return; + + var listeners = this._listeners; + var listenerArray = listeners[ type ]; + + if ( listenerArray !== undefined ) { + + var index = listenerArray.indexOf( listener ); + + if ( index !== - 1 ) { + + listenerArray.splice( index, 1 ); + + } + + } + + }, + + dispatchEvent: function ( event ) { + + if ( this._listeners === undefined ) return; + + var listeners = this._listeners; + var listenerArray = listeners[ event.type ]; + + if ( listenerArray !== undefined ) { + + event.target = this; + + var array = listenerArray.slice( 0 ); + + for ( var i = 0, l = array.length; i < l; i ++ ) { + + array[ i ].call( this, event ); + + } + + } + + } + + } ); + + var REVISION = '105'; + var MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2 }; + var CullFaceNone = 0; + var CullFaceBack = 1; + var CullFaceFront = 2; + var CullFaceFrontBack = 3; + var FrontFaceDirectionCW = 0; + var FrontFaceDirectionCCW = 1; + var BasicShadowMap = 0; + var PCFShadowMap = 1; + var PCFSoftShadowMap = 2; + var FrontSide = 0; + var BackSide = 1; + var DoubleSide = 2; + var FlatShading = 1; + var SmoothShading = 2; + var NoColors = 0; + var FaceColors = 1; + var VertexColors = 2; + var NoBlending = 0; + var NormalBlending = 1; + var AdditiveBlending = 2; + var SubtractiveBlending = 3; + var MultiplyBlending = 4; + var CustomBlending = 5; + var AddEquation = 100; + var SubtractEquation = 101; + var ReverseSubtractEquation = 102; + var MinEquation = 103; + var MaxEquation = 104; + var ZeroFactor = 200; + var OneFactor = 201; + var SrcColorFactor = 202; + var OneMinusSrcColorFactor = 203; + var SrcAlphaFactor = 204; + var OneMinusSrcAlphaFactor = 205; + var DstAlphaFactor = 206; + var OneMinusDstAlphaFactor = 207; + var DstColorFactor = 208; + var OneMinusDstColorFactor = 209; + var SrcAlphaSaturateFactor = 210; + var NeverDepth = 0; + var AlwaysDepth = 1; + var LessDepth = 2; + var LessEqualDepth = 3; + var EqualDepth = 4; + var GreaterEqualDepth = 5; + var GreaterDepth = 6; + var NotEqualDepth = 7; + var MultiplyOperation = 0; + var MixOperation = 1; + var AddOperation = 2; + var NoToneMapping = 0; + var LinearToneMapping = 1; + var ReinhardToneMapping = 2; + var Uncharted2ToneMapping = 3; + var CineonToneMapping = 4; + var ACESFilmicToneMapping = 5; + + var UVMapping = 300; + var CubeReflectionMapping = 301; + var CubeRefractionMapping = 302; + var EquirectangularReflectionMapping = 303; + var EquirectangularRefractionMapping = 304; + var SphericalReflectionMapping = 305; + var CubeUVReflectionMapping = 306; + var CubeUVRefractionMapping = 307; + var RepeatWrapping = 1000; + var ClampToEdgeWrapping = 1001; + var MirroredRepeatWrapping = 1002; + var NearestFilter = 1003; + var NearestMipMapNearestFilter = 1004; + var NearestMipMapLinearFilter = 1005; + var LinearFilter = 1006; + var LinearMipMapNearestFilter = 1007; + var LinearMipMapLinearFilter = 1008; + var UnsignedByteType = 1009; + var ByteType = 1010; + var ShortType = 1011; + var UnsignedShortType = 1012; + var IntType = 1013; + var UnsignedIntType = 1014; + var FloatType = 1015; + var HalfFloatType = 1016; + var UnsignedShort4444Type = 1017; + var UnsignedShort5551Type = 1018; + var UnsignedShort565Type = 1019; + var UnsignedInt248Type = 1020; + var AlphaFormat = 1021; + var RGBFormat = 1022; + var RGBAFormat = 1023; + var LuminanceFormat = 1024; + var LuminanceAlphaFormat = 1025; + var RGBEFormat = RGBAFormat; + var DepthFormat = 1026; + var DepthStencilFormat = 1027; + var RedFormat = 1028; + var RGB_S3TC_DXT1_Format = 33776; + var RGBA_S3TC_DXT1_Format = 33777; + var RGBA_S3TC_DXT3_Format = 33778; + var RGBA_S3TC_DXT5_Format = 33779; + var RGB_PVRTC_4BPPV1_Format = 35840; + var RGB_PVRTC_2BPPV1_Format = 35841; + var RGBA_PVRTC_4BPPV1_Format = 35842; + var RGBA_PVRTC_2BPPV1_Format = 35843; + var RGB_ETC1_Format = 36196; + var RGBA_ASTC_4x4_Format = 37808; + var RGBA_ASTC_5x4_Format = 37809; + var RGBA_ASTC_5x5_Format = 37810; + var RGBA_ASTC_6x5_Format = 37811; + var RGBA_ASTC_6x6_Format = 37812; + var RGBA_ASTC_8x5_Format = 37813; + var RGBA_ASTC_8x6_Format = 37814; + var RGBA_ASTC_8x8_Format = 37815; + var RGBA_ASTC_10x5_Format = 37816; + var RGBA_ASTC_10x6_Format = 37817; + var RGBA_ASTC_10x8_Format = 37818; + var RGBA_ASTC_10x10_Format = 37819; + var RGBA_ASTC_12x10_Format = 37820; + var RGBA_ASTC_12x12_Format = 37821; + var LoopOnce = 2200; + var LoopRepeat = 2201; + var LoopPingPong = 2202; + var InterpolateDiscrete = 2300; + var InterpolateLinear = 2301; + var InterpolateSmooth = 2302; + var ZeroCurvatureEnding = 2400; + var ZeroSlopeEnding = 2401; + var WrapAroundEnding = 2402; + var TrianglesDrawMode = 0; + var TriangleStripDrawMode = 1; + var TriangleFanDrawMode = 2; + var LinearEncoding = 3000; + var sRGBEncoding = 3001; + var GammaEncoding = 3007; + var RGBEEncoding = 3002; + var LogLuvEncoding = 3003; + var RGBM7Encoding = 3004; + var RGBM16Encoding = 3005; + var RGBDEncoding = 3006; + var BasicDepthPacking = 3200; + var RGBADepthPacking = 3201; + var TangentSpaceNormalMap = 0; + var ObjectSpaceNormalMap = 1; + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + */ + + var _Math = { + + DEG2RAD: Math.PI / 180, + RAD2DEG: 180 / Math.PI, + + generateUUID: ( function () { + + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136 + + var lut = []; + + for ( var i = 0; i < 256; i ++ ) { + + lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 ); + + } + + return function generateUUID() { + + var d0 = Math.random() * 0xffffffff | 0; + var d1 = Math.random() * 0xffffffff | 0; + var d2 = Math.random() * 0xffffffff | 0; + var d3 = Math.random() * 0xffffffff | 0; + var uuid = lut[ d0 & 0xff ] + lut[ d0 >> 8 & 0xff ] + lut[ d0 >> 16 & 0xff ] + lut[ d0 >> 24 & 0xff ] + '-' + + lut[ d1 & 0xff ] + lut[ d1 >> 8 & 0xff ] + '-' + lut[ d1 >> 16 & 0x0f | 0x40 ] + lut[ d1 >> 24 & 0xff ] + '-' + + lut[ d2 & 0x3f | 0x80 ] + lut[ d2 >> 8 & 0xff ] + '-' + lut[ d2 >> 16 & 0xff ] + lut[ d2 >> 24 & 0xff ] + + lut[ d3 & 0xff ] + lut[ d3 >> 8 & 0xff ] + lut[ d3 >> 16 & 0xff ] + lut[ d3 >> 24 & 0xff ]; + + // .toUpperCase() here flattens concatenated strings to save heap memory space. + return uuid.toUpperCase(); + + }; + + } )(), + + clamp: function ( value, min, max ) { + + return Math.max( min, Math.min( max, value ) ); + + }, + + // compute euclidian modulo of m % n + // https://en.wikipedia.org/wiki/Modulo_operation + + euclideanModulo: function ( n, m ) { + + return ( ( n % m ) + m ) % m; + + }, + + // Linear mapping from range to range + + mapLinear: function ( x, a1, a2, b1, b2 ) { + + return b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 ); + + }, + + // https://en.wikipedia.org/wiki/Linear_interpolation + + lerp: function ( x, y, t ) { + + return ( 1 - t ) * x + t * y; + + }, + + // http://en.wikipedia.org/wiki/Smoothstep + + smoothstep: function ( x, min, max ) { + + if ( x <= min ) return 0; + if ( x >= max ) return 1; + + x = ( x - min ) / ( max - min ); + + return x * x * ( 3 - 2 * x ); + + }, + + smootherstep: function ( x, min, max ) { + + if ( x <= min ) return 0; + if ( x >= max ) return 1; + + x = ( x - min ) / ( max - min ); + + return x * x * x * ( x * ( x * 6 - 15 ) + 10 ); + + }, + + // Random integer from interval + + randInt: function ( low, high ) { + + return low + Math.floor( Math.random() * ( high - low + 1 ) ); + + }, + + // Random float from interval + + randFloat: function ( low, high ) { + + return low + Math.random() * ( high - low ); + + }, + + // Random float from <-range/2, range/2> interval + + randFloatSpread: function ( range ) { + + return range * ( 0.5 - Math.random() ); + + }, + + degToRad: function ( degrees ) { + + return degrees * _Math.DEG2RAD; + + }, + + radToDeg: function ( radians ) { + + return radians * _Math.RAD2DEG; + + }, + + isPowerOfTwo: function ( value ) { + + return ( value & ( value - 1 ) ) === 0 && value !== 0; + + }, + + ceilPowerOfTwo: function ( value ) { + + return Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) ); + + }, + + floorPowerOfTwo: function ( value ) { + + return Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) ); + + } + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author philogb / http://blog.thejit.org/ + * @author egraether / http://egraether.com/ + * @author zz85 / http://www.lab4games.net/zz85/blog + */ + + function Vector2( x, y ) { + + this.x = x || 0; + this.y = y || 0; + + } + + Object.defineProperties( Vector2.prototype, { + + "width": { + + get: function () { + + return this.x; + + }, + + set: function ( value ) { + + this.x = value; + + } + + }, + + "height": { + + get: function () { + + return this.y; + + }, + + set: function ( value ) { + + this.y = value; + + } + + } + + } ); + + Object.assign( Vector2.prototype, { + + isVector2: true, + + set: function ( x, y ) { + + this.x = x; + this.y = y; + + return this; + + }, + + setScalar: function ( scalar ) { + + this.x = scalar; + this.y = scalar; + + return this; + + }, + + setX: function ( x ) { + + this.x = x; + + return this; + + }, + + setY: function ( y ) { + + this.y = y; + + return this; + + }, + + setComponent: function ( index, value ) { + + switch ( index ) { + + case 0: this.x = value; break; + case 1: this.y = value; break; + default: throw new Error( 'index is out of range: ' + index ); + + } + + return this; + + }, + + getComponent: function ( index ) { + + switch ( index ) { + + case 0: return this.x; + case 1: return this.y; + default: throw new Error( 'index is out of range: ' + index ); + + } + + }, + + clone: function () { + + return new this.constructor( this.x, this.y ); + + }, + + copy: function ( v ) { + + this.x = v.x; + this.y = v.y; + + return this; + + }, + + add: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' ); + return this.addVectors( v, w ); + + } + + this.x += v.x; + this.y += v.y; + + return this; + + }, + + addScalar: function ( s ) { + + this.x += s; + this.y += s; + + return this; + + }, + + addVectors: function ( a, b ) { + + this.x = a.x + b.x; + this.y = a.y + b.y; + + return this; + + }, + + addScaledVector: function ( v, s ) { + + this.x += v.x * s; + this.y += v.y * s; + + return this; + + }, + + sub: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' ); + return this.subVectors( v, w ); + + } + + this.x -= v.x; + this.y -= v.y; + + return this; + + }, + + subScalar: function ( s ) { + + this.x -= s; + this.y -= s; + + return this; + + }, + + subVectors: function ( a, b ) { + + this.x = a.x - b.x; + this.y = a.y - b.y; + + return this; + + }, + + multiply: function ( v ) { + + this.x *= v.x; + this.y *= v.y; + + return this; + + }, + + multiplyScalar: function ( scalar ) { + + this.x *= scalar; + this.y *= scalar; + + return this; + + }, + + divide: function ( v ) { + + this.x /= v.x; + this.y /= v.y; + + return this; + + }, + + divideScalar: function ( scalar ) { + + return this.multiplyScalar( 1 / scalar ); + + }, + + applyMatrix3: function ( m ) { + + var x = this.x, y = this.y; + var e = m.elements; + + this.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ]; + this.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ]; + + return this; + + }, + + min: function ( v ) { + + this.x = Math.min( this.x, v.x ); + this.y = Math.min( this.y, v.y ); + + return this; + + }, + + max: function ( v ) { + + this.x = Math.max( this.x, v.x ); + this.y = Math.max( this.y, v.y ); + + return this; + + }, + + clamp: function ( min, max ) { + + // assumes min < max, componentwise + + this.x = Math.max( min.x, Math.min( max.x, this.x ) ); + this.y = Math.max( min.y, Math.min( max.y, this.y ) ); + + return this; + + }, + + clampScalar: function ( minVal, maxVal ) { + + this.x = Math.max( minVal, Math.min( maxVal, this.x ) ); + this.y = Math.max( minVal, Math.min( maxVal, this.y ) ); + + return this; + + }, + + clampLength: function ( min, max ) { + + var length = this.length(); + + return this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) ); + + }, + + floor: function () { + + this.x = Math.floor( this.x ); + this.y = Math.floor( this.y ); + + return this; + + }, + + ceil: function () { + + this.x = Math.ceil( this.x ); + this.y = Math.ceil( this.y ); + + return this; + + }, + + round: function () { + + this.x = Math.round( this.x ); + this.y = Math.round( this.y ); + + return this; + + }, + + roundToZero: function () { + + this.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x ); + this.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y ); + + return this; + + }, + + negate: function () { + + this.x = - this.x; + this.y = - this.y; + + return this; + + }, + + dot: function ( v ) { + + return this.x * v.x + this.y * v.y; + + }, + + cross: function ( v ) { + + return this.x * v.y - this.y * v.x; + + }, + + lengthSq: function () { + + return this.x * this.x + this.y * this.y; + + }, + + length: function () { + + return Math.sqrt( this.x * this.x + this.y * this.y ); + + }, + + manhattanLength: function () { + + return Math.abs( this.x ) + Math.abs( this.y ); + + }, + + normalize: function () { + + return this.divideScalar( this.length() || 1 ); + + }, + + angle: function () { + + // computes the angle in radians with respect to the positive x-axis + + var angle = Math.atan2( this.y, this.x ); + + if ( angle < 0 ) angle += 2 * Math.PI; + + return angle; + + }, + + distanceTo: function ( v ) { + + return Math.sqrt( this.distanceToSquared( v ) ); + + }, + + distanceToSquared: function ( v ) { + + var dx = this.x - v.x, dy = this.y - v.y; + return dx * dx + dy * dy; + + }, + + manhattanDistanceTo: function ( v ) { + + return Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ); + + }, + + setLength: function ( length ) { + + return this.normalize().multiplyScalar( length ); + + }, + + lerp: function ( v, alpha ) { + + this.x += ( v.x - this.x ) * alpha; + this.y += ( v.y - this.y ) * alpha; + + return this; + + }, + + lerpVectors: function ( v1, v2, alpha ) { + + return this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 ); + + }, + + equals: function ( v ) { + + return ( ( v.x === this.x ) && ( v.y === this.y ) ); + + }, + + fromArray: function ( array, offset ) { + + if ( offset === undefined ) offset = 0; + + this.x = array[ offset ]; + this.y = array[ offset + 1 ]; + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) array = []; + if ( offset === undefined ) offset = 0; + + array[ offset ] = this.x; + array[ offset + 1 ] = this.y; + + return array; + + }, + + fromBufferAttribute: function ( attribute, index, offset ) { + + if ( offset !== undefined ) { + + console.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' ); + + } + + this.x = attribute.getX( index ); + this.y = attribute.getY( index ); + + return this; + + }, + + rotateAround: function ( center, angle ) { + + var c = Math.cos( angle ), s = Math.sin( angle ); + + var x = this.x - center.x; + var y = this.y - center.y; + + this.x = x * c - y * s + center.x; + this.y = x * s + y * c + center.y; + + return this; + + } + + } ); + + /** + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + * @author WestLangley / http://github.com/WestLangley + * @author bhouston / http://clara.io + */ + + function Quaternion( x, y, z, w ) { + + this._x = x || 0; + this._y = y || 0; + this._z = z || 0; + this._w = ( w !== undefined ) ? w : 1; + + } + + Object.assign( Quaternion, { + + slerp: function ( qa, qb, qm, t ) { + + return qm.copy( qa ).slerp( qb, t ); + + }, + + slerpFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) { + + // fuzz-free, array-based Quaternion SLERP operation + + var x0 = src0[ srcOffset0 + 0 ], + y0 = src0[ srcOffset0 + 1 ], + z0 = src0[ srcOffset0 + 2 ], + w0 = src0[ srcOffset0 + 3 ], + + x1 = src1[ srcOffset1 + 0 ], + y1 = src1[ srcOffset1 + 1 ], + z1 = src1[ srcOffset1 + 2 ], + w1 = src1[ srcOffset1 + 3 ]; + + if ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) { + + var s = 1 - t, + + cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1, + + dir = ( cos >= 0 ? 1 : - 1 ), + sqrSin = 1 - cos * cos; + + // Skip the Slerp for tiny steps to avoid numeric problems: + if ( sqrSin > Number.EPSILON ) { + + var sin = Math.sqrt( sqrSin ), + len = Math.atan2( sin, cos * dir ); + + s = Math.sin( s * len ) / sin; + t = Math.sin( t * len ) / sin; + + } + + var tDir = t * dir; + + x0 = x0 * s + x1 * tDir; + y0 = y0 * s + y1 * tDir; + z0 = z0 * s + z1 * tDir; + w0 = w0 * s + w1 * tDir; + + // Normalize in case we just did a lerp: + if ( s === 1 - t ) { + + var f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 ); + + x0 *= f; + y0 *= f; + z0 *= f; + w0 *= f; + + } + + } + + dst[ dstOffset ] = x0; + dst[ dstOffset + 1 ] = y0; + dst[ dstOffset + 2 ] = z0; + dst[ dstOffset + 3 ] = w0; + + } + + } ); + + Object.defineProperties( Quaternion.prototype, { + + x: { + + get: function () { + + return this._x; + + }, + + set: function ( value ) { + + this._x = value; + this.onChangeCallback(); + + } + + }, + + y: { + + get: function () { + + return this._y; + + }, + + set: function ( value ) { + + this._y = value; + this.onChangeCallback(); + + } + + }, + + z: { + + get: function () { + + return this._z; + + }, + + set: function ( value ) { + + this._z = value; + this.onChangeCallback(); + + } + + }, + + w: { + + get: function () { + + return this._w; + + }, + + set: function ( value ) { + + this._w = value; + this.onChangeCallback(); + + } + + } + + } ); + + Object.assign( Quaternion.prototype, { + + isQuaternion: true, + + set: function ( x, y, z, w ) { + + this._x = x; + this._y = y; + this._z = z; + this._w = w; + + this.onChangeCallback(); + + return this; + + }, + + clone: function () { + + return new this.constructor( this._x, this._y, this._z, this._w ); + + }, + + copy: function ( quaternion ) { + + this._x = quaternion.x; + this._y = quaternion.y; + this._z = quaternion.z; + this._w = quaternion.w; + + this.onChangeCallback(); + + return this; + + }, + + setFromEuler: function ( euler, update ) { + + if ( ! ( euler && euler.isEuler ) ) { + + throw new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' ); + + } + + var x = euler._x, y = euler._y, z = euler._z, order = euler.order; + + // http://www.mathworks.com/matlabcentral/fileexchange/ + // 20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/ + // content/SpinCalc.m + + var cos = Math.cos; + var sin = Math.sin; + + var c1 = cos( x / 2 ); + var c2 = cos( y / 2 ); + var c3 = cos( z / 2 ); + + var s1 = sin( x / 2 ); + var s2 = sin( y / 2 ); + var s3 = sin( z / 2 ); + + if ( order === 'XYZ' ) { + + this._x = s1 * c2 * c3 + c1 * s2 * s3; + this._y = c1 * s2 * c3 - s1 * c2 * s3; + this._z = c1 * c2 * s3 + s1 * s2 * c3; + this._w = c1 * c2 * c3 - s1 * s2 * s3; + + } else if ( order === 'YXZ' ) { + + this._x = s1 * c2 * c3 + c1 * s2 * s3; + this._y = c1 * s2 * c3 - s1 * c2 * s3; + this._z = c1 * c2 * s3 - s1 * s2 * c3; + this._w = c1 * c2 * c3 + s1 * s2 * s3; + + } else if ( order === 'ZXY' ) { + + this._x = s1 * c2 * c3 - c1 * s2 * s3; + this._y = c1 * s2 * c3 + s1 * c2 * s3; + this._z = c1 * c2 * s3 + s1 * s2 * c3; + this._w = c1 * c2 * c3 - s1 * s2 * s3; + + } else if ( order === 'ZYX' ) { + + this._x = s1 * c2 * c3 - c1 * s2 * s3; + this._y = c1 * s2 * c3 + s1 * c2 * s3; + this._z = c1 * c2 * s3 - s1 * s2 * c3; + this._w = c1 * c2 * c3 + s1 * s2 * s3; + + } else if ( order === 'YZX' ) { + + this._x = s1 * c2 * c3 + c1 * s2 * s3; + this._y = c1 * s2 * c3 + s1 * c2 * s3; + this._z = c1 * c2 * s3 - s1 * s2 * c3; + this._w = c1 * c2 * c3 - s1 * s2 * s3; + + } else if ( order === 'XZY' ) { + + this._x = s1 * c2 * c3 - c1 * s2 * s3; + this._y = c1 * s2 * c3 - s1 * c2 * s3; + this._z = c1 * c2 * s3 + s1 * s2 * c3; + this._w = c1 * c2 * c3 + s1 * s2 * s3; + + } + + if ( update !== false ) this.onChangeCallback(); + + return this; + + }, + + setFromAxisAngle: function ( axis, angle ) { + + // http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm + + // assumes axis is normalized + + var halfAngle = angle / 2, s = Math.sin( halfAngle ); + + this._x = axis.x * s; + this._y = axis.y * s; + this._z = axis.z * s; + this._w = Math.cos( halfAngle ); + + this.onChangeCallback(); + + return this; + + }, + + setFromRotationMatrix: function ( m ) { + + // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm + + // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) + + var te = m.elements, + + m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ], + m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ], + m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ], + + trace = m11 + m22 + m33, + s; + + if ( trace > 0 ) { + + s = 0.5 / Math.sqrt( trace + 1.0 ); + + this._w = 0.25 / s; + this._x = ( m32 - m23 ) * s; + this._y = ( m13 - m31 ) * s; + this._z = ( m21 - m12 ) * s; + + } else if ( m11 > m22 && m11 > m33 ) { + + s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 ); + + this._w = ( m32 - m23 ) / s; + this._x = 0.25 * s; + this._y = ( m12 + m21 ) / s; + this._z = ( m13 + m31 ) / s; + + } else if ( m22 > m33 ) { + + s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 ); + + this._w = ( m13 - m31 ) / s; + this._x = ( m12 + m21 ) / s; + this._y = 0.25 * s; + this._z = ( m23 + m32 ) / s; + + } else { + + s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 ); + + this._w = ( m21 - m12 ) / s; + this._x = ( m13 + m31 ) / s; + this._y = ( m23 + m32 ) / s; + this._z = 0.25 * s; + + } + + this.onChangeCallback(); + + return this; + + }, + + setFromUnitVectors: function ( vFrom, vTo ) { + + // assumes direction vectors vFrom and vTo are normalized + + var EPS = 0.000001; + + var r = vFrom.dot( vTo ) + 1; + + if ( r < EPS ) { + + r = 0; + + if ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) { + + this._x = - vFrom.y; + this._y = vFrom.x; + this._z = 0; + this._w = r; + + } else { + + this._x = 0; + this._y = - vFrom.z; + this._z = vFrom.y; + this._w = r; + + } + + } else { + + // crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3 + + this._x = vFrom.y * vTo.z - vFrom.z * vTo.y; + this._y = vFrom.z * vTo.x - vFrom.x * vTo.z; + this._z = vFrom.x * vTo.y - vFrom.y * vTo.x; + this._w = r; + + } + + return this.normalize(); + + }, + + angleTo: function ( q ) { + + return 2 * Math.acos( Math.abs( _Math.clamp( this.dot( q ), - 1, 1 ) ) ); + + }, + + rotateTowards: function ( q, step ) { + + var angle = this.angleTo( q ); + + if ( angle === 0 ) return this; + + var t = Math.min( 1, step / angle ); + + this.slerp( q, t ); + + return this; + + }, + + inverse: function () { + + // quaternion is assumed to have unit length + + return this.conjugate(); + + }, + + conjugate: function () { + + this._x *= - 1; + this._y *= - 1; + this._z *= - 1; + + this.onChangeCallback(); + + return this; + + }, + + dot: function ( v ) { + + return this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w; + + }, + + lengthSq: function () { + + return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w; + + }, + + length: function () { + + return Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w ); + + }, + + normalize: function () { + + var l = this.length(); + + if ( l === 0 ) { + + this._x = 0; + this._y = 0; + this._z = 0; + this._w = 1; + + } else { + + l = 1 / l; + + this._x = this._x * l; + this._y = this._y * l; + this._z = this._z * l; + this._w = this._w * l; + + } + + this.onChangeCallback(); + + return this; + + }, + + multiply: function ( q, p ) { + + if ( p !== undefined ) { + + console.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' ); + return this.multiplyQuaternions( q, p ); + + } + + return this.multiplyQuaternions( this, q ); + + }, + + premultiply: function ( q ) { + + return this.multiplyQuaternions( q, this ); + + }, + + multiplyQuaternions: function ( a, b ) { + + // from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm + + var qax = a._x, qay = a._y, qaz = a._z, qaw = a._w; + var qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w; + + this._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby; + this._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz; + this._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx; + this._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz; + + this.onChangeCallback(); + + return this; + + }, + + slerp: function ( qb, t ) { + + if ( t === 0 ) return this; + if ( t === 1 ) return this.copy( qb ); + + var x = this._x, y = this._y, z = this._z, w = this._w; + + // http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/ + + var cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z; + + if ( cosHalfTheta < 0 ) { + + this._w = - qb._w; + this._x = - qb._x; + this._y = - qb._y; + this._z = - qb._z; + + cosHalfTheta = - cosHalfTheta; + + } else { + + this.copy( qb ); + + } + + if ( cosHalfTheta >= 1.0 ) { + + this._w = w; + this._x = x; + this._y = y; + this._z = z; + + return this; + + } + + var sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta; + + if ( sqrSinHalfTheta <= Number.EPSILON ) { + + var s = 1 - t; + this._w = s * w + t * this._w; + this._x = s * x + t * this._x; + this._y = s * y + t * this._y; + this._z = s * z + t * this._z; + + return this.normalize(); + + } + + var sinHalfTheta = Math.sqrt( sqrSinHalfTheta ); + var halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta ); + var ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta, + ratioB = Math.sin( t * halfTheta ) / sinHalfTheta; + + this._w = ( w * ratioA + this._w * ratioB ); + this._x = ( x * ratioA + this._x * ratioB ); + this._y = ( y * ratioA + this._y * ratioB ); + this._z = ( z * ratioA + this._z * ratioB ); + + this.onChangeCallback(); + + return this; + + }, + + equals: function ( quaternion ) { + + return ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w ); + + }, + + fromArray: function ( array, offset ) { + + if ( offset === undefined ) offset = 0; + + this._x = array[ offset ]; + this._y = array[ offset + 1 ]; + this._z = array[ offset + 2 ]; + this._w = array[ offset + 3 ]; + + this.onChangeCallback(); + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) array = []; + if ( offset === undefined ) offset = 0; + + array[ offset ] = this._x; + array[ offset + 1 ] = this._y; + array[ offset + 2 ] = this._z; + array[ offset + 3 ] = this._w; + + return array; + + }, + + onChange: function ( callback ) { + + this.onChangeCallback = callback; + + return this; + + }, + + onChangeCallback: function () {} + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author kile / http://kile.stravaganza.org/ + * @author philogb / http://blog.thejit.org/ + * @author mikael emtinger / http://gomo.se/ + * @author egraether / http://egraether.com/ + * @author WestLangley / http://github.com/WestLangley + */ + + function Vector3( x, y, z ) { + + this.x = x || 0; + this.y = y || 0; + this.z = z || 0; + + } + + Object.assign( Vector3.prototype, { + + isVector3: true, + + set: function ( x, y, z ) { + + this.x = x; + this.y = y; + this.z = z; + + return this; + + }, + + setScalar: function ( scalar ) { + + this.x = scalar; + this.y = scalar; + this.z = scalar; + + return this; + + }, + + setX: function ( x ) { + + this.x = x; + + return this; + + }, + + setY: function ( y ) { + + this.y = y; + + return this; + + }, + + setZ: function ( z ) { + + this.z = z; + + return this; + + }, + + setComponent: function ( index, value ) { + + switch ( index ) { + + case 0: this.x = value; break; + case 1: this.y = value; break; + case 2: this.z = value; break; + default: throw new Error( 'index is out of range: ' + index ); + + } + + return this; + + }, + + getComponent: function ( index ) { + + switch ( index ) { + + case 0: return this.x; + case 1: return this.y; + case 2: return this.z; + default: throw new Error( 'index is out of range: ' + index ); + + } + + }, + + clone: function () { + + return new this.constructor( this.x, this.y, this.z ); + + }, + + copy: function ( v ) { + + this.x = v.x; + this.y = v.y; + this.z = v.z; + + return this; + + }, + + add: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' ); + return this.addVectors( v, w ); + + } + + this.x += v.x; + this.y += v.y; + this.z += v.z; + + return this; + + }, + + addScalar: function ( s ) { + + this.x += s; + this.y += s; + this.z += s; + + return this; + + }, + + addVectors: function ( a, b ) { + + this.x = a.x + b.x; + this.y = a.y + b.y; + this.z = a.z + b.z; + + return this; + + }, + + addScaledVector: function ( v, s ) { + + this.x += v.x * s; + this.y += v.y * s; + this.z += v.z * s; + + return this; + + }, + + sub: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' ); + return this.subVectors( v, w ); + + } + + this.x -= v.x; + this.y -= v.y; + this.z -= v.z; + + return this; + + }, + + subScalar: function ( s ) { + + this.x -= s; + this.y -= s; + this.z -= s; + + return this; + + }, + + subVectors: function ( a, b ) { + + this.x = a.x - b.x; + this.y = a.y - b.y; + this.z = a.z - b.z; + + return this; + + }, + + multiply: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' ); + return this.multiplyVectors( v, w ); + + } + + this.x *= v.x; + this.y *= v.y; + this.z *= v.z; + + return this; + + }, + + multiplyScalar: function ( scalar ) { + + this.x *= scalar; + this.y *= scalar; + this.z *= scalar; + + return this; + + }, + + multiplyVectors: function ( a, b ) { + + this.x = a.x * b.x; + this.y = a.y * b.y; + this.z = a.z * b.z; + + return this; + + }, + + applyEuler: function () { + + var quaternion = new Quaternion(); + + return function applyEuler( euler ) { + + if ( ! ( euler && euler.isEuler ) ) { + + console.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' ); + + } + + return this.applyQuaternion( quaternion.setFromEuler( euler ) ); + + }; + + }(), + + applyAxisAngle: function () { + + var quaternion = new Quaternion(); + + return function applyAxisAngle( axis, angle ) { + + return this.applyQuaternion( quaternion.setFromAxisAngle( axis, angle ) ); + + }; + + }(), + + applyMatrix3: function ( m ) { + + var x = this.x, y = this.y, z = this.z; + var e = m.elements; + + this.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z; + this.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z; + this.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z; + + return this; + + }, + + applyMatrix4: function ( m ) { + + var x = this.x, y = this.y, z = this.z; + var e = m.elements; + + var w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] ); + + this.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w; + this.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w; + this.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w; + + return this; + + }, + + applyQuaternion: function ( q ) { + + var x = this.x, y = this.y, z = this.z; + var qx = q.x, qy = q.y, qz = q.z, qw = q.w; + + // calculate quat * vector + + var ix = qw * x + qy * z - qz * y; + var iy = qw * y + qz * x - qx * z; + var iz = qw * z + qx * y - qy * x; + var iw = - qx * x - qy * y - qz * z; + + // calculate result * inverse quat + + this.x = ix * qw + iw * - qx + iy * - qz - iz * - qy; + this.y = iy * qw + iw * - qy + iz * - qx - ix * - qz; + this.z = iz * qw + iw * - qz + ix * - qy - iy * - qx; + + return this; + + }, + + project: function ( camera ) { + + return this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix ); + + }, + + unproject: function ( camera ) { + + return this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld ); + + }, + + transformDirection: function ( m ) { + + // input: THREE.Matrix4 affine matrix + // vector interpreted as a direction + + var x = this.x, y = this.y, z = this.z; + var e = m.elements; + + this.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z; + this.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z; + this.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z; + + return this.normalize(); + + }, + + divide: function ( v ) { + + this.x /= v.x; + this.y /= v.y; + this.z /= v.z; + + return this; + + }, + + divideScalar: function ( scalar ) { + + return this.multiplyScalar( 1 / scalar ); + + }, + + min: function ( v ) { + + this.x = Math.min( this.x, v.x ); + this.y = Math.min( this.y, v.y ); + this.z = Math.min( this.z, v.z ); + + return this; + + }, + + max: function ( v ) { + + this.x = Math.max( this.x, v.x ); + this.y = Math.max( this.y, v.y ); + this.z = Math.max( this.z, v.z ); + + return this; + + }, + + clamp: function ( min, max ) { + + // assumes min < max, componentwise + + this.x = Math.max( min.x, Math.min( max.x, this.x ) ); + this.y = Math.max( min.y, Math.min( max.y, this.y ) ); + this.z = Math.max( min.z, Math.min( max.z, this.z ) ); + + return this; + + }, + + clampScalar: function ( minVal, maxVal ) { + + this.x = Math.max( minVal, Math.min( maxVal, this.x ) ); + this.y = Math.max( minVal, Math.min( maxVal, this.y ) ); + this.z = Math.max( minVal, Math.min( maxVal, this.z ) ); + + return this; + + }, + + clampLength: function ( min, max ) { + + var length = this.length(); + + return this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) ); + + }, + + floor: function () { + + this.x = Math.floor( this.x ); + this.y = Math.floor( this.y ); + this.z = Math.floor( this.z ); + + return this; + + }, + + ceil: function () { + + this.x = Math.ceil( this.x ); + this.y = Math.ceil( this.y ); + this.z = Math.ceil( this.z ); + + return this; + + }, + + round: function () { + + this.x = Math.round( this.x ); + this.y = Math.round( this.y ); + this.z = Math.round( this.z ); + + return this; + + }, + + roundToZero: function () { + + this.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x ); + this.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y ); + this.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z ); + + return this; + + }, + + negate: function () { + + this.x = - this.x; + this.y = - this.y; + this.z = - this.z; + + return this; + + }, + + dot: function ( v ) { + + return this.x * v.x + this.y * v.y + this.z * v.z; + + }, + + // TODO lengthSquared? + + lengthSq: function () { + + return this.x * this.x + this.y * this.y + this.z * this.z; + + }, + + length: function () { + + return Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z ); + + }, + + manhattanLength: function () { + + return Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ); + + }, + + normalize: function () { + + return this.divideScalar( this.length() || 1 ); + + }, + + setLength: function ( length ) { + + return this.normalize().multiplyScalar( length ); + + }, + + lerp: function ( v, alpha ) { + + this.x += ( v.x - this.x ) * alpha; + this.y += ( v.y - this.y ) * alpha; + this.z += ( v.z - this.z ) * alpha; + + return this; + + }, + + lerpVectors: function ( v1, v2, alpha ) { + + return this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 ); + + }, + + cross: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' ); + return this.crossVectors( v, w ); + + } + + return this.crossVectors( this, v ); + + }, + + crossVectors: function ( a, b ) { + + var ax = a.x, ay = a.y, az = a.z; + var bx = b.x, by = b.y, bz = b.z; + + this.x = ay * bz - az * by; + this.y = az * bx - ax * bz; + this.z = ax * by - ay * bx; + + return this; + + }, + + projectOnVector: function ( vector ) { + + var scalar = vector.dot( this ) / vector.lengthSq(); + + return this.copy( vector ).multiplyScalar( scalar ); + + }, + + projectOnPlane: function () { + + var v1 = new Vector3(); + + return function projectOnPlane( planeNormal ) { + + v1.copy( this ).projectOnVector( planeNormal ); + + return this.sub( v1 ); + + }; + + }(), + + reflect: function () { + + // reflect incident vector off plane orthogonal to normal + // normal is assumed to have unit length + + var v1 = new Vector3(); + + return function reflect( normal ) { + + return this.sub( v1.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) ); + + }; + + }(), + + angleTo: function ( v ) { + + var theta = this.dot( v ) / ( Math.sqrt( this.lengthSq() * v.lengthSq() ) ); + + // clamp, to handle numerical problems + + return Math.acos( _Math.clamp( theta, - 1, 1 ) ); + + }, + + distanceTo: function ( v ) { + + return Math.sqrt( this.distanceToSquared( v ) ); + + }, + + distanceToSquared: function ( v ) { + + var dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z; + + return dx * dx + dy * dy + dz * dz; + + }, + + manhattanDistanceTo: function ( v ) { + + return Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z ); + + }, + + setFromSpherical: function ( s ) { + + return this.setFromSphericalCoords( s.radius, s.phi, s.theta ); + + }, + + setFromSphericalCoords: function ( radius, phi, theta ) { + + var sinPhiRadius = Math.sin( phi ) * radius; + + this.x = sinPhiRadius * Math.sin( theta ); + this.y = Math.cos( phi ) * radius; + this.z = sinPhiRadius * Math.cos( theta ); + + return this; + + }, + + setFromCylindrical: function ( c ) { + + return this.setFromCylindricalCoords( c.radius, c.theta, c.y ); + + }, + + setFromCylindricalCoords: function ( radius, theta, y ) { + + this.x = radius * Math.sin( theta ); + this.y = y; + this.z = radius * Math.cos( theta ); + + return this; + + }, + + setFromMatrixPosition: function ( m ) { + + var e = m.elements; + + this.x = e[ 12 ]; + this.y = e[ 13 ]; + this.z = e[ 14 ]; + + return this; + + }, + + setFromMatrixScale: function ( m ) { + + var sx = this.setFromMatrixColumn( m, 0 ).length(); + var sy = this.setFromMatrixColumn( m, 1 ).length(); + var sz = this.setFromMatrixColumn( m, 2 ).length(); + + this.x = sx; + this.y = sy; + this.z = sz; + + return this; + + }, + + setFromMatrixColumn: function ( m, index ) { + + return this.fromArray( m.elements, index * 4 ); + + }, + + equals: function ( v ) { + + return ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) ); + + }, + + fromArray: function ( array, offset ) { + + if ( offset === undefined ) offset = 0; + + this.x = array[ offset ]; + this.y = array[ offset + 1 ]; + this.z = array[ offset + 2 ]; + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) array = []; + if ( offset === undefined ) offset = 0; + + array[ offset ] = this.x; + array[ offset + 1 ] = this.y; + array[ offset + 2 ] = this.z; + + return array; + + }, + + fromBufferAttribute: function ( attribute, index, offset ) { + + if ( offset !== undefined ) { + + console.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' ); + + } + + this.x = attribute.getX( index ); + this.y = attribute.getY( index ); + this.z = attribute.getZ( index ); + + return this; + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + * @author WestLangley / http://github.com/WestLangley + * @author bhouston / http://clara.io + * @author tschw + */ + + function Matrix3() { + + this.elements = [ + + 1, 0, 0, + 0, 1, 0, + 0, 0, 1 + + ]; + + if ( arguments.length > 0 ) { + + console.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' ); + + } + + } + + Object.assign( Matrix3.prototype, { + + isMatrix3: true, + + set: function ( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) { + + var te = this.elements; + + te[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31; + te[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32; + te[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33; + + return this; + + }, + + identity: function () { + + this.set( + + 1, 0, 0, + 0, 1, 0, + 0, 0, 1 + + ); + + return this; + + }, + + clone: function () { + + return new this.constructor().fromArray( this.elements ); + + }, + + copy: function ( m ) { + + var te = this.elements; + var me = m.elements; + + te[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; + te[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; + te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ]; + + return this; + + }, + + setFromMatrix4: function ( m ) { + + var me = m.elements; + + this.set( + + me[ 0 ], me[ 4 ], me[ 8 ], + me[ 1 ], me[ 5 ], me[ 9 ], + me[ 2 ], me[ 6 ], me[ 10 ] + + ); + + return this; + + }, + + applyToBufferAttribute: function () { + + var v1 = new Vector3(); + + return function applyToBufferAttribute( attribute ) { + + for ( var i = 0, l = attribute.count; i < l; i ++ ) { + + v1.x = attribute.getX( i ); + v1.y = attribute.getY( i ); + v1.z = attribute.getZ( i ); + + v1.applyMatrix3( this ); + + attribute.setXYZ( i, v1.x, v1.y, v1.z ); + + } + + return attribute; + + }; + + }(), + + multiply: function ( m ) { + + return this.multiplyMatrices( this, m ); + + }, + + premultiply: function ( m ) { + + return this.multiplyMatrices( m, this ); + + }, + + multiplyMatrices: function ( a, b ) { + + var ae = a.elements; + var be = b.elements; + var te = this.elements; + + var a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ]; + var a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ]; + var a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ]; + + var b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ]; + var b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ]; + var b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ]; + + te[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31; + te[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32; + te[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33; + + te[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31; + te[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32; + te[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33; + + te[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31; + te[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32; + te[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33; + + return this; + + }, + + multiplyScalar: function ( s ) { + + var te = this.elements; + + te[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s; + te[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s; + te[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s; + + return this; + + }, + + determinant: function () { + + var te = this.elements; + + var a = te[ 0 ], b = te[ 1 ], c = te[ 2 ], + d = te[ 3 ], e = te[ 4 ], f = te[ 5 ], + g = te[ 6 ], h = te[ 7 ], i = te[ 8 ]; + + return a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g; + + }, + + getInverse: function ( matrix, throwOnDegenerate ) { + + if ( matrix && matrix.isMatrix4 ) { + + console.error( "THREE.Matrix3: .getInverse() no longer takes a Matrix4 argument." ); + + } + + var me = matrix.elements, + te = this.elements, + + n11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], + n12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ], + n13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 8 ], + + t11 = n33 * n22 - n32 * n23, + t12 = n32 * n13 - n33 * n12, + t13 = n23 * n12 - n22 * n13, + + det = n11 * t11 + n21 * t12 + n31 * t13; + + if ( det === 0 ) { + + var msg = "THREE.Matrix3: .getInverse() can't invert matrix, determinant is 0"; + + if ( throwOnDegenerate === true ) { + + throw new Error( msg ); + + } else { + + console.warn( msg ); + + } + + return this.identity(); + + } + + var detInv = 1 / det; + + te[ 0 ] = t11 * detInv; + te[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv; + te[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv; + + te[ 3 ] = t12 * detInv; + te[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv; + te[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv; + + te[ 6 ] = t13 * detInv; + te[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv; + te[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv; + + return this; + + }, + + transpose: function () { + + var tmp, m = this.elements; + + tmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp; + tmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp; + tmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp; + + return this; + + }, + + getNormalMatrix: function ( matrix4 ) { + + return this.setFromMatrix4( matrix4 ).getInverse( this ).transpose(); + + }, + + transposeIntoArray: function ( r ) { + + var m = this.elements; + + r[ 0 ] = m[ 0 ]; + r[ 1 ] = m[ 3 ]; + r[ 2 ] = m[ 6 ]; + r[ 3 ] = m[ 1 ]; + r[ 4 ] = m[ 4 ]; + r[ 5 ] = m[ 7 ]; + r[ 6 ] = m[ 2 ]; + r[ 7 ] = m[ 5 ]; + r[ 8 ] = m[ 8 ]; + + return this; + + }, + + setUvTransform: function ( tx, ty, sx, sy, rotation, cx, cy ) { + + var c = Math.cos( rotation ); + var s = Math.sin( rotation ); + + this.set( + sx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx, + - sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty, + 0, 0, 1 + ); + + }, + + scale: function ( sx, sy ) { + + var te = this.elements; + + te[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx; + te[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy; + + return this; + + }, + + rotate: function ( theta ) { + + var c = Math.cos( theta ); + var s = Math.sin( theta ); + + var te = this.elements; + + var a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ]; + var a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ]; + + te[ 0 ] = c * a11 + s * a21; + te[ 3 ] = c * a12 + s * a22; + te[ 6 ] = c * a13 + s * a23; + + te[ 1 ] = - s * a11 + c * a21; + te[ 4 ] = - s * a12 + c * a22; + te[ 7 ] = - s * a13 + c * a23; + + return this; + + }, + + translate: function ( tx, ty ) { + + var te = this.elements; + + te[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ]; + te[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ]; + + return this; + + }, + + equals: function ( matrix ) { + + var te = this.elements; + var me = matrix.elements; + + for ( var i = 0; i < 9; i ++ ) { + + if ( te[ i ] !== me[ i ] ) return false; + + } + + return true; + + }, + + fromArray: function ( array, offset ) { + + if ( offset === undefined ) offset = 0; + + for ( var i = 0; i < 9; i ++ ) { + + this.elements[ i ] = array[ i + offset ]; + + } + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) array = []; + if ( offset === undefined ) offset = 0; + + var te = this.elements; + + array[ offset ] = te[ 0 ]; + array[ offset + 1 ] = te[ 1 ]; + array[ offset + 2 ] = te[ 2 ]; + + array[ offset + 3 ] = te[ 3 ]; + array[ offset + 4 ] = te[ 4 ]; + array[ offset + 5 ] = te[ 5 ]; + + array[ offset + 6 ] = te[ 6 ]; + array[ offset + 7 ] = te[ 7 ]; + array[ offset + 8 ] = te[ 8 ]; + + return array; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * @author szimek / https://github.com/szimek/ + */ + + var _canvas; + + var ImageUtils = { + + getDataURL: function ( image ) { + + var canvas; + + if ( typeof HTMLCanvasElement == 'undefined' ) { + + return image.src; + + } else if ( image instanceof HTMLCanvasElement ) { + + canvas = image; + + } else { + + if ( _canvas === undefined ) _canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ); + + _canvas.width = image.width; + _canvas.height = image.height; + + var context = _canvas.getContext( '2d' ); + + if ( image instanceof ImageData ) { + + context.putImageData( image, 0, 0 ); + + } else { + + context.drawImage( image, 0, 0, image.width, image.height ); + + } + + canvas = _canvas; + + } + + if ( canvas.width > 2048 || canvas.height > 2048 ) { + + return canvas.toDataURL( 'image/jpeg', 0.6 ); + + } else { + + return canvas.toDataURL( 'image/png' ); + + } + + } + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * @author szimek / https://github.com/szimek/ + */ + + var textureId = 0; + + function Texture( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) { + + Object.defineProperty( this, 'id', { value: textureId ++ } ); + + this.uuid = _Math.generateUUID(); + + this.name = ''; + + this.image = image !== undefined ? image : Texture.DEFAULT_IMAGE; + this.mipmaps = []; + + this.mapping = mapping !== undefined ? mapping : Texture.DEFAULT_MAPPING; + + this.wrapS = wrapS !== undefined ? wrapS : ClampToEdgeWrapping; + this.wrapT = wrapT !== undefined ? wrapT : ClampToEdgeWrapping; + + this.magFilter = magFilter !== undefined ? magFilter : LinearFilter; + this.minFilter = minFilter !== undefined ? minFilter : LinearMipMapLinearFilter; + + this.anisotropy = anisotropy !== undefined ? anisotropy : 1; + + this.format = format !== undefined ? format : RGBAFormat; + this.type = type !== undefined ? type : UnsignedByteType; + + this.offset = new Vector2( 0, 0 ); + this.repeat = new Vector2( 1, 1 ); + this.center = new Vector2( 0, 0 ); + this.rotation = 0; + + this.matrixAutoUpdate = true; + this.matrix = new Matrix3(); + + this.generateMipmaps = true; + this.premultiplyAlpha = false; + this.flipY = true; + this.unpackAlignment = 4; // valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml) + + // Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap. + // + // Also changing the encoding after already used by a Material will not automatically make the Material + // update. You need to explicitly call Material.needsUpdate to trigger it to recompile. + this.encoding = encoding !== undefined ? encoding : LinearEncoding; + + this.version = 0; + this.onUpdate = null; + + } + + Texture.DEFAULT_IMAGE = undefined; + Texture.DEFAULT_MAPPING = UVMapping; + + Texture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + + constructor: Texture, + + isTexture: true, + + updateMatrix: function () { + + this.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y ); + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( source ) { + + this.name = source.name; + + this.image = source.image; + this.mipmaps = source.mipmaps.slice( 0 ); + + this.mapping = source.mapping; + + this.wrapS = source.wrapS; + this.wrapT = source.wrapT; + + this.magFilter = source.magFilter; + this.minFilter = source.minFilter; + + this.anisotropy = source.anisotropy; + + this.format = source.format; + this.type = source.type; + + this.offset.copy( source.offset ); + this.repeat.copy( source.repeat ); + this.center.copy( source.center ); + this.rotation = source.rotation; + + this.matrixAutoUpdate = source.matrixAutoUpdate; + this.matrix.copy( source.matrix ); + + this.generateMipmaps = source.generateMipmaps; + this.premultiplyAlpha = source.premultiplyAlpha; + this.flipY = source.flipY; + this.unpackAlignment = source.unpackAlignment; + this.encoding = source.encoding; + + return this; + + }, + + toJSON: function ( meta ) { + + var isRootObject = ( meta === undefined || typeof meta === 'string' ); + + if ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) { + + return meta.textures[ this.uuid ]; + + } + + var output = { + + metadata: { + version: 4.5, + type: 'Texture', + generator: 'Texture.toJSON' + }, + + uuid: this.uuid, + name: this.name, + + mapping: this.mapping, + + repeat: [ this.repeat.x, this.repeat.y ], + offset: [ this.offset.x, this.offset.y ], + center: [ this.center.x, this.center.y ], + rotation: this.rotation, + + wrap: [ this.wrapS, this.wrapT ], + + format: this.format, + type: this.type, + encoding: this.encoding, + + minFilter: this.minFilter, + magFilter: this.magFilter, + anisotropy: this.anisotropy, + + flipY: this.flipY, + + premultiplyAlpha: this.premultiplyAlpha, + unpackAlignment: this.unpackAlignment + + }; + + if ( this.image !== undefined ) { + + // TODO: Move to THREE.Image + + var image = this.image; + + if ( image.uuid === undefined ) { + + image.uuid = _Math.generateUUID(); // UGH + + } + + if ( ! isRootObject && meta.images[ image.uuid ] === undefined ) { + + var url; + + if ( Array.isArray( image ) ) { + + // process array of images e.g. CubeTexture + + url = []; + + for ( var i = 0, l = image.length; i < l; i ++ ) { + + url.push( ImageUtils.getDataURL( image[ i ] ) ); + + } + + } else { + + // process single image + + url = ImageUtils.getDataURL( image ); + + } + + meta.images[ image.uuid ] = { + uuid: image.uuid, + url: url + }; + + } + + output.image = image.uuid; + + } + + if ( ! isRootObject ) { + + meta.textures[ this.uuid ] = output; + + } + + return output; + + }, + + dispose: function () { + + this.dispatchEvent( { type: 'dispose' } ); + + }, + + transformUv: function ( uv ) { + + if ( this.mapping !== UVMapping ) return uv; + + uv.applyMatrix3( this.matrix ); + + if ( uv.x < 0 || uv.x > 1 ) { + + switch ( this.wrapS ) { + + case RepeatWrapping: + + uv.x = uv.x - Math.floor( uv.x ); + break; + + case ClampToEdgeWrapping: + + uv.x = uv.x < 0 ? 0 : 1; + break; + + case MirroredRepeatWrapping: + + if ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) { + + uv.x = Math.ceil( uv.x ) - uv.x; + + } else { + + uv.x = uv.x - Math.floor( uv.x ); + + } + break; + + } + + } + + if ( uv.y < 0 || uv.y > 1 ) { + + switch ( this.wrapT ) { + + case RepeatWrapping: + + uv.y = uv.y - Math.floor( uv.y ); + break; + + case ClampToEdgeWrapping: + + uv.y = uv.y < 0 ? 0 : 1; + break; + + case MirroredRepeatWrapping: + + if ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) { + + uv.y = Math.ceil( uv.y ) - uv.y; + + } else { + + uv.y = uv.y - Math.floor( uv.y ); + + } + break; + + } + + } + + if ( this.flipY ) { + + uv.y = 1 - uv.y; + + } + + return uv; + + } + + } ); + + Object.defineProperty( Texture.prototype, "needsUpdate", { + + set: function ( value ) { + + if ( value === true ) this.version ++; + + } + + } ); + + /** + * @author supereggbert / http://www.paulbrunt.co.uk/ + * @author philogb / http://blog.thejit.org/ + * @author mikael emtinger / http://gomo.se/ + * @author egraether / http://egraether.com/ + * @author WestLangley / http://github.com/WestLangley + */ + + function Vector4( x, y, z, w ) { + + this.x = x || 0; + this.y = y || 0; + this.z = z || 0; + this.w = ( w !== undefined ) ? w : 1; + + } + + Object.assign( Vector4.prototype, { + + isVector4: true, + + set: function ( x, y, z, w ) { + + this.x = x; + this.y = y; + this.z = z; + this.w = w; + + return this; + + }, + + setScalar: function ( scalar ) { + + this.x = scalar; + this.y = scalar; + this.z = scalar; + this.w = scalar; + + return this; + + }, + + setX: function ( x ) { + + this.x = x; + + return this; + + }, + + setY: function ( y ) { + + this.y = y; + + return this; + + }, + + setZ: function ( z ) { + + this.z = z; + + return this; + + }, + + setW: function ( w ) { + + this.w = w; + + return this; + + }, + + setComponent: function ( index, value ) { + + switch ( index ) { + + case 0: this.x = value; break; + case 1: this.y = value; break; + case 2: this.z = value; break; + case 3: this.w = value; break; + default: throw new Error( 'index is out of range: ' + index ); + + } + + return this; + + }, + + getComponent: function ( index ) { + + switch ( index ) { + + case 0: return this.x; + case 1: return this.y; + case 2: return this.z; + case 3: return this.w; + default: throw new Error( 'index is out of range: ' + index ); + + } + + }, + + clone: function () { + + return new this.constructor( this.x, this.y, this.z, this.w ); + + }, + + copy: function ( v ) { + + this.x = v.x; + this.y = v.y; + this.z = v.z; + this.w = ( v.w !== undefined ) ? v.w : 1; + + return this; + + }, + + add: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' ); + return this.addVectors( v, w ); + + } + + this.x += v.x; + this.y += v.y; + this.z += v.z; + this.w += v.w; + + return this; + + }, + + addScalar: function ( s ) { + + this.x += s; + this.y += s; + this.z += s; + this.w += s; + + return this; + + }, + + addVectors: function ( a, b ) { + + this.x = a.x + b.x; + this.y = a.y + b.y; + this.z = a.z + b.z; + this.w = a.w + b.w; + + return this; + + }, + + addScaledVector: function ( v, s ) { + + this.x += v.x * s; + this.y += v.y * s; + this.z += v.z * s; + this.w += v.w * s; + + return this; + + }, + + sub: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' ); + return this.subVectors( v, w ); + + } + + this.x -= v.x; + this.y -= v.y; + this.z -= v.z; + this.w -= v.w; + + return this; + + }, + + subScalar: function ( s ) { + + this.x -= s; + this.y -= s; + this.z -= s; + this.w -= s; + + return this; + + }, + + subVectors: function ( a, b ) { + + this.x = a.x - b.x; + this.y = a.y - b.y; + this.z = a.z - b.z; + this.w = a.w - b.w; + + return this; + + }, + + multiplyScalar: function ( scalar ) { + + this.x *= scalar; + this.y *= scalar; + this.z *= scalar; + this.w *= scalar; + + return this; + + }, + + applyMatrix4: function ( m ) { + + var x = this.x, y = this.y, z = this.z, w = this.w; + var e = m.elements; + + this.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w; + this.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w; + this.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w; + this.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w; + + return this; + + }, + + divideScalar: function ( scalar ) { + + return this.multiplyScalar( 1 / scalar ); + + }, + + setAxisAngleFromQuaternion: function ( q ) { + + // http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm + + // q is assumed to be normalized + + this.w = 2 * Math.acos( q.w ); + + var s = Math.sqrt( 1 - q.w * q.w ); + + if ( s < 0.0001 ) { + + this.x = 1; + this.y = 0; + this.z = 0; + + } else { + + this.x = q.x / s; + this.y = q.y / s; + this.z = q.z / s; + + } + + return this; + + }, + + setAxisAngleFromRotationMatrix: function ( m ) { + + // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm + + // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) + + var angle, x, y, z, // variables for result + epsilon = 0.01, // margin to allow for rounding errors + epsilon2 = 0.1, // margin to distinguish between 0 and 180 degrees + + te = m.elements, + + m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ], + m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ], + m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ]; + + if ( ( Math.abs( m12 - m21 ) < epsilon ) && + ( Math.abs( m13 - m31 ) < epsilon ) && + ( Math.abs( m23 - m32 ) < epsilon ) ) { + + // singularity found + // first check for identity matrix which must have +1 for all terms + // in leading diagonal and zero in other terms + + if ( ( Math.abs( m12 + m21 ) < epsilon2 ) && + ( Math.abs( m13 + m31 ) < epsilon2 ) && + ( Math.abs( m23 + m32 ) < epsilon2 ) && + ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) { + + // this singularity is identity matrix so angle = 0 + + this.set( 1, 0, 0, 0 ); + + return this; // zero angle, arbitrary axis + + } + + // otherwise this singularity is angle = 180 + + angle = Math.PI; + + var xx = ( m11 + 1 ) / 2; + var yy = ( m22 + 1 ) / 2; + var zz = ( m33 + 1 ) / 2; + var xy = ( m12 + m21 ) / 4; + var xz = ( m13 + m31 ) / 4; + var yz = ( m23 + m32 ) / 4; + + if ( ( xx > yy ) && ( xx > zz ) ) { + + // m11 is the largest diagonal term + + if ( xx < epsilon ) { + + x = 0; + y = 0.707106781; + z = 0.707106781; + + } else { + + x = Math.sqrt( xx ); + y = xy / x; + z = xz / x; + + } + + } else if ( yy > zz ) { + + // m22 is the largest diagonal term + + if ( yy < epsilon ) { + + x = 0.707106781; + y = 0; + z = 0.707106781; + + } else { + + y = Math.sqrt( yy ); + x = xy / y; + z = yz / y; + + } + + } else { + + // m33 is the largest diagonal term so base result on this + + if ( zz < epsilon ) { + + x = 0.707106781; + y = 0.707106781; + z = 0; + + } else { + + z = Math.sqrt( zz ); + x = xz / z; + y = yz / z; + + } + + } + + this.set( x, y, z, angle ); + + return this; // return 180 deg rotation + + } + + // as we have reached here there are no singularities so we can handle normally + + var s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) + + ( m13 - m31 ) * ( m13 - m31 ) + + ( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize + + if ( Math.abs( s ) < 0.001 ) s = 1; + + // prevent divide by zero, should not happen if matrix is orthogonal and should be + // caught by singularity test above, but I've left it in just in case + + this.x = ( m32 - m23 ) / s; + this.y = ( m13 - m31 ) / s; + this.z = ( m21 - m12 ) / s; + this.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 ); + + return this; + + }, + + min: function ( v ) { + + this.x = Math.min( this.x, v.x ); + this.y = Math.min( this.y, v.y ); + this.z = Math.min( this.z, v.z ); + this.w = Math.min( this.w, v.w ); + + return this; + + }, + + max: function ( v ) { + + this.x = Math.max( this.x, v.x ); + this.y = Math.max( this.y, v.y ); + this.z = Math.max( this.z, v.z ); + this.w = Math.max( this.w, v.w ); + + return this; + + }, + + clamp: function ( min, max ) { + + // assumes min < max, componentwise + + this.x = Math.max( min.x, Math.min( max.x, this.x ) ); + this.y = Math.max( min.y, Math.min( max.y, this.y ) ); + this.z = Math.max( min.z, Math.min( max.z, this.z ) ); + this.w = Math.max( min.w, Math.min( max.w, this.w ) ); + + return this; + + }, + + clampScalar: function () { + + var min, max; + + return function clampScalar( minVal, maxVal ) { + + if ( min === undefined ) { + + min = new Vector4(); + max = new Vector4(); + + } + + min.set( minVal, minVal, minVal, minVal ); + max.set( maxVal, maxVal, maxVal, maxVal ); + + return this.clamp( min, max ); + + }; + + }(), + + clampLength: function ( min, max ) { + + var length = this.length(); + + return this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) ); + + }, + + floor: function () { + + this.x = Math.floor( this.x ); + this.y = Math.floor( this.y ); + this.z = Math.floor( this.z ); + this.w = Math.floor( this.w ); + + return this; + + }, + + ceil: function () { + + this.x = Math.ceil( this.x ); + this.y = Math.ceil( this.y ); + this.z = Math.ceil( this.z ); + this.w = Math.ceil( this.w ); + + return this; + + }, + + round: function () { + + this.x = Math.round( this.x ); + this.y = Math.round( this.y ); + this.z = Math.round( this.z ); + this.w = Math.round( this.w ); + + return this; + + }, + + roundToZero: function () { + + this.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x ); + this.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y ); + this.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z ); + this.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w ); + + return this; + + }, + + negate: function () { + + this.x = - this.x; + this.y = - this.y; + this.z = - this.z; + this.w = - this.w; + + return this; + + }, + + dot: function ( v ) { + + return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w; + + }, + + lengthSq: function () { + + return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w; + + }, + + length: function () { + + return Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w ); + + }, + + manhattanLength: function () { + + return Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w ); + + }, + + normalize: function () { + + return this.divideScalar( this.length() || 1 ); + + }, + + setLength: function ( length ) { + + return this.normalize().multiplyScalar( length ); + + }, + + lerp: function ( v, alpha ) { + + this.x += ( v.x - this.x ) * alpha; + this.y += ( v.y - this.y ) * alpha; + this.z += ( v.z - this.z ) * alpha; + this.w += ( v.w - this.w ) * alpha; + + return this; + + }, + + lerpVectors: function ( v1, v2, alpha ) { + + return this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 ); + + }, + + equals: function ( v ) { + + return ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) ); + + }, + + fromArray: function ( array, offset ) { + + if ( offset === undefined ) offset = 0; + + this.x = array[ offset ]; + this.y = array[ offset + 1 ]; + this.z = array[ offset + 2 ]; + this.w = array[ offset + 3 ]; + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) array = []; + if ( offset === undefined ) offset = 0; + + array[ offset ] = this.x; + array[ offset + 1 ] = this.y; + array[ offset + 2 ] = this.z; + array[ offset + 3 ] = this.w; + + return array; + + }, + + fromBufferAttribute: function ( attribute, index, offset ) { + + if ( offset !== undefined ) { + + console.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' ); + + } + + this.x = attribute.getX( index ); + this.y = attribute.getY( index ); + this.z = attribute.getZ( index ); + this.w = attribute.getW( index ); + + return this; + + } + + } ); + + /** + * @author szimek / https://github.com/szimek/ + * @author alteredq / http://alteredqualia.com/ + * @author Marius Kintel / https://github.com/kintel + */ + + /* + In options, we can specify: + * Texture parameters for an auto-generated target texture + * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers + */ + function WebGLRenderTarget( width, height, options ) { + + this.width = width; + this.height = height; + + this.scissor = new Vector4( 0, 0, width, height ); + this.scissorTest = false; + + this.viewport = new Vector4( 0, 0, width, height ); + + options = options || {}; + + this.texture = new Texture( undefined, undefined, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding ); + + this.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false; + this.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter; + + this.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true; + this.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true; + this.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null; + + } + + WebGLRenderTarget.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + + constructor: WebGLRenderTarget, + + isWebGLRenderTarget: true, + + setSize: function ( width, height ) { + + if ( this.width !== width || this.height !== height ) { + + this.width = width; + this.height = height; + + this.dispose(); + + } + + this.viewport.set( 0, 0, width, height ); + this.scissor.set( 0, 0, width, height ); + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( source ) { + + this.width = source.width; + this.height = source.height; + + this.viewport.copy( source.viewport ); + + this.texture = source.texture.clone(); + + this.depthBuffer = source.depthBuffer; + this.stencilBuffer = source.stencilBuffer; + this.depthTexture = source.depthTexture; + + return this; + + }, + + dispose: function () { + + this.dispatchEvent( { type: 'dispose' } ); + + } + + } ); + + /** + * @author Mugen87 / https://github.com/Mugen87 + * @author Matt DesLauriers / @mattdesl + */ + + function WebGLMultisampleRenderTarget( width, height, options ) { + + WebGLRenderTarget.call( this, width, height, options ); + + this.samples = 4; + + } + + WebGLMultisampleRenderTarget.prototype = Object.assign( Object.create( WebGLRenderTarget.prototype ), { + + constructor: WebGLMultisampleRenderTarget, + + isWebGLMultisampleRenderTarget: true, + + copy: function ( source ) { + + WebGLRenderTarget.prototype.copy.call( this, source ); + + this.samples = source.samples; + + return this; + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com + */ + + function WebGLRenderTargetCube( width, height, options ) { + + WebGLRenderTarget.call( this, width, height, options ); + + } + + WebGLRenderTargetCube.prototype = Object.create( WebGLRenderTarget.prototype ); + WebGLRenderTargetCube.prototype.constructor = WebGLRenderTargetCube; + + WebGLRenderTargetCube.prototype.isWebGLRenderTargetCube = true; + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) { + + Texture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ); + + this.image = { data: data, width: width, height: height }; + + this.magFilter = magFilter !== undefined ? magFilter : NearestFilter; + this.minFilter = minFilter !== undefined ? minFilter : NearestFilter; + + this.generateMipmaps = false; + this.flipY = false; + this.unpackAlignment = 1; + + } + + DataTexture.prototype = Object.create( Texture.prototype ); + DataTexture.prototype.constructor = DataTexture; + + DataTexture.prototype.isDataTexture = true; + + /** + * @author bhouston / http://clara.io + * @author WestLangley / http://github.com/WestLangley + */ + + function Box3( min, max ) { + + this.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity ); + this.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity ); + + } + + Object.assign( Box3.prototype, { + + isBox3: true, + + set: function ( min, max ) { + + this.min.copy( min ); + this.max.copy( max ); + + return this; + + }, + + setFromArray: function ( array ) { + + var minX = + Infinity; + var minY = + Infinity; + var minZ = + Infinity; + + var maxX = - Infinity; + var maxY = - Infinity; + var maxZ = - Infinity; + + for ( var i = 0, l = array.length; i < l; i += 3 ) { + + var x = array[ i ]; + var y = array[ i + 1 ]; + var z = array[ i + 2 ]; + + if ( x < minX ) minX = x; + if ( y < minY ) minY = y; + if ( z < minZ ) minZ = z; + + if ( x > maxX ) maxX = x; + if ( y > maxY ) maxY = y; + if ( z > maxZ ) maxZ = z; + + } + + this.min.set( minX, minY, minZ ); + this.max.set( maxX, maxY, maxZ ); + + return this; + + }, + + setFromBufferAttribute: function ( attribute ) { + + var minX = + Infinity; + var minY = + Infinity; + var minZ = + Infinity; + + var maxX = - Infinity; + var maxY = - Infinity; + var maxZ = - Infinity; + + for ( var i = 0, l = attribute.count; i < l; i ++ ) { + + var x = attribute.getX( i ); + var y = attribute.getY( i ); + var z = attribute.getZ( i ); + + if ( x < minX ) minX = x; + if ( y < minY ) minY = y; + if ( z < minZ ) minZ = z; + + if ( x > maxX ) maxX = x; + if ( y > maxY ) maxY = y; + if ( z > maxZ ) maxZ = z; + + } + + this.min.set( minX, minY, minZ ); + this.max.set( maxX, maxY, maxZ ); + + return this; + + }, + + setFromPoints: function ( points ) { + + this.makeEmpty(); + + for ( var i = 0, il = points.length; i < il; i ++ ) { + + this.expandByPoint( points[ i ] ); + + } + + return this; + + }, + + setFromCenterAndSize: function () { + + var v1 = new Vector3(); + + return function setFromCenterAndSize( center, size ) { + + var halfSize = v1.copy( size ).multiplyScalar( 0.5 ); + + this.min.copy( center ).sub( halfSize ); + this.max.copy( center ).add( halfSize ); + + return this; + + }; + + }(), + + setFromObject: function ( object ) { + + this.makeEmpty(); + + return this.expandByObject( object ); + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( box ) { + + this.min.copy( box.min ); + this.max.copy( box.max ); + + return this; + + }, + + makeEmpty: function () { + + this.min.x = this.min.y = this.min.z = + Infinity; + this.max.x = this.max.y = this.max.z = - Infinity; + + return this; + + }, + + isEmpty: function () { + + // this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes + + return ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z ); + + }, + + getCenter: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Box3: .getCenter() target is now required' ); + target = new Vector3(); + + } + + return this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 ); + + }, + + getSize: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Box3: .getSize() target is now required' ); + target = new Vector3(); + + } + + return this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min ); + + }, + + expandByPoint: function ( point ) { + + this.min.min( point ); + this.max.max( point ); + + return this; + + }, + + expandByVector: function ( vector ) { + + this.min.sub( vector ); + this.max.add( vector ); + + return this; + + }, + + expandByScalar: function ( scalar ) { + + this.min.addScalar( - scalar ); + this.max.addScalar( scalar ); + + return this; + + }, + + expandByObject: function () { + + // Computes the world-axis-aligned bounding box of an object (including its children), + // accounting for both the object's, and children's, world transforms + + var scope, i, l; + + var v1 = new Vector3(); + + function traverse( node ) { + + var geometry = node.geometry; + + if ( geometry !== undefined ) { + + if ( geometry.isGeometry ) { + + var vertices = geometry.vertices; + + for ( i = 0, l = vertices.length; i < l; i ++ ) { + + v1.copy( vertices[ i ] ); + v1.applyMatrix4( node.matrixWorld ); + + scope.expandByPoint( v1 ); + + } + + } else if ( geometry.isBufferGeometry ) { + + var attribute = geometry.attributes.position; + + if ( attribute !== undefined ) { + + for ( i = 0, l = attribute.count; i < l; i ++ ) { + + v1.fromBufferAttribute( attribute, i ).applyMatrix4( node.matrixWorld ); + + scope.expandByPoint( v1 ); + + } + + } + + } + + } + + } + + return function expandByObject( object ) { + + scope = this; + + object.updateMatrixWorld( true ); + + object.traverse( traverse ); + + return this; + + }; + + }(), + + containsPoint: function ( point ) { + + return point.x < this.min.x || point.x > this.max.x || + point.y < this.min.y || point.y > this.max.y || + point.z < this.min.z || point.z > this.max.z ? false : true; + + }, + + containsBox: function ( box ) { + + return this.min.x <= box.min.x && box.max.x <= this.max.x && + this.min.y <= box.min.y && box.max.y <= this.max.y && + this.min.z <= box.min.z && box.max.z <= this.max.z; + + }, + + getParameter: function ( point, target ) { + + // This can potentially have a divide by zero if the box + // has a size dimension of 0. + + if ( target === undefined ) { + + console.warn( 'THREE.Box3: .getParameter() target is now required' ); + target = new Vector3(); + + } + + return target.set( + ( point.x - this.min.x ) / ( this.max.x - this.min.x ), + ( point.y - this.min.y ) / ( this.max.y - this.min.y ), + ( point.z - this.min.z ) / ( this.max.z - this.min.z ) + ); + + }, + + intersectsBox: function ( box ) { + + // using 6 splitting planes to rule out intersections. + return box.max.x < this.min.x || box.min.x > this.max.x || + box.max.y < this.min.y || box.min.y > this.max.y || + box.max.z < this.min.z || box.min.z > this.max.z ? false : true; + + }, + + intersectsSphere: ( function () { + + var closestPoint = new Vector3(); + + return function intersectsSphere( sphere ) { + + // Find the point on the AABB closest to the sphere center. + this.clampPoint( sphere.center, closestPoint ); + + // If that point is inside the sphere, the AABB and sphere intersect. + return closestPoint.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius ); + + }; + + } )(), + + intersectsPlane: function ( plane ) { + + // We compute the minimum and maximum dot product values. If those values + // are on the same side (back or front) of the plane, then there is no intersection. + + var min, max; + + if ( plane.normal.x > 0 ) { + + min = plane.normal.x * this.min.x; + max = plane.normal.x * this.max.x; + + } else { + + min = plane.normal.x * this.max.x; + max = plane.normal.x * this.min.x; + + } + + if ( plane.normal.y > 0 ) { + + min += plane.normal.y * this.min.y; + max += plane.normal.y * this.max.y; + + } else { + + min += plane.normal.y * this.max.y; + max += plane.normal.y * this.min.y; + + } + + if ( plane.normal.z > 0 ) { + + min += plane.normal.z * this.min.z; + max += plane.normal.z * this.max.z; + + } else { + + min += plane.normal.z * this.max.z; + max += plane.normal.z * this.min.z; + + } + + return ( min <= - plane.constant && max >= - plane.constant ); + + }, + + intersectsTriangle: ( function () { + + // triangle centered vertices + var v0 = new Vector3(); + var v1 = new Vector3(); + var v2 = new Vector3(); + + // triangle edge vectors + var f0 = new Vector3(); + var f1 = new Vector3(); + var f2 = new Vector3(); + + var testAxis = new Vector3(); + + var center = new Vector3(); + var extents = new Vector3(); + + var triangleNormal = new Vector3(); + + function satForAxes( axes ) { + + var i, j; + + for ( i = 0, j = axes.length - 3; i <= j; i += 3 ) { + + testAxis.fromArray( axes, i ); + // project the aabb onto the seperating axis + var r = extents.x * Math.abs( testAxis.x ) + extents.y * Math.abs( testAxis.y ) + extents.z * Math.abs( testAxis.z ); + // project all 3 vertices of the triangle onto the seperating axis + var p0 = v0.dot( testAxis ); + var p1 = v1.dot( testAxis ); + var p2 = v2.dot( testAxis ); + // actual test, basically see if either of the most extreme of the triangle points intersects r + if ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) { + + // points of the projected triangle are outside the projected half-length of the aabb + // the axis is seperating and we can exit + return false; + + } + + } + + return true; + + } + + return function intersectsTriangle( triangle ) { + + if ( this.isEmpty() ) { + + return false; + + } + + // compute box center and extents + this.getCenter( center ); + extents.subVectors( this.max, center ); + + // translate triangle to aabb origin + v0.subVectors( triangle.a, center ); + v1.subVectors( triangle.b, center ); + v2.subVectors( triangle.c, center ); + + // compute edge vectors for triangle + f0.subVectors( v1, v0 ); + f1.subVectors( v2, v1 ); + f2.subVectors( v0, v2 ); + + // test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb + // make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation + // axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned) + var axes = [ + 0, - f0.z, f0.y, 0, - f1.z, f1.y, 0, - f2.z, f2.y, + f0.z, 0, - f0.x, f1.z, 0, - f1.x, f2.z, 0, - f2.x, + - f0.y, f0.x, 0, - f1.y, f1.x, 0, - f2.y, f2.x, 0 + ]; + if ( ! satForAxes( axes ) ) { + + return false; + + } + + // test 3 face normals from the aabb + axes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ]; + if ( ! satForAxes( axes ) ) { + + return false; + + } + + // finally testing the face normal of the triangle + // use already existing triangle edge vectors here + triangleNormal.crossVectors( f0, f1 ); + axes = [ triangleNormal.x, triangleNormal.y, triangleNormal.z ]; + return satForAxes( axes ); + + }; + + } )(), + + clampPoint: function ( point, target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Box3: .clampPoint() target is now required' ); + target = new Vector3(); + + } + + return target.copy( point ).clamp( this.min, this.max ); + + }, + + distanceToPoint: function () { + + var v1 = new Vector3(); + + return function distanceToPoint( point ) { + + var clampedPoint = v1.copy( point ).clamp( this.min, this.max ); + return clampedPoint.sub( point ).length(); + + }; + + }(), + + getBoundingSphere: function () { + + var v1 = new Vector3(); + + return function getBoundingSphere( target ) { + + if ( target === undefined ) { + + console.error( 'THREE.Box3: .getBoundingSphere() target is now required' ); + //target = new Sphere(); // removed to avoid cyclic dependency + + } + + this.getCenter( target.center ); + + target.radius = this.getSize( v1 ).length() * 0.5; + + return target; + + }; + + }(), + + intersect: function ( box ) { + + this.min.max( box.min ); + this.max.min( box.max ); + + // ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values. + if ( this.isEmpty() ) this.makeEmpty(); + + return this; + + }, + + union: function ( box ) { + + this.min.min( box.min ); + this.max.max( box.max ); + + return this; + + }, + + applyMatrix4: function () { + + var points = [ + new Vector3(), + new Vector3(), + new Vector3(), + new Vector3(), + new Vector3(), + new Vector3(), + new Vector3(), + new Vector3() + ]; + + return function applyMatrix4( matrix ) { + + // transform of empty box is an empty box. + if ( this.isEmpty() ) return this; + + // NOTE: I am using a binary pattern to specify all 2^3 combinations below + points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000 + points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001 + points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010 + points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011 + points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100 + points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101 + points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110 + points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111 + + this.setFromPoints( points ); + + return this; + + }; + + }(), + + translate: function ( offset ) { + + this.min.add( offset ); + this.max.add( offset ); + + return this; + + }, + + equals: function ( box ) { + + return box.min.equals( this.min ) && box.max.equals( this.max ); + + } + + } ); + + /** + * @author bhouston / http://clara.io + * @author mrdoob / http://mrdoob.com/ + */ + + function Sphere( center, radius ) { + + this.center = ( center !== undefined ) ? center : new Vector3(); + this.radius = ( radius !== undefined ) ? radius : 0; + + } + + Object.assign( Sphere.prototype, { + + set: function ( center, radius ) { + + this.center.copy( center ); + this.radius = radius; + + return this; + + }, + + setFromPoints: function () { + + var box = new Box3(); + + return function setFromPoints( points, optionalCenter ) { + + var center = this.center; + + if ( optionalCenter !== undefined ) { + + center.copy( optionalCenter ); + + } else { + + box.setFromPoints( points ).getCenter( center ); + + } + + var maxRadiusSq = 0; + + for ( var i = 0, il = points.length; i < il; i ++ ) { + + maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) ); + + } + + this.radius = Math.sqrt( maxRadiusSq ); + + return this; + + }; + + }(), + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( sphere ) { + + this.center.copy( sphere.center ); + this.radius = sphere.radius; + + return this; + + }, + + empty: function () { + + return ( this.radius <= 0 ); + + }, + + containsPoint: function ( point ) { + + return ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) ); + + }, + + distanceToPoint: function ( point ) { + + return ( point.distanceTo( this.center ) - this.radius ); + + }, + + intersectsSphere: function ( sphere ) { + + var radiusSum = this.radius + sphere.radius; + + return sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum ); + + }, + + intersectsBox: function ( box ) { + + return box.intersectsSphere( this ); + + }, + + intersectsPlane: function ( plane ) { + + return Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius; + + }, + + clampPoint: function ( point, target ) { + + var deltaLengthSq = this.center.distanceToSquared( point ); + + if ( target === undefined ) { + + console.warn( 'THREE.Sphere: .clampPoint() target is now required' ); + target = new Vector3(); + + } + + target.copy( point ); + + if ( deltaLengthSq > ( this.radius * this.radius ) ) { + + target.sub( this.center ).normalize(); + target.multiplyScalar( this.radius ).add( this.center ); + + } + + return target; + + }, + + getBoundingBox: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Sphere: .getBoundingBox() target is now required' ); + target = new Box3(); + + } + + target.set( this.center, this.center ); + target.expandByScalar( this.radius ); + + return target; + + }, + + applyMatrix4: function ( matrix ) { + + this.center.applyMatrix4( matrix ); + this.radius = this.radius * matrix.getMaxScaleOnAxis(); + + return this; + + }, + + translate: function ( offset ) { + + this.center.add( offset ); + + return this; + + }, + + equals: function ( sphere ) { + + return sphere.center.equals( this.center ) && ( sphere.radius === this.radius ); + + } + + } ); + + /** + * @author bhouston / http://clara.io + */ + + function Plane( normal, constant ) { + + // normal is assumed to be normalized + + this.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 ); + this.constant = ( constant !== undefined ) ? constant : 0; + + } + + Object.assign( Plane.prototype, { + + set: function ( normal, constant ) { + + this.normal.copy( normal ); + this.constant = constant; + + return this; + + }, + + setComponents: function ( x, y, z, w ) { + + this.normal.set( x, y, z ); + this.constant = w; + + return this; + + }, + + setFromNormalAndCoplanarPoint: function ( normal, point ) { + + this.normal.copy( normal ); + this.constant = - point.dot( this.normal ); + + return this; + + }, + + setFromCoplanarPoints: function () { + + var v1 = new Vector3(); + var v2 = new Vector3(); + + return function setFromCoplanarPoints( a, b, c ) { + + var normal = v1.subVectors( c, b ).cross( v2.subVectors( a, b ) ).normalize(); + + // Q: should an error be thrown if normal is zero (e.g. degenerate plane)? + + this.setFromNormalAndCoplanarPoint( normal, a ); + + return this; + + }; + + }(), + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( plane ) { + + this.normal.copy( plane.normal ); + this.constant = plane.constant; + + return this; + + }, + + normalize: function () { + + // Note: will lead to a divide by zero if the plane is invalid. + + var inverseNormalLength = 1.0 / this.normal.length(); + this.normal.multiplyScalar( inverseNormalLength ); + this.constant *= inverseNormalLength; + + return this; + + }, + + negate: function () { + + this.constant *= - 1; + this.normal.negate(); + + return this; + + }, + + distanceToPoint: function ( point ) { + + return this.normal.dot( point ) + this.constant; + + }, + + distanceToSphere: function ( sphere ) { + + return this.distanceToPoint( sphere.center ) - sphere.radius; + + }, + + projectPoint: function ( point, target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Plane: .projectPoint() target is now required' ); + target = new Vector3(); + + } + + return target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point ); + + }, + + intersectLine: function () { + + var v1 = new Vector3(); + + return function intersectLine( line, target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Plane: .intersectLine() target is now required' ); + target = new Vector3(); + + } + + var direction = line.delta( v1 ); + + var denominator = this.normal.dot( direction ); + + if ( denominator === 0 ) { + + // line is coplanar, return origin + if ( this.distanceToPoint( line.start ) === 0 ) { + + return target.copy( line.start ); + + } + + // Unsure if this is the correct method to handle this case. + return undefined; + + } + + var t = - ( line.start.dot( this.normal ) + this.constant ) / denominator; + + if ( t < 0 || t > 1 ) { + + return undefined; + + } + + return target.copy( direction ).multiplyScalar( t ).add( line.start ); + + }; + + }(), + + intersectsLine: function ( line ) { + + // Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it. + + var startSign = this.distanceToPoint( line.start ); + var endSign = this.distanceToPoint( line.end ); + + return ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 ); + + }, + + intersectsBox: function ( box ) { + + return box.intersectsPlane( this ); + + }, + + intersectsSphere: function ( sphere ) { + + return sphere.intersectsPlane( this ); + + }, + + coplanarPoint: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Plane: .coplanarPoint() target is now required' ); + target = new Vector3(); + + } + + return target.copy( this.normal ).multiplyScalar( - this.constant ); + + }, + + applyMatrix4: function () { + + var v1 = new Vector3(); + var m1 = new Matrix3(); + + return function applyMatrix4( matrix, optionalNormalMatrix ) { + + var normalMatrix = optionalNormalMatrix || m1.getNormalMatrix( matrix ); + + var referencePoint = this.coplanarPoint( v1 ).applyMatrix4( matrix ); + + var normal = this.normal.applyMatrix3( normalMatrix ).normalize(); + + this.constant = - referencePoint.dot( normal ); + + return this; + + }; + + }(), + + translate: function ( offset ) { + + this.constant -= offset.dot( this.normal ); + + return this; + + }, + + equals: function ( plane ) { + + return plane.normal.equals( this.normal ) && ( plane.constant === this.constant ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * @author bhouston / http://clara.io + */ + + function Frustum( p0, p1, p2, p3, p4, p5 ) { + + this.planes = [ + + ( p0 !== undefined ) ? p0 : new Plane(), + ( p1 !== undefined ) ? p1 : new Plane(), + ( p2 !== undefined ) ? p2 : new Plane(), + ( p3 !== undefined ) ? p3 : new Plane(), + ( p4 !== undefined ) ? p4 : new Plane(), + ( p5 !== undefined ) ? p5 : new Plane() + + ]; + + } + + Object.assign( Frustum.prototype, { + + set: function ( p0, p1, p2, p3, p4, p5 ) { + + var planes = this.planes; + + planes[ 0 ].copy( p0 ); + planes[ 1 ].copy( p1 ); + planes[ 2 ].copy( p2 ); + planes[ 3 ].copy( p3 ); + planes[ 4 ].copy( p4 ); + planes[ 5 ].copy( p5 ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( frustum ) { + + var planes = this.planes; + + for ( var i = 0; i < 6; i ++ ) { + + planes[ i ].copy( frustum.planes[ i ] ); + + } + + return this; + + }, + + setFromMatrix: function ( m ) { + + var planes = this.planes; + var me = m.elements; + var me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ]; + var me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ]; + var me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ]; + var me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ]; + + planes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize(); + planes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize(); + planes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize(); + planes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize(); + planes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize(); + planes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize(); + + return this; + + }, + + intersectsObject: function () { + + var sphere = new Sphere(); + + return function intersectsObject( object ) { + + var geometry = object.geometry; + + if ( geometry.boundingSphere === null ) + geometry.computeBoundingSphere(); + + sphere.copy( geometry.boundingSphere ) + .applyMatrix4( object.matrixWorld ); + + return this.intersectsSphere( sphere ); + + }; + + }(), + + intersectsSprite: function () { + + var sphere = new Sphere(); + + return function intersectsSprite( sprite ) { + + sphere.center.set( 0, 0, 0 ); + sphere.radius = 0.7071067811865476; + sphere.applyMatrix4( sprite.matrixWorld ); + + return this.intersectsSphere( sphere ); + + }; + + }(), + + intersectsSphere: function ( sphere ) { + + var planes = this.planes; + var center = sphere.center; + var negRadius = - sphere.radius; + + for ( var i = 0; i < 6; i ++ ) { + + var distance = planes[ i ].distanceToPoint( center ); + + if ( distance < negRadius ) { + + return false; + + } + + } + + return true; + + }, + + intersectsBox: function () { + + var p = new Vector3(); + + return function intersectsBox( box ) { + + var planes = this.planes; + + for ( var i = 0; i < 6; i ++ ) { + + var plane = planes[ i ]; + + // corner at max distance + + p.x = plane.normal.x > 0 ? box.max.x : box.min.x; + p.y = plane.normal.y > 0 ? box.max.y : box.min.y; + p.z = plane.normal.z > 0 ? box.max.z : box.min.z; + + if ( plane.distanceToPoint( p ) < 0 ) { + + return false; + + } + + } + + return true; + + }; + + }(), + + containsPoint: function ( point ) { + + var planes = this.planes; + + for ( var i = 0; i < 6; i ++ ) { + + if ( planes[ i ].distanceToPoint( point ) < 0 ) { + + return false; + + } + + } + + return true; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author supereggbert / http://www.paulbrunt.co.uk/ + * @author philogb / http://blog.thejit.org/ + * @author jordi_ros / http://plattsoft.com + * @author D1plo1d / http://github.com/D1plo1d + * @author alteredq / http://alteredqualia.com/ + * @author mikael emtinger / http://gomo.se/ + * @author timknip / http://www.floorplanner.com/ + * @author bhouston / http://clara.io + * @author WestLangley / http://github.com/WestLangley + */ + + function Matrix4() { + + this.elements = [ + + 1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1 + + ]; + + if ( arguments.length > 0 ) { + + console.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' ); + + } + + } + + Object.assign( Matrix4.prototype, { + + isMatrix4: true, + + set: function ( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) { + + var te = this.elements; + + te[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14; + te[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24; + te[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34; + te[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44; + + return this; + + }, + + identity: function () { + + this.set( + + 1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1 + + ); + + return this; + + }, + + clone: function () { + + return new Matrix4().fromArray( this.elements ); + + }, + + copy: function ( m ) { + + var te = this.elements; + var me = m.elements; + + te[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ]; + te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; + te[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ]; + te[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ]; + + return this; + + }, + + copyPosition: function ( m ) { + + var te = this.elements, me = m.elements; + + te[ 12 ] = me[ 12 ]; + te[ 13 ] = me[ 13 ]; + te[ 14 ] = me[ 14 ]; + + return this; + + }, + + extractBasis: function ( xAxis, yAxis, zAxis ) { + + xAxis.setFromMatrixColumn( this, 0 ); + yAxis.setFromMatrixColumn( this, 1 ); + zAxis.setFromMatrixColumn( this, 2 ); + + return this; + + }, + + makeBasis: function ( xAxis, yAxis, zAxis ) { + + this.set( + xAxis.x, yAxis.x, zAxis.x, 0, + xAxis.y, yAxis.y, zAxis.y, 0, + xAxis.z, yAxis.z, zAxis.z, 0, + 0, 0, 0, 1 + ); + + return this; + + }, + + extractRotation: function () { + + var v1 = new Vector3(); + + return function extractRotation( m ) { + + // this method does not support reflection matrices + + var te = this.elements; + var me = m.elements; + + var scaleX = 1 / v1.setFromMatrixColumn( m, 0 ).length(); + var scaleY = 1 / v1.setFromMatrixColumn( m, 1 ).length(); + var scaleZ = 1 / v1.setFromMatrixColumn( m, 2 ).length(); + + te[ 0 ] = me[ 0 ] * scaleX; + te[ 1 ] = me[ 1 ] * scaleX; + te[ 2 ] = me[ 2 ] * scaleX; + te[ 3 ] = 0; + + te[ 4 ] = me[ 4 ] * scaleY; + te[ 5 ] = me[ 5 ] * scaleY; + te[ 6 ] = me[ 6 ] * scaleY; + te[ 7 ] = 0; + + te[ 8 ] = me[ 8 ] * scaleZ; + te[ 9 ] = me[ 9 ] * scaleZ; + te[ 10 ] = me[ 10 ] * scaleZ; + te[ 11 ] = 0; + + te[ 12 ] = 0; + te[ 13 ] = 0; + te[ 14 ] = 0; + te[ 15 ] = 1; + + return this; + + }; + + }(), + + makeRotationFromEuler: function ( euler ) { + + if ( ! ( euler && euler.isEuler ) ) { + + console.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' ); + + } + + var te = this.elements; + + var x = euler.x, y = euler.y, z = euler.z; + var a = Math.cos( x ), b = Math.sin( x ); + var c = Math.cos( y ), d = Math.sin( y ); + var e = Math.cos( z ), f = Math.sin( z ); + + if ( euler.order === 'XYZ' ) { + + var ae = a * e, af = a * f, be = b * e, bf = b * f; + + te[ 0 ] = c * e; + te[ 4 ] = - c * f; + te[ 8 ] = d; + + te[ 1 ] = af + be * d; + te[ 5 ] = ae - bf * d; + te[ 9 ] = - b * c; + + te[ 2 ] = bf - ae * d; + te[ 6 ] = be + af * d; + te[ 10 ] = a * c; + + } else if ( euler.order === 'YXZ' ) { + + var ce = c * e, cf = c * f, de = d * e, df = d * f; + + te[ 0 ] = ce + df * b; + te[ 4 ] = de * b - cf; + te[ 8 ] = a * d; + + te[ 1 ] = a * f; + te[ 5 ] = a * e; + te[ 9 ] = - b; + + te[ 2 ] = cf * b - de; + te[ 6 ] = df + ce * b; + te[ 10 ] = a * c; + + } else if ( euler.order === 'ZXY' ) { + + var ce = c * e, cf = c * f, de = d * e, df = d * f; + + te[ 0 ] = ce - df * b; + te[ 4 ] = - a * f; + te[ 8 ] = de + cf * b; + + te[ 1 ] = cf + de * b; + te[ 5 ] = a * e; + te[ 9 ] = df - ce * b; + + te[ 2 ] = - a * d; + te[ 6 ] = b; + te[ 10 ] = a * c; + + } else if ( euler.order === 'ZYX' ) { + + var ae = a * e, af = a * f, be = b * e, bf = b * f; + + te[ 0 ] = c * e; + te[ 4 ] = be * d - af; + te[ 8 ] = ae * d + bf; + + te[ 1 ] = c * f; + te[ 5 ] = bf * d + ae; + te[ 9 ] = af * d - be; + + te[ 2 ] = - d; + te[ 6 ] = b * c; + te[ 10 ] = a * c; + + } else if ( euler.order === 'YZX' ) { + + var ac = a * c, ad = a * d, bc = b * c, bd = b * d; + + te[ 0 ] = c * e; + te[ 4 ] = bd - ac * f; + te[ 8 ] = bc * f + ad; + + te[ 1 ] = f; + te[ 5 ] = a * e; + te[ 9 ] = - b * e; + + te[ 2 ] = - d * e; + te[ 6 ] = ad * f + bc; + te[ 10 ] = ac - bd * f; + + } else if ( euler.order === 'XZY' ) { + + var ac = a * c, ad = a * d, bc = b * c, bd = b * d; + + te[ 0 ] = c * e; + te[ 4 ] = - f; + te[ 8 ] = d * e; + + te[ 1 ] = ac * f + bd; + te[ 5 ] = a * e; + te[ 9 ] = ad * f - bc; + + te[ 2 ] = bc * f - ad; + te[ 6 ] = b * e; + te[ 10 ] = bd * f + ac; + + } + + // bottom row + te[ 3 ] = 0; + te[ 7 ] = 0; + te[ 11 ] = 0; + + // last column + te[ 12 ] = 0; + te[ 13 ] = 0; + te[ 14 ] = 0; + te[ 15 ] = 1; + + return this; + + }, + + makeRotationFromQuaternion: function () { + + var zero = new Vector3( 0, 0, 0 ); + var one = new Vector3( 1, 1, 1 ); + + return function makeRotationFromQuaternion( q ) { + + return this.compose( zero, q, one ); + + }; + + }(), + + lookAt: function () { + + var x = new Vector3(); + var y = new Vector3(); + var z = new Vector3(); + + return function lookAt( eye, target, up ) { + + var te = this.elements; + + z.subVectors( eye, target ); + + if ( z.lengthSq() === 0 ) { + + // eye and target are in the same position + + z.z = 1; + + } + + z.normalize(); + x.crossVectors( up, z ); + + if ( x.lengthSq() === 0 ) { + + // up and z are parallel + + if ( Math.abs( up.z ) === 1 ) { + + z.x += 0.0001; + + } else { + + z.z += 0.0001; + + } + + z.normalize(); + x.crossVectors( up, z ); + + } + + x.normalize(); + y.crossVectors( z, x ); + + te[ 0 ] = x.x; te[ 4 ] = y.x; te[ 8 ] = z.x; + te[ 1 ] = x.y; te[ 5 ] = y.y; te[ 9 ] = z.y; + te[ 2 ] = x.z; te[ 6 ] = y.z; te[ 10 ] = z.z; + + return this; + + }; + + }(), + + multiply: function ( m, n ) { + + if ( n !== undefined ) { + + console.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' ); + return this.multiplyMatrices( m, n ); + + } + + return this.multiplyMatrices( this, m ); + + }, + + premultiply: function ( m ) { + + return this.multiplyMatrices( m, this ); + + }, + + multiplyMatrices: function ( a, b ) { + + var ae = a.elements; + var be = b.elements; + var te = this.elements; + + var a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ]; + var a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ]; + var a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ]; + var a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ]; + + var b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ]; + var b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ]; + var b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ]; + var b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ]; + + te[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41; + te[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42; + te[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43; + te[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44; + + te[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41; + te[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42; + te[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43; + te[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44; + + te[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41; + te[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42; + te[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43; + te[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44; + + te[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41; + te[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42; + te[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43; + te[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44; + + return this; + + }, + + multiplyScalar: function ( s ) { + + var te = this.elements; + + te[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s; + te[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s; + te[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s; + te[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s; + + return this; + + }, + + applyToBufferAttribute: function () { + + var v1 = new Vector3(); + + return function applyToBufferAttribute( attribute ) { + + for ( var i = 0, l = attribute.count; i < l; i ++ ) { + + v1.x = attribute.getX( i ); + v1.y = attribute.getY( i ); + v1.z = attribute.getZ( i ); + + v1.applyMatrix4( this ); + + attribute.setXYZ( i, v1.x, v1.y, v1.z ); + + } + + return attribute; + + }; + + }(), + + determinant: function () { + + var te = this.elements; + + var n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ]; + var n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ]; + var n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ]; + var n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ]; + + //TODO: make this more efficient + //( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm ) + + return ( + n41 * ( + + n14 * n23 * n32 + - n13 * n24 * n32 + - n14 * n22 * n33 + + n12 * n24 * n33 + + n13 * n22 * n34 + - n12 * n23 * n34 + ) + + n42 * ( + + n11 * n23 * n34 + - n11 * n24 * n33 + + n14 * n21 * n33 + - n13 * n21 * n34 + + n13 * n24 * n31 + - n14 * n23 * n31 + ) + + n43 * ( + + n11 * n24 * n32 + - n11 * n22 * n34 + - n14 * n21 * n32 + + n12 * n21 * n34 + + n14 * n22 * n31 + - n12 * n24 * n31 + ) + + n44 * ( + - n13 * n22 * n31 + - n11 * n23 * n32 + + n11 * n22 * n33 + + n13 * n21 * n32 + - n12 * n21 * n33 + + n12 * n23 * n31 + ) + + ); + + }, + + transpose: function () { + + var te = this.elements; + var tmp; + + tmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp; + tmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp; + tmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp; + + tmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp; + tmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp; + tmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp; + + return this; + + }, + + setPosition: function ( x, y, z ) { + + var te = this.elements; + + if ( x.isVector3 ) { + + te[ 12 ] = x.x; + te[ 13 ] = x.y; + te[ 14 ] = x.z; + + } else { + + te[ 12 ] = x; + te[ 13 ] = y; + te[ 14 ] = z; + + } + + return this; + + }, + + getInverse: function ( m, throwOnDegenerate ) { + + // based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm + var te = this.elements, + me = m.elements, + + n11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ], + n12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ], + n13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ], + n14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ], + + t11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44, + t12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44, + t13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44, + t14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34; + + var det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14; + + if ( det === 0 ) { + + var msg = "THREE.Matrix4: .getInverse() can't invert matrix, determinant is 0"; + + if ( throwOnDegenerate === true ) { + + throw new Error( msg ); + + } else { + + console.warn( msg ); + + } + + return this.identity(); + + } + + var detInv = 1 / det; + + te[ 0 ] = t11 * detInv; + te[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv; + te[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv; + te[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv; + + te[ 4 ] = t12 * detInv; + te[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv; + te[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv; + te[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv; + + te[ 8 ] = t13 * detInv; + te[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv; + te[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv; + te[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv; + + te[ 12 ] = t14 * detInv; + te[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv; + te[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv; + te[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv; + + return this; + + }, + + scale: function ( v ) { + + var te = this.elements; + var x = v.x, y = v.y, z = v.z; + + te[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z; + te[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z; + te[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z; + te[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z; + + return this; + + }, + + getMaxScaleOnAxis: function () { + + var te = this.elements; + + var scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ]; + var scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ]; + var scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ]; + + return Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) ); + + }, + + makeTranslation: function ( x, y, z ) { + + this.set( + + 1, 0, 0, x, + 0, 1, 0, y, + 0, 0, 1, z, + 0, 0, 0, 1 + + ); + + return this; + + }, + + makeRotationX: function ( theta ) { + + var c = Math.cos( theta ), s = Math.sin( theta ); + + this.set( + + 1, 0, 0, 0, + 0, c, - s, 0, + 0, s, c, 0, + 0, 0, 0, 1 + + ); + + return this; + + }, + + makeRotationY: function ( theta ) { + + var c = Math.cos( theta ), s = Math.sin( theta ); + + this.set( + + c, 0, s, 0, + 0, 1, 0, 0, + - s, 0, c, 0, + 0, 0, 0, 1 + + ); + + return this; + + }, + + makeRotationZ: function ( theta ) { + + var c = Math.cos( theta ), s = Math.sin( theta ); + + this.set( + + c, - s, 0, 0, + s, c, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1 + + ); + + return this; + + }, + + makeRotationAxis: function ( axis, angle ) { + + // Based on http://www.gamedev.net/reference/articles/article1199.asp + + var c = Math.cos( angle ); + var s = Math.sin( angle ); + var t = 1 - c; + var x = axis.x, y = axis.y, z = axis.z; + var tx = t * x, ty = t * y; + + this.set( + + tx * x + c, tx * y - s * z, tx * z + s * y, 0, + tx * y + s * z, ty * y + c, ty * z - s * x, 0, + tx * z - s * y, ty * z + s * x, t * z * z + c, 0, + 0, 0, 0, 1 + + ); + + return this; + + }, + + makeScale: function ( x, y, z ) { + + this.set( + + x, 0, 0, 0, + 0, y, 0, 0, + 0, 0, z, 0, + 0, 0, 0, 1 + + ); + + return this; + + }, + + makeShear: function ( x, y, z ) { + + this.set( + + 1, y, z, 0, + x, 1, z, 0, + x, y, 1, 0, + 0, 0, 0, 1 + + ); + + return this; + + }, + + compose: function ( position, quaternion, scale ) { + + var te = this.elements; + + var x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w; + var x2 = x + x, y2 = y + y, z2 = z + z; + var xx = x * x2, xy = x * y2, xz = x * z2; + var yy = y * y2, yz = y * z2, zz = z * z2; + var wx = w * x2, wy = w * y2, wz = w * z2; + + var sx = scale.x, sy = scale.y, sz = scale.z; + + te[ 0 ] = ( 1 - ( yy + zz ) ) * sx; + te[ 1 ] = ( xy + wz ) * sx; + te[ 2 ] = ( xz - wy ) * sx; + te[ 3 ] = 0; + + te[ 4 ] = ( xy - wz ) * sy; + te[ 5 ] = ( 1 - ( xx + zz ) ) * sy; + te[ 6 ] = ( yz + wx ) * sy; + te[ 7 ] = 0; + + te[ 8 ] = ( xz + wy ) * sz; + te[ 9 ] = ( yz - wx ) * sz; + te[ 10 ] = ( 1 - ( xx + yy ) ) * sz; + te[ 11 ] = 0; + + te[ 12 ] = position.x; + te[ 13 ] = position.y; + te[ 14 ] = position.z; + te[ 15 ] = 1; + + return this; + + }, + + decompose: function () { + + var vector = new Vector3(); + var matrix = new Matrix4(); + + return function decompose( position, quaternion, scale ) { + + var te = this.elements; + + var sx = vector.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length(); + var sy = vector.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length(); + var sz = vector.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length(); + + // if determine is negative, we need to invert one scale + var det = this.determinant(); + if ( det < 0 ) sx = - sx; + + position.x = te[ 12 ]; + position.y = te[ 13 ]; + position.z = te[ 14 ]; + + // scale the rotation part + matrix.copy( this ); + + var invSX = 1 / sx; + var invSY = 1 / sy; + var invSZ = 1 / sz; + + matrix.elements[ 0 ] *= invSX; + matrix.elements[ 1 ] *= invSX; + matrix.elements[ 2 ] *= invSX; + + matrix.elements[ 4 ] *= invSY; + matrix.elements[ 5 ] *= invSY; + matrix.elements[ 6 ] *= invSY; + + matrix.elements[ 8 ] *= invSZ; + matrix.elements[ 9 ] *= invSZ; + matrix.elements[ 10 ] *= invSZ; + + quaternion.setFromRotationMatrix( matrix ); + + scale.x = sx; + scale.y = sy; + scale.z = sz; + + return this; + + }; + + }(), + + makePerspective: function ( left, right, top, bottom, near, far ) { + + if ( far === undefined ) { + + console.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' ); + + } + + var te = this.elements; + var x = 2 * near / ( right - left ); + var y = 2 * near / ( top - bottom ); + + var a = ( right + left ) / ( right - left ); + var b = ( top + bottom ) / ( top - bottom ); + var c = - ( far + near ) / ( far - near ); + var d = - 2 * far * near / ( far - near ); + + te[ 0 ] = x; te[ 4 ] = 0; te[ 8 ] = a; te[ 12 ] = 0; + te[ 1 ] = 0; te[ 5 ] = y; te[ 9 ] = b; te[ 13 ] = 0; + te[ 2 ] = 0; te[ 6 ] = 0; te[ 10 ] = c; te[ 14 ] = d; + te[ 3 ] = 0; te[ 7 ] = 0; te[ 11 ] = - 1; te[ 15 ] = 0; + + return this; + + }, + + makeOrthographic: function ( left, right, top, bottom, near, far ) { + + var te = this.elements; + var w = 1.0 / ( right - left ); + var h = 1.0 / ( top - bottom ); + var p = 1.0 / ( far - near ); + + var x = ( right + left ) * w; + var y = ( top + bottom ) * h; + var z = ( far + near ) * p; + + te[ 0 ] = 2 * w; te[ 4 ] = 0; te[ 8 ] = 0; te[ 12 ] = - x; + te[ 1 ] = 0; te[ 5 ] = 2 * h; te[ 9 ] = 0; te[ 13 ] = - y; + te[ 2 ] = 0; te[ 6 ] = 0; te[ 10 ] = - 2 * p; te[ 14 ] = - z; + te[ 3 ] = 0; te[ 7 ] = 0; te[ 11 ] = 0; te[ 15 ] = 1; + + return this; + + }, + + equals: function ( matrix ) { + + var te = this.elements; + var me = matrix.elements; + + for ( var i = 0; i < 16; i ++ ) { + + if ( te[ i ] !== me[ i ] ) return false; + + } + + return true; + + }, + + fromArray: function ( array, offset ) { + + if ( offset === undefined ) offset = 0; + + for ( var i = 0; i < 16; i ++ ) { + + this.elements[ i ] = array[ i + offset ]; + + } + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) array = []; + if ( offset === undefined ) offset = 0; + + var te = this.elements; + + array[ offset ] = te[ 0 ]; + array[ offset + 1 ] = te[ 1 ]; + array[ offset + 2 ] = te[ 2 ]; + array[ offset + 3 ] = te[ 3 ]; + + array[ offset + 4 ] = te[ 4 ]; + array[ offset + 5 ] = te[ 5 ]; + array[ offset + 6 ] = te[ 6 ]; + array[ offset + 7 ] = te[ 7 ]; + + array[ offset + 8 ] = te[ 8 ]; + array[ offset + 9 ] = te[ 9 ]; + array[ offset + 10 ] = te[ 10 ]; + array[ offset + 11 ] = te[ 11 ]; + + array[ offset + 12 ] = te[ 12 ]; + array[ offset + 13 ] = te[ 13 ]; + array[ offset + 14 ] = te[ 14 ]; + array[ offset + 15 ] = te[ 15 ]; + + return array; + + } + + } ); + + var alphamap_fragment = "#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\n#endif"; + + var alphamap_pars_fragment = "#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif"; + + var alphatest_fragment = "#ifdef ALPHATEST\n\tif ( diffuseColor.a < ALPHATEST ) discard;\n#endif"; + + var aomap_fragment = "#ifdef USE_AOMAP\n\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\n\treflectedLight.indirectDiffuse *= ambientOcclusion;\n\t#if defined( USE_ENVMAP ) && defined( PHYSICAL )\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\n\t#endif\n#endif"; + + var aomap_pars_fragment = "#ifdef USE_AOMAP\n\tuniform sampler2D aoMap;\n\tuniform float aoMapIntensity;\n#endif"; + + var begin_vertex = "vec3 transformed = vec3( position );"; + + var beginnormal_vertex = "vec3 objectNormal = vec3( normal );\n#ifdef USE_TANGENT\n\tvec3 objectTangent = vec3( tangent.xyz );\n#endif"; + + var bsdfs = "vec2 integrateSpecularBRDF( const in float dotNV, const in float roughness ) {\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\treturn vec2( -1.04, 1.04 ) * a004 + r.zw;\n}\nfloat punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\tif( cutoffDistance > 0.0 ) {\n\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t}\n\treturn distanceFalloff;\n#else\n\tif( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t}\n\treturn 1.0;\n#endif\n}\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\n\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\n}\nvec3 F_Schlick_RoughnessDependent( const in vec3 F0, const in float dotNV, const in float roughness ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotNV - 6.98316 ) * dotNV );\n\tvec3 Fr = max( vec3( 1.0 - roughness ), F0 ) - F0;\n\treturn Fr * fresnel + F0;\n}\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\treturn 1.0 / ( gl * gv );\n}\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNL = saturate( dot( geometry.normal, incidentLight.direction ) );\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\tfloat D = D_GGX( alpha, dotNH );\n\treturn F * ( G * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\nvec3 BRDF_Specular_GGX_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\treturn specularColor * brdf.x + brdf.y;\n}\nvoid BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tvec3 F = F_Schlick_RoughnessDependent( specularColor, dotNV, roughness );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\tvec3 FssEss = F * brdf.x + brdf.y;\n\tfloat Ess = brdf.x + brdf.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\n\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\n}\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\n\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\n}"; + + var bumpmap_pars_fragment = "#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\n\t\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\n\t\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 );\n\t\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif"; + + var clipping_planes_fragment = "#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vViewPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\tif ( clipped ) discard;\n\t#endif\n#endif"; + + var clipping_planes_pars_fragment = "#if NUM_CLIPPING_PLANES > 0\n\t#if ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\n\t\tvarying vec3 vViewPosition;\n\t#endif\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif"; + + var clipping_planes_pars_vertex = "#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\n\tvarying vec3 vViewPosition;\n#endif"; + + var clipping_planes_vertex = "#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif"; + + var color_fragment = "#ifdef USE_COLOR\n\tdiffuseColor.rgb *= vColor;\n#endif"; + + var color_pars_fragment = "#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif"; + + var color_pars_vertex = "#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif"; + + var color_vertex = "#ifdef USE_COLOR\n\tvColor.xyz = color.xyz;\n#endif"; + + var common = "#define PI 3.14159265359\n#define PI2 6.28318530718\n#define PI_HALF 1.5707963267949\n#define RECIPROCAL_PI 0.31830988618\n#define RECIPROCAL_PI2 0.15915494\n#define LOG2 1.442695\n#define EPSILON 1e-6\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#define whiteCompliment(a) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract(sin(sn) * c);\n}\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\tfloat distance = dot( planeNormal, point - pointOnPlane );\n\treturn - distance * planeNormal + point;\n}\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn sign( dot( point - pointOnPlane, planeNormal ) );\n}\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat linearToRelativeLuminance( const in vec3 color ) {\n\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\n\treturn dot( weights, color.rgb );\n}"; + + var cube_uv_reflection_fragment = "#ifdef ENVMAP_TYPE_CUBE_UV\n#define cubeUV_textureSize (1024.0)\nint getFaceFromDirection(vec3 direction) {\n\tvec3 absDirection = abs(direction);\n\tint face = -1;\n\tif( absDirection.x > absDirection.z ) {\n\t\tif(absDirection.x > absDirection.y )\n\t\t\tface = direction.x > 0.0 ? 0 : 3;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\telse {\n\t\tif(absDirection.z > absDirection.y )\n\t\t\tface = direction.z > 0.0 ? 2 : 5;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\treturn face;\n}\n#define cubeUV_maxLods1 (log2(cubeUV_textureSize*0.25) - 1.0)\n#define cubeUV_rangeClamp (exp2((6.0 - 1.0) * 2.0))\nvec2 MipLevelInfo( vec3 vec, float roughnessLevel, float roughness ) {\n\tfloat scale = exp2(cubeUV_maxLods1 - roughnessLevel);\n\tfloat dxRoughness = dFdx(roughness);\n\tfloat dyRoughness = dFdy(roughness);\n\tvec3 dx = dFdx( vec * scale * dxRoughness );\n\tvec3 dy = dFdy( vec * scale * dyRoughness );\n\tfloat d = max( dot( dx, dx ), dot( dy, dy ) );\n\td = clamp(d, 1.0, cubeUV_rangeClamp);\n\tfloat mipLevel = 0.5 * log2(d);\n\treturn vec2(floor(mipLevel), fract(mipLevel));\n}\n#define cubeUV_maxLods2 (log2(cubeUV_textureSize*0.25) - 2.0)\n#define cubeUV_rcpTextureSize (1.0 / cubeUV_textureSize)\nvec2 getCubeUV(vec3 direction, float roughnessLevel, float mipLevel) {\n\tmipLevel = roughnessLevel > cubeUV_maxLods2 - 3.0 ? 0.0 : mipLevel;\n\tfloat a = 16.0 * cubeUV_rcpTextureSize;\n\tvec2 exp2_packed = exp2( vec2( roughnessLevel, mipLevel ) );\n\tvec2 rcp_exp2_packed = vec2( 1.0 ) / exp2_packed;\n\tfloat powScale = exp2_packed.x * exp2_packed.y;\n\tfloat scale = rcp_exp2_packed.x * rcp_exp2_packed.y * 0.25;\n\tfloat mipOffset = 0.75*(1.0 - rcp_exp2_packed.y) * rcp_exp2_packed.x;\n\tbool bRes = mipLevel == 0.0;\n\tscale = bRes && (scale < a) ? a : scale;\n\tvec3 r;\n\tvec2 offset;\n\tint face = getFaceFromDirection(direction);\n\tfloat rcpPowScale = 1.0 / powScale;\n\tif( face == 0) {\n\t\tr = vec3(direction.x, -direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 1) {\n\t\tr = vec3(direction.y, direction.x, direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 2) {\n\t\tr = vec3(direction.z, direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 3) {\n\t\tr = vec3(direction.x, direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse if( face == 4) {\n\t\tr = vec3(direction.y, direction.x, -direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse {\n\t\tr = vec3(direction.z, -direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\tr = normalize(r);\n\tfloat texelOffset = 0.5 * cubeUV_rcpTextureSize;\n\tvec2 s = ( r.yz / abs( r.x ) + vec2( 1.0 ) ) * 0.5;\n\tvec2 base = offset + vec2( texelOffset );\n\treturn base + s * ( scale - 2.0 * texelOffset );\n}\n#define cubeUV_maxLods3 (log2(cubeUV_textureSize*0.25) - 3.0)\nvec4 textureCubeUV( sampler2D envMap, vec3 reflectedDirection, float roughness ) {\n\tfloat roughnessVal = roughness* cubeUV_maxLods3;\n\tfloat r1 = floor(roughnessVal);\n\tfloat r2 = r1 + 1.0;\n\tfloat t = fract(roughnessVal);\n\tvec2 mipInfo = MipLevelInfo(reflectedDirection, r1, roughness);\n\tfloat s = mipInfo.y;\n\tfloat level0 = mipInfo.x;\n\tfloat level1 = level0 + 1.0;\n\tlevel1 = level1 > 5.0 ? 5.0 : level1;\n\tlevel0 += min( floor( s + 0.5 ), 5.0 );\n\tvec2 uv_10 = getCubeUV(reflectedDirection, r1, level0);\n\tvec4 color10 = envMapTexelToLinear(texture2D(envMap, uv_10));\n\tvec2 uv_20 = getCubeUV(reflectedDirection, r2, level0);\n\tvec4 color20 = envMapTexelToLinear(texture2D(envMap, uv_20));\n\tvec4 result = mix(color10, color20, t);\n\treturn vec4(result.rgb, 1.0);\n}\n#endif"; + + var defaultnormal_vertex = "vec3 transformedNormal = normalMatrix * objectNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = normalMatrix * objectTangent;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif"; + + var displacementmap_pars_vertex = "#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif"; + + var displacementmap_vertex = "#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, uv ).x * displacementScale + displacementBias );\n#endif"; + + var emissivemap_fragment = "#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif"; + + var emissivemap_pars_fragment = "#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif"; + + var encodings_fragment = "gl_FragColor = linearToOutputTexel( gl_FragColor );"; + + var encodings_pars_fragment = "\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\n}\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\n}\nvec4 sRGBToLinear( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}\nvec4 RGBEToLinear( in vec4 value ) {\n\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\n}\nvec4 LinearToRGBE( in vec4 value ) {\n\tfloat maxComponent = max( max( value.r, value.g ), value.b );\n\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\n\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\n}\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\n}\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\n\tM = ceil( M * 255.0 ) / 255.0;\n\treturn vec4( value.rgb / ( M * maxRange ), M );\n}\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\n}\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat D = max( maxRange / maxRGB, 1.0 );\n\tD = min( floor( D ) / 255.0, 1.0 );\n\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\n}\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\nvec4 LinearToLogLuv( in vec4 value ) {\n\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\n\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\n\tvec4 vResult;\n\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\n\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\n\tvResult.w = fract( Le );\n\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\n\treturn vResult;\n}\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\nvec4 LogLuvToLinear( in vec4 value ) {\n\tfloat Le = value.z * 255.0 + value.w;\n\tvec3 Xp_Y_XYZp;\n\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\n\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\n\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\n\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\n\treturn vec4( max( vRGB, 0.0 ), 1.0 );\n}"; + + var envmap_fragment = "#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\tvec2 sampleUV;\n\t\treflectVec = normalize( reflectVec );\n\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\tvec4 envColor = texture2D( envMap, sampleUV );\n\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\treflectVec = normalize( reflectVec );\n\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\n\t\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\tenvColor = envMapTexelToLinear( envColor );\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif"; + + var envmap_pars_fragment = "#if defined( USE_ENVMAP ) || defined( PHYSICAL )\n\tuniform float reflectivity;\n\tuniform float envMapIntensity;\n#endif\n#ifdef USE_ENVMAP\n\t#if ! defined( PHYSICAL ) && ( defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) )\n\t\tvarying vec3 vWorldPosition;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\tuniform float flipEnvMap;\n\tuniform int maxMipLevel;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( PHYSICAL )\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif"; + + var envmap_pars_vertex = "#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif"; + + var envmap_vertex = "#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif"; + + var fog_vertex = "#ifdef USE_FOG\n\tfogDepth = -mvPosition.z;\n#endif"; + + var fog_pars_vertex = "#ifdef USE_FOG\n\tvarying float fogDepth;\n#endif"; + + var fog_fragment = "#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = whiteCompliment( exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 ) );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif"; + + var fog_pars_fragment = "#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float fogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif"; + + var gradientmap_pars_fragment = "#ifdef TOON\n\tuniform sampler2D gradientMap;\n\tvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\t\tfloat dotNL = dot( normal, lightDirection );\n\t\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t\t#ifdef USE_GRADIENTMAP\n\t\t\treturn texture2D( gradientMap, coord ).rgb;\n\t\t#else\n\t\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\n\t\t#endif\n\t}\n#endif"; + + var lightmap_fragment = "#ifdef USE_LIGHTMAP\n\treflectedLight.indirectDiffuse += PI * texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n#endif"; + + var lightmap_pars_fragment = "#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif"; + + var lights_lambert_vertex = "vec3 diffuse = vec3( 1.0 );\nGeometricContext geometry;\ngeometry.position = mvPosition.xyz;\ngeometry.normal = normalize( transformedNormal );\ngeometry.viewDir = normalize( -mvPosition.xyz );\nGeometricContext backGeometry;\nbackGeometry.position = geometry.position;\nbackGeometry.normal = -geometry.normal;\nbackGeometry.viewDir = geometry.viewDir;\nvLightFront = vec3( 0.0 );\nvIndirectFront = vec3( 0.0 );\n#ifdef DOUBLE_SIDED\n\tvLightBack = vec3( 0.0 );\n\tvIndirectBack = vec3( 0.0 );\n#endif\nIncidentLight directLight;\nfloat dotNL;\nvec3 directLightColor_Diffuse;\n#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\n\t\t#endif\n\t}\n#endif"; + + var lights_pars_begin = "uniform vec3 ambientLightColor;\nuniform vec3 lightProbe[ 9 ];\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in GeometricContext geometry ) {\n\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treturn irradiance;\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tdirectLight.color = directionalLight.color;\n\t\tdirectLight.direction = directionalLight.direction;\n\t\tdirectLight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t\tfloat shadowCameraNear;\n\t\tfloat shadowCameraFar;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tdirectLight.color = pointLight.color;\n\t\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\n\t\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tfloat angleCos = dot( directLight.direction, spotLight.direction );\n\t\tif ( angleCos > spotLight.coneCos ) {\n\t\t\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\t\tdirectLight.color = spotLight.color;\n\t\t\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tdirectLight.visible = true;\n\t\t} else {\n\t\t\tdirectLight.color = vec3( 0.0 );\n\t\t\tdirectLight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\n\t\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tirradiance *= PI;\n\t\t#endif\n\t\treturn irradiance;\n\t}\n#endif"; + + var envmap_physical_pars_fragment = "#if defined( USE_ENVMAP ) && defined( PHYSICAL )\n\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\n\t\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, queryVec, 1.0 );\n\t\t#else\n\t\t\tvec4 envMapColor = vec4( 0.0 );\n\t\t#endif\n\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t}\n\tfloat getSpecularMIPLevel( const in float blinnShininessExponent, const in int maxMIPLevel ) {\n\t\tfloat maxMIPLevelScalar = float( maxMIPLevel );\n\t\tfloat desiredMIPLevel = maxMIPLevelScalar + 0.79248 - 0.5 * log2( pow2( blinnShininessExponent ) + 1.0 );\n\t\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\n\t}\n\tvec3 getLightProbeIndirectRadiance( const in GeometricContext geometry, const in float blinnShininessExponent, const in int maxMIPLevel ) {\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( -geometry.viewDir, geometry.normal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( -geometry.viewDir, geometry.normal, refractionRatio );\n\t\t#endif\n\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\tfloat specularMIPLevel = getSpecularMIPLevel( blinnShininessExponent, maxMIPLevel );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, queryReflectVec, BlinnExponentToGGXRoughness(blinnShininessExponent ));\n\t\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\t\tvec2 sampleUV;\n\t\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#endif\n\t\treturn envMapColor.rgb * envMapIntensity;\n\t}\n#endif"; + + var lights_phong_fragment = "BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;"; + + var lights_phong_pars_fragment = "varying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\nstruct BlinnPhongMaterial {\n\tvec3\tdiffuseColor;\n\tvec3\tspecularColor;\n\tfloat\tspecularShininess;\n\tfloat\tspecularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\t#ifdef TOON\n\t\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\t#else\n\t\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\t\tvec3 irradiance = dotNL * directLight.color;\n\t#endif\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\n#define Material_LightProbeLOD( material )\t(0)"; + + var lights_physical_fragment = "PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nmaterial.specularRoughness = clamp( roughnessFactor, 0.04, 1.0 );\n#ifdef STANDARD\n\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.clearCoat = saturate( clearCoat );\tmaterial.clearCoatRoughness = clamp( clearCoatRoughness, 0.04, 1.0 );\n#endif"; + + var lights_physical_pars_fragment = "struct PhysicalMaterial {\n\tvec3\tdiffuseColor;\n\tfloat\tspecularRoughness;\n\tvec3\tspecularColor;\n\t#ifndef STANDARD\n\t\tfloat clearCoat;\n\t\tfloat clearCoatRoughness;\n\t#endif\n};\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\nfloat clearCoatDHRApprox( const in float roughness, const in float dotNL ) {\n\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.specularRoughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\t#ifndef STANDARD\n\t\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\n\t#else\n\t\tfloat clearCoatDHR = 0.0;\n\t#endif\n\treflectedLight.directSpecular += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry, material.specularColor, material.specularRoughness );\n\treflectedLight.directDiffuse += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\t#ifndef STANDARD\n\t\treflectedLight.directSpecular += irradiance * material.clearCoat * BRDF_Specular_GGX( directLight, geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\n\t#endif\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t#ifndef ENVMAP_TYPE_CUBE_UV\n\t\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\t#endif\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearCoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifndef STANDARD\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\tfloat dotNL = dotNV;\n\t\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\n\t#else\n\t\tfloat clearCoatDHR = 0.0;\n\t#endif\n\tfloat clearCoatInv = 1.0 - clearCoatDHR;\n\t#if defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec3 singleScattering = vec3( 0.0 );\n\t\tvec3 multiScattering = vec3( 0.0 );\n\t\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\t\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\n\t\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\n\t\treflectedLight.indirectSpecular += clearCoatInv * radiance * singleScattering;\n\t\treflectedLight.indirectDiffuse += multiScattering * cosineWeightedIrradiance;\n\t\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n\t#else\n\t\treflectedLight.indirectSpecular += clearCoatInv * radiance * BRDF_Specular_GGX_Environment( geometry, material.specularColor, material.specularRoughness );\n\t#endif\n\t#ifndef STANDARD\n\t\treflectedLight.indirectSpecular += clearCoatRadiance * material.clearCoat * BRDF_Specular_GGX_Environment( geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\n\t#endif\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\n#define Material_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.specularRoughness )\n#define Material_ClearCoat_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.clearCoatRoughness )\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}"; + + var lights_fragment_begin = "\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = normalize( vViewPosition );\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( pointLight.shadow, directLight.visible ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( spotLight.shadow, directLight.visible ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( directionalLight.shadow, directLight.visible ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\tirradiance += getLightProbeIrradiance( lightProbe, geometry );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t}\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearCoatRadiance = vec3( 0.0 );\n#endif"; + + var lights_fragment_maps = "#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec3 lightMapIrradiance = texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tlightMapIrradiance *= PI;\n\t\t#endif\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( PHYSICAL ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tirradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getLightProbeIndirectRadiance( geometry, Material_BlinnShininessExponent( material ), maxMipLevel );\n\t#ifndef STANDARD\n\t\tclearCoatRadiance += getLightProbeIndirectRadiance( geometry, Material_ClearCoat_BlinnShininessExponent( material ), maxMipLevel );\n\t#endif\n#endif"; + + var lights_fragment_end = "#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, irradiance, clearCoatRadiance, geometry, material, reflectedLight );\n#endif"; + + var logdepthbuf_fragment = "#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif"; + + var logdepthbuf_pars_fragment = "#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n#endif"; + + var logdepthbuf_pars_vertex = "#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif"; + + var logdepthbuf_vertex = "#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t#else\n\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\tgl_Position.z *= gl_Position.w;\n\t#endif\n#endif"; + + var map_fragment = "#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif"; + + var map_pars_fragment = "#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif"; + + var map_particle_fragment = "#ifdef USE_MAP\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n\tvec4 mapTexel = texture2D( map, uv );\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\n#endif"; + + var map_particle_pars_fragment = "#ifdef USE_MAP\n\tuniform mat3 uvTransform;\n\tuniform sampler2D map;\n#endif"; + + var metalnessmap_fragment = "float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif"; + + var metalnessmap_pars_fragment = "#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif"; + + var morphnormal_vertex = "#ifdef USE_MORPHNORMALS\n\tobjectNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\n\tobjectNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\n\tobjectNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\n\tobjectNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\n#endif"; + + var morphtarget_pars_vertex = "#ifdef USE_MORPHTARGETS\n\t#ifndef USE_MORPHNORMALS\n\tuniform float morphTargetInfluences[ 8 ];\n\t#else\n\tuniform float morphTargetInfluences[ 4 ];\n\t#endif\n#endif"; + + var morphtarget_vertex = "#ifdef USE_MORPHTARGETS\n\ttransformed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\n\ttransformed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\n\ttransformed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\n\ttransformed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\n\t#ifndef USE_MORPHNORMALS\n\ttransformed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\n\ttransformed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\n\ttransformed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\n\ttransformed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\n\t#endif\n#endif"; + + var normal_fragment_begin = "#ifdef FLAT_SHADED\n\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\n\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n\t#ifdef USE_TANGENT\n\t\tvec3 tangent = normalize( vTangent );\n\t\tvec3 bitangent = normalize( vBitangent );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\ttangent = tangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t\tbitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t#endif\n\t#endif\n#endif"; + + var normal_fragment_maps = "#ifdef USE_NORMALMAP\n\t#ifdef OBJECTSPACE_NORMALMAP\n\t\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\t#ifdef FLIP_SIDED\n\t\t\tnormal = - normal;\n\t\t#endif\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t#endif\n\t\tnormal = normalize( normalMatrix * normal );\n\t#else\n\t\t#ifdef USE_TANGENT\n\t\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\n\t\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\t\tmapN.xy = normalScale * mapN.xy;\n\t\t\tnormal = normalize( vTBN * mapN );\n\t\t#else\n\t\t\tnormal = perturbNormal2Arb( -vViewPosition, normal );\n\t\t#endif\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n#endif"; + + var normalmap_pars_fragment = "#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n\t#ifdef OBJECTSPACE_NORMALMAP\n\t\tuniform mat3 normalMatrix;\n\t#else\n\t\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\n\t\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n\t\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n\t\t\tvec2 st0 = dFdx( vUv.st );\n\t\t\tvec2 st1 = dFdy( vUv.st );\n\t\t\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\n\t\t\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\n\t\t\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\n\t\t\tvec3 N = normalize( surf_norm );\n\t\t\tmat3 tsn = mat3( S, T, N );\n\t\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\t\tmapN.xy *= normalScale;\n\t\t\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t\treturn normalize( tsn * mapN );\n\t\t}\n\t#endif\n#endif"; + + var packing = "vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}"; + + var premultiplied_alpha_fragment = "#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif"; + + var project_vertex = "vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );\ngl_Position = projectionMatrix * mvPosition;"; + + var dithering_fragment = "#if defined( DITHERING )\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif"; + + var dithering_pars_fragment = "#if defined( DITHERING )\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif"; + + var roughnessmap_fragment = "float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif"; + + var roughnessmap_pars_fragment = "#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif"; + + var shadowmap_pars_fragment = "#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHTS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHTS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHTS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tfloat texture2DShadowLerp( sampler2D depths, vec2 size, vec2 uv, float compare ) {\n\t\tconst vec2 offset = vec2( 0.0, 1.0 );\n\t\tvec2 texelSize = vec2( 1.0 ) / size;\n\t\tvec2 centroidUV = floor( uv * size + 0.5 ) / size;\n\t\tfloat lb = texture2DCompare( depths, centroidUV + texelSize * offset.xx, compare );\n\t\tfloat lt = texture2DCompare( depths, centroidUV + texelSize * offset.xy, compare );\n\t\tfloat rb = texture2DCompare( depths, centroidUV + texelSize * offset.yx, compare );\n\t\tfloat rt = texture2DCompare( depths, centroidUV + texelSize * offset.yy, compare );\n\t\tvec2 f = fract( uv * size + 0.5 );\n\t\tfloat a = mix( lb, lt, f.y );\n\t\tfloat b = mix( rb, rt, f.y );\n\t\tfloat c = mix( a, b, f.x );\n\t\treturn c;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n\t\tbool inFrustum = all( inFrustumVec );\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\t\tbool frustumTest = all( frustumTestVec );\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tshadow = (\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif"; + + var shadowmap_pars_vertex = "#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHTS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHTS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHTS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\n\t#endif\n#endif"; + + var shadowmap_vertex = "#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n#endif"; + + var shadowmask_pars_fragment = "float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tshadow *= bool( directionalLight.shadow ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tshadow *= bool( spotLight.shadow ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tshadow *= bool( pointLight.shadow ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#endif\n\t#endif\n\treturn shadow;\n}"; + + var skinbase_vertex = "#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif"; + + var skinning_pars_vertex = "#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\t#ifdef BONE_TEXTURE\n\t\tuniform sampler2D boneTexture;\n\t\tuniform int boneTextureSize;\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tfloat j = i * 4.0;\n\t\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\t\ty = dy * ( y + 0.5 );\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\t\treturn bone;\n\t\t}\n\t#else\n\t\tuniform mat4 boneMatrices[ MAX_BONES ];\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tmat4 bone = boneMatrices[ int(i) ];\n\t\t\treturn bone;\n\t\t}\n\t#endif\n#endif"; + + var skinning_vertex = "#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif"; + + var skinnormal_vertex = "#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif"; + + var specularmap_fragment = "float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif"; + + var specularmap_pars_fragment = "#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif"; + + var tonemapping_fragment = "#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif"; + + var tonemapping_pars_fragment = "#ifndef saturate\n\t#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nuniform float toneMappingWhitePoint;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\nvec3 Uncharted2ToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( ( color * ( 2.51 * color + 0.03 ) ) / ( color * ( 2.43 * color + 0.59 ) + 0.14 ) );\n}"; + + var uv_pars_fragment = "#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvarying vec2 vUv;\n#endif"; + + var uv_pars_vertex = "#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n#endif"; + + var uv_vertex = "#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif"; + + var uv2_pars_fragment = "#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif"; + + var uv2_pars_vertex = "#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n#endif"; + + var uv2_vertex = "#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = uv2;\n#endif"; + + var worldpos_vertex = "#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\n\tvec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );\n#endif"; + + var background_frag = "uniform sampler2D t2D;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include \n\t#include \n}"; + + var background_vert = "varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}"; + + var cube_frag = "uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\tgl_FragColor.a *= opacity;\n\t#include \n\t#include \n}"; + + var cube_vert = "varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}"; + + var depth_frag = "#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - gl_FragCoord.z ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\n\t#endif\n}"; + + var depth_vert = "#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var distanceRGBA_frag = "#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#include \n\t#include \n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}"; + + var distanceRGBA_vert = "#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvWorldPosition = worldPosition.xyz;\n}"; + + var equirect_frag = "uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV;\n\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\n\tvec4 texColor = texture2D( tEquirect, sampleUV );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include \n\t#include \n}"; + + var equirect_vert = "varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}"; + + var linedashed_frag = "uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var linedashed_vert = "uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvLineDistance = scale * lineDistance;\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}"; + + var meshbasic_frag = "uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\treflectedLight.indirectDiffuse += texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var meshbasic_vert = "#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifdef USE_ENVMAP\n\t#include \n\t#include \n\t#include \n\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var meshlambert_frag = "uniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\n\t#else\n\t\treflectedLight.indirectDiffuse += vIndirectFront;\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\n\t#else\n\t\treflectedLight.directDiffuse = vLightFront;\n\t#endif\n\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var meshlambert_vert = "#define LAMBERT\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var meshmatcap_frag = "#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t\tmatcapColor = matcapTexelToLinear( matcapColor );\n\t#else\n\t\tvec4 matcapColor = vec4( 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var meshmatcap_vert = "#define MATCAP\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifndef FLAT_SHADED\n\t\tvNormal = normalize( transformedNormal );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n}"; + + var meshphong_frag = "#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var meshphong_vert = "#define PHONG\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var meshphysical_frag = "#define PHYSICAL\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifndef STANDARD\n\tuniform float clearCoat;\n\tuniform float clearCoatRoughness;\n#endif\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var meshphysical_vert = "#define PHYSICAL\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}"; + + var normal_frag = "#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n}"; + + var normal_vert = "#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}"; + + var points_frag = "uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var points_vert = "uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var shadow_frag = "uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include \n}"; + + var shadow_vert = "#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var sprite_frag = "uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n}"; + + var sprite_vert = "uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}"; + + var ShaderChunk = { + alphamap_fragment: alphamap_fragment, + alphamap_pars_fragment: alphamap_pars_fragment, + alphatest_fragment: alphatest_fragment, + aomap_fragment: aomap_fragment, + aomap_pars_fragment: aomap_pars_fragment, + begin_vertex: begin_vertex, + beginnormal_vertex: beginnormal_vertex, + bsdfs: bsdfs, + bumpmap_pars_fragment: bumpmap_pars_fragment, + clipping_planes_fragment: clipping_planes_fragment, + clipping_planes_pars_fragment: clipping_planes_pars_fragment, + clipping_planes_pars_vertex: clipping_planes_pars_vertex, + clipping_planes_vertex: clipping_planes_vertex, + color_fragment: color_fragment, + color_pars_fragment: color_pars_fragment, + color_pars_vertex: color_pars_vertex, + color_vertex: color_vertex, + common: common, + cube_uv_reflection_fragment: cube_uv_reflection_fragment, + defaultnormal_vertex: defaultnormal_vertex, + displacementmap_pars_vertex: displacementmap_pars_vertex, + displacementmap_vertex: displacementmap_vertex, + emissivemap_fragment: emissivemap_fragment, + emissivemap_pars_fragment: emissivemap_pars_fragment, + encodings_fragment: encodings_fragment, + encodings_pars_fragment: encodings_pars_fragment, + envmap_fragment: envmap_fragment, + envmap_pars_fragment: envmap_pars_fragment, + envmap_pars_vertex: envmap_pars_vertex, + envmap_physical_pars_fragment: envmap_physical_pars_fragment, + envmap_vertex: envmap_vertex, + fog_vertex: fog_vertex, + fog_pars_vertex: fog_pars_vertex, + fog_fragment: fog_fragment, + fog_pars_fragment: fog_pars_fragment, + gradientmap_pars_fragment: gradientmap_pars_fragment, + lightmap_fragment: lightmap_fragment, + lightmap_pars_fragment: lightmap_pars_fragment, + lights_lambert_vertex: lights_lambert_vertex, + lights_pars_begin: lights_pars_begin, + lights_phong_fragment: lights_phong_fragment, + lights_phong_pars_fragment: lights_phong_pars_fragment, + lights_physical_fragment: lights_physical_fragment, + lights_physical_pars_fragment: lights_physical_pars_fragment, + lights_fragment_begin: lights_fragment_begin, + lights_fragment_maps: lights_fragment_maps, + lights_fragment_end: lights_fragment_end, + logdepthbuf_fragment: logdepthbuf_fragment, + logdepthbuf_pars_fragment: logdepthbuf_pars_fragment, + logdepthbuf_pars_vertex: logdepthbuf_pars_vertex, + logdepthbuf_vertex: logdepthbuf_vertex, + map_fragment: map_fragment, + map_pars_fragment: map_pars_fragment, + map_particle_fragment: map_particle_fragment, + map_particle_pars_fragment: map_particle_pars_fragment, + metalnessmap_fragment: metalnessmap_fragment, + metalnessmap_pars_fragment: metalnessmap_pars_fragment, + morphnormal_vertex: morphnormal_vertex, + morphtarget_pars_vertex: morphtarget_pars_vertex, + morphtarget_vertex: morphtarget_vertex, + normal_fragment_begin: normal_fragment_begin, + normal_fragment_maps: normal_fragment_maps, + normalmap_pars_fragment: normalmap_pars_fragment, + packing: packing, + premultiplied_alpha_fragment: premultiplied_alpha_fragment, + project_vertex: project_vertex, + dithering_fragment: dithering_fragment, + dithering_pars_fragment: dithering_pars_fragment, + roughnessmap_fragment: roughnessmap_fragment, + roughnessmap_pars_fragment: roughnessmap_pars_fragment, + shadowmap_pars_fragment: shadowmap_pars_fragment, + shadowmap_pars_vertex: shadowmap_pars_vertex, + shadowmap_vertex: shadowmap_vertex, + shadowmask_pars_fragment: shadowmask_pars_fragment, + skinbase_vertex: skinbase_vertex, + skinning_pars_vertex: skinning_pars_vertex, + skinning_vertex: skinning_vertex, + skinnormal_vertex: skinnormal_vertex, + specularmap_fragment: specularmap_fragment, + specularmap_pars_fragment: specularmap_pars_fragment, + tonemapping_fragment: tonemapping_fragment, + tonemapping_pars_fragment: tonemapping_pars_fragment, + uv_pars_fragment: uv_pars_fragment, + uv_pars_vertex: uv_pars_vertex, + uv_vertex: uv_vertex, + uv2_pars_fragment: uv2_pars_fragment, + uv2_pars_vertex: uv2_pars_vertex, + uv2_vertex: uv2_vertex, + worldpos_vertex: worldpos_vertex, + + background_frag: background_frag, + background_vert: background_vert, + cube_frag: cube_frag, + cube_vert: cube_vert, + depth_frag: depth_frag, + depth_vert: depth_vert, + distanceRGBA_frag: distanceRGBA_frag, + distanceRGBA_vert: distanceRGBA_vert, + equirect_frag: equirect_frag, + equirect_vert: equirect_vert, + linedashed_frag: linedashed_frag, + linedashed_vert: linedashed_vert, + meshbasic_frag: meshbasic_frag, + meshbasic_vert: meshbasic_vert, + meshlambert_frag: meshlambert_frag, + meshlambert_vert: meshlambert_vert, + meshmatcap_frag: meshmatcap_frag, + meshmatcap_vert: meshmatcap_vert, + meshphong_frag: meshphong_frag, + meshphong_vert: meshphong_vert, + meshphysical_frag: meshphysical_frag, + meshphysical_vert: meshphysical_vert, + normal_frag: normal_frag, + normal_vert: normal_vert, + points_frag: points_frag, + points_vert: points_vert, + shadow_frag: shadow_frag, + shadow_vert: shadow_vert, + sprite_frag: sprite_frag, + sprite_vert: sprite_vert + }; + + /** + * Uniform Utilities + */ + + function cloneUniforms( src ) { + + var dst = {}; + + for ( var u in src ) { + + dst[ u ] = {}; + + for ( var p in src[ u ] ) { + + var property = src[ u ][ p ]; + + if ( property && ( property.isColor || + property.isMatrix3 || property.isMatrix4 || + property.isVector2 || property.isVector3 || property.isVector4 || + property.isTexture ) ) { + + dst[ u ][ p ] = property.clone(); + + } else if ( Array.isArray( property ) ) { + + dst[ u ][ p ] = property.slice(); + + } else { + + dst[ u ][ p ] = property; + + } + + } + + } + + return dst; + + } + + function mergeUniforms( uniforms ) { + + var merged = {}; + + for ( var u = 0; u < uniforms.length; u ++ ) { + + var tmp = cloneUniforms( uniforms[ u ] ); + + for ( var p in tmp ) { + + merged[ p ] = tmp[ p ]; + + } + + } + + return merged; + + } + + // Legacy + + var UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms }; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + var ColorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF, + 'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2, + 'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50, + 'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B, + 'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B, + 'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F, + 'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3, + 'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222, + 'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700, + 'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4, + 'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00, + 'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3, + 'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA, + 'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32, + 'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3, + 'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC, + 'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD, + 'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6, + 'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9, + 'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F, + 'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE, + 'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA, + 'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0, + 'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 }; + + function Color( r, g, b ) { + + if ( g === undefined && b === undefined ) { + + // r is THREE.Color, hex or string + return this.set( r ); + + } + + return this.setRGB( r, g, b ); + + } + + Object.assign( Color.prototype, { + + isColor: true, + + r: 1, g: 1, b: 1, + + set: function ( value ) { + + if ( value && value.isColor ) { + + this.copy( value ); + + } else if ( typeof value === 'number' ) { + + this.setHex( value ); + + } else if ( typeof value === 'string' ) { + + this.setStyle( value ); + + } + + return this; + + }, + + setScalar: function ( scalar ) { + + this.r = scalar; + this.g = scalar; + this.b = scalar; + + return this; + + }, + + setHex: function ( hex ) { + + hex = Math.floor( hex ); + + this.r = ( hex >> 16 & 255 ) / 255; + this.g = ( hex >> 8 & 255 ) / 255; + this.b = ( hex & 255 ) / 255; + + return this; + + }, + + setRGB: function ( r, g, b ) { + + this.r = r; + this.g = g; + this.b = b; + + return this; + + }, + + setHSL: function () { + + function hue2rgb( p, q, t ) { + + if ( t < 0 ) t += 1; + if ( t > 1 ) t -= 1; + if ( t < 1 / 6 ) return p + ( q - p ) * 6 * t; + if ( t < 1 / 2 ) return q; + if ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t ); + return p; + + } + + return function setHSL( h, s, l ) { + + // h,s,l ranges are in 0.0 - 1.0 + h = _Math.euclideanModulo( h, 1 ); + s = _Math.clamp( s, 0, 1 ); + l = _Math.clamp( l, 0, 1 ); + + if ( s === 0 ) { + + this.r = this.g = this.b = l; + + } else { + + var p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s ); + var q = ( 2 * l ) - p; + + this.r = hue2rgb( q, p, h + 1 / 3 ); + this.g = hue2rgb( q, p, h ); + this.b = hue2rgb( q, p, h - 1 / 3 ); + + } + + return this; + + }; + + }(), + + setStyle: function ( style ) { + + function handleAlpha( string ) { + + if ( string === undefined ) return; + + if ( parseFloat( string ) < 1 ) { + + console.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' ); + + } + + } + + + var m; + + if ( m = /^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec( style ) ) { + + // rgb / hsl + + var color; + var name = m[ 1 ]; + var components = m[ 2 ]; + + switch ( name ) { + + case 'rgb': + case 'rgba': + + if ( color = /^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec( components ) ) { + + // rgb(255,0,0) rgba(255,0,0,0.5) + this.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255; + this.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255; + this.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255; + + handleAlpha( color[ 5 ] ); + + return this; + + } + + if ( color = /^(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec( components ) ) { + + // rgb(100%,0%,0%) rgba(100%,0%,0%,0.5) + this.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100; + this.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100; + this.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100; + + handleAlpha( color[ 5 ] ); + + return this; + + } + + break; + + case 'hsl': + case 'hsla': + + if ( color = /^([0-9]*\.?[0-9]+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec( components ) ) { + + // hsl(120,50%,50%) hsla(120,50%,50%,0.5) + var h = parseFloat( color[ 1 ] ) / 360; + var s = parseInt( color[ 2 ], 10 ) / 100; + var l = parseInt( color[ 3 ], 10 ) / 100; + + handleAlpha( color[ 5 ] ); + + return this.setHSL( h, s, l ); + + } + + break; + + } + + } else if ( m = /^\#([A-Fa-f0-9]+)$/.exec( style ) ) { + + // hex color + + var hex = m[ 1 ]; + var size = hex.length; + + if ( size === 3 ) { + + // #ff0 + this.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255; + this.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255; + this.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255; + + return this; + + } else if ( size === 6 ) { + + // #ff0000 + this.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255; + this.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255; + this.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255; + + return this; + + } + + } + + if ( style && style.length > 0 ) { + + // color keywords + var hex = ColorKeywords[ style ]; + + if ( hex !== undefined ) { + + // red + this.setHex( hex ); + + } else { + + // unknown color + console.warn( 'THREE.Color: Unknown color ' + style ); + + } + + } + + return this; + + }, + + clone: function () { + + return new this.constructor( this.r, this.g, this.b ); + + }, + + copy: function ( color ) { + + this.r = color.r; + this.g = color.g; + this.b = color.b; + + return this; + + }, + + copyGammaToLinear: function ( color, gammaFactor ) { + + if ( gammaFactor === undefined ) gammaFactor = 2.0; + + this.r = Math.pow( color.r, gammaFactor ); + this.g = Math.pow( color.g, gammaFactor ); + this.b = Math.pow( color.b, gammaFactor ); + + return this; + + }, + + copyLinearToGamma: function ( color, gammaFactor ) { + + if ( gammaFactor === undefined ) gammaFactor = 2.0; + + var safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0; + + this.r = Math.pow( color.r, safeInverse ); + this.g = Math.pow( color.g, safeInverse ); + this.b = Math.pow( color.b, safeInverse ); + + return this; + + }, + + convertGammaToLinear: function ( gammaFactor ) { + + this.copyGammaToLinear( this, gammaFactor ); + + return this; + + }, + + convertLinearToGamma: function ( gammaFactor ) { + + this.copyLinearToGamma( this, gammaFactor ); + + return this; + + }, + + copySRGBToLinear: function () { + + function SRGBToLinear( c ) { + + return ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 ); + + } + + return function copySRGBToLinear( color ) { + + this.r = SRGBToLinear( color.r ); + this.g = SRGBToLinear( color.g ); + this.b = SRGBToLinear( color.b ); + + return this; + + }; + + }(), + + copyLinearToSRGB: function () { + + function LinearToSRGB( c ) { + + return ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055; + + } + + return function copyLinearToSRGB( color ) { + + this.r = LinearToSRGB( color.r ); + this.g = LinearToSRGB( color.g ); + this.b = LinearToSRGB( color.b ); + + return this; + + }; + + }(), + + convertSRGBToLinear: function () { + + this.copySRGBToLinear( this ); + + return this; + + }, + + convertLinearToSRGB: function () { + + this.copyLinearToSRGB( this ); + + return this; + + }, + + getHex: function () { + + return ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0; + + }, + + getHexString: function () { + + return ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 ); + + }, + + getHSL: function ( target ) { + + // h,s,l ranges are in 0.0 - 1.0 + + if ( target === undefined ) { + + console.warn( 'THREE.Color: .getHSL() target is now required' ); + target = { h: 0, s: 0, l: 0 }; + + } + + var r = this.r, g = this.g, b = this.b; + + var max = Math.max( r, g, b ); + var min = Math.min( r, g, b ); + + var hue, saturation; + var lightness = ( min + max ) / 2.0; + + if ( min === max ) { + + hue = 0; + saturation = 0; + + } else { + + var delta = max - min; + + saturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min ); + + switch ( max ) { + + case r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break; + case g: hue = ( b - r ) / delta + 2; break; + case b: hue = ( r - g ) / delta + 4; break; + + } + + hue /= 6; + + } + + target.h = hue; + target.s = saturation; + target.l = lightness; + + return target; + + }, + + getStyle: function () { + + return 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')'; + + }, + + offsetHSL: function () { + + var hsl = {}; + + return function ( h, s, l ) { + + this.getHSL( hsl ); + + hsl.h += h; hsl.s += s; hsl.l += l; + + this.setHSL( hsl.h, hsl.s, hsl.l ); + + return this; + + }; + + }(), + + add: function ( color ) { + + this.r += color.r; + this.g += color.g; + this.b += color.b; + + return this; + + }, + + addColors: function ( color1, color2 ) { + + this.r = color1.r + color2.r; + this.g = color1.g + color2.g; + this.b = color1.b + color2.b; + + return this; + + }, + + addScalar: function ( s ) { + + this.r += s; + this.g += s; + this.b += s; + + return this; + + }, + + sub: function ( color ) { + + this.r = Math.max( 0, this.r - color.r ); + this.g = Math.max( 0, this.g - color.g ); + this.b = Math.max( 0, this.b - color.b ); + + return this; + + }, + + multiply: function ( color ) { + + this.r *= color.r; + this.g *= color.g; + this.b *= color.b; + + return this; + + }, + + multiplyScalar: function ( s ) { + + this.r *= s; + this.g *= s; + this.b *= s; + + return this; + + }, + + lerp: function ( color, alpha ) { + + this.r += ( color.r - this.r ) * alpha; + this.g += ( color.g - this.g ) * alpha; + this.b += ( color.b - this.b ) * alpha; + + return this; + + }, + + lerpHSL: function () { + + var hslA = { h: 0, s: 0, l: 0 }; + var hslB = { h: 0, s: 0, l: 0 }; + + return function lerpHSL( color, alpha ) { + + this.getHSL( hslA ); + color.getHSL( hslB ); + + var h = _Math.lerp( hslA.h, hslB.h, alpha ); + var s = _Math.lerp( hslA.s, hslB.s, alpha ); + var l = _Math.lerp( hslA.l, hslB.l, alpha ); + + this.setHSL( h, s, l ); + + return this; + + }; + + }(), + + equals: function ( c ) { + + return ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b ); + + }, + + fromArray: function ( array, offset ) { + + if ( offset === undefined ) offset = 0; + + this.r = array[ offset ]; + this.g = array[ offset + 1 ]; + this.b = array[ offset + 2 ]; + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) array = []; + if ( offset === undefined ) offset = 0; + + array[ offset ] = this.r; + array[ offset + 1 ] = this.g; + array[ offset + 2 ] = this.b; + + return array; + + }, + + toJSON: function () { + + return this.getHex(); + + } + + } ); + + /** + * Uniforms library for shared webgl shaders + */ + + var UniformsLib = { + + common: { + + diffuse: { value: new Color( 0xeeeeee ) }, + opacity: { value: 1.0 }, + + map: { value: null }, + uvTransform: { value: new Matrix3() }, + + alphaMap: { value: null }, + + }, + + specularmap: { + + specularMap: { value: null }, + + }, + + envmap: { + + envMap: { value: null }, + flipEnvMap: { value: - 1 }, + reflectivity: { value: 1.0 }, + refractionRatio: { value: 0.98 }, + maxMipLevel: { value: 0 } + + }, + + aomap: { + + aoMap: { value: null }, + aoMapIntensity: { value: 1 } + + }, + + lightmap: { + + lightMap: { value: null }, + lightMapIntensity: { value: 1 } + + }, + + emissivemap: { + + emissiveMap: { value: null } + + }, + + bumpmap: { + + bumpMap: { value: null }, + bumpScale: { value: 1 } + + }, + + normalmap: { + + normalMap: { value: null }, + normalScale: { value: new Vector2( 1, 1 ) } + + }, + + displacementmap: { + + displacementMap: { value: null }, + displacementScale: { value: 1 }, + displacementBias: { value: 0 } + + }, + + roughnessmap: { + + roughnessMap: { value: null } + + }, + + metalnessmap: { + + metalnessMap: { value: null } + + }, + + gradientmap: { + + gradientMap: { value: null } + + }, + + fog: { + + fogDensity: { value: 0.00025 }, + fogNear: { value: 1 }, + fogFar: { value: 2000 }, + fogColor: { value: new Color( 0xffffff ) } + + }, + + lights: { + + ambientLightColor: { value: [] }, + + lightProbe: { value: [] }, + + directionalLights: { value: [], properties: { + direction: {}, + color: {}, + + shadow: {}, + shadowBias: {}, + shadowRadius: {}, + shadowMapSize: {} + } }, + + directionalShadowMap: { value: [] }, + directionalShadowMatrix: { value: [] }, + + spotLights: { value: [], properties: { + color: {}, + position: {}, + direction: {}, + distance: {}, + coneCos: {}, + penumbraCos: {}, + decay: {}, + + shadow: {}, + shadowBias: {}, + shadowRadius: {}, + shadowMapSize: {} + } }, + + spotShadowMap: { value: [] }, + spotShadowMatrix: { value: [] }, + + pointLights: { value: [], properties: { + color: {}, + position: {}, + decay: {}, + distance: {}, + + shadow: {}, + shadowBias: {}, + shadowRadius: {}, + shadowMapSize: {}, + shadowCameraNear: {}, + shadowCameraFar: {} + } }, + + pointShadowMap: { value: [] }, + pointShadowMatrix: { value: [] }, + + hemisphereLights: { value: [], properties: { + direction: {}, + skyColor: {}, + groundColor: {} + } }, + + // TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src + rectAreaLights: { value: [], properties: { + color: {}, + position: {}, + width: {}, + height: {} + } } + + }, + + points: { + + diffuse: { value: new Color( 0xeeeeee ) }, + opacity: { value: 1.0 }, + size: { value: 1.0 }, + scale: { value: 1.0 }, + map: { value: null }, + uvTransform: { value: new Matrix3() } + + }, + + sprite: { + + diffuse: { value: new Color( 0xeeeeee ) }, + opacity: { value: 1.0 }, + center: { value: new Vector2( 0.5, 0.5 ) }, + rotation: { value: 0.0 }, + map: { value: null }, + uvTransform: { value: new Matrix3() } + + } + + }; + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + * @author mikael emtinger / http://gomo.se/ + */ + + var ShaderLib = { + + basic: { + + uniforms: mergeUniforms( [ + UniformsLib.common, + UniformsLib.specularmap, + UniformsLib.envmap, + UniformsLib.aomap, + UniformsLib.lightmap, + UniformsLib.fog + ] ), + + vertexShader: ShaderChunk.meshbasic_vert, + fragmentShader: ShaderChunk.meshbasic_frag + + }, + + lambert: { + + uniforms: mergeUniforms( [ + UniformsLib.common, + UniformsLib.specularmap, + UniformsLib.envmap, + UniformsLib.aomap, + UniformsLib.lightmap, + UniformsLib.emissivemap, + UniformsLib.fog, + UniformsLib.lights, + { + emissive: { value: new Color( 0x000000 ) } + } + ] ), + + vertexShader: ShaderChunk.meshlambert_vert, + fragmentShader: ShaderChunk.meshlambert_frag + + }, + + phong: { + + uniforms: mergeUniforms( [ + UniformsLib.common, + UniformsLib.specularmap, + UniformsLib.envmap, + UniformsLib.aomap, + UniformsLib.lightmap, + UniformsLib.emissivemap, + UniformsLib.bumpmap, + UniformsLib.normalmap, + UniformsLib.displacementmap, + UniformsLib.gradientmap, + UniformsLib.fog, + UniformsLib.lights, + { + emissive: { value: new Color( 0x000000 ) }, + specular: { value: new Color( 0x111111 ) }, + shininess: { value: 30 } + } + ] ), + + vertexShader: ShaderChunk.meshphong_vert, + fragmentShader: ShaderChunk.meshphong_frag + + }, + + standard: { + + uniforms: mergeUniforms( [ + UniformsLib.common, + UniformsLib.envmap, + UniformsLib.aomap, + UniformsLib.lightmap, + UniformsLib.emissivemap, + UniformsLib.bumpmap, + UniformsLib.normalmap, + UniformsLib.displacementmap, + UniformsLib.roughnessmap, + UniformsLib.metalnessmap, + UniformsLib.fog, + UniformsLib.lights, + { + emissive: { value: new Color( 0x000000 ) }, + roughness: { value: 0.5 }, + metalness: { value: 0.5 }, + envMapIntensity: { value: 1 } // temporary + } + ] ), + + vertexShader: ShaderChunk.meshphysical_vert, + fragmentShader: ShaderChunk.meshphysical_frag + + }, + + matcap: { + + uniforms: mergeUniforms( [ + UniformsLib.common, + UniformsLib.bumpmap, + UniformsLib.normalmap, + UniformsLib.displacementmap, + UniformsLib.fog, + { + matcap: { value: null } + } + ] ), + + vertexShader: ShaderChunk.meshmatcap_vert, + fragmentShader: ShaderChunk.meshmatcap_frag + + }, + + points: { + + uniforms: mergeUniforms( [ + UniformsLib.points, + UniformsLib.fog + ] ), + + vertexShader: ShaderChunk.points_vert, + fragmentShader: ShaderChunk.points_frag + + }, + + dashed: { + + uniforms: mergeUniforms( [ + UniformsLib.common, + UniformsLib.fog, + { + scale: { value: 1 }, + dashSize: { value: 1 }, + totalSize: { value: 2 } + } + ] ), + + vertexShader: ShaderChunk.linedashed_vert, + fragmentShader: ShaderChunk.linedashed_frag + + }, + + depth: { + + uniforms: mergeUniforms( [ + UniformsLib.common, + UniformsLib.displacementmap + ] ), + + vertexShader: ShaderChunk.depth_vert, + fragmentShader: ShaderChunk.depth_frag + + }, + + normal: { + + uniforms: mergeUniforms( [ + UniformsLib.common, + UniformsLib.bumpmap, + UniformsLib.normalmap, + UniformsLib.displacementmap, + { + opacity: { value: 1.0 } + } + ] ), + + vertexShader: ShaderChunk.normal_vert, + fragmentShader: ShaderChunk.normal_frag + + }, + + sprite: { + + uniforms: mergeUniforms( [ + UniformsLib.sprite, + UniformsLib.fog + ] ), + + vertexShader: ShaderChunk.sprite_vert, + fragmentShader: ShaderChunk.sprite_frag + + }, + + background: { + + uniforms: { + uvTransform: { value: new Matrix3() }, + t2D: { value: null }, + }, + + vertexShader: ShaderChunk.background_vert, + fragmentShader: ShaderChunk.background_frag + + }, + /* ------------------------------------------------------------------------- + // Cube map shader + ------------------------------------------------------------------------- */ + + cube: { + + uniforms: { + tCube: { value: null }, + tFlip: { value: - 1 }, + opacity: { value: 1.0 } + }, + + vertexShader: ShaderChunk.cube_vert, + fragmentShader: ShaderChunk.cube_frag + + }, + + equirect: { + + uniforms: { + tEquirect: { value: null }, + }, + + vertexShader: ShaderChunk.equirect_vert, + fragmentShader: ShaderChunk.equirect_frag + + }, + + distanceRGBA: { + + uniforms: mergeUniforms( [ + UniformsLib.common, + UniformsLib.displacementmap, + { + referencePosition: { value: new Vector3() }, + nearDistance: { value: 1 }, + farDistance: { value: 1000 } + } + ] ), + + vertexShader: ShaderChunk.distanceRGBA_vert, + fragmentShader: ShaderChunk.distanceRGBA_frag + + }, + + shadow: { + + uniforms: mergeUniforms( [ + UniformsLib.lights, + UniformsLib.fog, + { + color: { value: new Color( 0x00000 ) }, + opacity: { value: 1.0 } + }, + ] ), + + vertexShader: ShaderChunk.shadow_vert, + fragmentShader: ShaderChunk.shadow_frag + + } + + }; + + ShaderLib.physical = { + + uniforms: mergeUniforms( [ + ShaderLib.standard.uniforms, + { + clearCoat: { value: 0 }, + clearCoatRoughness: { value: 0 } + } + ] ), + + vertexShader: ShaderChunk.meshphysical_vert, + fragmentShader: ShaderChunk.meshphysical_frag + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLAnimation() { + + var context = null; + var isAnimating = false; + var animationLoop = null; + + function onAnimationFrame( time, frame ) { + + if ( isAnimating === false ) return; + + animationLoop( time, frame ); + + context.requestAnimationFrame( onAnimationFrame ); + + } + + return { + + start: function () { + + if ( isAnimating === true ) return; + if ( animationLoop === null ) return; + + context.requestAnimationFrame( onAnimationFrame ); + + isAnimating = true; + + }, + + stop: function () { + + isAnimating = false; + + }, + + setAnimationLoop: function ( callback ) { + + animationLoop = callback; + + }, + + setContext: function ( value ) { + + context = value; + + } + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLAttributes( gl ) { + + var buffers = new WeakMap(); + + function createBuffer( attribute, bufferType ) { + + var array = attribute.array; + var usage = attribute.dynamic ? 35048 : 35044; + + var buffer = gl.createBuffer(); + + gl.bindBuffer( bufferType, buffer ); + gl.bufferData( bufferType, array, usage ); + + attribute.onUploadCallback(); + + var type = 5126; + + if ( array instanceof Float32Array ) { + + type = 5126; + + } else if ( array instanceof Float64Array ) { + + console.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' ); + + } else if ( array instanceof Uint16Array ) { + + type = 5123; + + } else if ( array instanceof Int16Array ) { + + type = 5122; + + } else if ( array instanceof Uint32Array ) { + + type = 5125; + + } else if ( array instanceof Int32Array ) { + + type = 5124; + + } else if ( array instanceof Int8Array ) { + + type = 5120; + + } else if ( array instanceof Uint8Array ) { + + type = 5121; + + } + + return { + buffer: buffer, + type: type, + bytesPerElement: array.BYTES_PER_ELEMENT, + version: attribute.version + }; + + } + + function updateBuffer( buffer, attribute, bufferType ) { + + var array = attribute.array; + var updateRange = attribute.updateRange; + + gl.bindBuffer( bufferType, buffer ); + + if ( attribute.dynamic === false ) { + + gl.bufferData( bufferType, array, 35044 ); + + } else if ( updateRange.count === - 1 ) { + + // Not using update ranges + + gl.bufferSubData( bufferType, 0, array ); + + } else if ( updateRange.count === 0 ) { + + console.error( 'THREE.WebGLObjects.updateBuffer: dynamic THREE.BufferAttribute marked as needsUpdate but updateRange.count is 0, ensure you are using set methods or updating manually.' ); + + } else { + + gl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT, + array.subarray( updateRange.offset, updateRange.offset + updateRange.count ) ); + + updateRange.count = - 1; // reset range + + } + + } + + // + + function get( attribute ) { + + if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data; + + return buffers.get( attribute ); + + } + + function remove( attribute ) { + + if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data; + + var data = buffers.get( attribute ); + + if ( data ) { + + gl.deleteBuffer( data.buffer ); + + buffers.delete( attribute ); + + } + + } + + function update( attribute, bufferType ) { + + if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data; + + var data = buffers.get( attribute ); + + if ( data === undefined ) { + + buffers.set( attribute, createBuffer( attribute, bufferType ) ); + + } else if ( data.version < attribute.version ) { + + updateBuffer( data.buffer, attribute, bufferType ); + + data.version = attribute.version; + + } + + } + + return { + + get: get, + remove: remove, + update: update + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + */ + + function Face3( a, b, c, normal, color, materialIndex ) { + + this.a = a; + this.b = b; + this.c = c; + + this.normal = ( normal && normal.isVector3 ) ? normal : new Vector3(); + this.vertexNormals = Array.isArray( normal ) ? normal : []; + + this.color = ( color && color.isColor ) ? color : new Color(); + this.vertexColors = Array.isArray( color ) ? color : []; + + this.materialIndex = materialIndex !== undefined ? materialIndex : 0; + + } + + Object.assign( Face3.prototype, { + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( source ) { + + this.a = source.a; + this.b = source.b; + this.c = source.c; + + this.normal.copy( source.normal ); + this.color.copy( source.color ); + + this.materialIndex = source.materialIndex; + + for ( var i = 0, il = source.vertexNormals.length; i < il; i ++ ) { + + this.vertexNormals[ i ] = source.vertexNormals[ i ].clone(); + + } + + for ( var i = 0, il = source.vertexColors.length; i < il; i ++ ) { + + this.vertexColors[ i ] = source.vertexColors[ i ].clone(); + + } + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author WestLangley / http://github.com/WestLangley + * @author bhouston / http://clara.io + */ + + function Euler( x, y, z, order ) { + + this._x = x || 0; + this._y = y || 0; + this._z = z || 0; + this._order = order || Euler.DefaultOrder; + + } + + Euler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ]; + + Euler.DefaultOrder = 'XYZ'; + + Object.defineProperties( Euler.prototype, { + + x: { + + get: function () { + + return this._x; + + }, + + set: function ( value ) { + + this._x = value; + this.onChangeCallback(); + + } + + }, + + y: { + + get: function () { + + return this._y; + + }, + + set: function ( value ) { + + this._y = value; + this.onChangeCallback(); + + } + + }, + + z: { + + get: function () { + + return this._z; + + }, + + set: function ( value ) { + + this._z = value; + this.onChangeCallback(); + + } + + }, + + order: { + + get: function () { + + return this._order; + + }, + + set: function ( value ) { + + this._order = value; + this.onChangeCallback(); + + } + + } + + } ); + + Object.assign( Euler.prototype, { + + isEuler: true, + + set: function ( x, y, z, order ) { + + this._x = x; + this._y = y; + this._z = z; + this._order = order || this._order; + + this.onChangeCallback(); + + return this; + + }, + + clone: function () { + + return new this.constructor( this._x, this._y, this._z, this._order ); + + }, + + copy: function ( euler ) { + + this._x = euler._x; + this._y = euler._y; + this._z = euler._z; + this._order = euler._order; + + this.onChangeCallback(); + + return this; + + }, + + setFromRotationMatrix: function ( m, order, update ) { + + var clamp = _Math.clamp; + + // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) + + var te = m.elements; + var m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ]; + var m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ]; + var m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ]; + + order = order || this._order; + + if ( order === 'XYZ' ) { + + this._y = Math.asin( clamp( m13, - 1, 1 ) ); + + if ( Math.abs( m13 ) < 0.99999 ) { + + this._x = Math.atan2( - m23, m33 ); + this._z = Math.atan2( - m12, m11 ); + + } else { + + this._x = Math.atan2( m32, m22 ); + this._z = 0; + + } + + } else if ( order === 'YXZ' ) { + + this._x = Math.asin( - clamp( m23, - 1, 1 ) ); + + if ( Math.abs( m23 ) < 0.99999 ) { + + this._y = Math.atan2( m13, m33 ); + this._z = Math.atan2( m21, m22 ); + + } else { + + this._y = Math.atan2( - m31, m11 ); + this._z = 0; + + } + + } else if ( order === 'ZXY' ) { + + this._x = Math.asin( clamp( m32, - 1, 1 ) ); + + if ( Math.abs( m32 ) < 0.99999 ) { + + this._y = Math.atan2( - m31, m33 ); + this._z = Math.atan2( - m12, m22 ); + + } else { + + this._y = 0; + this._z = Math.atan2( m21, m11 ); + + } + + } else if ( order === 'ZYX' ) { + + this._y = Math.asin( - clamp( m31, - 1, 1 ) ); + + if ( Math.abs( m31 ) < 0.99999 ) { + + this._x = Math.atan2( m32, m33 ); + this._z = Math.atan2( m21, m11 ); + + } else { + + this._x = 0; + this._z = Math.atan2( - m12, m22 ); + + } + + } else if ( order === 'YZX' ) { + + this._z = Math.asin( clamp( m21, - 1, 1 ) ); + + if ( Math.abs( m21 ) < 0.99999 ) { + + this._x = Math.atan2( - m23, m22 ); + this._y = Math.atan2( - m31, m11 ); + + } else { + + this._x = 0; + this._y = Math.atan2( m13, m33 ); + + } + + } else if ( order === 'XZY' ) { + + this._z = Math.asin( - clamp( m12, - 1, 1 ) ); + + if ( Math.abs( m12 ) < 0.99999 ) { + + this._x = Math.atan2( m32, m22 ); + this._y = Math.atan2( m13, m11 ); + + } else { + + this._x = Math.atan2( - m23, m33 ); + this._y = 0; + + } + + } else { + + console.warn( 'THREE.Euler: .setFromRotationMatrix() given unsupported order: ' + order ); + + } + + this._order = order; + + if ( update !== false ) this.onChangeCallback(); + + return this; + + }, + + setFromQuaternion: function () { + + var matrix = new Matrix4(); + + return function setFromQuaternion( q, order, update ) { + + matrix.makeRotationFromQuaternion( q ); + + return this.setFromRotationMatrix( matrix, order, update ); + + }; + + }(), + + setFromVector3: function ( v, order ) { + + return this.set( v.x, v.y, v.z, order || this._order ); + + }, + + reorder: function () { + + // WARNING: this discards revolution information -bhouston + + var q = new Quaternion(); + + return function reorder( newOrder ) { + + q.setFromEuler( this ); + + return this.setFromQuaternion( q, newOrder ); + + }; + + }(), + + equals: function ( euler ) { + + return ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order ); + + }, + + fromArray: function ( array ) { + + this._x = array[ 0 ]; + this._y = array[ 1 ]; + this._z = array[ 2 ]; + if ( array[ 3 ] !== undefined ) this._order = array[ 3 ]; + + this.onChangeCallback(); + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) array = []; + if ( offset === undefined ) offset = 0; + + array[ offset ] = this._x; + array[ offset + 1 ] = this._y; + array[ offset + 2 ] = this._z; + array[ offset + 3 ] = this._order; + + return array; + + }, + + toVector3: function ( optionalResult ) { + + if ( optionalResult ) { + + return optionalResult.set( this._x, this._y, this._z ); + + } else { + + return new Vector3( this._x, this._y, this._z ); + + } + + }, + + onChange: function ( callback ) { + + this.onChangeCallback = callback; + + return this; + + }, + + onChangeCallback: function () {} + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function Layers() { + + this.mask = 1 | 0; + + } + + Object.assign( Layers.prototype, { + + set: function ( channel ) { + + this.mask = 1 << channel | 0; + + }, + + enable: function ( channel ) { + + this.mask |= 1 << channel | 0; + + }, + + toggle: function ( channel ) { + + this.mask ^= 1 << channel | 0; + + }, + + disable: function ( channel ) { + + this.mask &= ~ ( 1 << channel | 0 ); + + }, + + test: function ( layers ) { + + return ( this.mask & layers.mask ) !== 0; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + * @author WestLangley / http://github.com/WestLangley + * @author elephantatwork / www.elephantatwork.ch + */ + + var object3DId = 0; + + function Object3D() { + + Object.defineProperty( this, 'id', { value: object3DId ++ } ); + + this.uuid = _Math.generateUUID(); + + this.name = ''; + this.type = 'Object3D'; + + this.parent = null; + this.children = []; + + this.up = Object3D.DefaultUp.clone(); + + var position = new Vector3(); + var rotation = new Euler(); + var quaternion = new Quaternion(); + var scale = new Vector3( 1, 1, 1 ); + + function onRotationChange() { + + quaternion.setFromEuler( rotation, false ); + + } + + function onQuaternionChange() { + + rotation.setFromQuaternion( quaternion, undefined, false ); + + } + + rotation.onChange( onRotationChange ); + quaternion.onChange( onQuaternionChange ); + + Object.defineProperties( this, { + position: { + configurable: true, + enumerable: true, + value: position + }, + rotation: { + configurable: true, + enumerable: true, + value: rotation + }, + quaternion: { + configurable: true, + enumerable: true, + value: quaternion + }, + scale: { + configurable: true, + enumerable: true, + value: scale + }, + modelViewMatrix: { + value: new Matrix4() + }, + normalMatrix: { + value: new Matrix3() + } + } ); + + this.matrix = new Matrix4(); + this.matrixWorld = new Matrix4(); + + this.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate; + this.matrixWorldNeedsUpdate = false; + + this.layers = new Layers(); + this.visible = true; + + this.castShadow = false; + this.receiveShadow = false; + + this.frustumCulled = true; + this.renderOrder = 0; + + this.userData = {}; + + } + + Object3D.DefaultUp = new Vector3( 0, 1, 0 ); + Object3D.DefaultMatrixAutoUpdate = true; + + Object3D.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + + constructor: Object3D, + + isObject3D: true, + + onBeforeRender: function () {}, + onAfterRender: function () {}, + + applyMatrix: function ( matrix ) { + + if ( this.matrixAutoUpdate ) this.updateMatrix(); + + this.matrix.premultiply( matrix ); + + this.matrix.decompose( this.position, this.quaternion, this.scale ); + + }, + + applyQuaternion: function ( q ) { + + this.quaternion.premultiply( q ); + + return this; + + }, + + setRotationFromAxisAngle: function ( axis, angle ) { + + // assumes axis is normalized + + this.quaternion.setFromAxisAngle( axis, angle ); + + }, + + setRotationFromEuler: function ( euler ) { + + this.quaternion.setFromEuler( euler, true ); + + }, + + setRotationFromMatrix: function ( m ) { + + // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) + + this.quaternion.setFromRotationMatrix( m ); + + }, + + setRotationFromQuaternion: function ( q ) { + + // assumes q is normalized + + this.quaternion.copy( q ); + + }, + + rotateOnAxis: function () { + + // rotate object on axis in object space + // axis is assumed to be normalized + + var q1 = new Quaternion(); + + return function rotateOnAxis( axis, angle ) { + + q1.setFromAxisAngle( axis, angle ); + + this.quaternion.multiply( q1 ); + + return this; + + }; + + }(), + + rotateOnWorldAxis: function () { + + // rotate object on axis in world space + // axis is assumed to be normalized + // method assumes no rotated parent + + var q1 = new Quaternion(); + + return function rotateOnWorldAxis( axis, angle ) { + + q1.setFromAxisAngle( axis, angle ); + + this.quaternion.premultiply( q1 ); + + return this; + + }; + + }(), + + rotateX: function () { + + var v1 = new Vector3( 1, 0, 0 ); + + return function rotateX( angle ) { + + return this.rotateOnAxis( v1, angle ); + + }; + + }(), + + rotateY: function () { + + var v1 = new Vector3( 0, 1, 0 ); + + return function rotateY( angle ) { + + return this.rotateOnAxis( v1, angle ); + + }; + + }(), + + rotateZ: function () { + + var v1 = new Vector3( 0, 0, 1 ); + + return function rotateZ( angle ) { + + return this.rotateOnAxis( v1, angle ); + + }; + + }(), + + translateOnAxis: function () { + + // translate object by distance along axis in object space + // axis is assumed to be normalized + + var v1 = new Vector3(); + + return function translateOnAxis( axis, distance ) { + + v1.copy( axis ).applyQuaternion( this.quaternion ); + + this.position.add( v1.multiplyScalar( distance ) ); + + return this; + + }; + + }(), + + translateX: function () { + + var v1 = new Vector3( 1, 0, 0 ); + + return function translateX( distance ) { + + return this.translateOnAxis( v1, distance ); + + }; + + }(), + + translateY: function () { + + var v1 = new Vector3( 0, 1, 0 ); + + return function translateY( distance ) { + + return this.translateOnAxis( v1, distance ); + + }; + + }(), + + translateZ: function () { + + var v1 = new Vector3( 0, 0, 1 ); + + return function translateZ( distance ) { + + return this.translateOnAxis( v1, distance ); + + }; + + }(), + + localToWorld: function ( vector ) { + + return vector.applyMatrix4( this.matrixWorld ); + + }, + + worldToLocal: function () { + + var m1 = new Matrix4(); + + return function worldToLocal( vector ) { + + return vector.applyMatrix4( m1.getInverse( this.matrixWorld ) ); + + }; + + }(), + + lookAt: function () { + + // This method does not support objects having non-uniformly-scaled parent(s) + + var q1 = new Quaternion(); + var m1 = new Matrix4(); + var target = new Vector3(); + var position = new Vector3(); + + return function lookAt( x, y, z ) { + + if ( x.isVector3 ) { + + target.copy( x ); + + } else { + + target.set( x, y, z ); + + } + + var parent = this.parent; + + this.updateWorldMatrix( true, false ); + + position.setFromMatrixPosition( this.matrixWorld ); + + if ( this.isCamera || this.isLight ) { + + m1.lookAt( position, target, this.up ); + + } else { + + m1.lookAt( target, position, this.up ); + + } + + this.quaternion.setFromRotationMatrix( m1 ); + + if ( parent ) { + + m1.extractRotation( parent.matrixWorld ); + q1.setFromRotationMatrix( m1 ); + this.quaternion.premultiply( q1.inverse() ); + + } + + }; + + }(), + + add: function ( object ) { + + if ( arguments.length > 1 ) { + + for ( var i = 0; i < arguments.length; i ++ ) { + + this.add( arguments[ i ] ); + + } + + return this; + + } + + if ( object === this ) { + + console.error( "THREE.Object3D.add: object can't be added as a child of itself.", object ); + return this; + + } + + if ( ( object && object.isObject3D ) ) { + + if ( object.parent !== null ) { + + object.parent.remove( object ); + + } + + object.parent = this; + object.dispatchEvent( { type: 'added' } ); + + this.children.push( object ); + + } else { + + console.error( "THREE.Object3D.add: object not an instance of THREE.Object3D.", object ); + + } + + return this; + + }, + + remove: function ( object ) { + + if ( arguments.length > 1 ) { + + for ( var i = 0; i < arguments.length; i ++ ) { + + this.remove( arguments[ i ] ); + + } + + return this; + + } + + var index = this.children.indexOf( object ); + + if ( index !== - 1 ) { + + object.parent = null; + + object.dispatchEvent( { type: 'removed' } ); + + this.children.splice( index, 1 ); + + } + + return this; + + }, + + attach: function () { + + // adds object as a child of this, while maintaining the object's world transform + + var m = new Matrix4(); + + return function attach( object ) { + + this.updateWorldMatrix( true, false ); + + m.getInverse( this.matrixWorld ); + + if ( object.parent !== null ) { + + object.parent.updateWorldMatrix( true, false ); + + m.multiply( object.parent.matrixWorld ); + + } + + object.applyMatrix( m ); + + object.updateWorldMatrix( false, false ); + + this.add( object ); + + return this; + + }; + + }(), + + getObjectById: function ( id ) { + + return this.getObjectByProperty( 'id', id ); + + }, + + getObjectByName: function ( name ) { + + return this.getObjectByProperty( 'name', name ); + + }, + + getObjectByProperty: function ( name, value ) { + + if ( this[ name ] === value ) return this; + + for ( var i = 0, l = this.children.length; i < l; i ++ ) { + + var child = this.children[ i ]; + var object = child.getObjectByProperty( name, value ); + + if ( object !== undefined ) { + + return object; + + } + + } + + return undefined; + + }, + + getWorldPosition: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Object3D: .getWorldPosition() target is now required' ); + target = new Vector3(); + + } + + this.updateMatrixWorld( true ); + + return target.setFromMatrixPosition( this.matrixWorld ); + + }, + + getWorldQuaternion: function () { + + var position = new Vector3(); + var scale = new Vector3(); + + return function getWorldQuaternion( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Object3D: .getWorldQuaternion() target is now required' ); + target = new Quaternion(); + + } + + this.updateMatrixWorld( true ); + + this.matrixWorld.decompose( position, target, scale ); + + return target; + + }; + + }(), + + getWorldScale: function () { + + var position = new Vector3(); + var quaternion = new Quaternion(); + + return function getWorldScale( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Object3D: .getWorldScale() target is now required' ); + target = new Vector3(); + + } + + this.updateMatrixWorld( true ); + + this.matrixWorld.decompose( position, quaternion, target ); + + return target; + + }; + + }(), + + getWorldDirection: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Object3D: .getWorldDirection() target is now required' ); + target = new Vector3(); + + } + + this.updateMatrixWorld( true ); + + var e = this.matrixWorld.elements; + + return target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize(); + + }, + + raycast: function () {}, + + traverse: function ( callback ) { + + callback( this ); + + var children = this.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + children[ i ].traverse( callback ); + + } + + }, + + traverseVisible: function ( callback ) { + + if ( this.visible === false ) return; + + callback( this ); + + var children = this.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + children[ i ].traverseVisible( callback ); + + } + + }, + + traverseAncestors: function ( callback ) { + + var parent = this.parent; + + if ( parent !== null ) { + + callback( parent ); + + parent.traverseAncestors( callback ); + + } + + }, + + updateMatrix: function () { + + this.matrix.compose( this.position, this.quaternion, this.scale ); + + this.matrixWorldNeedsUpdate = true; + + }, + + updateMatrixWorld: function ( force ) { + + if ( this.matrixAutoUpdate ) this.updateMatrix(); + + if ( this.matrixWorldNeedsUpdate || force ) { + + if ( this.parent === null ) { + + this.matrixWorld.copy( this.matrix ); + + } else { + + this.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix ); + + } + + this.matrixWorldNeedsUpdate = false; + + force = true; + + } + + // update children + + var children = this.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + children[ i ].updateMatrixWorld( force ); + + } + + }, + + updateWorldMatrix: function ( updateParents, updateChildren ) { + + var parent = this.parent; + + if ( updateParents === true && parent !== null ) { + + parent.updateWorldMatrix( true, false ); + + } + + if ( this.matrixAutoUpdate ) this.updateMatrix(); + + if ( this.parent === null ) { + + this.matrixWorld.copy( this.matrix ); + + } else { + + this.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix ); + + } + + // update children + + if ( updateChildren === true ) { + + var children = this.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + children[ i ].updateWorldMatrix( false, true ); + + } + + } + + }, + + toJSON: function ( meta ) { + + // meta is a string when called from JSON.stringify + var isRootObject = ( meta === undefined || typeof meta === 'string' ); + + var output = {}; + + // meta is a hash used to collect geometries, materials. + // not providing it implies that this is the root object + // being serialized. + if ( isRootObject ) { + + // initialize meta obj + meta = { + geometries: {}, + materials: {}, + textures: {}, + images: {}, + shapes: {} + }; + + output.metadata = { + version: 4.5, + type: 'Object', + generator: 'Object3D.toJSON' + }; + + } + + // standard Object3D serialization + + var object = {}; + + object.uuid = this.uuid; + object.type = this.type; + + if ( this.name !== '' ) object.name = this.name; + if ( this.castShadow === true ) object.castShadow = true; + if ( this.receiveShadow === true ) object.receiveShadow = true; + if ( this.visible === false ) object.visible = false; + if ( this.frustumCulled === false ) object.frustumCulled = false; + if ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder; + if ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData; + + object.layers = this.layers.mask; + object.matrix = this.matrix.toArray(); + + if ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false; + + // object specific properties + + if ( this.isMesh && this.drawMode !== TrianglesDrawMode ) object.drawMode = this.drawMode; + + // + + function serialize( library, element ) { + + if ( library[ element.uuid ] === undefined ) { + + library[ element.uuid ] = element.toJSON( meta ); + + } + + return element.uuid; + + } + + if ( this.isMesh || this.isLine || this.isPoints ) { + + object.geometry = serialize( meta.geometries, this.geometry ); + + var parameters = this.geometry.parameters; + + if ( parameters !== undefined && parameters.shapes !== undefined ) { + + var shapes = parameters.shapes; + + if ( Array.isArray( shapes ) ) { + + for ( var i = 0, l = shapes.length; i < l; i ++ ) { + + var shape = shapes[ i ]; + + serialize( meta.shapes, shape ); + + } + + } else { + + serialize( meta.shapes, shapes ); + + } + + } + + } + + if ( this.material !== undefined ) { + + if ( Array.isArray( this.material ) ) { + + var uuids = []; + + for ( var i = 0, l = this.material.length; i < l; i ++ ) { + + uuids.push( serialize( meta.materials, this.material[ i ] ) ); + + } + + object.material = uuids; + + } else { + + object.material = serialize( meta.materials, this.material ); + + } + + } + + // + + if ( this.children.length > 0 ) { + + object.children = []; + + for ( var i = 0; i < this.children.length; i ++ ) { + + object.children.push( this.children[ i ].toJSON( meta ).object ); + + } + + } + + if ( isRootObject ) { + + var geometries = extractFromCache( meta.geometries ); + var materials = extractFromCache( meta.materials ); + var textures = extractFromCache( meta.textures ); + var images = extractFromCache( meta.images ); + var shapes = extractFromCache( meta.shapes ); + + if ( geometries.length > 0 ) output.geometries = geometries; + if ( materials.length > 0 ) output.materials = materials; + if ( textures.length > 0 ) output.textures = textures; + if ( images.length > 0 ) output.images = images; + if ( shapes.length > 0 ) output.shapes = shapes; + + } + + output.object = object; + + return output; + + // extract data from the cache hash + // remove metadata on each item + // and return as array + function extractFromCache( cache ) { + + var values = []; + for ( var key in cache ) { + + var data = cache[ key ]; + delete data.metadata; + values.push( data ); + + } + return values; + + } + + }, + + clone: function ( recursive ) { + + return new this.constructor().copy( this, recursive ); + + }, + + copy: function ( source, recursive ) { + + if ( recursive === undefined ) recursive = true; + + this.name = source.name; + + this.up.copy( source.up ); + + this.position.copy( source.position ); + this.quaternion.copy( source.quaternion ); + this.scale.copy( source.scale ); + + this.matrix.copy( source.matrix ); + this.matrixWorld.copy( source.matrixWorld ); + + this.matrixAutoUpdate = source.matrixAutoUpdate; + this.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate; + + this.layers.mask = source.layers.mask; + this.visible = source.visible; + + this.castShadow = source.castShadow; + this.receiveShadow = source.receiveShadow; + + this.frustumCulled = source.frustumCulled; + this.renderOrder = source.renderOrder; + + this.userData = JSON.parse( JSON.stringify( source.userData ) ); + + if ( recursive === true ) { + + for ( var i = 0; i < source.children.length; i ++ ) { + + var child = source.children[ i ]; + this.add( child.clone() ); + + } + + } + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author kile / http://kile.stravaganza.org/ + * @author alteredq / http://alteredqualia.com/ + * @author mikael emtinger / http://gomo.se/ + * @author zz85 / http://www.lab4games.net/zz85/blog + * @author bhouston / http://clara.io + */ + + var geometryId = 0; // Geometry uses even numbers as Id + + function Geometry() { + + Object.defineProperty( this, 'id', { value: geometryId += 2 } ); + + this.uuid = _Math.generateUUID(); + + this.name = ''; + this.type = 'Geometry'; + + this.vertices = []; + this.colors = []; + this.faces = []; + this.faceVertexUvs = [[]]; + + this.morphTargets = []; + this.morphNormals = []; + + this.skinWeights = []; + this.skinIndices = []; + + this.lineDistances = []; + + this.boundingBox = null; + this.boundingSphere = null; + + // update flags + + this.elementsNeedUpdate = false; + this.verticesNeedUpdate = false; + this.uvsNeedUpdate = false; + this.normalsNeedUpdate = false; + this.colorsNeedUpdate = false; + this.lineDistancesNeedUpdate = false; + this.groupsNeedUpdate = false; + + } + + Geometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + + constructor: Geometry, + + isGeometry: true, + + applyMatrix: function ( matrix ) { + + var normalMatrix = new Matrix3().getNormalMatrix( matrix ); + + for ( var i = 0, il = this.vertices.length; i < il; i ++ ) { + + var vertex = this.vertices[ i ]; + vertex.applyMatrix4( matrix ); + + } + + for ( var i = 0, il = this.faces.length; i < il; i ++ ) { + + var face = this.faces[ i ]; + face.normal.applyMatrix3( normalMatrix ).normalize(); + + for ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) { + + face.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize(); + + } + + } + + if ( this.boundingBox !== null ) { + + this.computeBoundingBox(); + + } + + if ( this.boundingSphere !== null ) { + + this.computeBoundingSphere(); + + } + + this.verticesNeedUpdate = true; + this.normalsNeedUpdate = true; + + return this; + + }, + + rotateX: function () { + + // rotate geometry around world x-axis + + var m1 = new Matrix4(); + + return function rotateX( angle ) { + + m1.makeRotationX( angle ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + rotateY: function () { + + // rotate geometry around world y-axis + + var m1 = new Matrix4(); + + return function rotateY( angle ) { + + m1.makeRotationY( angle ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + rotateZ: function () { + + // rotate geometry around world z-axis + + var m1 = new Matrix4(); + + return function rotateZ( angle ) { + + m1.makeRotationZ( angle ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + translate: function () { + + // translate geometry + + var m1 = new Matrix4(); + + return function translate( x, y, z ) { + + m1.makeTranslation( x, y, z ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + scale: function () { + + // scale geometry + + var m1 = new Matrix4(); + + return function scale( x, y, z ) { + + m1.makeScale( x, y, z ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + lookAt: function () { + + var obj = new Object3D(); + + return function lookAt( vector ) { + + obj.lookAt( vector ); + + obj.updateMatrix(); + + this.applyMatrix( obj.matrix ); + + }; + + }(), + + fromBufferGeometry: function ( geometry ) { + + var scope = this; + + var indices = geometry.index !== null ? geometry.index.array : undefined; + var attributes = geometry.attributes; + + var positions = attributes.position.array; + var normals = attributes.normal !== undefined ? attributes.normal.array : undefined; + var colors = attributes.color !== undefined ? attributes.color.array : undefined; + var uvs = attributes.uv !== undefined ? attributes.uv.array : undefined; + var uvs2 = attributes.uv2 !== undefined ? attributes.uv2.array : undefined; + + if ( uvs2 !== undefined ) this.faceVertexUvs[ 1 ] = []; + + for ( var i = 0; i < positions.length; i += 3 ) { + + scope.vertices.push( new Vector3().fromArray( positions, i ) ); + + if ( colors !== undefined ) { + + scope.colors.push( new Color().fromArray( colors, i ) ); + + } + + } + + function addFace( a, b, c, materialIndex ) { + + var vertexColors = ( colors === undefined ) ? [] : [ + scope.colors[ a ].clone(), + scope.colors[ b ].clone(), + scope.colors[ c ].clone() ]; + + var vertexNormals = ( normals === undefined ) ? [] : [ + new Vector3().fromArray( normals, a * 3 ), + new Vector3().fromArray( normals, b * 3 ), + new Vector3().fromArray( normals, c * 3 ) + ]; + + var face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex ); + + scope.faces.push( face ); + + if ( uvs !== undefined ) { + + scope.faceVertexUvs[ 0 ].push( [ + new Vector2().fromArray( uvs, a * 2 ), + new Vector2().fromArray( uvs, b * 2 ), + new Vector2().fromArray( uvs, c * 2 ) + ] ); + + } + + if ( uvs2 !== undefined ) { + + scope.faceVertexUvs[ 1 ].push( [ + new Vector2().fromArray( uvs2, a * 2 ), + new Vector2().fromArray( uvs2, b * 2 ), + new Vector2().fromArray( uvs2, c * 2 ) + ] ); + + } + + } + + var groups = geometry.groups; + + if ( groups.length > 0 ) { + + for ( var i = 0; i < groups.length; i ++ ) { + + var group = groups[ i ]; + + var start = group.start; + var count = group.count; + + for ( var j = start, jl = start + count; j < jl; j += 3 ) { + + if ( indices !== undefined ) { + + addFace( indices[ j ], indices[ j + 1 ], indices[ j + 2 ], group.materialIndex ); + + } else { + + addFace( j, j + 1, j + 2, group.materialIndex ); + + } + + } + + } + + } else { + + if ( indices !== undefined ) { + + for ( var i = 0; i < indices.length; i += 3 ) { + + addFace( indices[ i ], indices[ i + 1 ], indices[ i + 2 ] ); + + } + + } else { + + for ( var i = 0; i < positions.length / 3; i += 3 ) { + + addFace( i, i + 1, i + 2 ); + + } + + } + + } + + this.computeFaceNormals(); + + if ( geometry.boundingBox !== null ) { + + this.boundingBox = geometry.boundingBox.clone(); + + } + + if ( geometry.boundingSphere !== null ) { + + this.boundingSphere = geometry.boundingSphere.clone(); + + } + + return this; + + }, + + center: function () { + + var offset = new Vector3(); + + return function center() { + + this.computeBoundingBox(); + + this.boundingBox.getCenter( offset ).negate(); + + this.translate( offset.x, offset.y, offset.z ); + + return this; + + }; + + }(), + + normalize: function () { + + this.computeBoundingSphere(); + + var center = this.boundingSphere.center; + var radius = this.boundingSphere.radius; + + var s = radius === 0 ? 1 : 1.0 / radius; + + var matrix = new Matrix4(); + matrix.set( + s, 0, 0, - s * center.x, + 0, s, 0, - s * center.y, + 0, 0, s, - s * center.z, + 0, 0, 0, 1 + ); + + this.applyMatrix( matrix ); + + return this; + + }, + + computeFaceNormals: function () { + + var cb = new Vector3(), ab = new Vector3(); + + for ( var f = 0, fl = this.faces.length; f < fl; f ++ ) { + + var face = this.faces[ f ]; + + var vA = this.vertices[ face.a ]; + var vB = this.vertices[ face.b ]; + var vC = this.vertices[ face.c ]; + + cb.subVectors( vC, vB ); + ab.subVectors( vA, vB ); + cb.cross( ab ); + + cb.normalize(); + + face.normal.copy( cb ); + + } + + }, + + computeVertexNormals: function ( areaWeighted ) { + + if ( areaWeighted === undefined ) areaWeighted = true; + + var v, vl, f, fl, face, vertices; + + vertices = new Array( this.vertices.length ); + + for ( v = 0, vl = this.vertices.length; v < vl; v ++ ) { + + vertices[ v ] = new Vector3(); + + } + + if ( areaWeighted ) { + + // vertex normals weighted by triangle areas + // http://www.iquilezles.org/www/articles/normals/normals.htm + + var vA, vB, vC; + var cb = new Vector3(), ab = new Vector3(); + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + face = this.faces[ f ]; + + vA = this.vertices[ face.a ]; + vB = this.vertices[ face.b ]; + vC = this.vertices[ face.c ]; + + cb.subVectors( vC, vB ); + ab.subVectors( vA, vB ); + cb.cross( ab ); + + vertices[ face.a ].add( cb ); + vertices[ face.b ].add( cb ); + vertices[ face.c ].add( cb ); + + } + + } else { + + this.computeFaceNormals(); + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + face = this.faces[ f ]; + + vertices[ face.a ].add( face.normal ); + vertices[ face.b ].add( face.normal ); + vertices[ face.c ].add( face.normal ); + + } + + } + + for ( v = 0, vl = this.vertices.length; v < vl; v ++ ) { + + vertices[ v ].normalize(); + + } + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + face = this.faces[ f ]; + + var vertexNormals = face.vertexNormals; + + if ( vertexNormals.length === 3 ) { + + vertexNormals[ 0 ].copy( vertices[ face.a ] ); + vertexNormals[ 1 ].copy( vertices[ face.b ] ); + vertexNormals[ 2 ].copy( vertices[ face.c ] ); + + } else { + + vertexNormals[ 0 ] = vertices[ face.a ].clone(); + vertexNormals[ 1 ] = vertices[ face.b ].clone(); + vertexNormals[ 2 ] = vertices[ face.c ].clone(); + + } + + } + + if ( this.faces.length > 0 ) { + + this.normalsNeedUpdate = true; + + } + + }, + + computeFlatVertexNormals: function () { + + var f, fl, face; + + this.computeFaceNormals(); + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + face = this.faces[ f ]; + + var vertexNormals = face.vertexNormals; + + if ( vertexNormals.length === 3 ) { + + vertexNormals[ 0 ].copy( face.normal ); + vertexNormals[ 1 ].copy( face.normal ); + vertexNormals[ 2 ].copy( face.normal ); + + } else { + + vertexNormals[ 0 ] = face.normal.clone(); + vertexNormals[ 1 ] = face.normal.clone(); + vertexNormals[ 2 ] = face.normal.clone(); + + } + + } + + if ( this.faces.length > 0 ) { + + this.normalsNeedUpdate = true; + + } + + }, + + computeMorphNormals: function () { + + var i, il, f, fl, face; + + // save original normals + // - create temp variables on first access + // otherwise just copy (for faster repeated calls) + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + face = this.faces[ f ]; + + if ( ! face.__originalFaceNormal ) { + + face.__originalFaceNormal = face.normal.clone(); + + } else { + + face.__originalFaceNormal.copy( face.normal ); + + } + + if ( ! face.__originalVertexNormals ) face.__originalVertexNormals = []; + + for ( i = 0, il = face.vertexNormals.length; i < il; i ++ ) { + + if ( ! face.__originalVertexNormals[ i ] ) { + + face.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone(); + + } else { + + face.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] ); + + } + + } + + } + + // use temp geometry to compute face and vertex normals for each morph + + var tmpGeo = new Geometry(); + tmpGeo.faces = this.faces; + + for ( i = 0, il = this.morphTargets.length; i < il; i ++ ) { + + // create on first access + + if ( ! this.morphNormals[ i ] ) { + + this.morphNormals[ i ] = {}; + this.morphNormals[ i ].faceNormals = []; + this.morphNormals[ i ].vertexNormals = []; + + var dstNormalsFace = this.morphNormals[ i ].faceNormals; + var dstNormalsVertex = this.morphNormals[ i ].vertexNormals; + + var faceNormal, vertexNormals; + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + faceNormal = new Vector3(); + vertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() }; + + dstNormalsFace.push( faceNormal ); + dstNormalsVertex.push( vertexNormals ); + + } + + } + + var morphNormals = this.morphNormals[ i ]; + + // set vertices to morph target + + tmpGeo.vertices = this.morphTargets[ i ].vertices; + + // compute morph normals + + tmpGeo.computeFaceNormals(); + tmpGeo.computeVertexNormals(); + + // store morph normals + + var faceNormal, vertexNormals; + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + face = this.faces[ f ]; + + faceNormal = morphNormals.faceNormals[ f ]; + vertexNormals = morphNormals.vertexNormals[ f ]; + + faceNormal.copy( face.normal ); + + vertexNormals.a.copy( face.vertexNormals[ 0 ] ); + vertexNormals.b.copy( face.vertexNormals[ 1 ] ); + vertexNormals.c.copy( face.vertexNormals[ 2 ] ); + + } + + } + + // restore original normals + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + face = this.faces[ f ]; + + face.normal = face.__originalFaceNormal; + face.vertexNormals = face.__originalVertexNormals; + + } + + }, + + computeBoundingBox: function () { + + if ( this.boundingBox === null ) { + + this.boundingBox = new Box3(); + + } + + this.boundingBox.setFromPoints( this.vertices ); + + }, + + computeBoundingSphere: function () { + + if ( this.boundingSphere === null ) { + + this.boundingSphere = new Sphere(); + + } + + this.boundingSphere.setFromPoints( this.vertices ); + + }, + + merge: function ( geometry, matrix, materialIndexOffset ) { + + if ( ! ( geometry && geometry.isGeometry ) ) { + + console.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry ); + return; + + } + + var normalMatrix, + vertexOffset = this.vertices.length, + vertices1 = this.vertices, + vertices2 = geometry.vertices, + faces1 = this.faces, + faces2 = geometry.faces, + uvs1 = this.faceVertexUvs[ 0 ], + uvs2 = geometry.faceVertexUvs[ 0 ], + colors1 = this.colors, + colors2 = geometry.colors; + + if ( materialIndexOffset === undefined ) materialIndexOffset = 0; + + if ( matrix !== undefined ) { + + normalMatrix = new Matrix3().getNormalMatrix( matrix ); + + } + + // vertices + + for ( var i = 0, il = vertices2.length; i < il; i ++ ) { + + var vertex = vertices2[ i ]; + + var vertexCopy = vertex.clone(); + + if ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix ); + + vertices1.push( vertexCopy ); + + } + + // colors + + for ( var i = 0, il = colors2.length; i < il; i ++ ) { + + colors1.push( colors2[ i ].clone() ); + + } + + // faces + + for ( i = 0, il = faces2.length; i < il; i ++ ) { + + var face = faces2[ i ], faceCopy, normal, color, + faceVertexNormals = face.vertexNormals, + faceVertexColors = face.vertexColors; + + faceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset ); + faceCopy.normal.copy( face.normal ); + + if ( normalMatrix !== undefined ) { + + faceCopy.normal.applyMatrix3( normalMatrix ).normalize(); + + } + + for ( var j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) { + + normal = faceVertexNormals[ j ].clone(); + + if ( normalMatrix !== undefined ) { + + normal.applyMatrix3( normalMatrix ).normalize(); + + } + + faceCopy.vertexNormals.push( normal ); + + } + + faceCopy.color.copy( face.color ); + + for ( var j = 0, jl = faceVertexColors.length; j < jl; j ++ ) { + + color = faceVertexColors[ j ]; + faceCopy.vertexColors.push( color.clone() ); + + } + + faceCopy.materialIndex = face.materialIndex + materialIndexOffset; + + faces1.push( faceCopy ); + + } + + // uvs + + for ( i = 0, il = uvs2.length; i < il; i ++ ) { + + var uv = uvs2[ i ], uvCopy = []; + + if ( uv === undefined ) { + + continue; + + } + + for ( var j = 0, jl = uv.length; j < jl; j ++ ) { + + uvCopy.push( uv[ j ].clone() ); + + } + + uvs1.push( uvCopy ); + + } + + }, + + mergeMesh: function ( mesh ) { + + if ( ! ( mesh && mesh.isMesh ) ) { + + console.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh ); + return; + + } + + if ( mesh.matrixAutoUpdate ) mesh.updateMatrix(); + + this.merge( mesh.geometry, mesh.matrix ); + + }, + + /* + * Checks for duplicate vertices with hashmap. + * Duplicated vertices are removed + * and faces' vertices are updated. + */ + + mergeVertices: function () { + + var verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique) + var unique = [], changes = []; + + var v, key; + var precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001 + var precision = Math.pow( 10, precisionPoints ); + var i, il, face; + var indices, j, jl; + + for ( i = 0, il = this.vertices.length; i < il; i ++ ) { + + v = this.vertices[ i ]; + key = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision ); + + if ( verticesMap[ key ] === undefined ) { + + verticesMap[ key ] = i; + unique.push( this.vertices[ i ] ); + changes[ i ] = unique.length - 1; + + } else { + + //console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]); + changes[ i ] = changes[ verticesMap[ key ] ]; + + } + + } + + + // if faces are completely degenerate after merging vertices, we + // have to remove them from the geometry. + var faceIndicesToRemove = []; + + for ( i = 0, il = this.faces.length; i < il; i ++ ) { + + face = this.faces[ i ]; + + face.a = changes[ face.a ]; + face.b = changes[ face.b ]; + face.c = changes[ face.c ]; + + indices = [ face.a, face.b, face.c ]; + + // if any duplicate vertices are found in a Face3 + // we have to remove the face as nothing can be saved + for ( var n = 0; n < 3; n ++ ) { + + if ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) { + + faceIndicesToRemove.push( i ); + break; + + } + + } + + } + + for ( i = faceIndicesToRemove.length - 1; i >= 0; i -- ) { + + var idx = faceIndicesToRemove[ i ]; + + this.faces.splice( idx, 1 ); + + for ( j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) { + + this.faceVertexUvs[ j ].splice( idx, 1 ); + + } + + } + + // Use unique set of vertices + + var diff = this.vertices.length - unique.length; + this.vertices = unique; + return diff; + + }, + + setFromPoints: function ( points ) { + + this.vertices = []; + + for ( var i = 0, l = points.length; i < l; i ++ ) { + + var point = points[ i ]; + this.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) ); + + } + + return this; + + }, + + sortFacesByMaterialIndex: function () { + + var faces = this.faces; + var length = faces.length; + + // tag faces + + for ( var i = 0; i < length; i ++ ) { + + faces[ i ]._id = i; + + } + + // sort faces + + function materialIndexSort( a, b ) { + + return a.materialIndex - b.materialIndex; + + } + + faces.sort( materialIndexSort ); + + // sort uvs + + var uvs1 = this.faceVertexUvs[ 0 ]; + var uvs2 = this.faceVertexUvs[ 1 ]; + + var newUvs1, newUvs2; + + if ( uvs1 && uvs1.length === length ) newUvs1 = []; + if ( uvs2 && uvs2.length === length ) newUvs2 = []; + + for ( var i = 0; i < length; i ++ ) { + + var id = faces[ i ]._id; + + if ( newUvs1 ) newUvs1.push( uvs1[ id ] ); + if ( newUvs2 ) newUvs2.push( uvs2[ id ] ); + + } + + if ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1; + if ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2; + + }, + + toJSON: function () { + + var data = { + metadata: { + version: 4.5, + type: 'Geometry', + generator: 'Geometry.toJSON' + } + }; + + // standard Geometry serialization + + data.uuid = this.uuid; + data.type = this.type; + if ( this.name !== '' ) data.name = this.name; + + if ( this.parameters !== undefined ) { + + var parameters = this.parameters; + + for ( var key in parameters ) { + + if ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ]; + + } + + return data; + + } + + var vertices = []; + + for ( var i = 0; i < this.vertices.length; i ++ ) { + + var vertex = this.vertices[ i ]; + vertices.push( vertex.x, vertex.y, vertex.z ); + + } + + var faces = []; + var normals = []; + var normalsHash = {}; + var colors = []; + var colorsHash = {}; + var uvs = []; + var uvsHash = {}; + + for ( var i = 0; i < this.faces.length; i ++ ) { + + var face = this.faces[ i ]; + + var hasMaterial = true; + var hasFaceUv = false; // deprecated + var hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined; + var hasFaceNormal = face.normal.length() > 0; + var hasFaceVertexNormal = face.vertexNormals.length > 0; + var hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1; + var hasFaceVertexColor = face.vertexColors.length > 0; + + var faceType = 0; + + faceType = setBit( faceType, 0, 0 ); // isQuad + faceType = setBit( faceType, 1, hasMaterial ); + faceType = setBit( faceType, 2, hasFaceUv ); + faceType = setBit( faceType, 3, hasFaceVertexUv ); + faceType = setBit( faceType, 4, hasFaceNormal ); + faceType = setBit( faceType, 5, hasFaceVertexNormal ); + faceType = setBit( faceType, 6, hasFaceColor ); + faceType = setBit( faceType, 7, hasFaceVertexColor ); + + faces.push( faceType ); + faces.push( face.a, face.b, face.c ); + faces.push( face.materialIndex ); + + if ( hasFaceVertexUv ) { + + var faceVertexUvs = this.faceVertexUvs[ 0 ][ i ]; + + faces.push( + getUvIndex( faceVertexUvs[ 0 ] ), + getUvIndex( faceVertexUvs[ 1 ] ), + getUvIndex( faceVertexUvs[ 2 ] ) + ); + + } + + if ( hasFaceNormal ) { + + faces.push( getNormalIndex( face.normal ) ); + + } + + if ( hasFaceVertexNormal ) { + + var vertexNormals = face.vertexNormals; + + faces.push( + getNormalIndex( vertexNormals[ 0 ] ), + getNormalIndex( vertexNormals[ 1 ] ), + getNormalIndex( vertexNormals[ 2 ] ) + ); + + } + + if ( hasFaceColor ) { + + faces.push( getColorIndex( face.color ) ); + + } + + if ( hasFaceVertexColor ) { + + var vertexColors = face.vertexColors; + + faces.push( + getColorIndex( vertexColors[ 0 ] ), + getColorIndex( vertexColors[ 1 ] ), + getColorIndex( vertexColors[ 2 ] ) + ); + + } + + } + + function setBit( value, position, enabled ) { + + return enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) ); + + } + + function getNormalIndex( normal ) { + + var hash = normal.x.toString() + normal.y.toString() + normal.z.toString(); + + if ( normalsHash[ hash ] !== undefined ) { + + return normalsHash[ hash ]; + + } + + normalsHash[ hash ] = normals.length / 3; + normals.push( normal.x, normal.y, normal.z ); + + return normalsHash[ hash ]; + + } + + function getColorIndex( color ) { + + var hash = color.r.toString() + color.g.toString() + color.b.toString(); + + if ( colorsHash[ hash ] !== undefined ) { + + return colorsHash[ hash ]; + + } + + colorsHash[ hash ] = colors.length; + colors.push( color.getHex() ); + + return colorsHash[ hash ]; + + } + + function getUvIndex( uv ) { + + var hash = uv.x.toString() + uv.y.toString(); + + if ( uvsHash[ hash ] !== undefined ) { + + return uvsHash[ hash ]; + + } + + uvsHash[ hash ] = uvs.length / 2; + uvs.push( uv.x, uv.y ); + + return uvsHash[ hash ]; + + } + + data.data = {}; + + data.data.vertices = vertices; + data.data.normals = normals; + if ( colors.length > 0 ) data.data.colors = colors; + if ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility + data.data.faces = faces; + + return data; + + }, + + clone: function () { + + /* + // Handle primitives + + var parameters = this.parameters; + + if ( parameters !== undefined ) { + + var values = []; + + for ( var key in parameters ) { + + values.push( parameters[ key ] ); + + } + + var geometry = Object.create( this.constructor.prototype ); + this.constructor.apply( geometry, values ); + return geometry; + + } + + return new this.constructor().copy( this ); + */ + + return new Geometry().copy( this ); + + }, + + copy: function ( source ) { + + var i, il, j, jl, k, kl; + + // reset + + this.vertices = []; + this.colors = []; + this.faces = []; + this.faceVertexUvs = [[]]; + this.morphTargets = []; + this.morphNormals = []; + this.skinWeights = []; + this.skinIndices = []; + this.lineDistances = []; + this.boundingBox = null; + this.boundingSphere = null; + + // name + + this.name = source.name; + + // vertices + + var vertices = source.vertices; + + for ( i = 0, il = vertices.length; i < il; i ++ ) { + + this.vertices.push( vertices[ i ].clone() ); + + } + + // colors + + var colors = source.colors; + + for ( i = 0, il = colors.length; i < il; i ++ ) { + + this.colors.push( colors[ i ].clone() ); + + } + + // faces + + var faces = source.faces; + + for ( i = 0, il = faces.length; i < il; i ++ ) { + + this.faces.push( faces[ i ].clone() ); + + } + + // face vertex uvs + + for ( i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) { + + var faceVertexUvs = source.faceVertexUvs[ i ]; + + if ( this.faceVertexUvs[ i ] === undefined ) { + + this.faceVertexUvs[ i ] = []; + + } + + for ( j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) { + + var uvs = faceVertexUvs[ j ], uvsCopy = []; + + for ( k = 0, kl = uvs.length; k < kl; k ++ ) { + + var uv = uvs[ k ]; + + uvsCopy.push( uv.clone() ); + + } + + this.faceVertexUvs[ i ].push( uvsCopy ); + + } + + } + + // morph targets + + var morphTargets = source.morphTargets; + + for ( i = 0, il = morphTargets.length; i < il; i ++ ) { + + var morphTarget = {}; + morphTarget.name = morphTargets[ i ].name; + + // vertices + + if ( morphTargets[ i ].vertices !== undefined ) { + + morphTarget.vertices = []; + + for ( j = 0, jl = morphTargets[ i ].vertices.length; j < jl; j ++ ) { + + morphTarget.vertices.push( morphTargets[ i ].vertices[ j ].clone() ); + + } + + } + + // normals + + if ( morphTargets[ i ].normals !== undefined ) { + + morphTarget.normals = []; + + for ( j = 0, jl = morphTargets[ i ].normals.length; j < jl; j ++ ) { + + morphTarget.normals.push( morphTargets[ i ].normals[ j ].clone() ); + + } + + } + + this.morphTargets.push( morphTarget ); + + } + + // morph normals + + var morphNormals = source.morphNormals; + + for ( i = 0, il = morphNormals.length; i < il; i ++ ) { + + var morphNormal = {}; + + // vertex normals + + if ( morphNormals[ i ].vertexNormals !== undefined ) { + + morphNormal.vertexNormals = []; + + for ( j = 0, jl = morphNormals[ i ].vertexNormals.length; j < jl; j ++ ) { + + var srcVertexNormal = morphNormals[ i ].vertexNormals[ j ]; + var destVertexNormal = {}; + + destVertexNormal.a = srcVertexNormal.a.clone(); + destVertexNormal.b = srcVertexNormal.b.clone(); + destVertexNormal.c = srcVertexNormal.c.clone(); + + morphNormal.vertexNormals.push( destVertexNormal ); + + } + + } + + // face normals + + if ( morphNormals[ i ].faceNormals !== undefined ) { + + morphNormal.faceNormals = []; + + for ( j = 0, jl = morphNormals[ i ].faceNormals.length; j < jl; j ++ ) { + + morphNormal.faceNormals.push( morphNormals[ i ].faceNormals[ j ].clone() ); + + } + + } + + this.morphNormals.push( morphNormal ); + + } + + // skin weights + + var skinWeights = source.skinWeights; + + for ( i = 0, il = skinWeights.length; i < il; i ++ ) { + + this.skinWeights.push( skinWeights[ i ].clone() ); + + } + + // skin indices + + var skinIndices = source.skinIndices; + + for ( i = 0, il = skinIndices.length; i < il; i ++ ) { + + this.skinIndices.push( skinIndices[ i ].clone() ); + + } + + // line distances + + var lineDistances = source.lineDistances; + + for ( i = 0, il = lineDistances.length; i < il; i ++ ) { + + this.lineDistances.push( lineDistances[ i ] ); + + } + + // bounding box + + var boundingBox = source.boundingBox; + + if ( boundingBox !== null ) { + + this.boundingBox = boundingBox.clone(); + + } + + // bounding sphere + + var boundingSphere = source.boundingSphere; + + if ( boundingSphere !== null ) { + + this.boundingSphere = boundingSphere.clone(); + + } + + // update flags + + this.elementsNeedUpdate = source.elementsNeedUpdate; + this.verticesNeedUpdate = source.verticesNeedUpdate; + this.uvsNeedUpdate = source.uvsNeedUpdate; + this.normalsNeedUpdate = source.normalsNeedUpdate; + this.colorsNeedUpdate = source.colorsNeedUpdate; + this.lineDistancesNeedUpdate = source.lineDistancesNeedUpdate; + this.groupsNeedUpdate = source.groupsNeedUpdate; + + return this; + + }, + + dispose: function () { + + this.dispatchEvent( { type: 'dispose' } ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function BufferAttribute( array, itemSize, normalized ) { + + if ( Array.isArray( array ) ) { + + throw new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' ); + + } + + this.name = ''; + + this.array = array; + this.itemSize = itemSize; + this.count = array !== undefined ? array.length / itemSize : 0; + this.normalized = normalized === true; + + this.dynamic = false; + this.updateRange = { offset: 0, count: - 1 }; + + this.version = 0; + + } + + Object.defineProperty( BufferAttribute.prototype, 'needsUpdate', { + + set: function ( value ) { + + if ( value === true ) this.version ++; + + } + + } ); + + Object.assign( BufferAttribute.prototype, { + + isBufferAttribute: true, + + onUploadCallback: function () {}, + + setArray: function ( array ) { + + if ( Array.isArray( array ) ) { + + throw new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' ); + + } + + this.count = array !== undefined ? array.length / this.itemSize : 0; + this.array = array; + + return this; + + }, + + setDynamic: function ( value ) { + + this.dynamic = value; + + return this; + + }, + + copy: function ( source ) { + + this.name = source.name; + this.array = new source.array.constructor( source.array ); + this.itemSize = source.itemSize; + this.count = source.count; + this.normalized = source.normalized; + + this.dynamic = source.dynamic; + + return this; + + }, + + copyAt: function ( index1, attribute, index2 ) { + + index1 *= this.itemSize; + index2 *= attribute.itemSize; + + for ( var i = 0, l = this.itemSize; i < l; i ++ ) { + + this.array[ index1 + i ] = attribute.array[ index2 + i ]; + + } + + return this; + + }, + + copyArray: function ( array ) { + + this.array.set( array ); + + return this; + + }, + + copyColorsArray: function ( colors ) { + + var array = this.array, offset = 0; + + for ( var i = 0, l = colors.length; i < l; i ++ ) { + + var color = colors[ i ]; + + if ( color === undefined ) { + + console.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i ); + color = new Color(); + + } + + array[ offset ++ ] = color.r; + array[ offset ++ ] = color.g; + array[ offset ++ ] = color.b; + + } + + return this; + + }, + + copyVector2sArray: function ( vectors ) { + + var array = this.array, offset = 0; + + for ( var i = 0, l = vectors.length; i < l; i ++ ) { + + var vector = vectors[ i ]; + + if ( vector === undefined ) { + + console.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i ); + vector = new Vector2(); + + } + + array[ offset ++ ] = vector.x; + array[ offset ++ ] = vector.y; + + } + + return this; + + }, + + copyVector3sArray: function ( vectors ) { + + var array = this.array, offset = 0; + + for ( var i = 0, l = vectors.length; i < l; i ++ ) { + + var vector = vectors[ i ]; + + if ( vector === undefined ) { + + console.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i ); + vector = new Vector3(); + + } + + array[ offset ++ ] = vector.x; + array[ offset ++ ] = vector.y; + array[ offset ++ ] = vector.z; + + } + + return this; + + }, + + copyVector4sArray: function ( vectors ) { + + var array = this.array, offset = 0; + + for ( var i = 0, l = vectors.length; i < l; i ++ ) { + + var vector = vectors[ i ]; + + if ( vector === undefined ) { + + console.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i ); + vector = new Vector4(); + + } + + array[ offset ++ ] = vector.x; + array[ offset ++ ] = vector.y; + array[ offset ++ ] = vector.z; + array[ offset ++ ] = vector.w; + + } + + return this; + + }, + + set: function ( value, offset ) { + + if ( offset === undefined ) offset = 0; + + this.array.set( value, offset ); + + return this; + + }, + + getX: function ( index ) { + + return this.array[ index * this.itemSize ]; + + }, + + setX: function ( index, x ) { + + this.array[ index * this.itemSize ] = x; + + return this; + + }, + + getY: function ( index ) { + + return this.array[ index * this.itemSize + 1 ]; + + }, + + setY: function ( index, y ) { + + this.array[ index * this.itemSize + 1 ] = y; + + return this; + + }, + + getZ: function ( index ) { + + return this.array[ index * this.itemSize + 2 ]; + + }, + + setZ: function ( index, z ) { + + this.array[ index * this.itemSize + 2 ] = z; + + return this; + + }, + + getW: function ( index ) { + + return this.array[ index * this.itemSize + 3 ]; + + }, + + setW: function ( index, w ) { + + this.array[ index * this.itemSize + 3 ] = w; + + return this; + + }, + + setXY: function ( index, x, y ) { + + index *= this.itemSize; + + this.array[ index + 0 ] = x; + this.array[ index + 1 ] = y; + + return this; + + }, + + setXYZ: function ( index, x, y, z ) { + + index *= this.itemSize; + + this.array[ index + 0 ] = x; + this.array[ index + 1 ] = y; + this.array[ index + 2 ] = z; + + return this; + + }, + + setXYZW: function ( index, x, y, z, w ) { + + index *= this.itemSize; + + this.array[ index + 0 ] = x; + this.array[ index + 1 ] = y; + this.array[ index + 2 ] = z; + this.array[ index + 3 ] = w; + + return this; + + }, + + onUpload: function ( callback ) { + + this.onUploadCallback = callback; + + return this; + + }, + + clone: function () { + + return new this.constructor( this.array, this.itemSize ).copy( this ); + + }, + + toJSON: function () { + + return { + itemSize: this.itemSize, + type: this.array.constructor.name, + array: Array.prototype.slice.call( this.array ), + normalized: this.normalized + }; + + } + + } ); + + // + + function Int8BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Int8Array( array ), itemSize, normalized ); + + } + + Int8BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Int8BufferAttribute.prototype.constructor = Int8BufferAttribute; + + + function Uint8BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Uint8Array( array ), itemSize, normalized ); + + } + + Uint8BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Uint8BufferAttribute.prototype.constructor = Uint8BufferAttribute; + + + function Uint8ClampedBufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Uint8ClampedArray( array ), itemSize, normalized ); + + } + + Uint8ClampedBufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Uint8ClampedBufferAttribute.prototype.constructor = Uint8ClampedBufferAttribute; + + + function Int16BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Int16Array( array ), itemSize, normalized ); + + } + + Int16BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Int16BufferAttribute.prototype.constructor = Int16BufferAttribute; + + + function Uint16BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized ); + + } + + Uint16BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Uint16BufferAttribute.prototype.constructor = Uint16BufferAttribute; + + + function Int32BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Int32Array( array ), itemSize, normalized ); + + } + + Int32BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Int32BufferAttribute.prototype.constructor = Int32BufferAttribute; + + + function Uint32BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Uint32Array( array ), itemSize, normalized ); + + } + + Uint32BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Uint32BufferAttribute.prototype.constructor = Uint32BufferAttribute; + + + function Float32BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Float32Array( array ), itemSize, normalized ); + + } + + Float32BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Float32BufferAttribute.prototype.constructor = Float32BufferAttribute; + + + function Float64BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Float64Array( array ), itemSize, normalized ); + + } + + Float64BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Float64BufferAttribute.prototype.constructor = Float64BufferAttribute; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function DirectGeometry() { + + this.vertices = []; + this.normals = []; + this.colors = []; + this.uvs = []; + this.uvs2 = []; + + this.groups = []; + + this.morphTargets = {}; + + this.skinWeights = []; + this.skinIndices = []; + + // this.lineDistances = []; + + this.boundingBox = null; + this.boundingSphere = null; + + // update flags + + this.verticesNeedUpdate = false; + this.normalsNeedUpdate = false; + this.colorsNeedUpdate = false; + this.uvsNeedUpdate = false; + this.groupsNeedUpdate = false; + + } + + Object.assign( DirectGeometry.prototype, { + + computeGroups: function ( geometry ) { + + var group; + var groups = []; + var materialIndex = undefined; + + var faces = geometry.faces; + + for ( var i = 0; i < faces.length; i ++ ) { + + var face = faces[ i ]; + + // materials + + if ( face.materialIndex !== materialIndex ) { + + materialIndex = face.materialIndex; + + if ( group !== undefined ) { + + group.count = ( i * 3 ) - group.start; + groups.push( group ); + + } + + group = { + start: i * 3, + materialIndex: materialIndex + }; + + } + + } + + if ( group !== undefined ) { + + group.count = ( i * 3 ) - group.start; + groups.push( group ); + + } + + this.groups = groups; + + }, + + fromGeometry: function ( geometry ) { + + var faces = geometry.faces; + var vertices = geometry.vertices; + var faceVertexUvs = geometry.faceVertexUvs; + + var hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0; + var hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0; + + // morphs + + var morphTargets = geometry.morphTargets; + var morphTargetsLength = morphTargets.length; + + var morphTargetsPosition; + + if ( morphTargetsLength > 0 ) { + + morphTargetsPosition = []; + + for ( var i = 0; i < morphTargetsLength; i ++ ) { + + morphTargetsPosition[ i ] = { + name: morphTargets[ i ].name, + data: [] + }; + + } + + this.morphTargets.position = morphTargetsPosition; + + } + + var morphNormals = geometry.morphNormals; + var morphNormalsLength = morphNormals.length; + + var morphTargetsNormal; + + if ( morphNormalsLength > 0 ) { + + morphTargetsNormal = []; + + for ( var i = 0; i < morphNormalsLength; i ++ ) { + + morphTargetsNormal[ i ] = { + name: morphNormals[ i ].name, + data: [] + }; + + } + + this.morphTargets.normal = morphTargetsNormal; + + } + + // skins + + var skinIndices = geometry.skinIndices; + var skinWeights = geometry.skinWeights; + + var hasSkinIndices = skinIndices.length === vertices.length; + var hasSkinWeights = skinWeights.length === vertices.length; + + // + + if ( vertices.length > 0 && faces.length === 0 ) { + + console.error( 'THREE.DirectGeometry: Faceless geometries are not supported.' ); + + } + + for ( var i = 0; i < faces.length; i ++ ) { + + var face = faces[ i ]; + + this.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] ); + + var vertexNormals = face.vertexNormals; + + if ( vertexNormals.length === 3 ) { + + this.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] ); + + } else { + + var normal = face.normal; + + this.normals.push( normal, normal, normal ); + + } + + var vertexColors = face.vertexColors; + + if ( vertexColors.length === 3 ) { + + this.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] ); + + } else { + + var color = face.color; + + this.colors.push( color, color, color ); + + } + + if ( hasFaceVertexUv === true ) { + + var vertexUvs = faceVertexUvs[ 0 ][ i ]; + + if ( vertexUvs !== undefined ) { + + this.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] ); + + } else { + + console.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i ); + + this.uvs.push( new Vector2(), new Vector2(), new Vector2() ); + + } + + } + + if ( hasFaceVertexUv2 === true ) { + + var vertexUvs = faceVertexUvs[ 1 ][ i ]; + + if ( vertexUvs !== undefined ) { + + this.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] ); + + } else { + + console.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i ); + + this.uvs2.push( new Vector2(), new Vector2(), new Vector2() ); + + } + + } + + // morphs + + for ( var j = 0; j < morphTargetsLength; j ++ ) { + + var morphTarget = morphTargets[ j ].vertices; + + morphTargetsPosition[ j ].data.push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] ); + + } + + for ( var j = 0; j < morphNormalsLength; j ++ ) { + + var morphNormal = morphNormals[ j ].vertexNormals[ i ]; + + morphTargetsNormal[ j ].data.push( morphNormal.a, morphNormal.b, morphNormal.c ); + + } + + // skins + + if ( hasSkinIndices ) { + + this.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] ); + + } + + if ( hasSkinWeights ) { + + this.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] ); + + } + + } + + this.computeGroups( geometry ); + + this.verticesNeedUpdate = geometry.verticesNeedUpdate; + this.normalsNeedUpdate = geometry.normalsNeedUpdate; + this.colorsNeedUpdate = geometry.colorsNeedUpdate; + this.uvsNeedUpdate = geometry.uvsNeedUpdate; + this.groupsNeedUpdate = geometry.groupsNeedUpdate; + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function arrayMax( array ) { + + if ( array.length === 0 ) return - Infinity; + + var max = array[ 0 ]; + + for ( var i = 1, l = array.length; i < l; ++ i ) { + + if ( array[ i ] > max ) max = array[ i ]; + + } + + return max; + + } + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + */ + + var bufferGeometryId = 1; // BufferGeometry uses odd numbers as Id + + function BufferGeometry() { + + Object.defineProperty( this, 'id', { value: bufferGeometryId += 2 } ); + + this.uuid = _Math.generateUUID(); + + this.name = ''; + this.type = 'BufferGeometry'; + + this.index = null; + this.attributes = {}; + + this.morphAttributes = {}; + + this.groups = []; + + this.boundingBox = null; + this.boundingSphere = null; + + this.drawRange = { start: 0, count: Infinity }; + + this.userData = {}; + + } + + BufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + + constructor: BufferGeometry, + + isBufferGeometry: true, + + getIndex: function () { + + return this.index; + + }, + + setIndex: function ( index ) { + + if ( Array.isArray( index ) ) { + + this.index = new ( arrayMax( index ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 ); + + } else { + + this.index = index; + + } + + }, + + addAttribute: function ( name, attribute ) { + + if ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) { + + console.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' ); + + return this.addAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) ); + + } + + if ( name === 'index' ) { + + console.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' ); + this.setIndex( attribute ); + + return this; + + } + + this.attributes[ name ] = attribute; + + return this; + + }, + + getAttribute: function ( name ) { + + return this.attributes[ name ]; + + }, + + removeAttribute: function ( name ) { + + delete this.attributes[ name ]; + + return this; + + }, + + addGroup: function ( start, count, materialIndex ) { + + this.groups.push( { + + start: start, + count: count, + materialIndex: materialIndex !== undefined ? materialIndex : 0 + + } ); + + }, + + clearGroups: function () { + + this.groups = []; + + }, + + setDrawRange: function ( start, count ) { + + this.drawRange.start = start; + this.drawRange.count = count; + + }, + + applyMatrix: function ( matrix ) { + + var position = this.attributes.position; + + if ( position !== undefined ) { + + matrix.applyToBufferAttribute( position ); + position.needsUpdate = true; + + } + + var normal = this.attributes.normal; + + if ( normal !== undefined ) { + + var normalMatrix = new Matrix3().getNormalMatrix( matrix ); + + normalMatrix.applyToBufferAttribute( normal ); + normal.needsUpdate = true; + + } + + var tangent = this.attributes.tangent; + + if ( tangent !== undefined ) { + + var normalMatrix = new Matrix3().getNormalMatrix( matrix ); + + // Tangent is vec4, but the '.w' component is a sign value (+1/-1). + normalMatrix.applyToBufferAttribute( tangent ); + tangent.needsUpdate = true; + + } + + if ( this.boundingBox !== null ) { + + this.computeBoundingBox(); + + } + + if ( this.boundingSphere !== null ) { + + this.computeBoundingSphere(); + + } + + return this; + + }, + + rotateX: function () { + + // rotate geometry around world x-axis + + var m1 = new Matrix4(); + + return function rotateX( angle ) { + + m1.makeRotationX( angle ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + rotateY: function () { + + // rotate geometry around world y-axis + + var m1 = new Matrix4(); + + return function rotateY( angle ) { + + m1.makeRotationY( angle ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + rotateZ: function () { + + // rotate geometry around world z-axis + + var m1 = new Matrix4(); + + return function rotateZ( angle ) { + + m1.makeRotationZ( angle ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + translate: function () { + + // translate geometry + + var m1 = new Matrix4(); + + return function translate( x, y, z ) { + + m1.makeTranslation( x, y, z ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + scale: function () { + + // scale geometry + + var m1 = new Matrix4(); + + return function scale( x, y, z ) { + + m1.makeScale( x, y, z ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + lookAt: function () { + + var obj = new Object3D(); + + return function lookAt( vector ) { + + obj.lookAt( vector ); + + obj.updateMatrix(); + + this.applyMatrix( obj.matrix ); + + }; + + }(), + + center: function () { + + var offset = new Vector3(); + + return function center() { + + this.computeBoundingBox(); + + this.boundingBox.getCenter( offset ).negate(); + + this.translate( offset.x, offset.y, offset.z ); + + return this; + + }; + + }(), + + setFromObject: function ( object ) { + + // console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this ); + + var geometry = object.geometry; + + if ( object.isPoints || object.isLine ) { + + var positions = new Float32BufferAttribute( geometry.vertices.length * 3, 3 ); + var colors = new Float32BufferAttribute( geometry.colors.length * 3, 3 ); + + this.addAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) ); + this.addAttribute( 'color', colors.copyColorsArray( geometry.colors ) ); + + if ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) { + + var lineDistances = new Float32BufferAttribute( geometry.lineDistances.length, 1 ); + + this.addAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) ); + + } + + if ( geometry.boundingSphere !== null ) { + + this.boundingSphere = geometry.boundingSphere.clone(); + + } + + if ( geometry.boundingBox !== null ) { + + this.boundingBox = geometry.boundingBox.clone(); + + } + + } else if ( object.isMesh ) { + + if ( geometry && geometry.isGeometry ) { + + this.fromGeometry( geometry ); + + } + + } + + return this; + + }, + + setFromPoints: function ( points ) { + + var position = []; + + for ( var i = 0, l = points.length; i < l; i ++ ) { + + var point = points[ i ]; + position.push( point.x, point.y, point.z || 0 ); + + } + + this.addAttribute( 'position', new Float32BufferAttribute( position, 3 ) ); + + return this; + + }, + + updateFromObject: function ( object ) { + + var geometry = object.geometry; + + if ( object.isMesh ) { + + var direct = geometry.__directGeometry; + + if ( geometry.elementsNeedUpdate === true ) { + + direct = undefined; + geometry.elementsNeedUpdate = false; + + } + + if ( direct === undefined ) { + + return this.fromGeometry( geometry ); + + } + + direct.verticesNeedUpdate = geometry.verticesNeedUpdate; + direct.normalsNeedUpdate = geometry.normalsNeedUpdate; + direct.colorsNeedUpdate = geometry.colorsNeedUpdate; + direct.uvsNeedUpdate = geometry.uvsNeedUpdate; + direct.groupsNeedUpdate = geometry.groupsNeedUpdate; + + geometry.verticesNeedUpdate = false; + geometry.normalsNeedUpdate = false; + geometry.colorsNeedUpdate = false; + geometry.uvsNeedUpdate = false; + geometry.groupsNeedUpdate = false; + + geometry = direct; + + } + + var attribute; + + if ( geometry.verticesNeedUpdate === true ) { + + attribute = this.attributes.position; + + if ( attribute !== undefined ) { + + attribute.copyVector3sArray( geometry.vertices ); + attribute.needsUpdate = true; + + } + + geometry.verticesNeedUpdate = false; + + } + + if ( geometry.normalsNeedUpdate === true ) { + + attribute = this.attributes.normal; + + if ( attribute !== undefined ) { + + attribute.copyVector3sArray( geometry.normals ); + attribute.needsUpdate = true; + + } + + geometry.normalsNeedUpdate = false; + + } + + if ( geometry.colorsNeedUpdate === true ) { + + attribute = this.attributes.color; + + if ( attribute !== undefined ) { + + attribute.copyColorsArray( geometry.colors ); + attribute.needsUpdate = true; + + } + + geometry.colorsNeedUpdate = false; + + } + + if ( geometry.uvsNeedUpdate ) { + + attribute = this.attributes.uv; + + if ( attribute !== undefined ) { + + attribute.copyVector2sArray( geometry.uvs ); + attribute.needsUpdate = true; + + } + + geometry.uvsNeedUpdate = false; + + } + + if ( geometry.lineDistancesNeedUpdate ) { + + attribute = this.attributes.lineDistance; + + if ( attribute !== undefined ) { + + attribute.copyArray( geometry.lineDistances ); + attribute.needsUpdate = true; + + } + + geometry.lineDistancesNeedUpdate = false; + + } + + if ( geometry.groupsNeedUpdate ) { + + geometry.computeGroups( object.geometry ); + this.groups = geometry.groups; + + geometry.groupsNeedUpdate = false; + + } + + return this; + + }, + + fromGeometry: function ( geometry ) { + + geometry.__directGeometry = new DirectGeometry().fromGeometry( geometry ); + + return this.fromDirectGeometry( geometry.__directGeometry ); + + }, + + fromDirectGeometry: function ( geometry ) { + + var positions = new Float32Array( geometry.vertices.length * 3 ); + this.addAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) ); + + if ( geometry.normals.length > 0 ) { + + var normals = new Float32Array( geometry.normals.length * 3 ); + this.addAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) ); + + } + + if ( geometry.colors.length > 0 ) { + + var colors = new Float32Array( geometry.colors.length * 3 ); + this.addAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) ); + + } + + if ( geometry.uvs.length > 0 ) { + + var uvs = new Float32Array( geometry.uvs.length * 2 ); + this.addAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) ); + + } + + if ( geometry.uvs2.length > 0 ) { + + var uvs2 = new Float32Array( geometry.uvs2.length * 2 ); + this.addAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) ); + + } + + // groups + + this.groups = geometry.groups; + + // morphs + + for ( var name in geometry.morphTargets ) { + + var array = []; + var morphTargets = geometry.morphTargets[ name ]; + + for ( var i = 0, l = morphTargets.length; i < l; i ++ ) { + + var morphTarget = morphTargets[ i ]; + + var attribute = new Float32BufferAttribute( morphTarget.data.length * 3, 3 ); + attribute.name = morphTarget.name; + + array.push( attribute.copyVector3sArray( morphTarget.data ) ); + + } + + this.morphAttributes[ name ] = array; + + } + + // skinning + + if ( geometry.skinIndices.length > 0 ) { + + var skinIndices = new Float32BufferAttribute( geometry.skinIndices.length * 4, 4 ); + this.addAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) ); + + } + + if ( geometry.skinWeights.length > 0 ) { + + var skinWeights = new Float32BufferAttribute( geometry.skinWeights.length * 4, 4 ); + this.addAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) ); + + } + + // + + if ( geometry.boundingSphere !== null ) { + + this.boundingSphere = geometry.boundingSphere.clone(); + + } + + if ( geometry.boundingBox !== null ) { + + this.boundingBox = geometry.boundingBox.clone(); + + } + + return this; + + }, + + computeBoundingBox: function () { + + var box = new Box3(); + + return function computeBoundingBox() { + + if ( this.boundingBox === null ) { + + this.boundingBox = new Box3(); + + } + + var position = this.attributes.position; + var morphAttributesPosition = this.morphAttributes.position; + + if ( position !== undefined ) { + + this.boundingBox.setFromBufferAttribute( position ); + + // process morph attributes if present + + if ( morphAttributesPosition ) { + + for ( var i = 0, il = morphAttributesPosition.length; i < il; i ++ ) { + + var morphAttribute = morphAttributesPosition[ i ]; + box.setFromBufferAttribute( morphAttribute ); + + this.boundingBox.expandByPoint( box.min ); + this.boundingBox.expandByPoint( box.max ); + + } + + } + + } else { + + this.boundingBox.makeEmpty(); + + } + + if ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) { + + console.error( 'THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', this ); + + } + + }; + + }(), + + computeBoundingSphere: function () { + + var box = new Box3(); + var boxMorphTargets = new Box3(); + var vector = new Vector3(); + + return function computeBoundingSphere() { + + if ( this.boundingSphere === null ) { + + this.boundingSphere = new Sphere(); + + } + + var position = this.attributes.position; + var morphAttributesPosition = this.morphAttributes.position; + + if ( position ) { + + // first, find the center of the bounding sphere + + var center = this.boundingSphere.center; + + box.setFromBufferAttribute( position ); + + // process morph attributes if present + + if ( morphAttributesPosition ) { + + for ( var i = 0, il = morphAttributesPosition.length; i < il; i ++ ) { + + var morphAttribute = morphAttributesPosition[ i ]; + boxMorphTargets.setFromBufferAttribute( morphAttribute ); + + box.expandByPoint( boxMorphTargets.min ); + box.expandByPoint( boxMorphTargets.max ); + + } + + } + + box.getCenter( center ); + + // second, try to find a boundingSphere with a radius smaller than the + // boundingSphere of the boundingBox: sqrt(3) smaller in the best case + + var maxRadiusSq = 0; + + for ( var i = 0, il = position.count; i < il; i ++ ) { + + vector.fromBufferAttribute( position, i ); + + maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( vector ) ); + + } + + // process morph attributes if present + + if ( morphAttributesPosition ) { + + for ( var i = 0, il = morphAttributesPosition.length; i < il; i ++ ) { + + var morphAttribute = morphAttributesPosition[ i ]; + + for ( var j = 0, jl = morphAttribute.count; j < jl; j ++ ) { + + vector.fromBufferAttribute( morphAttribute, j ); + + maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( vector ) ); + + } + + } + + } + + this.boundingSphere.radius = Math.sqrt( maxRadiusSq ); + + if ( isNaN( this.boundingSphere.radius ) ) { + + console.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', this ); + + } + + } + + }; + + }(), + + computeFaceNormals: function () { + + // backwards compatibility + + }, + + computeVertexNormals: function () { + + var index = this.index; + var attributes = this.attributes; + + if ( attributes.position ) { + + var positions = attributes.position.array; + + if ( attributes.normal === undefined ) { + + this.addAttribute( 'normal', new BufferAttribute( new Float32Array( positions.length ), 3 ) ); + + } else { + + // reset existing normals to zero + + var array = attributes.normal.array; + + for ( var i = 0, il = array.length; i < il; i ++ ) { + + array[ i ] = 0; + + } + + } + + var normals = attributes.normal.array; + + var vA, vB, vC; + var pA = new Vector3(), pB = new Vector3(), pC = new Vector3(); + var cb = new Vector3(), ab = new Vector3(); + + // indexed elements + + if ( index ) { + + var indices = index.array; + + for ( var i = 0, il = index.count; i < il; i += 3 ) { + + vA = indices[ i + 0 ] * 3; + vB = indices[ i + 1 ] * 3; + vC = indices[ i + 2 ] * 3; + + pA.fromArray( positions, vA ); + pB.fromArray( positions, vB ); + pC.fromArray( positions, vC ); + + cb.subVectors( pC, pB ); + ab.subVectors( pA, pB ); + cb.cross( ab ); + + normals[ vA ] += cb.x; + normals[ vA + 1 ] += cb.y; + normals[ vA + 2 ] += cb.z; + + normals[ vB ] += cb.x; + normals[ vB + 1 ] += cb.y; + normals[ vB + 2 ] += cb.z; + + normals[ vC ] += cb.x; + normals[ vC + 1 ] += cb.y; + normals[ vC + 2 ] += cb.z; + + } + + } else { + + // non-indexed elements (unconnected triangle soup) + + for ( var i = 0, il = positions.length; i < il; i += 9 ) { + + pA.fromArray( positions, i ); + pB.fromArray( positions, i + 3 ); + pC.fromArray( positions, i + 6 ); + + cb.subVectors( pC, pB ); + ab.subVectors( pA, pB ); + cb.cross( ab ); + + normals[ i ] = cb.x; + normals[ i + 1 ] = cb.y; + normals[ i + 2 ] = cb.z; + + normals[ i + 3 ] = cb.x; + normals[ i + 4 ] = cb.y; + normals[ i + 5 ] = cb.z; + + normals[ i + 6 ] = cb.x; + normals[ i + 7 ] = cb.y; + normals[ i + 8 ] = cb.z; + + } + + } + + this.normalizeNormals(); + + attributes.normal.needsUpdate = true; + + } + + }, + + merge: function ( geometry, offset ) { + + if ( ! ( geometry && geometry.isBufferGeometry ) ) { + + console.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry ); + return; + + } + + if ( offset === undefined ) { + + offset = 0; + + console.warn( + 'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. ' + + 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.' + ); + + } + + var attributes = this.attributes; + + for ( var key in attributes ) { + + if ( geometry.attributes[ key ] === undefined ) continue; + + var attribute1 = attributes[ key ]; + var attributeArray1 = attribute1.array; + + var attribute2 = geometry.attributes[ key ]; + var attributeArray2 = attribute2.array; + + var attributeOffset = attribute2.itemSize * offset; + var length = Math.min( attributeArray2.length, attributeArray1.length - attributeOffset ); + + for ( var i = 0, j = attributeOffset; i < length; i ++, j ++ ) { + + attributeArray1[ j ] = attributeArray2[ i ]; + + } + + } + + return this; + + }, + + normalizeNormals: function () { + + var vector = new Vector3(); + + return function normalizeNormals() { + + var normals = this.attributes.normal; + + for ( var i = 0, il = normals.count; i < il; i ++ ) { + + vector.x = normals.getX( i ); + vector.y = normals.getY( i ); + vector.z = normals.getZ( i ); + + vector.normalize(); + + normals.setXYZ( i, vector.x, vector.y, vector.z ); + + } + + }; + + }(), + + toNonIndexed: function () { + + function convertBufferAttribute( attribute, indices ) { + + var array = attribute.array; + var itemSize = attribute.itemSize; + + var array2 = new array.constructor( indices.length * itemSize ); + + var index = 0, index2 = 0; + + for ( var i = 0, l = indices.length; i < l; i ++ ) { + + index = indices[ i ] * itemSize; + + for ( var j = 0; j < itemSize; j ++ ) { + + array2[ index2 ++ ] = array[ index ++ ]; + + } + + } + + return new BufferAttribute( array2, itemSize ); + + } + + // + + if ( this.index === null ) { + + console.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' ); + return this; + + } + + var geometry2 = new BufferGeometry(); + + var indices = this.index.array; + var attributes = this.attributes; + + // attributes + + for ( var name in attributes ) { + + var attribute = attributes[ name ]; + + var newAttribute = convertBufferAttribute( attribute, indices ); + + geometry2.addAttribute( name, newAttribute ); + + } + + // morph attributes + + var morphAttributes = this.morphAttributes; + + for ( name in morphAttributes ) { + + var morphArray = []; + var morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes + + for ( var i = 0, il = morphAttribute.length; i < il; i ++ ) { + + var attribute = morphAttribute[ i ]; + + var newAttribute = convertBufferAttribute( attribute, indices ); + + morphArray.push( newAttribute ); + + } + + geometry2.morphAttributes[ name ] = morphArray; + + } + + // groups + + var groups = this.groups; + + for ( var i = 0, l = groups.length; i < l; i ++ ) { + + var group = groups[ i ]; + geometry2.addGroup( group.start, group.count, group.materialIndex ); + + } + + return geometry2; + + }, + + toJSON: function () { + + var data = { + metadata: { + version: 4.5, + type: 'BufferGeometry', + generator: 'BufferGeometry.toJSON' + } + }; + + // standard BufferGeometry serialization + + data.uuid = this.uuid; + data.type = this.type; + if ( this.name !== '' ) data.name = this.name; + if ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData; + + if ( this.parameters !== undefined ) { + + var parameters = this.parameters; + + for ( var key in parameters ) { + + if ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ]; + + } + + return data; + + } + + data.data = { attributes: {} }; + + var index = this.index; + + if ( index !== null ) { + + data.data.index = { + type: index.array.constructor.name, + array: Array.prototype.slice.call( index.array ) + }; + + } + + var attributes = this.attributes; + + for ( var key in attributes ) { + + var attribute = attributes[ key ]; + + var attributeData = attribute.toJSON(); + + if ( attribute.name !== '' ) attributeData.name = attribute.name; + + data.data.attributes[ key ] = attributeData; + + } + + var morphAttributes = {}; + var hasMorphAttributes = false; + + for ( var key in this.morphAttributes ) { + + var attributeArray = this.morphAttributes[ key ]; + + var array = []; + + for ( var i = 0, il = attributeArray.length; i < il; i ++ ) { + + var attribute = attributeArray[ i ]; + + var attributeData = attribute.toJSON(); + + if ( attribute.name !== '' ) attributeData.name = attribute.name; + + array.push( attributeData ); + + } + + if ( array.length > 0 ) { + + morphAttributes[ key ] = array; + + hasMorphAttributes = true; + + } + + } + + if ( hasMorphAttributes ) data.data.morphAttributes = morphAttributes; + + var groups = this.groups; + + if ( groups.length > 0 ) { + + data.data.groups = JSON.parse( JSON.stringify( groups ) ); + + } + + var boundingSphere = this.boundingSphere; + + if ( boundingSphere !== null ) { + + data.data.boundingSphere = { + center: boundingSphere.center.toArray(), + radius: boundingSphere.radius + }; + + } + + return data; + + }, + + clone: function () { + + /* + // Handle primitives + + var parameters = this.parameters; + + if ( parameters !== undefined ) { + + var values = []; + + for ( var key in parameters ) { + + values.push( parameters[ key ] ); + + } + + var geometry = Object.create( this.constructor.prototype ); + this.constructor.apply( geometry, values ); + return geometry; + + } + + return new this.constructor().copy( this ); + */ + + return new BufferGeometry().copy( this ); + + }, + + copy: function ( source ) { + + var name, i, l; + + // reset + + this.index = null; + this.attributes = {}; + this.morphAttributes = {}; + this.groups = []; + this.boundingBox = null; + this.boundingSphere = null; + + // name + + this.name = source.name; + + // index + + var index = source.index; + + if ( index !== null ) { + + this.setIndex( index.clone() ); + + } + + // attributes + + var attributes = source.attributes; + + for ( name in attributes ) { + + var attribute = attributes[ name ]; + this.addAttribute( name, attribute.clone() ); + + } + + // morph attributes + + var morphAttributes = source.morphAttributes; + + for ( name in morphAttributes ) { + + var array = []; + var morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes + + for ( i = 0, l = morphAttribute.length; i < l; i ++ ) { + + array.push( morphAttribute[ i ].clone() ); + + } + + this.morphAttributes[ name ] = array; + + } + + // groups + + var groups = source.groups; + + for ( i = 0, l = groups.length; i < l; i ++ ) { + + var group = groups[ i ]; + this.addGroup( group.start, group.count, group.materialIndex ); + + } + + // bounding box + + var boundingBox = source.boundingBox; + + if ( boundingBox !== null ) { + + this.boundingBox = boundingBox.clone(); + + } + + // bounding sphere + + var boundingSphere = source.boundingSphere; + + if ( boundingSphere !== null ) { + + this.boundingSphere = boundingSphere.clone(); + + } + + // draw range + + this.drawRange.start = source.drawRange.start; + this.drawRange.count = source.drawRange.count; + + // user data + + this.userData = source.userData; + + return this; + + }, + + dispose: function () { + + this.dispatchEvent( { type: 'dispose' } ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / https://github.com/Mugen87 + */ + + // BoxGeometry + + function BoxGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) { + + Geometry.call( this ); + + this.type = 'BoxGeometry'; + + this.parameters = { + width: width, + height: height, + depth: depth, + widthSegments: widthSegments, + heightSegments: heightSegments, + depthSegments: depthSegments + }; + + this.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) ); + this.mergeVertices(); + + } + + BoxGeometry.prototype = Object.create( Geometry.prototype ); + BoxGeometry.prototype.constructor = BoxGeometry; + + // BoxBufferGeometry + + function BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) { + + BufferGeometry.call( this ); + + this.type = 'BoxBufferGeometry'; + + this.parameters = { + width: width, + height: height, + depth: depth, + widthSegments: widthSegments, + heightSegments: heightSegments, + depthSegments: depthSegments + }; + + var scope = this; + + width = width || 1; + height = height || 1; + depth = depth || 1; + + // segments + + widthSegments = Math.floor( widthSegments ) || 1; + heightSegments = Math.floor( heightSegments ) || 1; + depthSegments = Math.floor( depthSegments ) || 1; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // helper variables + + var numberOfVertices = 0; + var groupStart = 0; + + // build each side of the box geometry + + buildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px + buildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx + buildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py + buildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny + buildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz + buildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + function buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) { + + var segmentWidth = width / gridX; + var segmentHeight = height / gridY; + + var widthHalf = width / 2; + var heightHalf = height / 2; + var depthHalf = depth / 2; + + var gridX1 = gridX + 1; + var gridY1 = gridY + 1; + + var vertexCounter = 0; + var groupCount = 0; + + var ix, iy; + + var vector = new Vector3(); + + // generate vertices, normals and uvs + + for ( iy = 0; iy < gridY1; iy ++ ) { + + var y = iy * segmentHeight - heightHalf; + + for ( ix = 0; ix < gridX1; ix ++ ) { + + var x = ix * segmentWidth - widthHalf; + + // set values to correct vector component + + vector[ u ] = x * udir; + vector[ v ] = y * vdir; + vector[ w ] = depthHalf; + + // now apply vector to vertex buffer + + vertices.push( vector.x, vector.y, vector.z ); + + // set values to correct vector component + + vector[ u ] = 0; + vector[ v ] = 0; + vector[ w ] = depth > 0 ? 1 : - 1; + + // now apply vector to normal buffer + + normals.push( vector.x, vector.y, vector.z ); + + // uvs + + uvs.push( ix / gridX ); + uvs.push( 1 - ( iy / gridY ) ); + + // counters + + vertexCounter += 1; + + } + + } + + // indices + + // 1. you need three indices to draw a single face + // 2. a single segment consists of two faces + // 3. so we need to generate six (2*3) indices per segment + + for ( iy = 0; iy < gridY; iy ++ ) { + + for ( ix = 0; ix < gridX; ix ++ ) { + + var a = numberOfVertices + ix + gridX1 * iy; + var b = numberOfVertices + ix + gridX1 * ( iy + 1 ); + var c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 ); + var d = numberOfVertices + ( ix + 1 ) + gridX1 * iy; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + // increase counter + + groupCount += 6; + + } + + } + + // add a group to the geometry. this will ensure multi material support + + scope.addGroup( groupStart, groupCount, materialIndex ); + + // calculate new start value for groups + + groupStart += groupCount; + + // update total number of vertices + + numberOfVertices += vertexCounter; + + } + + } + + BoxBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + BoxBufferGeometry.prototype.constructor = BoxBufferGeometry; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / https://github.com/Mugen87 + */ + + // PlaneGeometry + + function PlaneGeometry( width, height, widthSegments, heightSegments ) { + + Geometry.call( this ); + + this.type = 'PlaneGeometry'; + + this.parameters = { + width: width, + height: height, + widthSegments: widthSegments, + heightSegments: heightSegments + }; + + this.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) ); + this.mergeVertices(); + + } + + PlaneGeometry.prototype = Object.create( Geometry.prototype ); + PlaneGeometry.prototype.constructor = PlaneGeometry; + + // PlaneBufferGeometry + + function PlaneBufferGeometry( width, height, widthSegments, heightSegments ) { + + BufferGeometry.call( this ); + + this.type = 'PlaneBufferGeometry'; + + this.parameters = { + width: width, + height: height, + widthSegments: widthSegments, + heightSegments: heightSegments + }; + + width = width || 1; + height = height || 1; + + var width_half = width / 2; + var height_half = height / 2; + + var gridX = Math.floor( widthSegments ) || 1; + var gridY = Math.floor( heightSegments ) || 1; + + var gridX1 = gridX + 1; + var gridY1 = gridY + 1; + + var segment_width = width / gridX; + var segment_height = height / gridY; + + var ix, iy; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // generate vertices, normals and uvs + + for ( iy = 0; iy < gridY1; iy ++ ) { + + var y = iy * segment_height - height_half; + + for ( ix = 0; ix < gridX1; ix ++ ) { + + var x = ix * segment_width - width_half; + + vertices.push( x, - y, 0 ); + + normals.push( 0, 0, 1 ); + + uvs.push( ix / gridX ); + uvs.push( 1 - ( iy / gridY ) ); + + } + + } + + // indices + + for ( iy = 0; iy < gridY; iy ++ ) { + + for ( ix = 0; ix < gridX; ix ++ ) { + + var a = ix + gridX1 * iy; + var b = ix + gridX1 * ( iy + 1 ); + var c = ( ix + 1 ) + gridX1 * ( iy + 1 ); + var d = ( ix + 1 ) + gridX1 * iy; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + } + + PlaneBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + PlaneBufferGeometry.prototype.constructor = PlaneBufferGeometry; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + */ + + var materialId = 0; + + function Material() { + + Object.defineProperty( this, 'id', { value: materialId ++ } ); + + this.uuid = _Math.generateUUID(); + + this.name = ''; + this.type = 'Material'; + + this.fog = true; + this.lights = true; + + this.blending = NormalBlending; + this.side = FrontSide; + this.flatShading = false; + this.vertexTangents = false; + this.vertexColors = NoColors; // THREE.NoColors, THREE.VertexColors, THREE.FaceColors + + this.opacity = 1; + this.transparent = false; + + this.blendSrc = SrcAlphaFactor; + this.blendDst = OneMinusSrcAlphaFactor; + this.blendEquation = AddEquation; + this.blendSrcAlpha = null; + this.blendDstAlpha = null; + this.blendEquationAlpha = null; + + this.depthFunc = LessEqualDepth; + this.depthTest = true; + this.depthWrite = true; + + this.clippingPlanes = null; + this.clipIntersection = false; + this.clipShadows = false; + + this.shadowSide = null; + + this.colorWrite = true; + + this.precision = null; // override the renderer's default precision for this material + + this.polygonOffset = false; + this.polygonOffsetFactor = 0; + this.polygonOffsetUnits = 0; + + this.dithering = false; + + this.alphaTest = 0; + this.premultipliedAlpha = false; + + this.visible = true; + + this.userData = {}; + + this.needsUpdate = true; + + } + + Material.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + + constructor: Material, + + isMaterial: true, + + onBeforeCompile: function () {}, + + setValues: function ( values ) { + + if ( values === undefined ) return; + + for ( var key in values ) { + + var newValue = values[ key ]; + + if ( newValue === undefined ) { + + console.warn( "THREE.Material: '" + key + "' parameter is undefined." ); + continue; + + } + + // for backward compatability if shading is set in the constructor + if ( key === 'shading' ) { + + console.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' ); + this.flatShading = ( newValue === FlatShading ) ? true : false; + continue; + + } + + var currentValue = this[ key ]; + + if ( currentValue === undefined ) { + + console.warn( "THREE." + this.type + ": '" + key + "' is not a property of this material." ); + continue; + + } + + if ( currentValue && currentValue.isColor ) { + + currentValue.set( newValue ); + + } else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) { + + currentValue.copy( newValue ); + + } else { + + this[ key ] = newValue; + + } + + } + + }, + + toJSON: function ( meta ) { + + var isRoot = ( meta === undefined || typeof meta === 'string' ); + + if ( isRoot ) { + + meta = { + textures: {}, + images: {} + }; + + } + + var data = { + metadata: { + version: 4.5, + type: 'Material', + generator: 'Material.toJSON' + } + }; + + // standard Material serialization + data.uuid = this.uuid; + data.type = this.type; + + if ( this.name !== '' ) data.name = this.name; + + if ( this.color && this.color.isColor ) data.color = this.color.getHex(); + + if ( this.roughness !== undefined ) data.roughness = this.roughness; + if ( this.metalness !== undefined ) data.metalness = this.metalness; + + if ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex(); + if ( this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity; + + if ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex(); + if ( this.shininess !== undefined ) data.shininess = this.shininess; + if ( this.clearCoat !== undefined ) data.clearCoat = this.clearCoat; + if ( this.clearCoatRoughness !== undefined ) data.clearCoatRoughness = this.clearCoatRoughness; + + if ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid; + if ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid; + if ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid; + if ( this.lightMap && this.lightMap.isTexture ) data.lightMap = this.lightMap.toJSON( meta ).uuid; + + if ( this.aoMap && this.aoMap.isTexture ) { + + data.aoMap = this.aoMap.toJSON( meta ).uuid; + data.aoMapIntensity = this.aoMapIntensity; + + } + + if ( this.bumpMap && this.bumpMap.isTexture ) { + + data.bumpMap = this.bumpMap.toJSON( meta ).uuid; + data.bumpScale = this.bumpScale; + + } + + if ( this.normalMap && this.normalMap.isTexture ) { + + data.normalMap = this.normalMap.toJSON( meta ).uuid; + data.normalMapType = this.normalMapType; + data.normalScale = this.normalScale.toArray(); + + } + + if ( this.displacementMap && this.displacementMap.isTexture ) { + + data.displacementMap = this.displacementMap.toJSON( meta ).uuid; + data.displacementScale = this.displacementScale; + data.displacementBias = this.displacementBias; + + } + + if ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid; + if ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid; + + if ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid; + if ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid; + + if ( this.envMap && this.envMap.isTexture ) { + + data.envMap = this.envMap.toJSON( meta ).uuid; + data.reflectivity = this.reflectivity; // Scale behind envMap + + if ( this.combine !== undefined ) data.combine = this.combine; + if ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity; + + } + + if ( this.gradientMap && this.gradientMap.isTexture ) { + + data.gradientMap = this.gradientMap.toJSON( meta ).uuid; + + } + + if ( this.size !== undefined ) data.size = this.size; + if ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation; + + if ( this.blending !== NormalBlending ) data.blending = this.blending; + if ( this.flatShading === true ) data.flatShading = this.flatShading; + if ( this.side !== FrontSide ) data.side = this.side; + if ( this.vertexColors !== NoColors ) data.vertexColors = this.vertexColors; + + if ( this.opacity < 1 ) data.opacity = this.opacity; + if ( this.transparent === true ) data.transparent = this.transparent; + + data.depthFunc = this.depthFunc; + data.depthTest = this.depthTest; + data.depthWrite = this.depthWrite; + + // rotation (SpriteMaterial) + if ( this.rotation !== 0 ) data.rotation = this.rotation; + + if ( this.polygonOffset === true ) data.polygonOffset = true; + if ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor; + if ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits; + + if ( this.linewidth !== 1 ) data.linewidth = this.linewidth; + if ( this.dashSize !== undefined ) data.dashSize = this.dashSize; + if ( this.gapSize !== undefined ) data.gapSize = this.gapSize; + if ( this.scale !== undefined ) data.scale = this.scale; + + if ( this.dithering === true ) data.dithering = true; + + if ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest; + if ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha; + + if ( this.wireframe === true ) data.wireframe = this.wireframe; + if ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth; + if ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap; + if ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin; + + if ( this.morphTargets === true ) data.morphTargets = true; + if ( this.skinning === true ) data.skinning = true; + + if ( this.visible === false ) data.visible = false; + if ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData; + + // TODO: Copied from Object3D.toJSON + + function extractFromCache( cache ) { + + var values = []; + + for ( var key in cache ) { + + var data = cache[ key ]; + delete data.metadata; + values.push( data ); + + } + + return values; + + } + + if ( isRoot ) { + + var textures = extractFromCache( meta.textures ); + var images = extractFromCache( meta.images ); + + if ( textures.length > 0 ) data.textures = textures; + if ( images.length > 0 ) data.images = images; + + } + + return data; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( source ) { + + this.name = source.name; + + this.fog = source.fog; + this.lights = source.lights; + + this.blending = source.blending; + this.side = source.side; + this.flatShading = source.flatShading; + this.vertexColors = source.vertexColors; + + this.opacity = source.opacity; + this.transparent = source.transparent; + + this.blendSrc = source.blendSrc; + this.blendDst = source.blendDst; + this.blendEquation = source.blendEquation; + this.blendSrcAlpha = source.blendSrcAlpha; + this.blendDstAlpha = source.blendDstAlpha; + this.blendEquationAlpha = source.blendEquationAlpha; + + this.depthFunc = source.depthFunc; + this.depthTest = source.depthTest; + this.depthWrite = source.depthWrite; + + this.colorWrite = source.colorWrite; + + this.precision = source.precision; + + this.polygonOffset = source.polygonOffset; + this.polygonOffsetFactor = source.polygonOffsetFactor; + this.polygonOffsetUnits = source.polygonOffsetUnits; + + this.dithering = source.dithering; + + this.alphaTest = source.alphaTest; + this.premultipliedAlpha = source.premultipliedAlpha; + + this.visible = source.visible; + this.userData = JSON.parse( JSON.stringify( source.userData ) ); + + this.clipShadows = source.clipShadows; + this.clipIntersection = source.clipIntersection; + + var srcPlanes = source.clippingPlanes, + dstPlanes = null; + + if ( srcPlanes !== null ) { + + var n = srcPlanes.length; + dstPlanes = new Array( n ); + + for ( var i = 0; i !== n; ++ i ) + dstPlanes[ i ] = srcPlanes[ i ].clone(); + + } + + this.clippingPlanes = dstPlanes; + + this.shadowSide = source.shadowSide; + + return this; + + }, + + dispose: function () { + + this.dispatchEvent( { type: 'dispose' } ); + + } + + } ); + + var default_vertex = "void main() {\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}"; + + var default_fragment = "void main() {\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}"; + + /** + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * defines: { "label" : "value" }, + * uniforms: { "parameter1": { value: 1.0 }, "parameter2": { value2: 2 } }, + * + * fragmentShader: , + * vertexShader: , + * + * wireframe: , + * wireframeLinewidth: , + * + * lights: , + * + * skinning: , + * morphTargets: , + * morphNormals: + * } + */ + + function ShaderMaterial( parameters ) { + + Material.call( this ); + + this.type = 'ShaderMaterial'; + + this.defines = {}; + this.uniforms = {}; + + this.vertexShader = default_vertex; + this.fragmentShader = default_fragment; + + this.linewidth = 1; + + this.wireframe = false; + this.wireframeLinewidth = 1; + + this.fog = false; // set to use scene fog + this.lights = false; // set to use scene lights + this.clipping = false; // set to use user-defined clipping planes + + this.skinning = false; // set to use skinning attribute streams + this.morphTargets = false; // set to use morph targets + this.morphNormals = false; // set to use morph normals + + this.extensions = { + derivatives: false, // set to use derivatives + fragDepth: false, // set to use fragment depth values + drawBuffers: false, // set to use draw buffers + shaderTextureLOD: false // set to use shader texture LOD + }; + + // When rendered geometry doesn't include these attributes but the material does, + // use these default values in WebGL. This avoids errors when buffer data is missing. + this.defaultAttributeValues = { + 'color': [ 1, 1, 1 ], + 'uv': [ 0, 0 ], + 'uv2': [ 0, 0 ] + }; + + this.index0AttributeName = undefined; + this.uniformsNeedUpdate = false; + + if ( parameters !== undefined ) { + + if ( parameters.attributes !== undefined ) { + + console.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' ); + + } + + this.setValues( parameters ); + + } + + } + + ShaderMaterial.prototype = Object.create( Material.prototype ); + ShaderMaterial.prototype.constructor = ShaderMaterial; + + ShaderMaterial.prototype.isShaderMaterial = true; + + ShaderMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.fragmentShader = source.fragmentShader; + this.vertexShader = source.vertexShader; + + this.uniforms = cloneUniforms( source.uniforms ); + + this.defines = Object.assign( {}, source.defines ); + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + + this.lights = source.lights; + this.clipping = source.clipping; + + this.skinning = source.skinning; + + this.morphTargets = source.morphTargets; + this.morphNormals = source.morphNormals; + + this.extensions = source.extensions; + + return this; + + }; + + ShaderMaterial.prototype.toJSON = function ( meta ) { + + var data = Material.prototype.toJSON.call( this, meta ); + + data.uniforms = {}; + + for ( var name in this.uniforms ) { + + var uniform = this.uniforms[ name ]; + var value = uniform.value; + + if ( value && value.isTexture ) { + + data.uniforms[ name ] = { + type: 't', + value: value.toJSON( meta ).uuid + }; + + } else if ( value && value.isColor ) { + + data.uniforms[ name ] = { + type: 'c', + value: value.getHex() + }; + + } else if ( value && value.isVector2 ) { + + data.uniforms[ name ] = { + type: 'v2', + value: value.toArray() + }; + + } else if ( value && value.isVector3 ) { + + data.uniforms[ name ] = { + type: 'v3', + value: value.toArray() + }; + + } else if ( value && value.isVector4 ) { + + data.uniforms[ name ] = { + type: 'v4', + value: value.toArray() + }; + + } else if ( value && value.isMatrix3 ) { + + data.uniforms[ name ] = { + type: 'm3', + value: value.toArray() + }; + + } else if ( value && value.isMatrix4 ) { + + data.uniforms[ name ] = { + type: 'm4', + value: value.toArray() + }; + + } else { + + data.uniforms[ name ] = { + value: value + }; + + // note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far + + } + + } + + if ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines; + + data.vertexShader = this.vertexShader; + data.fragmentShader = this.fragmentShader; + + var extensions = {}; + + for ( var key in this.extensions ) { + + if ( this.extensions[ key ] === true ) extensions[ key ] = true; + + } + + if ( Object.keys( extensions ).length > 0 ) data.extensions = extensions; + + return data; + + }; + + /** + * @author bhouston / http://clara.io + */ + + function Ray( origin, direction ) { + + this.origin = ( origin !== undefined ) ? origin : new Vector3(); + this.direction = ( direction !== undefined ) ? direction : new Vector3(); + + } + + Object.assign( Ray.prototype, { + + set: function ( origin, direction ) { + + this.origin.copy( origin ); + this.direction.copy( direction ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( ray ) { + + this.origin.copy( ray.origin ); + this.direction.copy( ray.direction ); + + return this; + + }, + + at: function ( t, target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Ray: .at() target is now required' ); + target = new Vector3(); + + } + + return target.copy( this.direction ).multiplyScalar( t ).add( this.origin ); + + }, + + lookAt: function ( v ) { + + this.direction.copy( v ).sub( this.origin ).normalize(); + + return this; + + }, + + recast: function () { + + var v1 = new Vector3(); + + return function recast( t ) { + + this.origin.copy( this.at( t, v1 ) ); + + return this; + + }; + + }(), + + closestPointToPoint: function ( point, target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Ray: .closestPointToPoint() target is now required' ); + target = new Vector3(); + + } + + target.subVectors( point, this.origin ); + + var directionDistance = target.dot( this.direction ); + + if ( directionDistance < 0 ) { + + return target.copy( this.origin ); + + } + + return target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin ); + + }, + + distanceToPoint: function ( point ) { + + return Math.sqrt( this.distanceSqToPoint( point ) ); + + }, + + distanceSqToPoint: function () { + + var v1 = new Vector3(); + + return function distanceSqToPoint( point ) { + + var directionDistance = v1.subVectors( point, this.origin ).dot( this.direction ); + + // point behind the ray + + if ( directionDistance < 0 ) { + + return this.origin.distanceToSquared( point ); + + } + + v1.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin ); + + return v1.distanceToSquared( point ); + + }; + + }(), + + distanceSqToSegment: function () { + + var segCenter = new Vector3(); + var segDir = new Vector3(); + var diff = new Vector3(); + + return function distanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) { + + // from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h + // It returns the min distance between the ray and the segment + // defined by v0 and v1 + // It can also set two optional targets : + // - The closest point on the ray + // - The closest point on the segment + + segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 ); + segDir.copy( v1 ).sub( v0 ).normalize(); + diff.copy( this.origin ).sub( segCenter ); + + var segExtent = v0.distanceTo( v1 ) * 0.5; + var a01 = - this.direction.dot( segDir ); + var b0 = diff.dot( this.direction ); + var b1 = - diff.dot( segDir ); + var c = diff.lengthSq(); + var det = Math.abs( 1 - a01 * a01 ); + var s0, s1, sqrDist, extDet; + + if ( det > 0 ) { + + // The ray and segment are not parallel. + + s0 = a01 * b1 - b0; + s1 = a01 * b0 - b1; + extDet = segExtent * det; + + if ( s0 >= 0 ) { + + if ( s1 >= - extDet ) { + + if ( s1 <= extDet ) { + + // region 0 + // Minimum at interior points of ray and segment. + + var invDet = 1 / det; + s0 *= invDet; + s1 *= invDet; + sqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c; + + } else { + + // region 1 + + s1 = segExtent; + s0 = Math.max( 0, - ( a01 * s1 + b0 ) ); + sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + + } + + } else { + + // region 5 + + s1 = - segExtent; + s0 = Math.max( 0, - ( a01 * s1 + b0 ) ); + sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + + } + + } else { + + if ( s1 <= - extDet ) { + + // region 4 + + s0 = Math.max( 0, - ( - a01 * segExtent + b0 ) ); + s1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent ); + sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + + } else if ( s1 <= extDet ) { + + // region 3 + + s0 = 0; + s1 = Math.min( Math.max( - segExtent, - b1 ), segExtent ); + sqrDist = s1 * ( s1 + 2 * b1 ) + c; + + } else { + + // region 2 + + s0 = Math.max( 0, - ( a01 * segExtent + b0 ) ); + s1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent ); + sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + + } + + } + + } else { + + // Ray and segment are parallel. + + s1 = ( a01 > 0 ) ? - segExtent : segExtent; + s0 = Math.max( 0, - ( a01 * s1 + b0 ) ); + sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + + } + + if ( optionalPointOnRay ) { + + optionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin ); + + } + + if ( optionalPointOnSegment ) { + + optionalPointOnSegment.copy( segDir ).multiplyScalar( s1 ).add( segCenter ); + + } + + return sqrDist; + + }; + + }(), + + intersectSphere: function () { + + var v1 = new Vector3(); + + return function intersectSphere( sphere, target ) { + + v1.subVectors( sphere.center, this.origin ); + var tca = v1.dot( this.direction ); + var d2 = v1.dot( v1 ) - tca * tca; + var radius2 = sphere.radius * sphere.radius; + + if ( d2 > radius2 ) return null; + + var thc = Math.sqrt( radius2 - d2 ); + + // t0 = first intersect point - entrance on front of sphere + var t0 = tca - thc; + + // t1 = second intersect point - exit point on back of sphere + var t1 = tca + thc; + + // test to see if both t0 and t1 are behind the ray - if so, return null + if ( t0 < 0 && t1 < 0 ) return null; + + // test to see if t0 is behind the ray: + // if it is, the ray is inside the sphere, so return the second exit point scaled by t1, + // in order to always return an intersect point that is in front of the ray. + if ( t0 < 0 ) return this.at( t1, target ); + + // else t0 is in front of the ray, so return the first collision point scaled by t0 + return this.at( t0, target ); + + }; + + }(), + + intersectsSphere: function ( sphere ) { + + return this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius ); + + }, + + distanceToPlane: function ( plane ) { + + var denominator = plane.normal.dot( this.direction ); + + if ( denominator === 0 ) { + + // line is coplanar, return origin + if ( plane.distanceToPoint( this.origin ) === 0 ) { + + return 0; + + } + + // Null is preferable to undefined since undefined means.... it is undefined + + return null; + + } + + var t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator; + + // Return if the ray never intersects the plane + + return t >= 0 ? t : null; + + }, + + intersectPlane: function ( plane, target ) { + + var t = this.distanceToPlane( plane ); + + if ( t === null ) { + + return null; + + } + + return this.at( t, target ); + + }, + + intersectsPlane: function ( plane ) { + + // check if the ray lies on the plane first + + var distToPoint = plane.distanceToPoint( this.origin ); + + if ( distToPoint === 0 ) { + + return true; + + } + + var denominator = plane.normal.dot( this.direction ); + + if ( denominator * distToPoint < 0 ) { + + return true; + + } + + // ray origin is behind the plane (and is pointing behind it) + + return false; + + }, + + intersectBox: function ( box, target ) { + + var tmin, tmax, tymin, tymax, tzmin, tzmax; + + var invdirx = 1 / this.direction.x, + invdiry = 1 / this.direction.y, + invdirz = 1 / this.direction.z; + + var origin = this.origin; + + if ( invdirx >= 0 ) { + + tmin = ( box.min.x - origin.x ) * invdirx; + tmax = ( box.max.x - origin.x ) * invdirx; + + } else { + + tmin = ( box.max.x - origin.x ) * invdirx; + tmax = ( box.min.x - origin.x ) * invdirx; + + } + + if ( invdiry >= 0 ) { + + tymin = ( box.min.y - origin.y ) * invdiry; + tymax = ( box.max.y - origin.y ) * invdiry; + + } else { + + tymin = ( box.max.y - origin.y ) * invdiry; + tymax = ( box.min.y - origin.y ) * invdiry; + + } + + if ( ( tmin > tymax ) || ( tymin > tmax ) ) return null; + + // These lines also handle the case where tmin or tmax is NaN + // (result of 0 * Infinity). x !== x returns true if x is NaN + + if ( tymin > tmin || tmin !== tmin ) tmin = tymin; + + if ( tymax < tmax || tmax !== tmax ) tmax = tymax; + + if ( invdirz >= 0 ) { + + tzmin = ( box.min.z - origin.z ) * invdirz; + tzmax = ( box.max.z - origin.z ) * invdirz; + + } else { + + tzmin = ( box.max.z - origin.z ) * invdirz; + tzmax = ( box.min.z - origin.z ) * invdirz; + + } + + if ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null; + + if ( tzmin > tmin || tmin !== tmin ) tmin = tzmin; + + if ( tzmax < tmax || tmax !== tmax ) tmax = tzmax; + + //return point closest to the ray (positive side) + + if ( tmax < 0 ) return null; + + return this.at( tmin >= 0 ? tmin : tmax, target ); + + }, + + intersectsBox: ( function () { + + var v = new Vector3(); + + return function intersectsBox( box ) { + + return this.intersectBox( box, v ) !== null; + + }; + + } )(), + + intersectTriangle: function () { + + // Compute the offset origin, edges, and normal. + var diff = new Vector3(); + var edge1 = new Vector3(); + var edge2 = new Vector3(); + var normal = new Vector3(); + + return function intersectTriangle( a, b, c, backfaceCulling, target ) { + + // from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h + + edge1.subVectors( b, a ); + edge2.subVectors( c, a ); + normal.crossVectors( edge1, edge2 ); + + // Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction, + // E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by + // |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2)) + // |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q)) + // |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N) + var DdN = this.direction.dot( normal ); + var sign; + + if ( DdN > 0 ) { + + if ( backfaceCulling ) return null; + sign = 1; + + } else if ( DdN < 0 ) { + + sign = - 1; + DdN = - DdN; + + } else { + + return null; + + } + + diff.subVectors( this.origin, a ); + var DdQxE2 = sign * this.direction.dot( edge2.crossVectors( diff, edge2 ) ); + + // b1 < 0, no intersection + if ( DdQxE2 < 0 ) { + + return null; + + } + + var DdE1xQ = sign * this.direction.dot( edge1.cross( diff ) ); + + // b2 < 0, no intersection + if ( DdE1xQ < 0 ) { + + return null; + + } + + // b1+b2 > 1, no intersection + if ( DdQxE2 + DdE1xQ > DdN ) { + + return null; + + } + + // Line intersects triangle, check if ray does. + var QdN = - sign * diff.dot( normal ); + + // t < 0, no intersection + if ( QdN < 0 ) { + + return null; + + } + + // Ray intersects triangle. + return this.at( QdN / DdN, target ); + + }; + + }(), + + applyMatrix4: function ( matrix4 ) { + + this.origin.applyMatrix4( matrix4 ); + this.direction.transformDirection( matrix4 ); + + return this; + + }, + + equals: function ( ray ) { + + return ray.origin.equals( this.origin ) && ray.direction.equals( this.direction ); + + } + + } ); + + /** + * @author bhouston / http://clara.io + * @author mrdoob / http://mrdoob.com/ + */ + + function Triangle( a, b, c ) { + + this.a = ( a !== undefined ) ? a : new Vector3(); + this.b = ( b !== undefined ) ? b : new Vector3(); + this.c = ( c !== undefined ) ? c : new Vector3(); + + } + + Object.assign( Triangle, { + + getNormal: function () { + + var v0 = new Vector3(); + + return function getNormal( a, b, c, target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Triangle: .getNormal() target is now required' ); + target = new Vector3(); + + } + + target.subVectors( c, b ); + v0.subVectors( a, b ); + target.cross( v0 ); + + var targetLengthSq = target.lengthSq(); + if ( targetLengthSq > 0 ) { + + return target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) ); + + } + + return target.set( 0, 0, 0 ); + + }; + + }(), + + // static/instance method to calculate barycentric coordinates + // based on: http://www.blackpawn.com/texts/pointinpoly/default.html + getBarycoord: function () { + + var v0 = new Vector3(); + var v1 = new Vector3(); + var v2 = new Vector3(); + + return function getBarycoord( point, a, b, c, target ) { + + v0.subVectors( c, a ); + v1.subVectors( b, a ); + v2.subVectors( point, a ); + + var dot00 = v0.dot( v0 ); + var dot01 = v0.dot( v1 ); + var dot02 = v0.dot( v2 ); + var dot11 = v1.dot( v1 ); + var dot12 = v1.dot( v2 ); + + var denom = ( dot00 * dot11 - dot01 * dot01 ); + + if ( target === undefined ) { + + console.warn( 'THREE.Triangle: .getBarycoord() target is now required' ); + target = new Vector3(); + + } + + // collinear or singular triangle + if ( denom === 0 ) { + + // arbitrary location outside of triangle? + // not sure if this is the best idea, maybe should be returning undefined + return target.set( - 2, - 1, - 1 ); + + } + + var invDenom = 1 / denom; + var u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom; + var v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom; + + // barycentric coordinates must always sum to 1 + return target.set( 1 - u - v, v, u ); + + }; + + }(), + + containsPoint: function () { + + var v1 = new Vector3(); + + return function containsPoint( point, a, b, c ) { + + Triangle.getBarycoord( point, a, b, c, v1 ); + + return ( v1.x >= 0 ) && ( v1.y >= 0 ) && ( ( v1.x + v1.y ) <= 1 ); + + }; + + }(), + + getUV: function () { + + var barycoord = new Vector3(); + + return function getUV( point, p1, p2, p3, uv1, uv2, uv3, target ) { + + this.getBarycoord( point, p1, p2, p3, barycoord ); + + target.set( 0, 0 ); + target.addScaledVector( uv1, barycoord.x ); + target.addScaledVector( uv2, barycoord.y ); + target.addScaledVector( uv3, barycoord.z ); + + return target; + + }; + + }(), + + isFrontFacing: function () { + + var v0 = new Vector3(); + var v1 = new Vector3(); + + return function isFrontFacing( a, b, c, direction ) { + + v0.subVectors( c, b ); + v1.subVectors( a, b ); + + // strictly front facing + return ( v0.cross( v1 ).dot( direction ) < 0 ) ? true : false; + + }; + + }() + + } ); + + Object.assign( Triangle.prototype, { + + set: function ( a, b, c ) { + + this.a.copy( a ); + this.b.copy( b ); + this.c.copy( c ); + + return this; + + }, + + setFromPointsAndIndices: function ( points, i0, i1, i2 ) { + + this.a.copy( points[ i0 ] ); + this.b.copy( points[ i1 ] ); + this.c.copy( points[ i2 ] ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( triangle ) { + + this.a.copy( triangle.a ); + this.b.copy( triangle.b ); + this.c.copy( triangle.c ); + + return this; + + }, + + getArea: function () { + + var v0 = new Vector3(); + var v1 = new Vector3(); + + return function getArea() { + + v0.subVectors( this.c, this.b ); + v1.subVectors( this.a, this.b ); + + return v0.cross( v1 ).length() * 0.5; + + }; + + }(), + + getMidpoint: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Triangle: .getMidpoint() target is now required' ); + target = new Vector3(); + + } + + return target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 ); + + }, + + getNormal: function ( target ) { + + return Triangle.getNormal( this.a, this.b, this.c, target ); + + }, + + getPlane: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Triangle: .getPlane() target is now required' ); + target = new Vector3(); + + } + + return target.setFromCoplanarPoints( this.a, this.b, this.c ); + + }, + + getBarycoord: function ( point, target ) { + + return Triangle.getBarycoord( point, this.a, this.b, this.c, target ); + + }, + + getUV: function ( point, uv1, uv2, uv3, target ) { + + return Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, target ); + + }, + + containsPoint: function ( point ) { + + return Triangle.containsPoint( point, this.a, this.b, this.c ); + + }, + + isFrontFacing: function ( direction ) { + + return Triangle.isFrontFacing( this.a, this.b, this.c, direction ); + + }, + + intersectsBox: function ( box ) { + + return box.intersectsTriangle( this ); + + }, + + closestPointToPoint: function () { + + var vab = new Vector3(); + var vac = new Vector3(); + var vbc = new Vector3(); + var vap = new Vector3(); + var vbp = new Vector3(); + var vcp = new Vector3(); + + return function closestPointToPoint( p, target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Triangle: .closestPointToPoint() target is now required' ); + target = new Vector3(); + + } + + var a = this.a, b = this.b, c = this.c; + var v, w; + + // algorithm thanks to Real-Time Collision Detection by Christer Ericson, + // published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc., + // under the accompanying license; see chapter 5.1.5 for detailed explanation. + // basically, we're distinguishing which of the voronoi regions of the triangle + // the point lies in with the minimum amount of redundant computation. + + vab.subVectors( b, a ); + vac.subVectors( c, a ); + vap.subVectors( p, a ); + var d1 = vab.dot( vap ); + var d2 = vac.dot( vap ); + if ( d1 <= 0 && d2 <= 0 ) { + + // vertex region of A; barycentric coords (1, 0, 0) + return target.copy( a ); + + } + + vbp.subVectors( p, b ); + var d3 = vab.dot( vbp ); + var d4 = vac.dot( vbp ); + if ( d3 >= 0 && d4 <= d3 ) { + + // vertex region of B; barycentric coords (0, 1, 0) + return target.copy( b ); + + } + + var vc = d1 * d4 - d3 * d2; + if ( vc <= 0 && d1 >= 0 && d3 <= 0 ) { + + v = d1 / ( d1 - d3 ); + // edge region of AB; barycentric coords (1-v, v, 0) + return target.copy( a ).addScaledVector( vab, v ); + + } + + vcp.subVectors( p, c ); + var d5 = vab.dot( vcp ); + var d6 = vac.dot( vcp ); + if ( d6 >= 0 && d5 <= d6 ) { + + // vertex region of C; barycentric coords (0, 0, 1) + return target.copy( c ); + + } + + var vb = d5 * d2 - d1 * d6; + if ( vb <= 0 && d2 >= 0 && d6 <= 0 ) { + + w = d2 / ( d2 - d6 ); + // edge region of AC; barycentric coords (1-w, 0, w) + return target.copy( a ).addScaledVector( vac, w ); + + } + + var va = d3 * d6 - d5 * d4; + if ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) { + + vbc.subVectors( c, b ); + w = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) ); + // edge region of BC; barycentric coords (0, 1-w, w) + return target.copy( b ).addScaledVector( vbc, w ); // edge region of BC + + } + + // face region + var denom = 1 / ( va + vb + vc ); + // u = va * denom + v = vb * denom; + w = vc * denom; + return target.copy( a ).addScaledVector( vab, v ).addScaledVector( vac, w ); + + }; + + }(), + + equals: function ( triangle ) { + + return triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * color: , + * opacity: , + * map: new THREE.Texture( ), + * + * lightMap: new THREE.Texture( ), + * lightMapIntensity: + * + * aoMap: new THREE.Texture( ), + * aoMapIntensity: + * + * specularMap: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ), + * combine: THREE.Multiply, + * reflectivity: , + * refractionRatio: , + * + * depthTest: , + * depthWrite: , + * + * wireframe: , + * wireframeLinewidth: , + * + * skinning: , + * morphTargets: + * } + */ + + function MeshBasicMaterial( parameters ) { + + Material.call( this ); + + this.type = 'MeshBasicMaterial'; + + this.color = new Color( 0xffffff ); // emissive + + this.map = null; + + this.lightMap = null; + this.lightMapIntensity = 1.0; + + this.aoMap = null; + this.aoMapIntensity = 1.0; + + this.specularMap = null; + + this.alphaMap = null; + + this.envMap = null; + this.combine = MultiplyOperation; + this.reflectivity = 1; + this.refractionRatio = 0.98; + + this.wireframe = false; + this.wireframeLinewidth = 1; + this.wireframeLinecap = 'round'; + this.wireframeLinejoin = 'round'; + + this.skinning = false; + this.morphTargets = false; + + this.lights = false; + + this.setValues( parameters ); + + } + + MeshBasicMaterial.prototype = Object.create( Material.prototype ); + MeshBasicMaterial.prototype.constructor = MeshBasicMaterial; + + MeshBasicMaterial.prototype.isMeshBasicMaterial = true; + + MeshBasicMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + + this.map = source.map; + + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + + this.specularMap = source.specularMap; + + this.alphaMap = source.alphaMap; + + this.envMap = source.envMap; + this.combine = source.combine; + this.reflectivity = source.reflectivity; + this.refractionRatio = source.refractionRatio; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + + return this; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * @author mikael emtinger / http://gomo.se/ + * @author jonobr1 / http://jonobr1.com/ + */ + + function Mesh( geometry, material ) { + + Object3D.call( this ); + + this.type = 'Mesh'; + + this.geometry = geometry !== undefined ? geometry : new BufferGeometry(); + this.material = material !== undefined ? material : new MeshBasicMaterial( { color: Math.random() * 0xffffff } ); + + this.drawMode = TrianglesDrawMode; + + this.updateMorphTargets(); + + } + + Mesh.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Mesh, + + isMesh: true, + + setDrawMode: function ( value ) { + + this.drawMode = value; + + }, + + copy: function ( source ) { + + Object3D.prototype.copy.call( this, source ); + + this.drawMode = source.drawMode; + + if ( source.morphTargetInfluences !== undefined ) { + + this.morphTargetInfluences = source.morphTargetInfluences.slice(); + + } + + if ( source.morphTargetDictionary !== undefined ) { + + this.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary ); + + } + + return this; + + }, + + updateMorphTargets: function () { + + var geometry = this.geometry; + var m, ml, name; + + if ( geometry.isBufferGeometry ) { + + var morphAttributes = geometry.morphAttributes; + var keys = Object.keys( morphAttributes ); + + if ( keys.length > 0 ) { + + var morphAttribute = morphAttributes[ keys[ 0 ] ]; + + if ( morphAttribute !== undefined ) { + + this.morphTargetInfluences = []; + this.morphTargetDictionary = {}; + + for ( m = 0, ml = morphAttribute.length; m < ml; m ++ ) { + + name = morphAttribute[ m ].name || String( m ); + + this.morphTargetInfluences.push( 0 ); + this.morphTargetDictionary[ name ] = m; + + } + + } + + } + + } else { + + var morphTargets = geometry.morphTargets; + + if ( morphTargets !== undefined && morphTargets.length > 0 ) { + + console.error( 'THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' ); + + } + + } + + }, + + raycast: ( function () { + + var inverseMatrix = new Matrix4(); + var ray = new Ray(); + var sphere = new Sphere(); + + var vA = new Vector3(); + var vB = new Vector3(); + var vC = new Vector3(); + + var tempA = new Vector3(); + var tempB = new Vector3(); + var tempC = new Vector3(); + + var morphA = new Vector3(); + var morphB = new Vector3(); + var morphC = new Vector3(); + + var uvA = new Vector2(); + var uvB = new Vector2(); + var uvC = new Vector2(); + + var intersectionPoint = new Vector3(); + var intersectionPointWorld = new Vector3(); + + function checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) { + + var intersect; + + if ( material.side === BackSide ) { + + intersect = ray.intersectTriangle( pC, pB, pA, true, point ); + + } else { + + intersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point ); + + } + + if ( intersect === null ) return null; + + intersectionPointWorld.copy( point ); + intersectionPointWorld.applyMatrix4( object.matrixWorld ); + + var distance = raycaster.ray.origin.distanceTo( intersectionPointWorld ); + + if ( distance < raycaster.near || distance > raycaster.far ) return null; + + return { + distance: distance, + point: intersectionPointWorld.clone(), + object: object + }; + + } + + function checkBufferGeometryIntersection( object, material, raycaster, ray, position, morphPosition, uv, a, b, c ) { + + vA.fromBufferAttribute( position, a ); + vB.fromBufferAttribute( position, b ); + vC.fromBufferAttribute( position, c ); + + var morphInfluences = object.morphTargetInfluences; + + if ( material.morphTargets && morphPosition && morphInfluences ) { + + morphA.set( 0, 0, 0 ); + morphB.set( 0, 0, 0 ); + morphC.set( 0, 0, 0 ); + + for ( var i = 0, il = morphPosition.length; i < il; i ++ ) { + + var influence = morphInfluences[ i ]; + var morphAttribute = morphPosition[ i ]; + + if ( influence === 0 ) continue; + + tempA.fromBufferAttribute( morphAttribute, a ); + tempB.fromBufferAttribute( morphAttribute, b ); + tempC.fromBufferAttribute( morphAttribute, c ); + + morphA.addScaledVector( tempA.sub( vA ), influence ); + morphB.addScaledVector( tempB.sub( vB ), influence ); + morphC.addScaledVector( tempC.sub( vC ), influence ); + + } + + vA.add( morphA ); + vB.add( morphB ); + vC.add( morphC ); + + } + + var intersection = checkIntersection( object, material, raycaster, ray, vA, vB, vC, intersectionPoint ); + + if ( intersection ) { + + if ( uv ) { + + uvA.fromBufferAttribute( uv, a ); + uvB.fromBufferAttribute( uv, b ); + uvC.fromBufferAttribute( uv, c ); + + intersection.uv = Triangle.getUV( intersectionPoint, vA, vB, vC, uvA, uvB, uvC, new Vector2() ); + + } + + var face = new Face3( a, b, c ); + Triangle.getNormal( vA, vB, vC, face.normal ); + + intersection.face = face; + + } + + return intersection; + + } + + return function raycast( raycaster, intersects ) { + + var geometry = this.geometry; + var material = this.material; + var matrixWorld = this.matrixWorld; + + if ( material === undefined ) return; + + // Checking boundingSphere distance to ray + + if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere(); + + sphere.copy( geometry.boundingSphere ); + sphere.applyMatrix4( matrixWorld ); + + if ( raycaster.ray.intersectsSphere( sphere ) === false ) return; + + // + + inverseMatrix.getInverse( matrixWorld ); + ray.copy( raycaster.ray ).applyMatrix4( inverseMatrix ); + + // Check boundingBox before continuing + + if ( geometry.boundingBox !== null ) { + + if ( ray.intersectsBox( geometry.boundingBox ) === false ) return; + + } + + var intersection; + + if ( geometry.isBufferGeometry ) { + + var a, b, c; + var index = geometry.index; + var position = geometry.attributes.position; + var morphPosition = geometry.morphAttributes.position; + var uv = geometry.attributes.uv; + var groups = geometry.groups; + var drawRange = geometry.drawRange; + var i, j, il, jl; + var group, groupMaterial; + var start, end; + + if ( index !== null ) { + + // indexed buffer geometry + + if ( Array.isArray( material ) ) { + + for ( i = 0, il = groups.length; i < il; i ++ ) { + + group = groups[ i ]; + groupMaterial = material[ group.materialIndex ]; + + start = Math.max( group.start, drawRange.start ); + end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ); + + for ( j = start, jl = end; j < jl; j += 3 ) { + + a = index.getX( j ); + b = index.getX( j + 1 ); + c = index.getX( j + 2 ); + + intersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, morphPosition, uv, a, b, c ); + + if ( intersection ) { + + intersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics + intersection.face.materialIndex = group.materialIndex; + intersects.push( intersection ); + + } + + } + + } + + } else { + + start = Math.max( 0, drawRange.start ); + end = Math.min( index.count, ( drawRange.start + drawRange.count ) ); + + for ( i = start, il = end; i < il; i += 3 ) { + + a = index.getX( i ); + b = index.getX( i + 1 ); + c = index.getX( i + 2 ); + + intersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, morphPosition, uv, a, b, c ); + + if ( intersection ) { + + intersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics + intersects.push( intersection ); + + } + + } + + } + + } else if ( position !== undefined ) { + + // non-indexed buffer geometry + + if ( Array.isArray( material ) ) { + + for ( i = 0, il = groups.length; i < il; i ++ ) { + + group = groups[ i ]; + groupMaterial = material[ group.materialIndex ]; + + start = Math.max( group.start, drawRange.start ); + end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ); + + for ( j = start, jl = end; j < jl; j += 3 ) { + + a = j; + b = j + 1; + c = j + 2; + + intersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, morphPosition, uv, a, b, c ); + + if ( intersection ) { + + intersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics + intersection.face.materialIndex = group.materialIndex; + intersects.push( intersection ); + + } + + } + + } + + } else { + + start = Math.max( 0, drawRange.start ); + end = Math.min( position.count, ( drawRange.start + drawRange.count ) ); + + for ( i = start, il = end; i < il; i += 3 ) { + + a = i; + b = i + 1; + c = i + 2; + + intersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, morphPosition, uv, a, b, c ); + + if ( intersection ) { + + intersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics + intersects.push( intersection ); + + } + + } + + } + + } + + } else if ( geometry.isGeometry ) { + + var fvA, fvB, fvC; + var isMultiMaterial = Array.isArray( material ); + + var vertices = geometry.vertices; + var faces = geometry.faces; + var uvs; + + var faceVertexUvs = geometry.faceVertexUvs[ 0 ]; + if ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs; + + for ( var f = 0, fl = faces.length; f < fl; f ++ ) { + + var face = faces[ f ]; + var faceMaterial = isMultiMaterial ? material[ face.materialIndex ] : material; + + if ( faceMaterial === undefined ) continue; + + fvA = vertices[ face.a ]; + fvB = vertices[ face.b ]; + fvC = vertices[ face.c ]; + + intersection = checkIntersection( this, faceMaterial, raycaster, ray, fvA, fvB, fvC, intersectionPoint ); + + if ( intersection ) { + + if ( uvs && uvs[ f ] ) { + + var uvs_f = uvs[ f ]; + uvA.copy( uvs_f[ 0 ] ); + uvB.copy( uvs_f[ 1 ] ); + uvC.copy( uvs_f[ 2 ] ); + + intersection.uv = Triangle.getUV( intersectionPoint, fvA, fvB, fvC, uvA, uvB, uvC, new Vector2() ); + + } + + intersection.face = face; + intersection.faceIndex = f; + intersects.push( intersection ); + + } + + } + + } + + }; + + }() ), + + clone: function () { + + return new this.constructor( this.geometry, this.material ).copy( this ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLBackground( renderer, state, objects, premultipliedAlpha ) { + + var clearColor = new Color( 0x000000 ); + var clearAlpha = 0; + + var planeMesh; + var boxMesh; + // Store the current background texture and its `version` + // so we can recompile the material accordingly. + var currentBackground = null; + var currentBackgroundVersion = 0; + + function render( renderList, scene, camera, forceClear ) { + + var background = scene.background; + + // Ignore background in AR + // TODO: Reconsider this. + + var vr = renderer.vr; + var session = vr.getSession && vr.getSession(); + + if ( session && session.environmentBlendMode === 'additive' ) { + + background = null; + + } + + if ( background === null ) { + + setClear( clearColor, clearAlpha ); + currentBackground = null; + currentBackgroundVersion = 0; + + } else if ( background && background.isColor ) { + + setClear( background, 1 ); + forceClear = true; + currentBackground = null; + currentBackgroundVersion = 0; + + } + + if ( renderer.autoClear || forceClear ) { + + renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil ); + + } + + if ( background && ( background.isCubeTexture || background.isWebGLRenderTargetCube ) ) { + + if ( boxMesh === undefined ) { + + boxMesh = new Mesh( + new BoxBufferGeometry( 1, 1, 1 ), + new ShaderMaterial( { + type: 'BackgroundCubeMaterial', + uniforms: cloneUniforms( ShaderLib.cube.uniforms ), + vertexShader: ShaderLib.cube.vertexShader, + fragmentShader: ShaderLib.cube.fragmentShader, + side: BackSide, + depthTest: false, + depthWrite: false, + fog: false + } ) + ); + + boxMesh.geometry.removeAttribute( 'normal' ); + boxMesh.geometry.removeAttribute( 'uv' ); + + boxMesh.onBeforeRender = function ( renderer, scene, camera ) { + + this.matrixWorld.copyPosition( camera.matrixWorld ); + + }; + + // enable code injection for non-built-in material + Object.defineProperty( boxMesh.material, 'map', { + + get: function () { + + return this.uniforms.tCube.value; + + } + + } ); + + objects.update( boxMesh ); + + } + + var texture = background.isWebGLRenderTargetCube ? background.texture : background; + boxMesh.material.uniforms.tCube.value = texture; + boxMesh.material.uniforms.tFlip.value = ( background.isWebGLRenderTargetCube ) ? 1 : - 1; + + if ( currentBackground !== background || + currentBackgroundVersion !== texture.version ) { + + boxMesh.material.needsUpdate = true; + + currentBackground = background; + currentBackgroundVersion = texture.version; + + } + + // push to the pre-sorted opaque render list + renderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null ); + + } else if ( background && background.isTexture ) { + + if ( planeMesh === undefined ) { + + planeMesh = new Mesh( + new PlaneBufferGeometry( 2, 2 ), + new ShaderMaterial( { + type: 'BackgroundMaterial', + uniforms: cloneUniforms( ShaderLib.background.uniforms ), + vertexShader: ShaderLib.background.vertexShader, + fragmentShader: ShaderLib.background.fragmentShader, + side: FrontSide, + depthTest: false, + depthWrite: false, + fog: false + } ) + ); + + planeMesh.geometry.removeAttribute( 'normal' ); + + // enable code injection for non-built-in material + Object.defineProperty( planeMesh.material, 'map', { + + get: function () { + + return this.uniforms.t2D.value; + + } + + } ); + + objects.update( planeMesh ); + + } + + planeMesh.material.uniforms.t2D.value = background; + + if ( background.matrixAutoUpdate === true ) { + + background.updateMatrix(); + + } + + planeMesh.material.uniforms.uvTransform.value.copy( background.matrix ); + + if ( currentBackground !== background || + currentBackgroundVersion !== background.version ) { + + planeMesh.material.needsUpdate = true; + + currentBackground = background; + currentBackgroundVersion = background.version; + + } + + + // push to the pre-sorted opaque render list + renderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null ); + + } + + } + + function setClear( color, alpha ) { + + state.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha ); + + } + + return { + + getClearColor: function () { + + return clearColor; + + }, + setClearColor: function ( color, alpha ) { + + clearColor.set( color ); + clearAlpha = alpha !== undefined ? alpha : 1; + setClear( clearColor, clearAlpha ); + + }, + getClearAlpha: function () { + + return clearAlpha; + + }, + setClearAlpha: function ( alpha ) { + + clearAlpha = alpha; + setClear( clearColor, clearAlpha ); + + }, + render: render + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLBufferRenderer( gl, extensions, info, capabilities ) { + + var mode; + + function setMode( value ) { + + mode = value; + + } + + function render( start, count ) { + + gl.drawArrays( mode, start, count ); + + info.update( count, mode ); + + } + + function renderInstances( geometry, start, count ) { + + var extension; + + if ( capabilities.isWebGL2 ) { + + extension = gl; + + } else { + + extension = extensions.get( 'ANGLE_instanced_arrays' ); + + if ( extension === null ) { + + console.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' ); + return; + + } + + } + + extension[ capabilities.isWebGL2 ? 'drawArraysInstanced' : 'drawArraysInstancedANGLE' ]( mode, start, count, geometry.maxInstancedCount ); + + info.update( count, mode, geometry.maxInstancedCount ); + + } + + // + + this.setMode = setMode; + this.render = render; + this.renderInstances = renderInstances; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLCapabilities( gl, extensions, parameters ) { + + var maxAnisotropy; + + function getMaxAnisotropy() { + + if ( maxAnisotropy !== undefined ) return maxAnisotropy; + + var extension = extensions.get( 'EXT_texture_filter_anisotropic' ); + + if ( extension !== null ) { + + maxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT ); + + } else { + + maxAnisotropy = 0; + + } + + return maxAnisotropy; + + } + + function getMaxPrecision( precision ) { + + if ( precision === 'highp' ) { + + if ( gl.getShaderPrecisionFormat( 35633, 36338 ).precision > 0 && + gl.getShaderPrecisionFormat( 35632, 36338 ).precision > 0 ) { + + return 'highp'; + + } + + precision = 'mediump'; + + } + + if ( precision === 'mediump' ) { + + if ( gl.getShaderPrecisionFormat( 35633, 36337 ).precision > 0 && + gl.getShaderPrecisionFormat( 35632, 36337 ).precision > 0 ) { + + return 'mediump'; + + } + + } + + return 'lowp'; + + } + + var isWebGL2 = typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext; + + var precision = parameters.precision !== undefined ? parameters.precision : 'highp'; + var maxPrecision = getMaxPrecision( precision ); + + if ( maxPrecision !== precision ) { + + console.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' ); + precision = maxPrecision; + + } + + var logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true; + + var maxTextures = gl.getParameter( 34930 ); + var maxVertexTextures = gl.getParameter( 35660 ); + var maxTextureSize = gl.getParameter( 3379 ); + var maxCubemapSize = gl.getParameter( 34076 ); + + var maxAttributes = gl.getParameter( 34921 ); + var maxVertexUniforms = gl.getParameter( 36347 ); + var maxVaryings = gl.getParameter( 36348 ); + var maxFragmentUniforms = gl.getParameter( 36349 ); + + var vertexTextures = maxVertexTextures > 0; + var floatFragmentTextures = isWebGL2 || !! extensions.get( 'OES_texture_float' ); + var floatVertexTextures = vertexTextures && floatFragmentTextures; + + var maxSamples = isWebGL2 ? gl.getParameter( 36183 ) : 0; + + return { + + isWebGL2: isWebGL2, + + getMaxAnisotropy: getMaxAnisotropy, + getMaxPrecision: getMaxPrecision, + + precision: precision, + logarithmicDepthBuffer: logarithmicDepthBuffer, + + maxTextures: maxTextures, + maxVertexTextures: maxVertexTextures, + maxTextureSize: maxTextureSize, + maxCubemapSize: maxCubemapSize, + + maxAttributes: maxAttributes, + maxVertexUniforms: maxVertexUniforms, + maxVaryings: maxVaryings, + maxFragmentUniforms: maxFragmentUniforms, + + vertexTextures: vertexTextures, + floatFragmentTextures: floatFragmentTextures, + floatVertexTextures: floatVertexTextures, + + maxSamples: maxSamples + + }; + + } + + /** + * @author tschw + */ + + function WebGLClipping() { + + var scope = this, + + globalState = null, + numGlobalPlanes = 0, + localClippingEnabled = false, + renderingShadows = false, + + plane = new Plane(), + viewNormalMatrix = new Matrix3(), + + uniform = { value: null, needsUpdate: false }; + + this.uniform = uniform; + this.numPlanes = 0; + this.numIntersection = 0; + + this.init = function ( planes, enableLocalClipping, camera ) { + + var enabled = + planes.length !== 0 || + enableLocalClipping || + // enable state of previous frame - the clipping code has to + // run another frame in order to reset the state: + numGlobalPlanes !== 0 || + localClippingEnabled; + + localClippingEnabled = enableLocalClipping; + + globalState = projectPlanes( planes, camera, 0 ); + numGlobalPlanes = planes.length; + + return enabled; + + }; + + this.beginShadows = function () { + + renderingShadows = true; + projectPlanes( null ); + + }; + + this.endShadows = function () { + + renderingShadows = false; + resetGlobalState(); + + }; + + this.setState = function ( planes, clipIntersection, clipShadows, camera, cache, fromCache ) { + + if ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) { + + // there's no local clipping + + if ( renderingShadows ) { + + // there's no global clipping + + projectPlanes( null ); + + } else { + + resetGlobalState(); + + } + + } else { + + var nGlobal = renderingShadows ? 0 : numGlobalPlanes, + lGlobal = nGlobal * 4, + + dstArray = cache.clippingState || null; + + uniform.value = dstArray; // ensure unique state + + dstArray = projectPlanes( planes, camera, lGlobal, fromCache ); + + for ( var i = 0; i !== lGlobal; ++ i ) { + + dstArray[ i ] = globalState[ i ]; + + } + + cache.clippingState = dstArray; + this.numIntersection = clipIntersection ? this.numPlanes : 0; + this.numPlanes += nGlobal; + + } + + + }; + + function resetGlobalState() { + + if ( uniform.value !== globalState ) { + + uniform.value = globalState; + uniform.needsUpdate = numGlobalPlanes > 0; + + } + + scope.numPlanes = numGlobalPlanes; + scope.numIntersection = 0; + + } + + function projectPlanes( planes, camera, dstOffset, skipTransform ) { + + var nPlanes = planes !== null ? planes.length : 0, + dstArray = null; + + if ( nPlanes !== 0 ) { + + dstArray = uniform.value; + + if ( skipTransform !== true || dstArray === null ) { + + var flatSize = dstOffset + nPlanes * 4, + viewMatrix = camera.matrixWorldInverse; + + viewNormalMatrix.getNormalMatrix( viewMatrix ); + + if ( dstArray === null || dstArray.length < flatSize ) { + + dstArray = new Float32Array( flatSize ); + + } + + for ( var i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) { + + plane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix ); + + plane.normal.toArray( dstArray, i4 ); + dstArray[ i4 + 3 ] = plane.constant; + + } + + } + + uniform.value = dstArray; + uniform.needsUpdate = true; + + } + + scope.numPlanes = nPlanes; + + return dstArray; + + } + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLExtensions( gl ) { + + var extensions = {}; + + return { + + get: function ( name ) { + + if ( extensions[ name ] !== undefined ) { + + return extensions[ name ]; + + } + + var extension; + + switch ( name ) { + + case 'WEBGL_depth_texture': + extension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' ); + break; + + case 'EXT_texture_filter_anisotropic': + extension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' ); + break; + + case 'WEBGL_compressed_texture_s3tc': + extension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' ); + break; + + case 'WEBGL_compressed_texture_pvrtc': + extension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' ); + break; + + default: + extension = gl.getExtension( name ); + + } + + if ( extension === null ) { + + console.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' ); + + } + + extensions[ name ] = extension; + + return extension; + + } + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLGeometries( gl, attributes, info ) { + + var geometries = {}; + var wireframeAttributes = {}; + + function onGeometryDispose( event ) { + + var geometry = event.target; + var buffergeometry = geometries[ geometry.id ]; + + if ( buffergeometry.index !== null ) { + + attributes.remove( buffergeometry.index ); + + } + + for ( var name in buffergeometry.attributes ) { + + attributes.remove( buffergeometry.attributes[ name ] ); + + } + + geometry.removeEventListener( 'dispose', onGeometryDispose ); + + delete geometries[ geometry.id ]; + + var attribute = wireframeAttributes[ buffergeometry.id ]; + + if ( attribute ) { + + attributes.remove( attribute ); + delete wireframeAttributes[ buffergeometry.id ]; + + } + + // + + info.memory.geometries --; + + } + + function get( object, geometry ) { + + var buffergeometry = geometries[ geometry.id ]; + + if ( buffergeometry ) return buffergeometry; + + geometry.addEventListener( 'dispose', onGeometryDispose ); + + if ( geometry.isBufferGeometry ) { + + buffergeometry = geometry; + + } else if ( geometry.isGeometry ) { + + if ( geometry._bufferGeometry === undefined ) { + + geometry._bufferGeometry = new BufferGeometry().setFromObject( object ); + + } + + buffergeometry = geometry._bufferGeometry; + + } + + geometries[ geometry.id ] = buffergeometry; + + info.memory.geometries ++; + + return buffergeometry; + + } + + function update( geometry ) { + + var index = geometry.index; + var geometryAttributes = geometry.attributes; + + if ( index !== null ) { + + attributes.update( index, 34963 ); + + } + + for ( var name in geometryAttributes ) { + + attributes.update( geometryAttributes[ name ], 34962 ); + + } + + // morph targets + + var morphAttributes = geometry.morphAttributes; + + for ( var name in morphAttributes ) { + + var array = morphAttributes[ name ]; + + for ( var i = 0, l = array.length; i < l; i ++ ) { + + attributes.update( array[ i ], 34962 ); + + } + + } + + } + + function getWireframeAttribute( geometry ) { + + var attribute = wireframeAttributes[ geometry.id ]; + + if ( attribute ) return attribute; + + var indices = []; + + var geometryIndex = geometry.index; + var geometryAttributes = geometry.attributes; + + // console.time( 'wireframe' ); + + if ( geometryIndex !== null ) { + + var array = geometryIndex.array; + + for ( var i = 0, l = array.length; i < l; i += 3 ) { + + var a = array[ i + 0 ]; + var b = array[ i + 1 ]; + var c = array[ i + 2 ]; + + indices.push( a, b, b, c, c, a ); + + } + + } else { + + var array = geometryAttributes.position.array; + + for ( var i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) { + + var a = i + 0; + var b = i + 1; + var c = i + 2; + + indices.push( a, b, b, c, c, a ); + + } + + } + + // console.timeEnd( 'wireframe' ); + + attribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 ); + + attributes.update( attribute, 34963 ); + + wireframeAttributes[ geometry.id ] = attribute; + + return attribute; + + } + + return { + + get: get, + update: update, + + getWireframeAttribute: getWireframeAttribute + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) { + + var mode; + + function setMode( value ) { + + mode = value; + + } + + var type, bytesPerElement; + + function setIndex( value ) { + + type = value.type; + bytesPerElement = value.bytesPerElement; + + } + + function render( start, count ) { + + gl.drawElements( mode, count, type, start * bytesPerElement ); + + info.update( count, mode ); + + } + + function renderInstances( geometry, start, count ) { + + var extension; + + if ( capabilities.isWebGL2 ) { + + extension = gl; + + } else { + + var extension = extensions.get( 'ANGLE_instanced_arrays' ); + + if ( extension === null ) { + + console.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' ); + return; + + } + + } + + extension[ capabilities.isWebGL2 ? 'drawElementsInstanced' : 'drawElementsInstancedANGLE' ]( mode, count, type, start * bytesPerElement, geometry.maxInstancedCount ); + + info.update( count, mode, geometry.maxInstancedCount ); + + } + + // + + this.setMode = setMode; + this.setIndex = setIndex; + this.render = render; + this.renderInstances = renderInstances; + + } + + /** + * @author Mugen87 / https://github.com/Mugen87 + */ + + function WebGLInfo( gl ) { + + var memory = { + geometries: 0, + textures: 0 + }; + + var render = { + frame: 0, + calls: 0, + triangles: 0, + points: 0, + lines: 0 + }; + + function update( count, mode, instanceCount ) { + + instanceCount = instanceCount || 1; + + render.calls ++; + + switch ( mode ) { + + case 4: + render.triangles += instanceCount * ( count / 3 ); + break; + + case 5: + case 6: + render.triangles += instanceCount * ( count - 2 ); + break; + + case 1: + render.lines += instanceCount * ( count / 2 ); + break; + + case 3: + render.lines += instanceCount * ( count - 1 ); + break; + + case 2: + render.lines += instanceCount * count; + break; + + case 0: + render.points += instanceCount * count; + break; + + default: + console.error( 'THREE.WebGLInfo: Unknown draw mode:', mode ); + break; + + } + + } + + function reset() { + + render.frame ++; + render.calls = 0; + render.triangles = 0; + render.points = 0; + render.lines = 0; + + } + + return { + memory: memory, + render: render, + programs: null, + autoReset: true, + reset: reset, + update: update + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function absNumericalSort( a, b ) { + + return Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] ); + + } + + function WebGLMorphtargets( gl ) { + + var influencesList = {}; + var morphInfluences = new Float32Array( 8 ); + + function update( object, geometry, material, program ) { + + var objectInfluences = object.morphTargetInfluences; + + var length = objectInfluences.length; + + var influences = influencesList[ geometry.id ]; + + if ( influences === undefined ) { + + // initialise list + + influences = []; + + for ( var i = 0; i < length; i ++ ) { + + influences[ i ] = [ i, 0 ]; + + } + + influencesList[ geometry.id ] = influences; + + } + + var morphTargets = material.morphTargets && geometry.morphAttributes.position; + var morphNormals = material.morphNormals && geometry.morphAttributes.normal; + + // Remove current morphAttributes + + for ( var i = 0; i < length; i ++ ) { + + var influence = influences[ i ]; + + if ( influence[ 1 ] !== 0 ) { + + if ( morphTargets ) geometry.removeAttribute( 'morphTarget' + i ); + if ( morphNormals ) geometry.removeAttribute( 'morphNormal' + i ); + + } + + } + + // Collect influences + + for ( var i = 0; i < length; i ++ ) { + + var influence = influences[ i ]; + + influence[ 0 ] = i; + influence[ 1 ] = objectInfluences[ i ]; + + } + + influences.sort( absNumericalSort ); + + // Add morphAttributes + + for ( var i = 0; i < 8; i ++ ) { + + var influence = influences[ i ]; + + if ( influence ) { + + var index = influence[ 0 ]; + var value = influence[ 1 ]; + + if ( value ) { + + if ( morphTargets ) geometry.addAttribute( 'morphTarget' + i, morphTargets[ index ] ); + if ( morphNormals ) geometry.addAttribute( 'morphNormal' + i, morphNormals[ index ] ); + + morphInfluences[ i ] = value; + continue; + + } + + } + + morphInfluences[ i ] = 0; + + } + + program.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences ); + + } + + return { + + update: update + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLObjects( geometries, info ) { + + var updateList = {}; + + function update( object ) { + + var frame = info.render.frame; + + var geometry = object.geometry; + var buffergeometry = geometries.get( object, geometry ); + + // Update once per frame + + if ( updateList[ buffergeometry.id ] !== frame ) { + + if ( geometry.isGeometry ) { + + buffergeometry.updateFromObject( object ); + + } + + geometries.update( buffergeometry ); + + updateList[ buffergeometry.id ] = frame; + + } + + return buffergeometry; + + } + + function dispose() { + + updateList = {}; + + } + + return { + + update: update, + dispose: dispose + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) { + + images = images !== undefined ? images : []; + mapping = mapping !== undefined ? mapping : CubeReflectionMapping; + format = format !== undefined ? format : RGBFormat; + + Texture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ); + + this.flipY = false; + + } + + CubeTexture.prototype = Object.create( Texture.prototype ); + CubeTexture.prototype.constructor = CubeTexture; + + CubeTexture.prototype.isCubeTexture = true; + + Object.defineProperty( CubeTexture.prototype, 'images', { + + get: function () { + + return this.image; + + }, + + set: function ( value ) { + + this.image = value; + + } + + } ); + + /** + * @author Takahiro https://github.com/takahirox + */ + + function DataTexture2DArray( data, width, height, depth ) { + + Texture.call( this, null ); + + this.image = { data: data, width: width, height: height, depth: depth }; + + this.magFilter = NearestFilter; + this.minFilter = NearestFilter; + + this.wrapR = ClampToEdgeWrapping; + + this.generateMipmaps = false; + this.flipY = false; + + } + + DataTexture2DArray.prototype = Object.create( Texture.prototype ); + DataTexture2DArray.prototype.constructor = DataTexture2DArray; + DataTexture2DArray.prototype.isDataTexture2DArray = true; + + /** + * @author Artur Trzesiok + */ + + function DataTexture3D( data, width, height, depth ) { + + // We're going to add .setXXX() methods for setting properties later. + // Users can still set in DataTexture3D directly. + // + // var texture = new THREE.DataTexture3D( data, width, height, depth ); + // texture.anisotropy = 16; + // + // See #14839 + + Texture.call( this, null ); + + this.image = { data: data, width: width, height: height, depth: depth }; + + this.magFilter = NearestFilter; + this.minFilter = NearestFilter; + + this.wrapR = ClampToEdgeWrapping; + + this.generateMipmaps = false; + this.flipY = false; + + } + + DataTexture3D.prototype = Object.create( Texture.prototype ); + DataTexture3D.prototype.constructor = DataTexture3D; + DataTexture3D.prototype.isDataTexture3D = true; + + /** + * @author tschw + * @author Mugen87 / https://github.com/Mugen87 + * @author mrdoob / http://mrdoob.com/ + * + * Uniforms of a program. + * Those form a tree structure with a special top-level container for the root, + * which you get by calling 'new WebGLUniforms( gl, program )'. + * + * + * Properties of inner nodes including the top-level container: + * + * .seq - array of nested uniforms + * .map - nested uniforms by name + * + * + * Methods of all nodes except the top-level container: + * + * .setValue( gl, value, [textures] ) + * + * uploads a uniform value(s) + * the 'textures' parameter is needed for sampler uniforms + * + * + * Static methods of the top-level container (textures factorizations): + * + * .upload( gl, seq, values, textures ) + * + * sets uniforms in 'seq' to 'values[id].value' + * + * .seqWithValue( seq, values ) : filteredSeq + * + * filters 'seq' entries with corresponding entry in values + * + * + * Methods of the top-level container (textures factorizations): + * + * .setValue( gl, name, value, textures ) + * + * sets uniform with name 'name' to 'value' + * + * .setOptional( gl, obj, prop ) + * + * like .set for an optional property of the object + * + */ + + var emptyTexture = new Texture(); + var emptyTexture2dArray = new DataTexture2DArray(); + var emptyTexture3d = new DataTexture3D(); + var emptyCubeTexture = new CubeTexture(); + + // --- Utilities --- + + // Array Caches (provide typed arrays for temporary by size) + + var arrayCacheF32 = []; + var arrayCacheI32 = []; + + // Float32Array caches used for uploading Matrix uniforms + + var mat4array = new Float32Array( 16 ); + var mat3array = new Float32Array( 9 ); + var mat2array = new Float32Array( 4 ); + + // Flattening for arrays of vectors and matrices + + function flatten( array, nBlocks, blockSize ) { + + var firstElem = array[ 0 ]; + + if ( firstElem <= 0 || firstElem > 0 ) return array; + // unoptimized: ! isNaN( firstElem ) + // see http://jacksondunstan.com/articles/983 + + var n = nBlocks * blockSize, + r = arrayCacheF32[ n ]; + + if ( r === undefined ) { + + r = new Float32Array( n ); + arrayCacheF32[ n ] = r; + + } + + if ( nBlocks !== 0 ) { + + firstElem.toArray( r, 0 ); + + for ( var i = 1, offset = 0; i !== nBlocks; ++ i ) { + + offset += blockSize; + array[ i ].toArray( r, offset ); + + } + + } + + return r; + + } + + function arraysEqual( a, b ) { + + if ( a.length !== b.length ) return false; + + for ( var i = 0, l = a.length; i < l; i ++ ) { + + if ( a[ i ] !== b[ i ] ) return false; + + } + + return true; + + } + + function copyArray( a, b ) { + + for ( var i = 0, l = b.length; i < l; i ++ ) { + + a[ i ] = b[ i ]; + + } + + } + + // Texture unit allocation + + function allocTexUnits( textures, n ) { + + var r = arrayCacheI32[ n ]; + + if ( r === undefined ) { + + r = new Int32Array( n ); + arrayCacheI32[ n ] = r; + + } + + for ( var i = 0; i !== n; ++ i ) + r[ i ] = textures.allocateTextureUnit(); + + return r; + + } + + // --- Setters --- + + // Note: Defining these methods externally, because they come in a bunch + // and this way their names minify. + + // Single scalar + + function setValueV1f( gl, v ) { + + var cache = this.cache; + + if ( cache[ 0 ] === v ) return; + + gl.uniform1f( this.addr, v ); + + cache[ 0 ] = v; + + } + + // Single float vector (from flat array or THREE.VectorN) + + function setValueV2f( gl, v ) { + + var cache = this.cache; + + if ( v.x !== undefined ) { + + if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) { + + gl.uniform2f( this.addr, v.x, v.y ); + + cache[ 0 ] = v.x; + cache[ 1 ] = v.y; + + } + + } else { + + if ( arraysEqual( cache, v ) ) return; + + gl.uniform2fv( this.addr, v ); + + copyArray( cache, v ); + + } + + } + + function setValueV3f( gl, v ) { + + var cache = this.cache; + + if ( v.x !== undefined ) { + + if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) { + + gl.uniform3f( this.addr, v.x, v.y, v.z ); + + cache[ 0 ] = v.x; + cache[ 1 ] = v.y; + cache[ 2 ] = v.z; + + } + + } else if ( v.r !== undefined ) { + + if ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) { + + gl.uniform3f( this.addr, v.r, v.g, v.b ); + + cache[ 0 ] = v.r; + cache[ 1 ] = v.g; + cache[ 2 ] = v.b; + + } + + } else { + + if ( arraysEqual( cache, v ) ) return; + + gl.uniform3fv( this.addr, v ); + + copyArray( cache, v ); + + } + + } + + function setValueV4f( gl, v ) { + + var cache = this.cache; + + if ( v.x !== undefined ) { + + if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) { + + gl.uniform4f( this.addr, v.x, v.y, v.z, v.w ); + + cache[ 0 ] = v.x; + cache[ 1 ] = v.y; + cache[ 2 ] = v.z; + cache[ 3 ] = v.w; + + } + + } else { + + if ( arraysEqual( cache, v ) ) return; + + gl.uniform4fv( this.addr, v ); + + copyArray( cache, v ); + + } + + } + + // Single matrix (from flat array or MatrixN) + + function setValueM2( gl, v ) { + + var cache = this.cache; + var elements = v.elements; + + if ( elements === undefined ) { + + if ( arraysEqual( cache, v ) ) return; + + gl.uniformMatrix2fv( this.addr, false, v ); + + copyArray( cache, v ); + + } else { + + if ( arraysEqual( cache, elements ) ) return; + + mat2array.set( elements ); + + gl.uniformMatrix2fv( this.addr, false, mat2array ); + + copyArray( cache, elements ); + + } + + } + + function setValueM3( gl, v ) { + + var cache = this.cache; + var elements = v.elements; + + if ( elements === undefined ) { + + if ( arraysEqual( cache, v ) ) return; + + gl.uniformMatrix3fv( this.addr, false, v ); + + copyArray( cache, v ); + + } else { + + if ( arraysEqual( cache, elements ) ) return; + + mat3array.set( elements ); + + gl.uniformMatrix3fv( this.addr, false, mat3array ); + + copyArray( cache, elements ); + + } + + } + + function setValueM4( gl, v ) { + + var cache = this.cache; + var elements = v.elements; + + if ( elements === undefined ) { + + if ( arraysEqual( cache, v ) ) return; + + gl.uniformMatrix4fv( this.addr, false, v ); + + copyArray( cache, v ); + + } else { + + if ( arraysEqual( cache, elements ) ) return; + + mat4array.set( elements ); + + gl.uniformMatrix4fv( this.addr, false, mat4array ); + + copyArray( cache, elements ); + + } + + } + + // Single texture (2D / Cube) + + function setValueT1( gl, v, textures ) { + + var cache = this.cache; + var unit = textures.allocateTextureUnit(); + + if ( cache[ 0 ] !== unit ) { + + gl.uniform1i( this.addr, unit ); + cache[ 0 ] = unit; + + } + + textures.safeSetTexture2D( v || emptyTexture, unit ); + + } + + function setValueT2DArray1( gl, v, textures ) { + + var cache = this.cache; + var unit = textures.allocateTextureUnit(); + + if ( cache[ 0 ] !== unit ) { + + gl.uniform1i( this.addr, unit ); + cache[ 0 ] = unit; + + } + + textures.setTexture2DArray( v || emptyTexture2dArray, unit ); + + } + + function setValueT3D1( gl, v, textures ) { + + var cache = this.cache; + var unit = textures.allocateTextureUnit(); + + if ( cache[ 0 ] !== unit ) { + + gl.uniform1i( this.addr, unit ); + cache[ 0 ] = unit; + + } + + textures.setTexture3D( v || emptyTexture3d, unit ); + + } + + function setValueT6( gl, v, textures ) { + + var cache = this.cache; + var unit = textures.allocateTextureUnit(); + + if ( cache[ 0 ] !== unit ) { + + gl.uniform1i( this.addr, unit ); + cache[ 0 ] = unit; + + } + + textures.safeSetTextureCube( v || emptyCubeTexture, unit ); + + } + + // Integer / Boolean vectors or arrays thereof (always flat arrays) + + function setValueV1i( gl, v ) { + + var cache = this.cache; + + if ( cache[ 0 ] === v ) return; + + gl.uniform1i( this.addr, v ); + + cache[ 0 ] = v; + + } + + function setValueV2i( gl, v ) { + + var cache = this.cache; + + if ( arraysEqual( cache, v ) ) return; + + gl.uniform2iv( this.addr, v ); + + copyArray( cache, v ); + + } + + function setValueV3i( gl, v ) { + + var cache = this.cache; + + if ( arraysEqual( cache, v ) ) return; + + gl.uniform3iv( this.addr, v ); + + copyArray( cache, v ); + + } + + function setValueV4i( gl, v ) { + + var cache = this.cache; + + if ( arraysEqual( cache, v ) ) return; + + gl.uniform4iv( this.addr, v ); + + copyArray( cache, v ); + + } + + // Helper to pick the right setter for the singular case + + function getSingularSetter( type ) { + + switch ( type ) { + + case 0x1406: return setValueV1f; // FLOAT + case 0x8b50: return setValueV2f; // _VEC2 + case 0x8b51: return setValueV3f; // _VEC3 + case 0x8b52: return setValueV4f; // _VEC4 + + case 0x8b5a: return setValueM2; // _MAT2 + case 0x8b5b: return setValueM3; // _MAT3 + case 0x8b5c: return setValueM4; // _MAT4 + + case 0x8b5e: case 0x8d66: return setValueT1; // SAMPLER_2D, SAMPLER_EXTERNAL_OES + case 0x8b5f: return setValueT3D1; // SAMPLER_3D + case 0x8b60: return setValueT6; // SAMPLER_CUBE + case 0x8DC1: return setValueT2DArray1; // SAMPLER_2D_ARRAY + + case 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL + case 0x8b53: case 0x8b57: return setValueV2i; // _VEC2 + case 0x8b54: case 0x8b58: return setValueV3i; // _VEC3 + case 0x8b55: case 0x8b59: return setValueV4i; // _VEC4 + + } + + } + + // Array of scalars + function setValueV1fArray( gl, v ) { + + gl.uniform1fv( this.addr, v ); + + } + + // Integer / Boolean vectors or arrays thereof (always flat arrays) + function setValueV1iArray( gl, v ) { + + gl.uniform1iv( this.addr, v ); + + } + + function setValueV2iArray( gl, v ) { + + gl.uniform2iv( this.addr, v ); + + } + + function setValueV3iArray( gl, v ) { + + gl.uniform3iv( this.addr, v ); + + } + + function setValueV4iArray( gl, v ) { + + gl.uniform4iv( this.addr, v ); + + } + + + // Array of vectors (flat or from THREE classes) + + function setValueV2fArray( gl, v ) { + + var data = flatten( v, this.size, 2 ); + + gl.uniform2fv( this.addr, data ); + + } + + function setValueV3fArray( gl, v ) { + + var data = flatten( v, this.size, 3 ); + + gl.uniform3fv( this.addr, data ); + + } + + function setValueV4fArray( gl, v ) { + + var data = flatten( v, this.size, 4 ); + + gl.uniform4fv( this.addr, data ); + + } + + // Array of matrices (flat or from THREE clases) + + function setValueM2Array( gl, v ) { + + var data = flatten( v, this.size, 4 ); + + gl.uniformMatrix2fv( this.addr, false, data ); + + } + + function setValueM3Array( gl, v ) { + + var data = flatten( v, this.size, 9 ); + + gl.uniformMatrix3fv( this.addr, false, data ); + + } + + function setValueM4Array( gl, v ) { + + var data = flatten( v, this.size, 16 ); + + gl.uniformMatrix4fv( this.addr, false, data ); + + } + + // Array of textures (2D / Cube) + + function setValueT1Array( gl, v, textures ) { + + var n = v.length; + + var units = allocTexUnits( textures, n ); + + gl.uniform1iv( this.addr, units ); + + for ( var i = 0; i !== n; ++ i ) { + + textures.safeSetTexture2D( v[ i ] || emptyTexture, units[ i ] ); + + } + + } + + function setValueT6Array( gl, v, textures ) { + + var n = v.length; + + var units = allocTexUnits( textures, n ); + + gl.uniform1iv( this.addr, units ); + + for ( var i = 0; i !== n; ++ i ) { + + textures.safeSetTextureCube( v[ i ] || emptyCubeTexture, units[ i ] ); + + } + + } + + // Helper to pick the right setter for a pure (bottom-level) array + + function getPureArraySetter( type ) { + + switch ( type ) { + + case 0x1406: return setValueV1fArray; // FLOAT + case 0x8b50: return setValueV2fArray; // _VEC2 + case 0x8b51: return setValueV3fArray; // _VEC3 + case 0x8b52: return setValueV4fArray; // _VEC4 + + case 0x8b5a: return setValueM2Array; // _MAT2 + case 0x8b5b: return setValueM3Array; // _MAT3 + case 0x8b5c: return setValueM4Array; // _MAT4 + + case 0x8b5e: return setValueT1Array; // SAMPLER_2D + case 0x8b60: return setValueT6Array; // SAMPLER_CUBE + + case 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL + case 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2 + case 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3 + case 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4 + + } + + } + + // --- Uniform Classes --- + + function SingleUniform( id, activeInfo, addr ) { + + this.id = id; + this.addr = addr; + this.cache = []; + this.setValue = getSingularSetter( activeInfo.type ); + + // this.path = activeInfo.name; // DEBUG + + } + + function PureArrayUniform( id, activeInfo, addr ) { + + this.id = id; + this.addr = addr; + this.cache = []; + this.size = activeInfo.size; + this.setValue = getPureArraySetter( activeInfo.type ); + + // this.path = activeInfo.name; // DEBUG + + } + + PureArrayUniform.prototype.updateCache = function ( data ) { + + var cache = this.cache; + + if ( data instanceof Float32Array && cache.length !== data.length ) { + + this.cache = new Float32Array( data.length ); + + } + + copyArray( cache, data ); + + }; + + function StructuredUniform( id ) { + + this.id = id; + + this.seq = []; + this.map = {}; + + } + + StructuredUniform.prototype.setValue = function ( gl, value, textures ) { + + var seq = this.seq; + + for ( var i = 0, n = seq.length; i !== n; ++ i ) { + + var u = seq[ i ]; + u.setValue( gl, value[ u.id ], textures ); + + } + + }; + + // --- Top-level --- + + // Parser - builds up the property tree from the path strings + + var RePathPart = /([\w\d_]+)(\])?(\[|\.)?/g; + + // extracts + // - the identifier (member name or array index) + // - followed by an optional right bracket (found when array index) + // - followed by an optional left bracket or dot (type of subscript) + // + // Note: These portions can be read in a non-overlapping fashion and + // allow straightforward parsing of the hierarchy that WebGL encodes + // in the uniform names. + + function addUniform( container, uniformObject ) { + + container.seq.push( uniformObject ); + container.map[ uniformObject.id ] = uniformObject; + + } + + function parseUniform( activeInfo, addr, container ) { + + var path = activeInfo.name, + pathLength = path.length; + + // reset RegExp object, because of the early exit of a previous run + RePathPart.lastIndex = 0; + + while ( true ) { + + var match = RePathPart.exec( path ), + matchEnd = RePathPart.lastIndex, + + id = match[ 1 ], + idIsIndex = match[ 2 ] === ']', + subscript = match[ 3 ]; + + if ( idIsIndex ) id = id | 0; // convert to integer + + if ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) { + + // bare name or "pure" bottom-level array "[0]" suffix + + addUniform( container, subscript === undefined ? + new SingleUniform( id, activeInfo, addr ) : + new PureArrayUniform( id, activeInfo, addr ) ); + + break; + + } else { + + // step into inner node / create it in case it doesn't exist + + var map = container.map, next = map[ id ]; + + if ( next === undefined ) { + + next = new StructuredUniform( id ); + addUniform( container, next ); + + } + + container = next; + + } + + } + + } + + // Root Container + + function WebGLUniforms( gl, program ) { + + this.seq = []; + this.map = {}; + + var n = gl.getProgramParameter( program, 35718 ); + + for ( var i = 0; i < n; ++ i ) { + + var info = gl.getActiveUniform( program, i ), + addr = gl.getUniformLocation( program, info.name ); + + parseUniform( info, addr, this ); + + } + + } + + WebGLUniforms.prototype.setValue = function ( gl, name, value, textures ) { + + var u = this.map[ name ]; + + if ( u !== undefined ) u.setValue( gl, value, textures ); + + }; + + WebGLUniforms.prototype.setOptional = function ( gl, object, name ) { + + var v = object[ name ]; + + if ( v !== undefined ) this.setValue( gl, name, v ); + + }; + + + // Static interface + + WebGLUniforms.upload = function ( gl, seq, values, textures ) { + + for ( var i = 0, n = seq.length; i !== n; ++ i ) { + + var u = seq[ i ], + v = values[ u.id ]; + + if ( v.needsUpdate !== false ) { + + // note: always updating when .needsUpdate is undefined + u.setValue( gl, v.value, textures ); + + } + + } + + }; + + WebGLUniforms.seqWithValue = function ( seq, values ) { + + var r = []; + + for ( var i = 0, n = seq.length; i !== n; ++ i ) { + + var u = seq[ i ]; + if ( u.id in values ) r.push( u ); + + } + + return r; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function addLineNumbers( string ) { + + var lines = string.split( '\n' ); + + for ( var i = 0; i < lines.length; i ++ ) { + + lines[ i ] = ( i + 1 ) + ': ' + lines[ i ]; + + } + + return lines.join( '\n' ); + + } + + function WebGLShader( gl, type, string, debug ) { + + var shader = gl.createShader( type ); + + gl.shaderSource( shader, string ); + gl.compileShader( shader ); + + if ( debug === true ) { + + if ( gl.getShaderParameter( shader, 35713 ) === false ) { + + console.error( 'THREE.WebGLShader: Shader couldn\'t compile.' ); + + } + + if ( gl.getShaderInfoLog( shader ) !== '' ) { + + console.warn( 'THREE.WebGLShader: gl.getShaderInfoLog()', type === 35633 ? 'vertex' : 'fragment', gl.getShaderInfoLog( shader ), addLineNumbers( string ) ); + + } + + } + + // --enable-privileged-webgl-extension + // console.log( type, gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) ); + + return shader; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + var programIdCount = 0; + + function getEncodingComponents( encoding ) { + + switch ( encoding ) { + + case LinearEncoding: + return [ 'Linear', '( value )' ]; + case sRGBEncoding: + return [ 'sRGB', '( value )' ]; + case RGBEEncoding: + return [ 'RGBE', '( value )' ]; + case RGBM7Encoding: + return [ 'RGBM', '( value, 7.0 )' ]; + case RGBM16Encoding: + return [ 'RGBM', '( value, 16.0 )' ]; + case RGBDEncoding: + return [ 'RGBD', '( value, 256.0 )' ]; + case GammaEncoding: + return [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ]; + default: + throw new Error( 'unsupported encoding: ' + encoding ); + + } + + } + + function getTexelDecodingFunction( functionName, encoding ) { + + var components = getEncodingComponents( encoding ); + return 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }'; + + } + + function getTexelEncodingFunction( functionName, encoding ) { + + var components = getEncodingComponents( encoding ); + return 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }'; + + } + + function getToneMappingFunction( functionName, toneMapping ) { + + var toneMappingName; + + switch ( toneMapping ) { + + case LinearToneMapping: + toneMappingName = 'Linear'; + break; + + case ReinhardToneMapping: + toneMappingName = 'Reinhard'; + break; + + case Uncharted2ToneMapping: + toneMappingName = 'Uncharted2'; + break; + + case CineonToneMapping: + toneMappingName = 'OptimizedCineon'; + break; + + case ACESFilmicToneMapping: + toneMappingName = 'ACESFilmic'; + break; + + default: + throw new Error( 'unsupported toneMapping: ' + toneMapping ); + + } + + return 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }'; + + } + + function generateExtensions( extensions, parameters, rendererExtensions ) { + + extensions = extensions || {}; + + var chunks = [ + ( extensions.derivatives || parameters.envMapCubeUV || parameters.bumpMap || ( parameters.normalMap && ! parameters.objectSpaceNormalMap ) || parameters.flatShading ) ? '#extension GL_OES_standard_derivatives : enable' : '', + ( extensions.fragDepth || parameters.logarithmicDepthBuffer ) && rendererExtensions.get( 'EXT_frag_depth' ) ? '#extension GL_EXT_frag_depth : enable' : '', + ( extensions.drawBuffers ) && rendererExtensions.get( 'WEBGL_draw_buffers' ) ? '#extension GL_EXT_draw_buffers : require' : '', + ( extensions.shaderTextureLOD || parameters.envMap ) && rendererExtensions.get( 'EXT_shader_texture_lod' ) ? '#extension GL_EXT_shader_texture_lod : enable' : '' + ]; + + return chunks.filter( filterEmptyLine ).join( '\n' ); + + } + + function generateDefines( defines ) { + + var chunks = []; + + for ( var name in defines ) { + + var value = defines[ name ]; + + if ( value === false ) continue; + + chunks.push( '#define ' + name + ' ' + value ); + + } + + return chunks.join( '\n' ); + + } + + function fetchAttributeLocations( gl, program ) { + + var attributes = {}; + + var n = gl.getProgramParameter( program, 35721 ); + + for ( var i = 0; i < n; i ++ ) { + + var info = gl.getActiveAttrib( program, i ); + var name = info.name; + + // console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i ); + + attributes[ name ] = gl.getAttribLocation( program, name ); + + } + + return attributes; + + } + + function filterEmptyLine( string ) { + + return string !== ''; + + } + + function replaceLightNums( string, parameters ) { + + return string + .replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights ) + .replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights ) + .replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights ) + .replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights ) + .replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights ); + + } + + function replaceClippingPlaneNums( string, parameters ) { + + return string + .replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes ) + .replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) ); + + } + + function parseIncludes( string ) { + + var pattern = /^[ \t]*#include +<([\w\d./]+)>/gm; + + function replace( match, include ) { + + var replace = ShaderChunk[ include ]; + + if ( replace === undefined ) { + + throw new Error( 'Can not resolve #include <' + include + '>' ); + + } + + return parseIncludes( replace ); + + } + + return string.replace( pattern, replace ); + + } + + function unrollLoops( string ) { + + var pattern = /#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g; + + function replace( match, start, end, snippet ) { + + var unroll = ''; + + for ( var i = parseInt( start ); i < parseInt( end ); i ++ ) { + + unroll += snippet.replace( /\[ i \]/g, '[ ' + i + ' ]' ); + + } + + return unroll; + + } + + return string.replace( pattern, replace ); + + } + + function WebGLProgram( renderer, extensions, code, material, shader, parameters, capabilities, textures ) { + + var gl = renderer.context; + + var defines = material.defines; + + var vertexShader = shader.vertexShader; + var fragmentShader = shader.fragmentShader; + + var shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC'; + + if ( parameters.shadowMapType === PCFShadowMap ) { + + shadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF'; + + } else if ( parameters.shadowMapType === PCFSoftShadowMap ) { + + shadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT'; + + } + + var envMapTypeDefine = 'ENVMAP_TYPE_CUBE'; + var envMapModeDefine = 'ENVMAP_MODE_REFLECTION'; + var envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY'; + + if ( parameters.envMap ) { + + switch ( material.envMap.mapping ) { + + case CubeReflectionMapping: + case CubeRefractionMapping: + envMapTypeDefine = 'ENVMAP_TYPE_CUBE'; + break; + + case CubeUVReflectionMapping: + case CubeUVRefractionMapping: + envMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV'; + break; + + case EquirectangularReflectionMapping: + case EquirectangularRefractionMapping: + envMapTypeDefine = 'ENVMAP_TYPE_EQUIREC'; + break; + + case SphericalReflectionMapping: + envMapTypeDefine = 'ENVMAP_TYPE_SPHERE'; + break; + + } + + switch ( material.envMap.mapping ) { + + case CubeRefractionMapping: + case EquirectangularRefractionMapping: + envMapModeDefine = 'ENVMAP_MODE_REFRACTION'; + break; + + } + + switch ( material.combine ) { + + case MultiplyOperation: + envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY'; + break; + + case MixOperation: + envMapBlendingDefine = 'ENVMAP_BLENDING_MIX'; + break; + + case AddOperation: + envMapBlendingDefine = 'ENVMAP_BLENDING_ADD'; + break; + + } + + } + + var gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0; + + // console.log( 'building new program ' ); + + // + + var customExtensions = capabilities.isWebGL2 ? '' : generateExtensions( material.extensions, parameters, extensions ); + + var customDefines = generateDefines( defines ); + + // + + var program = gl.createProgram(); + + var prefixVertex, prefixFragment; + + if ( material.isRawShaderMaterial ) { + + prefixVertex = [ + + customDefines + + ].filter( filterEmptyLine ).join( '\n' ); + + if ( prefixVertex.length > 0 ) { + + prefixVertex += '\n'; + + } + + prefixFragment = [ + + customExtensions, + customDefines + + ].filter( filterEmptyLine ).join( '\n' ); + + if ( prefixFragment.length > 0 ) { + + prefixFragment += '\n'; + + } + + } else { + + prefixVertex = [ + + 'precision ' + parameters.precision + ' float;', + 'precision ' + parameters.precision + ' int;', + + '#define SHADER_NAME ' + shader.name, + + customDefines, + + parameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '', + + '#define GAMMA_FACTOR ' + gammaFactorDefine, + + '#define MAX_BONES ' + parameters.maxBones, + ( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '', + ( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '', + + parameters.map ? '#define USE_MAP' : '', + parameters.envMap ? '#define USE_ENVMAP' : '', + parameters.envMap ? '#define ' + envMapModeDefine : '', + parameters.lightMap ? '#define USE_LIGHTMAP' : '', + parameters.aoMap ? '#define USE_AOMAP' : '', + parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '', + parameters.bumpMap ? '#define USE_BUMPMAP' : '', + parameters.normalMap ? '#define USE_NORMALMAP' : '', + ( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '', + parameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '', + parameters.specularMap ? '#define USE_SPECULARMAP' : '', + parameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '', + parameters.metalnessMap ? '#define USE_METALNESSMAP' : '', + parameters.alphaMap ? '#define USE_ALPHAMAP' : '', + + parameters.vertexTangents ? '#define USE_TANGENT' : '', + parameters.vertexColors ? '#define USE_COLOR' : '', + + parameters.flatShading ? '#define FLAT_SHADED' : '', + + parameters.skinning ? '#define USE_SKINNING' : '', + parameters.useVertexTexture ? '#define BONE_TEXTURE' : '', + + parameters.morphTargets ? '#define USE_MORPHTARGETS' : '', + parameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '', + parameters.doubleSided ? '#define DOUBLE_SIDED' : '', + parameters.flipSided ? '#define FLIP_SIDED' : '', + + parameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '', + parameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '', + + parameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '', + + parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '', + parameters.logarithmicDepthBuffer && ( capabilities.isWebGL2 || extensions.get( 'EXT_frag_depth' ) ) ? '#define USE_LOGDEPTHBUF_EXT' : '', + + 'uniform mat4 modelMatrix;', + 'uniform mat4 modelViewMatrix;', + 'uniform mat4 projectionMatrix;', + 'uniform mat4 viewMatrix;', + 'uniform mat3 normalMatrix;', + 'uniform vec3 cameraPosition;', + + 'attribute vec3 position;', + 'attribute vec3 normal;', + 'attribute vec2 uv;', + + '#ifdef USE_TANGENT', + + ' attribute vec4 tangent;', + + '#endif', + + '#ifdef USE_COLOR', + + ' attribute vec3 color;', + + '#endif', + + '#ifdef USE_MORPHTARGETS', + + ' attribute vec3 morphTarget0;', + ' attribute vec3 morphTarget1;', + ' attribute vec3 morphTarget2;', + ' attribute vec3 morphTarget3;', + + ' #ifdef USE_MORPHNORMALS', + + ' attribute vec3 morphNormal0;', + ' attribute vec3 morphNormal1;', + ' attribute vec3 morphNormal2;', + ' attribute vec3 morphNormal3;', + + ' #else', + + ' attribute vec3 morphTarget4;', + ' attribute vec3 morphTarget5;', + ' attribute vec3 morphTarget6;', + ' attribute vec3 morphTarget7;', + + ' #endif', + + '#endif', + + '#ifdef USE_SKINNING', + + ' attribute vec4 skinIndex;', + ' attribute vec4 skinWeight;', + + '#endif', + + '\n' + + ].filter( filterEmptyLine ).join( '\n' ); + + prefixFragment = [ + + customExtensions, + + 'precision ' + parameters.precision + ' float;', + 'precision ' + parameters.precision + ' int;', + + '#define SHADER_NAME ' + shader.name, + + customDefines, + + parameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest + ( parameters.alphaTest % 1 ? '' : '.0' ) : '', // add '.0' if integer + + '#define GAMMA_FACTOR ' + gammaFactorDefine, + + ( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '', + ( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '', + + parameters.map ? '#define USE_MAP' : '', + parameters.matcap ? '#define USE_MATCAP' : '', + parameters.envMap ? '#define USE_ENVMAP' : '', + parameters.envMap ? '#define ' + envMapTypeDefine : '', + parameters.envMap ? '#define ' + envMapModeDefine : '', + parameters.envMap ? '#define ' + envMapBlendingDefine : '', + parameters.lightMap ? '#define USE_LIGHTMAP' : '', + parameters.aoMap ? '#define USE_AOMAP' : '', + parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '', + parameters.bumpMap ? '#define USE_BUMPMAP' : '', + parameters.normalMap ? '#define USE_NORMALMAP' : '', + ( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '', + parameters.specularMap ? '#define USE_SPECULARMAP' : '', + parameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '', + parameters.metalnessMap ? '#define USE_METALNESSMAP' : '', + parameters.alphaMap ? '#define USE_ALPHAMAP' : '', + + parameters.vertexTangents ? '#define USE_TANGENT' : '', + parameters.vertexColors ? '#define USE_COLOR' : '', + + parameters.gradientMap ? '#define USE_GRADIENTMAP' : '', + + parameters.flatShading ? '#define FLAT_SHADED' : '', + + parameters.doubleSided ? '#define DOUBLE_SIDED' : '', + parameters.flipSided ? '#define FLIP_SIDED' : '', + + parameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '', + parameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '', + + parameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '', + + parameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '', + + parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '', + parameters.logarithmicDepthBuffer && ( capabilities.isWebGL2 || extensions.get( 'EXT_frag_depth' ) ) ? '#define USE_LOGDEPTHBUF_EXT' : '', + + parameters.envMap && ( capabilities.isWebGL2 || extensions.get( 'EXT_shader_texture_lod' ) ) ? '#define TEXTURE_LOD_EXT' : '', + + 'uniform mat4 viewMatrix;', + 'uniform vec3 cameraPosition;', + + ( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '', + ( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below + ( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '', + + parameters.dithering ? '#define DITHERING' : '', + + ( parameters.outputEncoding || parameters.mapEncoding || parameters.matcapEncoding || parameters.envMapEncoding || parameters.emissiveMapEncoding ) ? + ShaderChunk[ 'encodings_pars_fragment' ] : '', // this code is required here because it is used by the various encoding/decoding function defined below + parameters.mapEncoding ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '', + parameters.matcapEncoding ? getTexelDecodingFunction( 'matcapTexelToLinear', parameters.matcapEncoding ) : '', + parameters.envMapEncoding ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '', + parameters.emissiveMapEncoding ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '', + parameters.outputEncoding ? getTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ) : '', + + parameters.depthPacking ? '#define DEPTH_PACKING ' + material.depthPacking : '', + + '\n' + + ].filter( filterEmptyLine ).join( '\n' ); + + } + + vertexShader = parseIncludes( vertexShader ); + vertexShader = replaceLightNums( vertexShader, parameters ); + vertexShader = replaceClippingPlaneNums( vertexShader, parameters ); + + fragmentShader = parseIncludes( fragmentShader ); + fragmentShader = replaceLightNums( fragmentShader, parameters ); + fragmentShader = replaceClippingPlaneNums( fragmentShader, parameters ); + + vertexShader = unrollLoops( vertexShader ); + fragmentShader = unrollLoops( fragmentShader ); + + if ( capabilities.isWebGL2 && ! material.isRawShaderMaterial ) { + + var isGLSL3ShaderMaterial = false; + + var versionRegex = /^\s*#version\s+300\s+es\s*\n/; + + if ( material.isShaderMaterial && + vertexShader.match( versionRegex ) !== null && + fragmentShader.match( versionRegex ) !== null ) { + + isGLSL3ShaderMaterial = true; + + vertexShader = vertexShader.replace( versionRegex, '' ); + fragmentShader = fragmentShader.replace( versionRegex, '' ); + + } + + // GLSL 3.0 conversion + prefixVertex = [ + '#version 300 es\n', + '#define attribute in', + '#define varying out', + '#define texture2D texture' + ].join( '\n' ) + '\n' + prefixVertex; + + prefixFragment = [ + '#version 300 es\n', + '#define varying in', + isGLSL3ShaderMaterial ? '' : 'out highp vec4 pc_fragColor;', + isGLSL3ShaderMaterial ? '' : '#define gl_FragColor pc_fragColor', + '#define gl_FragDepthEXT gl_FragDepth', + '#define texture2D texture', + '#define textureCube texture', + '#define texture2DProj textureProj', + '#define texture2DLodEXT textureLod', + '#define texture2DProjLodEXT textureProjLod', + '#define textureCubeLodEXT textureLod', + '#define texture2DGradEXT textureGrad', + '#define texture2DProjGradEXT textureProjGrad', + '#define textureCubeGradEXT textureGrad' + ].join( '\n' ) + '\n' + prefixFragment; + + } + + var vertexGlsl = prefixVertex + vertexShader; + var fragmentGlsl = prefixFragment + fragmentShader; + + // console.log( '*VERTEX*', vertexGlsl ); + // console.log( '*FRAGMENT*', fragmentGlsl ); + + var glVertexShader = WebGLShader( gl, 35633, vertexGlsl, renderer.debug.checkShaderErrors ); + var glFragmentShader = WebGLShader( gl, 35632, fragmentGlsl, renderer.debug.checkShaderErrors ); + + gl.attachShader( program, glVertexShader ); + gl.attachShader( program, glFragmentShader ); + + // Force a particular attribute to index 0. + + if ( material.index0AttributeName !== undefined ) { + + gl.bindAttribLocation( program, 0, material.index0AttributeName ); + + } else if ( parameters.morphTargets === true ) { + + // programs with morphTargets displace position out of attribute 0 + gl.bindAttribLocation( program, 0, 'position' ); + + } + + gl.linkProgram( program ); + + // check for link errors + if ( renderer.debug.checkShaderErrors ) { + + var programLog = gl.getProgramInfoLog( program ).trim(); + var vertexLog = gl.getShaderInfoLog( glVertexShader ).trim(); + var fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim(); + + var runnable = true; + var haveDiagnostics = true; + + // console.log( '**VERTEX**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glVertexShader ) ); + // console.log( '**FRAGMENT**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glFragmentShader ) ); + + if ( gl.getProgramParameter( program, 35714 ) === false ) { + + runnable = false; + + console.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), '35715', gl.getProgramParameter( program, 35715 ), 'gl.getProgramInfoLog', programLog, vertexLog, fragmentLog ); + + } else if ( programLog !== '' ) { + + console.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog ); + + } else if ( vertexLog === '' || fragmentLog === '' ) { + + haveDiagnostics = false; + + } + + if ( haveDiagnostics ) { + + this.diagnostics = { + + runnable: runnable, + material: material, + + programLog: programLog, + + vertexShader: { + + log: vertexLog, + prefix: prefixVertex + + }, + + fragmentShader: { + + log: fragmentLog, + prefix: prefixFragment + + } + + }; + + } + + } + + // clean up + + gl.deleteShader( glVertexShader ); + gl.deleteShader( glFragmentShader ); + + // set up caching for uniform locations + + var cachedUniforms; + + this.getUniforms = function () { + + if ( cachedUniforms === undefined ) { + + cachedUniforms = new WebGLUniforms( gl, program, textures ); + + } + + return cachedUniforms; + + }; + + // set up caching for attribute locations + + var cachedAttributes; + + this.getAttributes = function () { + + if ( cachedAttributes === undefined ) { + + cachedAttributes = fetchAttributeLocations( gl, program ); + + } + + return cachedAttributes; + + }; + + // free resource + + this.destroy = function () { + + gl.deleteProgram( program ); + this.program = undefined; + + }; + + // DEPRECATED + + Object.defineProperties( this, { + + uniforms: { + get: function () { + + console.warn( 'THREE.WebGLProgram: .uniforms is now .getUniforms().' ); + return this.getUniforms(); + + } + }, + + attributes: { + get: function () { + + console.warn( 'THREE.WebGLProgram: .attributes is now .getAttributes().' ); + return this.getAttributes(); + + } + } + + } ); + + + // + + this.name = shader.name; + this.id = programIdCount ++; + this.code = code; + this.usedTimes = 1; + this.program = program; + this.vertexShader = glVertexShader; + this.fragmentShader = glFragmentShader; + + return this; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLPrograms( renderer, extensions, capabilities, textures ) { + + var programs = []; + + var shaderIDs = { + MeshDepthMaterial: 'depth', + MeshDistanceMaterial: 'distanceRGBA', + MeshNormalMaterial: 'normal', + MeshBasicMaterial: 'basic', + MeshLambertMaterial: 'lambert', + MeshPhongMaterial: 'phong', + MeshToonMaterial: 'phong', + MeshStandardMaterial: 'physical', + MeshPhysicalMaterial: 'physical', + MeshMatcapMaterial: 'matcap', + LineBasicMaterial: 'basic', + LineDashedMaterial: 'dashed', + PointsMaterial: 'points', + ShadowMaterial: 'shadow', + SpriteMaterial: 'sprite' + }; + + var parameterNames = [ + "precision", "supportsVertexTextures", "map", "mapEncoding", "matcap", "matcapEncoding", "envMap", "envMapMode", "envMapEncoding", + "lightMap", "aoMap", "emissiveMap", "emissiveMapEncoding", "bumpMap", "normalMap", "objectSpaceNormalMap", "displacementMap", "specularMap", + "roughnessMap", "metalnessMap", "gradientMap", + "alphaMap", "combine", "vertexColors", "vertexTangents", "fog", "useFog", "fogExp", + "flatShading", "sizeAttenuation", "logarithmicDepthBuffer", "skinning", + "maxBones", "useVertexTexture", "morphTargets", "morphNormals", + "maxMorphTargets", "maxMorphNormals", "premultipliedAlpha", + "numDirLights", "numPointLights", "numSpotLights", "numHemiLights", "numRectAreaLights", + "shadowMapEnabled", "shadowMapType", "toneMapping", 'physicallyCorrectLights', + "alphaTest", "doubleSided", "flipSided", "numClippingPlanes", "numClipIntersection", "depthPacking", "dithering" + ]; + + + function allocateBones( object ) { + + var skeleton = object.skeleton; + var bones = skeleton.bones; + + if ( capabilities.floatVertexTextures ) { + + return 1024; + + } else { + + // default for when object is not specified + // ( for example when prebuilding shader to be used with multiple objects ) + // + // - leave some extra space for other uniforms + // - limit here is ANGLE's 254 max uniform vectors + // (up to 54 should be safe) + + var nVertexUniforms = capabilities.maxVertexUniforms; + var nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 ); + + var maxBones = Math.min( nVertexMatrices, bones.length ); + + if ( maxBones < bones.length ) { + + console.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' ); + return 0; + + } + + return maxBones; + + } + + } + + function getTextureEncodingFromMap( map, gammaOverrideLinear ) { + + var encoding; + + if ( ! map ) { + + encoding = LinearEncoding; + + } else if ( map.isTexture ) { + + encoding = map.encoding; + + } else if ( map.isWebGLRenderTarget ) { + + console.warn( "THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead." ); + encoding = map.texture.encoding; + + } + + // add backwards compatibility for WebGLRenderer.gammaInput/gammaOutput parameter, should probably be removed at some point. + if ( encoding === LinearEncoding && gammaOverrideLinear ) { + + encoding = GammaEncoding; + + } + + return encoding; + + } + + this.getParameters = function ( material, lights, shadows, fog, nClipPlanes, nClipIntersection, object ) { + + var shaderID = shaderIDs[ material.type ]; + + // heuristics to create shader parameters according to lights in the scene + // (not to blow over maxLights budget) + + var maxBones = object.isSkinnedMesh ? allocateBones( object ) : 0; + var precision = capabilities.precision; + + if ( material.precision !== null ) { + + precision = capabilities.getMaxPrecision( material.precision ); + + if ( precision !== material.precision ) { + + console.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' ); + + } + + } + + var currentRenderTarget = renderer.getRenderTarget(); + + var parameters = { + + shaderID: shaderID, + + precision: precision, + supportsVertexTextures: capabilities.vertexTextures, + outputEncoding: getTextureEncodingFromMap( ( ! currentRenderTarget ) ? null : currentRenderTarget.texture, renderer.gammaOutput ), + map: !! material.map, + mapEncoding: getTextureEncodingFromMap( material.map, renderer.gammaInput ), + matcap: !! material.matcap, + matcapEncoding: getTextureEncodingFromMap( material.matcap, renderer.gammaInput ), + envMap: !! material.envMap, + envMapMode: material.envMap && material.envMap.mapping, + envMapEncoding: getTextureEncodingFromMap( material.envMap, renderer.gammaInput ), + envMapCubeUV: ( !! material.envMap ) && ( ( material.envMap.mapping === CubeUVReflectionMapping ) || ( material.envMap.mapping === CubeUVRefractionMapping ) ), + lightMap: !! material.lightMap, + aoMap: !! material.aoMap, + emissiveMap: !! material.emissiveMap, + emissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap, renderer.gammaInput ), + bumpMap: !! material.bumpMap, + normalMap: !! material.normalMap, + objectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap, + displacementMap: !! material.displacementMap, + roughnessMap: !! material.roughnessMap, + metalnessMap: !! material.metalnessMap, + specularMap: !! material.specularMap, + alphaMap: !! material.alphaMap, + + gradientMap: !! material.gradientMap, + + combine: material.combine, + + vertexTangents: ( material.normalMap && material.vertexTangents ), + vertexColors: material.vertexColors, + + fog: !! fog, + useFog: material.fog, + fogExp: ( fog && fog.isFogExp2 ), + + flatShading: material.flatShading, + + sizeAttenuation: material.sizeAttenuation, + logarithmicDepthBuffer: capabilities.logarithmicDepthBuffer, + + skinning: material.skinning && maxBones > 0, + maxBones: maxBones, + useVertexTexture: capabilities.floatVertexTextures, + + morphTargets: material.morphTargets, + morphNormals: material.morphNormals, + maxMorphTargets: renderer.maxMorphTargets, + maxMorphNormals: renderer.maxMorphNormals, + + numDirLights: lights.directional.length, + numPointLights: lights.point.length, + numSpotLights: lights.spot.length, + numRectAreaLights: lights.rectArea.length, + numHemiLights: lights.hemi.length, + + numClippingPlanes: nClipPlanes, + numClipIntersection: nClipIntersection, + + dithering: material.dithering, + + shadowMapEnabled: renderer.shadowMap.enabled && object.receiveShadow && shadows.length > 0, + shadowMapType: renderer.shadowMap.type, + + toneMapping: renderer.toneMapping, + physicallyCorrectLights: renderer.physicallyCorrectLights, + + premultipliedAlpha: material.premultipliedAlpha, + + alphaTest: material.alphaTest, + doubleSided: material.side === DoubleSide, + flipSided: material.side === BackSide, + + depthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false + + }; + + return parameters; + + }; + + this.getProgramCode = function ( material, parameters ) { + + var array = []; + + if ( parameters.shaderID ) { + + array.push( parameters.shaderID ); + + } else { + + array.push( material.fragmentShader ); + array.push( material.vertexShader ); + + } + + if ( material.defines !== undefined ) { + + for ( var name in material.defines ) { + + array.push( name ); + array.push( material.defines[ name ] ); + + } + + } + + for ( var i = 0; i < parameterNames.length; i ++ ) { + + array.push( parameters[ parameterNames[ i ] ] ); + + } + + array.push( material.onBeforeCompile.toString() ); + + array.push( renderer.gammaOutput ); + + array.push( renderer.gammaFactor ); + + return array.join(); + + }; + + this.acquireProgram = function ( material, shader, parameters, code ) { + + var program; + + // Check if code has been already compiled + for ( var p = 0, pl = programs.length; p < pl; p ++ ) { + + var programInfo = programs[ p ]; + + if ( programInfo.code === code ) { + + program = programInfo; + ++ program.usedTimes; + + break; + + } + + } + + if ( program === undefined ) { + + program = new WebGLProgram( renderer, extensions, code, material, shader, parameters, capabilities, textures ); + programs.push( program ); + + } + + return program; + + }; + + this.releaseProgram = function ( program ) { + + if ( -- program.usedTimes === 0 ) { + + // Remove from unordered set + var i = programs.indexOf( program ); + programs[ i ] = programs[ programs.length - 1 ]; + programs.pop(); + + // Free WebGL resources + program.destroy(); + + } + + }; + + // Exposed for resource monitoring & error feedback via renderer.info: + this.programs = programs; + + } + + /** + * @author fordacious / fordacious.github.io + */ + + function WebGLProperties() { + + var properties = new WeakMap(); + + function get( object ) { + + var map = properties.get( object ); + + if ( map === undefined ) { + + map = {}; + properties.set( object, map ); + + } + + return map; + + } + + function remove( object ) { + + properties.delete( object ); + + } + + function update( object, key, value ) { + + properties.get( object )[ key ] = value; + + } + + function dispose() { + + properties = new WeakMap(); + + } + + return { + get: get, + remove: remove, + update: update, + dispose: dispose + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function painterSortStable( a, b ) { + + if ( a.groupOrder !== b.groupOrder ) { + + return a.groupOrder - b.groupOrder; + + } else if ( a.renderOrder !== b.renderOrder ) { + + return a.renderOrder - b.renderOrder; + + } else if ( a.program !== b.program ) { + + return a.program.id - b.program.id; + + } else if ( a.material.id !== b.material.id ) { + + return a.material.id - b.material.id; + + } else if ( a.z !== b.z ) { + + return a.z - b.z; + + } else { + + return a.id - b.id; + + } + + } + + function reversePainterSortStable( a, b ) { + + if ( a.groupOrder !== b.groupOrder ) { + + return a.groupOrder - b.groupOrder; + + } else if ( a.renderOrder !== b.renderOrder ) { + + return a.renderOrder - b.renderOrder; + + } else if ( a.z !== b.z ) { + + return b.z - a.z; + + } else { + + return a.id - b.id; + + } + + } + + + function WebGLRenderList() { + + var renderItems = []; + var renderItemsIndex = 0; + + var opaque = []; + var transparent = []; + + var defaultProgram = { id: - 1 }; + + function init() { + + renderItemsIndex = 0; + + opaque.length = 0; + transparent.length = 0; + + } + + function getNextRenderItem( object, geometry, material, groupOrder, z, group ) { + + var renderItem = renderItems[ renderItemsIndex ]; + + if ( renderItem === undefined ) { + + renderItem = { + id: object.id, + object: object, + geometry: geometry, + material: material, + program: material.program || defaultProgram, + groupOrder: groupOrder, + renderOrder: object.renderOrder, + z: z, + group: group + }; + + renderItems[ renderItemsIndex ] = renderItem; + + } else { + + renderItem.id = object.id; + renderItem.object = object; + renderItem.geometry = geometry; + renderItem.material = material; + renderItem.program = material.program || defaultProgram; + renderItem.groupOrder = groupOrder; + renderItem.renderOrder = object.renderOrder; + renderItem.z = z; + renderItem.group = group; + + } + + renderItemsIndex ++; + + return renderItem; + + } + + function push( object, geometry, material, groupOrder, z, group ) { + + var renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group ); + + ( material.transparent === true ? transparent : opaque ).push( renderItem ); + + } + + function unshift( object, geometry, material, groupOrder, z, group ) { + + var renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group ); + + ( material.transparent === true ? transparent : opaque ).unshift( renderItem ); + + } + + function sort() { + + if ( opaque.length > 1 ) opaque.sort( painterSortStable ); + if ( transparent.length > 1 ) transparent.sort( reversePainterSortStable ); + + } + + return { + opaque: opaque, + transparent: transparent, + + init: init, + push: push, + unshift: unshift, + + sort: sort + }; + + } + + function WebGLRenderLists() { + + var lists = {}; + + function onSceneDispose( event ) { + + var scene = event.target; + + scene.removeEventListener( 'dispose', onSceneDispose ); + + delete lists[ scene.id ]; + + } + + function get( scene, camera ) { + + var cameras = lists[ scene.id ]; + var list; + if ( cameras === undefined ) { + + list = new WebGLRenderList(); + lists[ scene.id ] = {}; + lists[ scene.id ][ camera.id ] = list; + + scene.addEventListener( 'dispose', onSceneDispose ); + + } else { + + list = cameras[ camera.id ]; + if ( list === undefined ) { + + list = new WebGLRenderList(); + cameras[ camera.id ] = list; + + } + + } + + return list; + + } + + function dispose() { + + lists = {}; + + } + + return { + get: get, + dispose: dispose + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function UniformsCache() { + + var lights = {}; + + return { + + get: function ( light ) { + + if ( lights[ light.id ] !== undefined ) { + + return lights[ light.id ]; + + } + + var uniforms; + + switch ( light.type ) { + + case 'DirectionalLight': + uniforms = { + direction: new Vector3(), + color: new Color(), + + shadow: false, + shadowBias: 0, + shadowRadius: 1, + shadowMapSize: new Vector2() + }; + break; + + case 'SpotLight': + uniforms = { + position: new Vector3(), + direction: new Vector3(), + color: new Color(), + distance: 0, + coneCos: 0, + penumbraCos: 0, + decay: 0, + + shadow: false, + shadowBias: 0, + shadowRadius: 1, + shadowMapSize: new Vector2() + }; + break; + + case 'PointLight': + uniforms = { + position: new Vector3(), + color: new Color(), + distance: 0, + decay: 0, + + shadow: false, + shadowBias: 0, + shadowRadius: 1, + shadowMapSize: new Vector2(), + shadowCameraNear: 1, + shadowCameraFar: 1000 + }; + break; + + case 'HemisphereLight': + uniforms = { + direction: new Vector3(), + skyColor: new Color(), + groundColor: new Color() + }; + break; + + case 'RectAreaLight': + uniforms = { + color: new Color(), + position: new Vector3(), + halfWidth: new Vector3(), + halfHeight: new Vector3() + // TODO (abelnation): set RectAreaLight shadow uniforms + }; + break; + + } + + lights[ light.id ] = uniforms; + + return uniforms; + + } + + }; + + } + + var count = 0; + + function WebGLLights() { + + var cache = new UniformsCache(); + + var state = { + + id: count ++, + + hash: { + stateID: - 1, + directionalLength: - 1, + pointLength: - 1, + spotLength: - 1, + rectAreaLength: - 1, + hemiLength: - 1, + shadowsLength: - 1 + }, + + ambient: [ 0, 0, 0 ], + probe: [], + directional: [], + directionalShadowMap: [], + directionalShadowMatrix: [], + spot: [], + spotShadowMap: [], + spotShadowMatrix: [], + rectArea: [], + point: [], + pointShadowMap: [], + pointShadowMatrix: [], + hemi: [] + + }; + + for ( var i = 0; i < 9; i ++ ) state.probe.push( new Vector3() ); + + var vector3 = new Vector3(); + var matrix4 = new Matrix4(); + var matrix42 = new Matrix4(); + + function setup( lights, shadows, camera ) { + + var r = 0, g = 0, b = 0; + + for ( var i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 ); + + var directionalLength = 0; + var pointLength = 0; + var spotLength = 0; + var rectAreaLength = 0; + var hemiLength = 0; + + var viewMatrix = camera.matrixWorldInverse; + + for ( var i = 0, l = lights.length; i < l; i ++ ) { + + var light = lights[ i ]; + + var color = light.color; + var intensity = light.intensity; + var distance = light.distance; + + var shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null; + + if ( light.isAmbientLight ) { + + r += color.r * intensity; + g += color.g * intensity; + b += color.b * intensity; + + } else if ( light.isLightProbe ) { + + for ( var j = 0; j < 9; j ++ ) { + + state.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity ); + + } + + } else if ( light.isDirectionalLight ) { + + var uniforms = cache.get( light ); + + uniforms.color.copy( light.color ).multiplyScalar( light.intensity ); + uniforms.direction.setFromMatrixPosition( light.matrixWorld ); + vector3.setFromMatrixPosition( light.target.matrixWorld ); + uniforms.direction.sub( vector3 ); + uniforms.direction.transformDirection( viewMatrix ); + + uniforms.shadow = light.castShadow; + + if ( light.castShadow ) { + + var shadow = light.shadow; + + uniforms.shadowBias = shadow.bias; + uniforms.shadowRadius = shadow.radius; + uniforms.shadowMapSize = shadow.mapSize; + + } + + state.directionalShadowMap[ directionalLength ] = shadowMap; + state.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix; + state.directional[ directionalLength ] = uniforms; + + directionalLength ++; + + } else if ( light.isSpotLight ) { + + var uniforms = cache.get( light ); + + uniforms.position.setFromMatrixPosition( light.matrixWorld ); + uniforms.position.applyMatrix4( viewMatrix ); + + uniforms.color.copy( color ).multiplyScalar( intensity ); + uniforms.distance = distance; + + uniforms.direction.setFromMatrixPosition( light.matrixWorld ); + vector3.setFromMatrixPosition( light.target.matrixWorld ); + uniforms.direction.sub( vector3 ); + uniforms.direction.transformDirection( viewMatrix ); + + uniforms.coneCos = Math.cos( light.angle ); + uniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) ); + uniforms.decay = light.decay; + + uniforms.shadow = light.castShadow; + + if ( light.castShadow ) { + + var shadow = light.shadow; + + uniforms.shadowBias = shadow.bias; + uniforms.shadowRadius = shadow.radius; + uniforms.shadowMapSize = shadow.mapSize; + + } + + state.spotShadowMap[ spotLength ] = shadowMap; + state.spotShadowMatrix[ spotLength ] = light.shadow.matrix; + state.spot[ spotLength ] = uniforms; + + spotLength ++; + + } else if ( light.isRectAreaLight ) { + + var uniforms = cache.get( light ); + + // (a) intensity is the total visible light emitted + //uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) ); + + // (b) intensity is the brightness of the light + uniforms.color.copy( color ).multiplyScalar( intensity ); + + uniforms.position.setFromMatrixPosition( light.matrixWorld ); + uniforms.position.applyMatrix4( viewMatrix ); + + // extract local rotation of light to derive width/height half vectors + matrix42.identity(); + matrix4.copy( light.matrixWorld ); + matrix4.premultiply( viewMatrix ); + matrix42.extractRotation( matrix4 ); + + uniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 ); + uniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 ); + + uniforms.halfWidth.applyMatrix4( matrix42 ); + uniforms.halfHeight.applyMatrix4( matrix42 ); + + // TODO (abelnation): RectAreaLight distance? + // uniforms.distance = distance; + + state.rectArea[ rectAreaLength ] = uniforms; + + rectAreaLength ++; + + } else if ( light.isPointLight ) { + + var uniforms = cache.get( light ); + + uniforms.position.setFromMatrixPosition( light.matrixWorld ); + uniforms.position.applyMatrix4( viewMatrix ); + + uniforms.color.copy( light.color ).multiplyScalar( light.intensity ); + uniforms.distance = light.distance; + uniforms.decay = light.decay; + + uniforms.shadow = light.castShadow; + + if ( light.castShadow ) { + + var shadow = light.shadow; + + uniforms.shadowBias = shadow.bias; + uniforms.shadowRadius = shadow.radius; + uniforms.shadowMapSize = shadow.mapSize; + uniforms.shadowCameraNear = shadow.camera.near; + uniforms.shadowCameraFar = shadow.camera.far; + + } + + state.pointShadowMap[ pointLength ] = shadowMap; + state.pointShadowMatrix[ pointLength ] = light.shadow.matrix; + state.point[ pointLength ] = uniforms; + + pointLength ++; + + } else if ( light.isHemisphereLight ) { + + var uniforms = cache.get( light ); + + uniforms.direction.setFromMatrixPosition( light.matrixWorld ); + uniforms.direction.transformDirection( viewMatrix ); + uniforms.direction.normalize(); + + uniforms.skyColor.copy( light.color ).multiplyScalar( intensity ); + uniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity ); + + state.hemi[ hemiLength ] = uniforms; + + hemiLength ++; + + } + + } + + state.ambient[ 0 ] = r; + state.ambient[ 1 ] = g; + state.ambient[ 2 ] = b; + + state.directional.length = directionalLength; + state.spot.length = spotLength; + state.rectArea.length = rectAreaLength; + state.point.length = pointLength; + state.hemi.length = hemiLength; + + state.hash.stateID = state.id; + state.hash.directionalLength = directionalLength; + state.hash.pointLength = pointLength; + state.hash.spotLength = spotLength; + state.hash.rectAreaLength = rectAreaLength; + state.hash.hemiLength = hemiLength; + state.hash.shadowsLength = shadows.length; + + } + + return { + setup: setup, + state: state + }; + + } + + /** + * @author Mugen87 / https://github.com/Mugen87 + */ + + function WebGLRenderState() { + + var lights = new WebGLLights(); + + var lightsArray = []; + var shadowsArray = []; + + function init() { + + lightsArray.length = 0; + shadowsArray.length = 0; + + } + + function pushLight( light ) { + + lightsArray.push( light ); + + } + + function pushShadow( shadowLight ) { + + shadowsArray.push( shadowLight ); + + } + + function setupLights( camera ) { + + lights.setup( lightsArray, shadowsArray, camera ); + + } + + var state = { + lightsArray: lightsArray, + shadowsArray: shadowsArray, + + lights: lights + }; + + return { + init: init, + state: state, + setupLights: setupLights, + + pushLight: pushLight, + pushShadow: pushShadow + }; + + } + + function WebGLRenderStates() { + + var renderStates = {}; + + function onSceneDispose( event ) { + + var scene = event.target; + + scene.removeEventListener( 'dispose', onSceneDispose ); + + delete renderStates[ scene.id ]; + + } + + function get( scene, camera ) { + + var renderState; + + if ( renderStates[ scene.id ] === undefined ) { + + renderState = new WebGLRenderState(); + renderStates[ scene.id ] = {}; + renderStates[ scene.id ][ camera.id ] = renderState; + + scene.addEventListener( 'dispose', onSceneDispose ); + + } else { + + if ( renderStates[ scene.id ][ camera.id ] === undefined ) { + + renderState = new WebGLRenderState(); + renderStates[ scene.id ][ camera.id ] = renderState; + + } else { + + renderState = renderStates[ scene.id ][ camera.id ]; + + } + + } + + return renderState; + + } + + function dispose() { + + renderStates = {}; + + } + + return { + get: get, + dispose: dispose + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * @author bhouston / https://clara.io + * @author WestLangley / http://github.com/WestLangley + * + * parameters = { + * + * opacity: , + * + * map: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: , + * + * wireframe: , + * wireframeLinewidth: + * } + */ + + function MeshDepthMaterial( parameters ) { + + Material.call( this ); + + this.type = 'MeshDepthMaterial'; + + this.depthPacking = BasicDepthPacking; + + this.skinning = false; + this.morphTargets = false; + + this.map = null; + + this.alphaMap = null; + + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + + this.wireframe = false; + this.wireframeLinewidth = 1; + + this.fog = false; + this.lights = false; + + this.setValues( parameters ); + + } + + MeshDepthMaterial.prototype = Object.create( Material.prototype ); + MeshDepthMaterial.prototype.constructor = MeshDepthMaterial; + + MeshDepthMaterial.prototype.isMeshDepthMaterial = true; + + MeshDepthMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.depthPacking = source.depthPacking; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + + this.map = source.map; + + this.alphaMap = source.alphaMap; + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + + return this; + + }; + + /** + * @author WestLangley / http://github.com/WestLangley + * + * parameters = { + * + * referencePosition: , + * nearDistance: , + * farDistance: , + * + * skinning: , + * morphTargets: , + * + * map: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: + * + * } + */ + + function MeshDistanceMaterial( parameters ) { + + Material.call( this ); + + this.type = 'MeshDistanceMaterial'; + + this.referencePosition = new Vector3(); + this.nearDistance = 1; + this.farDistance = 1000; + + this.skinning = false; + this.morphTargets = false; + + this.map = null; + + this.alphaMap = null; + + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + + this.fog = false; + this.lights = false; + + this.setValues( parameters ); + + } + + MeshDistanceMaterial.prototype = Object.create( Material.prototype ); + MeshDistanceMaterial.prototype.constructor = MeshDistanceMaterial; + + MeshDistanceMaterial.prototype.isMeshDistanceMaterial = true; + + MeshDistanceMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.referencePosition.copy( source.referencePosition ); + this.nearDistance = source.nearDistance; + this.farDistance = source.farDistance; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + + this.map = source.map; + + this.alphaMap = source.alphaMap; + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + return this; + + }; + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLShadowMap( _renderer, _objects, maxTextureSize ) { + + var _frustum = new Frustum(), + _projScreenMatrix = new Matrix4(), + + _shadowMapSize = new Vector2(), + _maxShadowMapSize = new Vector2( maxTextureSize, maxTextureSize ), + + _lookTarget = new Vector3(), + _lightPositionWorld = new Vector3(), + + _MorphingFlag = 1, + _SkinningFlag = 2, + + _NumberOfMaterialVariants = ( _MorphingFlag | _SkinningFlag ) + 1, + + _depthMaterials = new Array( _NumberOfMaterialVariants ), + _distanceMaterials = new Array( _NumberOfMaterialVariants ), + + _materialCache = {}; + + var shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide }; + + var cubeDirections = [ + new Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ), + new Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 ) + ]; + + var cubeUps = [ + new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), + new Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ), new Vector3( 0, 0, - 1 ) + ]; + + var cube2DViewPorts = [ + new Vector4(), new Vector4(), new Vector4(), + new Vector4(), new Vector4(), new Vector4() + ]; + + // init + + for ( var i = 0; i !== _NumberOfMaterialVariants; ++ i ) { + + var useMorphing = ( i & _MorphingFlag ) !== 0; + var useSkinning = ( i & _SkinningFlag ) !== 0; + + var depthMaterial = new MeshDepthMaterial( { + + depthPacking: RGBADepthPacking, + + morphTargets: useMorphing, + skinning: useSkinning + + } ); + + _depthMaterials[ i ] = depthMaterial; + + // + + var distanceMaterial = new MeshDistanceMaterial( { + + morphTargets: useMorphing, + skinning: useSkinning + + } ); + + _distanceMaterials[ i ] = distanceMaterial; + + } + + // + + var scope = this; + + this.enabled = false; + + this.autoUpdate = true; + this.needsUpdate = false; + + this.type = PCFShadowMap; + + this.render = function ( lights, scene, camera ) { + + if ( scope.enabled === false ) return; + if ( scope.autoUpdate === false && scope.needsUpdate === false ) return; + + if ( lights.length === 0 ) return; + + var currentRenderTarget = _renderer.getRenderTarget(); + var activeCubeFace = _renderer.getActiveCubeFace(); + var activeMipMapLevel = _renderer.getActiveMipMapLevel(); + + var _state = _renderer.state; + + // Set GL state for depth map. + _state.setBlending( NoBlending ); + _state.buffers.color.setClear( 1, 1, 1, 1 ); + _state.buffers.depth.setTest( true ); + _state.setScissorTest( false ); + + // render depth map + + var faceCount; + + for ( var i = 0, il = lights.length; i < il; i ++ ) { + + var light = lights[ i ]; + var shadow = light.shadow; + var isPointLight = light && light.isPointLight; + + if ( shadow === undefined ) { + + console.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' ); + continue; + + } + + var shadowCamera = shadow.camera; + + _shadowMapSize.copy( shadow.mapSize ); + _shadowMapSize.min( _maxShadowMapSize ); + + if ( isPointLight ) { + + var vpWidth = _shadowMapSize.x; + var vpHeight = _shadowMapSize.y; + + // These viewports map a cube-map onto a 2D texture with the + // following orientation: + // + // xzXZ + // y Y + // + // X - Positive x direction + // x - Negative x direction + // Y - Positive y direction + // y - Negative y direction + // Z - Positive z direction + // z - Negative z direction + + // positive X + cube2DViewPorts[ 0 ].set( vpWidth * 2, vpHeight, vpWidth, vpHeight ); + // negative X + cube2DViewPorts[ 1 ].set( 0, vpHeight, vpWidth, vpHeight ); + // positive Z + cube2DViewPorts[ 2 ].set( vpWidth * 3, vpHeight, vpWidth, vpHeight ); + // negative Z + cube2DViewPorts[ 3 ].set( vpWidth, vpHeight, vpWidth, vpHeight ); + // positive Y + cube2DViewPorts[ 4 ].set( vpWidth * 3, 0, vpWidth, vpHeight ); + // negative Y + cube2DViewPorts[ 5 ].set( vpWidth, 0, vpWidth, vpHeight ); + + _shadowMapSize.x *= 4.0; + _shadowMapSize.y *= 2.0; + + } + + if ( shadow.map === null ) { + + var pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat }; + + shadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars ); + shadow.map.texture.name = light.name + ".shadowMap"; + + shadowCamera.updateProjectionMatrix(); + + } + + if ( shadow.isSpotLightShadow ) { + + shadow.update( light ); + + } + + var shadowMap = shadow.map; + var shadowMatrix = shadow.matrix; + + _lightPositionWorld.setFromMatrixPosition( light.matrixWorld ); + shadowCamera.position.copy( _lightPositionWorld ); + + if ( isPointLight ) { + + faceCount = 6; + + // for point lights we set the shadow matrix to be a translation-only matrix + // equal to inverse of the light's position + + shadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z ); + + } else { + + faceCount = 1; + + _lookTarget.setFromMatrixPosition( light.target.matrixWorld ); + shadowCamera.lookAt( _lookTarget ); + shadowCamera.updateMatrixWorld(); + + // compute shadow matrix + + shadowMatrix.set( + 0.5, 0.0, 0.0, 0.5, + 0.0, 0.5, 0.0, 0.5, + 0.0, 0.0, 0.5, 0.5, + 0.0, 0.0, 0.0, 1.0 + ); + + shadowMatrix.multiply( shadowCamera.projectionMatrix ); + shadowMatrix.multiply( shadowCamera.matrixWorldInverse ); + + } + + _renderer.setRenderTarget( shadowMap ); + _renderer.clear(); + + // render shadow map for each cube face (if omni-directional) or + // run a single pass if not + + for ( var face = 0; face < faceCount; face ++ ) { + + if ( isPointLight ) { + + _lookTarget.copy( shadowCamera.position ); + _lookTarget.add( cubeDirections[ face ] ); + shadowCamera.up.copy( cubeUps[ face ] ); + shadowCamera.lookAt( _lookTarget ); + shadowCamera.updateMatrixWorld(); + + var vpDimensions = cube2DViewPorts[ face ]; + _state.viewport( vpDimensions ); + + } + + // update camera matrices and frustum + + _projScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse ); + _frustum.setFromMatrix( _projScreenMatrix ); + + // set object matrices & frustum culling + + renderObject( scene, camera, shadowCamera, isPointLight ); + + } + + } + + scope.needsUpdate = false; + + _renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipMapLevel ); + + }; + + function getDepthMaterial( object, material, isPointLight, lightPositionWorld, shadowCameraNear, shadowCameraFar ) { + + var geometry = object.geometry; + + var result = null; + + var materialVariants = _depthMaterials; + var customMaterial = object.customDepthMaterial; + + if ( isPointLight ) { + + materialVariants = _distanceMaterials; + customMaterial = object.customDistanceMaterial; + + } + + if ( ! customMaterial ) { + + var useMorphing = false; + + if ( material.morphTargets ) { + + if ( geometry && geometry.isBufferGeometry ) { + + useMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0; + + } else if ( geometry && geometry.isGeometry ) { + + useMorphing = geometry.morphTargets && geometry.morphTargets.length > 0; + + } + + } + + if ( object.isSkinnedMesh && material.skinning === false ) { + + console.warn( 'THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:', object ); + + } + + var useSkinning = object.isSkinnedMesh && material.skinning; + + var variantIndex = 0; + + if ( useMorphing ) variantIndex |= _MorphingFlag; + if ( useSkinning ) variantIndex |= _SkinningFlag; + + result = materialVariants[ variantIndex ]; + + } else { + + result = customMaterial; + + } + + if ( _renderer.localClippingEnabled && + material.clipShadows === true && + material.clippingPlanes.length !== 0 ) { + + // in this case we need a unique material instance reflecting the + // appropriate state + + var keyA = result.uuid, keyB = material.uuid; + + var materialsForVariant = _materialCache[ keyA ]; + + if ( materialsForVariant === undefined ) { + + materialsForVariant = {}; + _materialCache[ keyA ] = materialsForVariant; + + } + + var cachedMaterial = materialsForVariant[ keyB ]; + + if ( cachedMaterial === undefined ) { + + cachedMaterial = result.clone(); + materialsForVariant[ keyB ] = cachedMaterial; + + } + + result = cachedMaterial; + + } + + result.visible = material.visible; + result.wireframe = material.wireframe; + + result.side = ( material.shadowSide != null ) ? material.shadowSide : shadowSide[ material.side ]; + + result.clipShadows = material.clipShadows; + result.clippingPlanes = material.clippingPlanes; + result.clipIntersection = material.clipIntersection; + + result.wireframeLinewidth = material.wireframeLinewidth; + result.linewidth = material.linewidth; + + if ( isPointLight && result.isMeshDistanceMaterial ) { + + result.referencePosition.copy( lightPositionWorld ); + result.nearDistance = shadowCameraNear; + result.farDistance = shadowCameraFar; + + } + + return result; + + } + + function renderObject( object, camera, shadowCamera, isPointLight ) { + + if ( object.visible === false ) return; + + var visible = object.layers.test( camera.layers ); + + if ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) { + + if ( object.castShadow && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) { + + object.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld ); + + var geometry = _objects.update( object ); + var material = object.material; + + if ( Array.isArray( material ) ) { + + var groups = geometry.groups; + + for ( var k = 0, kl = groups.length; k < kl; k ++ ) { + + var group = groups[ k ]; + var groupMaterial = material[ group.materialIndex ]; + + if ( groupMaterial && groupMaterial.visible ) { + + var depthMaterial = getDepthMaterial( object, groupMaterial, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far ); + _renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group ); + + } + + } + + } else if ( material.visible ) { + + var depthMaterial = getDepthMaterial( object, material, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far ); + _renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null ); + + } + + } + + } + + var children = object.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + renderObject( children[ i ], camera, shadowCamera, isPointLight ); + + } + + } + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLState( gl, extensions, utils, capabilities ) { + + function ColorBuffer() { + + var locked = false; + + var color = new Vector4(); + var currentColorMask = null; + var currentColorClear = new Vector4( 0, 0, 0, 0 ); + + return { + + setMask: function ( colorMask ) { + + if ( currentColorMask !== colorMask && ! locked ) { + + gl.colorMask( colorMask, colorMask, colorMask, colorMask ); + currentColorMask = colorMask; + + } + + }, + + setLocked: function ( lock ) { + + locked = lock; + + }, + + setClear: function ( r, g, b, a, premultipliedAlpha ) { + + if ( premultipliedAlpha === true ) { + + r *= a; g *= a; b *= a; + + } + + color.set( r, g, b, a ); + + if ( currentColorClear.equals( color ) === false ) { + + gl.clearColor( r, g, b, a ); + currentColorClear.copy( color ); + + } + + }, + + reset: function () { + + locked = false; + + currentColorMask = null; + currentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state + + } + + }; + + } + + function DepthBuffer() { + + var locked = false; + + var currentDepthMask = null; + var currentDepthFunc = null; + var currentDepthClear = null; + + return { + + setTest: function ( depthTest ) { + + if ( depthTest ) { + + enable( 2929 ); + + } else { + + disable( 2929 ); + + } + + }, + + setMask: function ( depthMask ) { + + if ( currentDepthMask !== depthMask && ! locked ) { + + gl.depthMask( depthMask ); + currentDepthMask = depthMask; + + } + + }, + + setFunc: function ( depthFunc ) { + + if ( currentDepthFunc !== depthFunc ) { + + if ( depthFunc ) { + + switch ( depthFunc ) { + + case NeverDepth: + + gl.depthFunc( 512 ); + break; + + case AlwaysDepth: + + gl.depthFunc( 519 ); + break; + + case LessDepth: + + gl.depthFunc( 513 ); + break; + + case LessEqualDepth: + + gl.depthFunc( 515 ); + break; + + case EqualDepth: + + gl.depthFunc( 514 ); + break; + + case GreaterEqualDepth: + + gl.depthFunc( 518 ); + break; + + case GreaterDepth: + + gl.depthFunc( 516 ); + break; + + case NotEqualDepth: + + gl.depthFunc( 517 ); + break; + + default: + + gl.depthFunc( 515 ); + + } + + } else { + + gl.depthFunc( 515 ); + + } + + currentDepthFunc = depthFunc; + + } + + }, + + setLocked: function ( lock ) { + + locked = lock; + + }, + + setClear: function ( depth ) { + + if ( currentDepthClear !== depth ) { + + gl.clearDepth( depth ); + currentDepthClear = depth; + + } + + }, + + reset: function () { + + locked = false; + + currentDepthMask = null; + currentDepthFunc = null; + currentDepthClear = null; + + } + + }; + + } + + function StencilBuffer() { + + var locked = false; + + var currentStencilMask = null; + var currentStencilFunc = null; + var currentStencilRef = null; + var currentStencilFuncMask = null; + var currentStencilFail = null; + var currentStencilZFail = null; + var currentStencilZPass = null; + var currentStencilClear = null; + + return { + + setTest: function ( stencilTest ) { + + if ( stencilTest ) { + + enable( 2960 ); + + } else { + + disable( 2960 ); + + } + + }, + + setMask: function ( stencilMask ) { + + if ( currentStencilMask !== stencilMask && ! locked ) { + + gl.stencilMask( stencilMask ); + currentStencilMask = stencilMask; + + } + + }, + + setFunc: function ( stencilFunc, stencilRef, stencilMask ) { + + if ( currentStencilFunc !== stencilFunc || + currentStencilRef !== stencilRef || + currentStencilFuncMask !== stencilMask ) { + + gl.stencilFunc( stencilFunc, stencilRef, stencilMask ); + + currentStencilFunc = stencilFunc; + currentStencilRef = stencilRef; + currentStencilFuncMask = stencilMask; + + } + + }, + + setOp: function ( stencilFail, stencilZFail, stencilZPass ) { + + if ( currentStencilFail !== stencilFail || + currentStencilZFail !== stencilZFail || + currentStencilZPass !== stencilZPass ) { + + gl.stencilOp( stencilFail, stencilZFail, stencilZPass ); + + currentStencilFail = stencilFail; + currentStencilZFail = stencilZFail; + currentStencilZPass = stencilZPass; + + } + + }, + + setLocked: function ( lock ) { + + locked = lock; + + }, + + setClear: function ( stencil ) { + + if ( currentStencilClear !== stencil ) { + + gl.clearStencil( stencil ); + currentStencilClear = stencil; + + } + + }, + + reset: function () { + + locked = false; + + currentStencilMask = null; + currentStencilFunc = null; + currentStencilRef = null; + currentStencilFuncMask = null; + currentStencilFail = null; + currentStencilZFail = null; + currentStencilZPass = null; + currentStencilClear = null; + + } + + }; + + } + + // + + var colorBuffer = new ColorBuffer(); + var depthBuffer = new DepthBuffer(); + var stencilBuffer = new StencilBuffer(); + + var maxVertexAttributes = gl.getParameter( 34921 ); + var newAttributes = new Uint8Array( maxVertexAttributes ); + var enabledAttributes = new Uint8Array( maxVertexAttributes ); + var attributeDivisors = new Uint8Array( maxVertexAttributes ); + + var enabledCapabilities = {}; + + var compressedTextureFormats = null; + + var currentProgram = null; + + var currentBlendingEnabled = null; + var currentBlending = null; + var currentBlendEquation = null; + var currentBlendSrc = null; + var currentBlendDst = null; + var currentBlendEquationAlpha = null; + var currentBlendSrcAlpha = null; + var currentBlendDstAlpha = null; + var currentPremultipledAlpha = false; + + var currentFlipSided = null; + var currentCullFace = null; + + var currentLineWidth = null; + + var currentPolygonOffsetFactor = null; + var currentPolygonOffsetUnits = null; + + var maxTextures = gl.getParameter( 35661 ); + + var lineWidthAvailable = false; + var version = 0; + var glVersion = gl.getParameter( 7938 ); + + if ( glVersion.indexOf( 'WebGL' ) !== - 1 ) { + + version = parseFloat( /^WebGL\ ([0-9])/.exec( glVersion )[ 1 ] ); + lineWidthAvailable = ( version >= 1.0 ); + + } else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) { + + version = parseFloat( /^OpenGL\ ES\ ([0-9])/.exec( glVersion )[ 1 ] ); + lineWidthAvailable = ( version >= 2.0 ); + + } + + var currentTextureSlot = null; + var currentBoundTextures = {}; + + var currentScissor = new Vector4(); + var currentViewport = new Vector4(); + + function createTexture( type, target, count ) { + + var data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4. + var texture = gl.createTexture(); + + gl.bindTexture( type, texture ); + gl.texParameteri( type, 10241, 9728 ); + gl.texParameteri( type, 10240, 9728 ); + + for ( var i = 0; i < count; i ++ ) { + + gl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data ); + + } + + return texture; + + } + + var emptyTextures = {}; + emptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 ); + emptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 ); + + // init + + colorBuffer.setClear( 0, 0, 0, 1 ); + depthBuffer.setClear( 1 ); + stencilBuffer.setClear( 0 ); + + enable( 2929 ); + depthBuffer.setFunc( LessEqualDepth ); + + setFlipSided( false ); + setCullFace( CullFaceBack ); + enable( 2884 ); + + setBlending( NoBlending ); + + // + + function initAttributes() { + + for ( var i = 0, l = newAttributes.length; i < l; i ++ ) { + + newAttributes[ i ] = 0; + + } + + } + + function enableAttribute( attribute ) { + + enableAttributeAndDivisor( attribute, 0 ); + + } + + function enableAttributeAndDivisor( attribute, meshPerAttribute ) { + + newAttributes[ attribute ] = 1; + + if ( enabledAttributes[ attribute ] === 0 ) { + + gl.enableVertexAttribArray( attribute ); + enabledAttributes[ attribute ] = 1; + + } + + if ( attributeDivisors[ attribute ] !== meshPerAttribute ) { + + var extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' ); + + extension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute ); + attributeDivisors[ attribute ] = meshPerAttribute; + + } + + } + + function disableUnusedAttributes() { + + for ( var i = 0, l = enabledAttributes.length; i !== l; ++ i ) { + + if ( enabledAttributes[ i ] !== newAttributes[ i ] ) { + + gl.disableVertexAttribArray( i ); + enabledAttributes[ i ] = 0; + + } + + } + + } + + function enable( id ) { + + if ( enabledCapabilities[ id ] !== true ) { + + gl.enable( id ); + enabledCapabilities[ id ] = true; + + } + + } + + function disable( id ) { + + if ( enabledCapabilities[ id ] !== false ) { + + gl.disable( id ); + enabledCapabilities[ id ] = false; + + } + + } + + function getCompressedTextureFormats() { + + if ( compressedTextureFormats === null ) { + + compressedTextureFormats = []; + + if ( extensions.get( 'WEBGL_compressed_texture_pvrtc' ) || + extensions.get( 'WEBGL_compressed_texture_s3tc' ) || + extensions.get( 'WEBGL_compressed_texture_etc1' ) || + extensions.get( 'WEBGL_compressed_texture_astc' ) ) { + + var formats = gl.getParameter( 34467 ); + + for ( var i = 0; i < formats.length; i ++ ) { + + compressedTextureFormats.push( formats[ i ] ); + + } + + } + + } + + return compressedTextureFormats; + + } + + function useProgram( program ) { + + if ( currentProgram !== program ) { + + gl.useProgram( program ); + + currentProgram = program; + + return true; + + } + + return false; + + } + + function setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) { + + if ( blending === NoBlending ) { + + if ( currentBlendingEnabled ) { + + disable( 3042 ); + currentBlendingEnabled = false; + + } + + return; + + } + + if ( ! currentBlendingEnabled ) { + + enable( 3042 ); + currentBlendingEnabled = true; + + } + + if ( blending !== CustomBlending ) { + + if ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) { + + if ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) { + + gl.blendEquation( 32774 ); + + currentBlendEquation = AddEquation; + currentBlendEquationAlpha = AddEquation; + + } + + if ( premultipliedAlpha ) { + + switch ( blending ) { + + case NormalBlending: + gl.blendFuncSeparate( 1, 771, 1, 771 ); + break; + + case AdditiveBlending: + gl.blendFunc( 1, 1 ); + break; + + case SubtractiveBlending: + gl.blendFuncSeparate( 0, 0, 769, 771 ); + break; + + case MultiplyBlending: + gl.blendFuncSeparate( 0, 768, 0, 770 ); + break; + + default: + console.error( 'THREE.WebGLState: Invalid blending: ', blending ); + break; + + } + + } else { + + switch ( blending ) { + + case NormalBlending: + gl.blendFuncSeparate( 770, 771, 1, 771 ); + break; + + case AdditiveBlending: + gl.blendFunc( 770, 1 ); + break; + + case SubtractiveBlending: + gl.blendFunc( 0, 769 ); + break; + + case MultiplyBlending: + gl.blendFunc( 0, 768 ); + break; + + default: + console.error( 'THREE.WebGLState: Invalid blending: ', blending ); + break; + + } + + } + + currentBlendSrc = null; + currentBlendDst = null; + currentBlendSrcAlpha = null; + currentBlendDstAlpha = null; + + currentBlending = blending; + currentPremultipledAlpha = premultipliedAlpha; + + } + + return; + + } + + // custom blending + + blendEquationAlpha = blendEquationAlpha || blendEquation; + blendSrcAlpha = blendSrcAlpha || blendSrc; + blendDstAlpha = blendDstAlpha || blendDst; + + if ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) { + + gl.blendEquationSeparate( utils.convert( blendEquation ), utils.convert( blendEquationAlpha ) ); + + currentBlendEquation = blendEquation; + currentBlendEquationAlpha = blendEquationAlpha; + + } + + if ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) { + + gl.blendFuncSeparate( utils.convert( blendSrc ), utils.convert( blendDst ), utils.convert( blendSrcAlpha ), utils.convert( blendDstAlpha ) ); + + currentBlendSrc = blendSrc; + currentBlendDst = blendDst; + currentBlendSrcAlpha = blendSrcAlpha; + currentBlendDstAlpha = blendDstAlpha; + + } + + currentBlending = blending; + currentPremultipledAlpha = null; + + } + + function setMaterial( material, frontFaceCW ) { + + material.side === DoubleSide + ? disable( 2884 ) + : enable( 2884 ); + + var flipSided = ( material.side === BackSide ); + if ( frontFaceCW ) flipSided = ! flipSided; + + setFlipSided( flipSided ); + + ( material.blending === NormalBlending && material.transparent === false ) + ? setBlending( NoBlending ) + : setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha ); + + depthBuffer.setFunc( material.depthFunc ); + depthBuffer.setTest( material.depthTest ); + depthBuffer.setMask( material.depthWrite ); + colorBuffer.setMask( material.colorWrite ); + + setPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits ); + + } + + // + + function setFlipSided( flipSided ) { + + if ( currentFlipSided !== flipSided ) { + + if ( flipSided ) { + + gl.frontFace( 2304 ); + + } else { + + gl.frontFace( 2305 ); + + } + + currentFlipSided = flipSided; + + } + + } + + function setCullFace( cullFace ) { + + if ( cullFace !== CullFaceNone ) { + + enable( 2884 ); + + if ( cullFace !== currentCullFace ) { + + if ( cullFace === CullFaceBack ) { + + gl.cullFace( 1029 ); + + } else if ( cullFace === CullFaceFront ) { + + gl.cullFace( 1028 ); + + } else { + + gl.cullFace( 1032 ); + + } + + } + + } else { + + disable( 2884 ); + + } + + currentCullFace = cullFace; + + } + + function setLineWidth( width ) { + + if ( width !== currentLineWidth ) { + + if ( lineWidthAvailable ) gl.lineWidth( width ); + + currentLineWidth = width; + + } + + } + + function setPolygonOffset( polygonOffset, factor, units ) { + + if ( polygonOffset ) { + + enable( 32823 ); + + if ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) { + + gl.polygonOffset( factor, units ); + + currentPolygonOffsetFactor = factor; + currentPolygonOffsetUnits = units; + + } + + } else { + + disable( 32823 ); + + } + + } + + function setScissorTest( scissorTest ) { + + if ( scissorTest ) { + + enable( 3089 ); + + } else { + + disable( 3089 ); + + } + + } + + // texture + + function activeTexture( webglSlot ) { + + if ( webglSlot === undefined ) webglSlot = 33984 + maxTextures - 1; + + if ( currentTextureSlot !== webglSlot ) { + + gl.activeTexture( webglSlot ); + currentTextureSlot = webglSlot; + + } + + } + + function bindTexture( webglType, webglTexture ) { + + if ( currentTextureSlot === null ) { + + activeTexture(); + + } + + var boundTexture = currentBoundTextures[ currentTextureSlot ]; + + if ( boundTexture === undefined ) { + + boundTexture = { type: undefined, texture: undefined }; + currentBoundTextures[ currentTextureSlot ] = boundTexture; + + } + + if ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) { + + gl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] ); + + boundTexture.type = webglType; + boundTexture.texture = webglTexture; + + } + + } + + function compressedTexImage2D() { + + try { + + gl.compressedTexImage2D.apply( gl, arguments ); + + } catch ( error ) { + + console.error( 'THREE.WebGLState:', error ); + + } + + } + + function texImage2D() { + + try { + + gl.texImage2D.apply( gl, arguments ); + + } catch ( error ) { + + console.error( 'THREE.WebGLState:', error ); + + } + + } + + function texImage3D() { + + try { + + gl.texImage3D.apply( gl, arguments ); + + } catch ( error ) { + + console.error( 'THREE.WebGLState:', error ); + + } + + } + + // + + function scissor( scissor ) { + + if ( currentScissor.equals( scissor ) === false ) { + + gl.scissor( scissor.x, scissor.y, scissor.z, scissor.w ); + currentScissor.copy( scissor ); + + } + + } + + function viewport( viewport ) { + + if ( currentViewport.equals( viewport ) === false ) { + + gl.viewport( viewport.x, viewport.y, viewport.z, viewport.w ); + currentViewport.copy( viewport ); + + } + + } + + // + + function reset() { + + for ( var i = 0; i < enabledAttributes.length; i ++ ) { + + if ( enabledAttributes[ i ] === 1 ) { + + gl.disableVertexAttribArray( i ); + enabledAttributes[ i ] = 0; + + } + + } + + enabledCapabilities = {}; + + compressedTextureFormats = null; + + currentTextureSlot = null; + currentBoundTextures = {}; + + currentProgram = null; + + currentBlending = null; + + currentFlipSided = null; + currentCullFace = null; + + colorBuffer.reset(); + depthBuffer.reset(); + stencilBuffer.reset(); + + } + + return { + + buffers: { + color: colorBuffer, + depth: depthBuffer, + stencil: stencilBuffer + }, + + initAttributes: initAttributes, + enableAttribute: enableAttribute, + enableAttributeAndDivisor: enableAttributeAndDivisor, + disableUnusedAttributes: disableUnusedAttributes, + enable: enable, + disable: disable, + getCompressedTextureFormats: getCompressedTextureFormats, + + useProgram: useProgram, + + setBlending: setBlending, + setMaterial: setMaterial, + + setFlipSided: setFlipSided, + setCullFace: setCullFace, + + setLineWidth: setLineWidth, + setPolygonOffset: setPolygonOffset, + + setScissorTest: setScissorTest, + + activeTexture: activeTexture, + bindTexture: bindTexture, + compressedTexImage2D: compressedTexImage2D, + texImage2D: texImage2D, + texImage3D: texImage3D, + + scissor: scissor, + viewport: viewport, + + reset: reset + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) { + + var _videoTextures = {}; + var _canvas; + + // + + var useOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'; + + function createCanvas( width, height ) { + + // Use OffscreenCanvas when available. Specially needed in web workers + + return useOffscreenCanvas ? + new OffscreenCanvas( width, height ) : + document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ); + + } + + function resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) { + + var scale = 1; + + // handle case if texture exceeds max size + + if ( image.width > maxSize || image.height > maxSize ) { + + scale = maxSize / Math.max( image.width, image.height ); + + } + + // only perform resize if necessary + + if ( scale < 1 || needsPowerOfTwo === true ) { + + // only perform resize for certain image types + + if ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) || + ( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) || + ( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) { + + var floor = needsPowerOfTwo ? _Math.floorPowerOfTwo : Math.floor; + + var width = floor( scale * image.width ); + var height = floor( scale * image.height ); + + if ( _canvas === undefined ) _canvas = createCanvas( width, height ); + + // cube textures can't reuse the same canvas + + var canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas; + + canvas.width = width; + canvas.height = height; + + var context = canvas.getContext( '2d' ); + context.drawImage( image, 0, 0, width, height ); + + console.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' ); + + return canvas; + + } else { + + if ( 'data' in image ) { + + console.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' ); + + } + + return image; + + } + + } + + return image; + + } + + function isPowerOfTwo( image ) { + + return _Math.isPowerOfTwo( image.width ) && _Math.isPowerOfTwo( image.height ); + + } + + function textureNeedsPowerOfTwo( texture ) { + + if ( capabilities.isWebGL2 ) return false; + + return ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) || + ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ); + + } + + function textureNeedsGenerateMipmaps( texture, supportsMips ) { + + return texture.generateMipmaps && supportsMips && + texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter; + + } + + function generateMipmap( target, texture, width, height ) { + + _gl.generateMipmap( target ); + + var textureProperties = properties.get( texture ); + + // Note: Math.log( x ) * Math.LOG2E used instead of Math.log2( x ) which is not supported by IE11 + textureProperties.__maxMipLevel = Math.log( Math.max( width, height ) ) * Math.LOG2E; + + } + + function getInternalFormat( glFormat, glType ) { + + if ( ! capabilities.isWebGL2 ) return glFormat; + + var internalFormat = glFormat; + + if ( glFormat === 6403 ) { + + if ( glType === 5126 ) internalFormat = 33326; + if ( glType === 5131 ) internalFormat = 33325; + if ( glType === 5121 ) internalFormat = 33321; + + } + + if ( glFormat === 6407 ) { + + if ( glType === 5126 ) internalFormat = 34837; + if ( glType === 5131 ) internalFormat = 34843; + if ( glType === 5121 ) internalFormat = 32849; + + } + + if ( glFormat === 6408 ) { + + if ( glType === 5126 ) internalFormat = 34836; + if ( glType === 5131 ) internalFormat = 34842; + if ( glType === 5121 ) internalFormat = 32856; + + } + + if ( internalFormat === 33325 || internalFormat === 33326 || + internalFormat === 34842 || internalFormat === 34836 ) { + + extensions.get( 'EXT_color_buffer_float' ); + + } else if ( internalFormat === 34843 || internalFormat === 34837 ) { + + console.warn( 'THREE.WebGLRenderer: Floating point textures with RGB format not supported. Please use RGBA instead.' ); + + } + + return internalFormat; + + } + + // Fallback filters for non-power-of-2 textures + + function filterFallback( f ) { + + if ( f === NearestFilter || f === NearestMipMapNearestFilter || f === NearestMipMapLinearFilter ) { + + return 9728; + + } + + return 9729; + + } + + // + + function onTextureDispose( event ) { + + var texture = event.target; + + texture.removeEventListener( 'dispose', onTextureDispose ); + + deallocateTexture( texture ); + + if ( texture.isVideoTexture ) { + + delete _videoTextures[ texture.id ]; + + } + + info.memory.textures --; + + } + + function onRenderTargetDispose( event ) { + + var renderTarget = event.target; + + renderTarget.removeEventListener( 'dispose', onRenderTargetDispose ); + + deallocateRenderTarget( renderTarget ); + + info.memory.textures --; + + } + + // + + function deallocateTexture( texture ) { + + var textureProperties = properties.get( texture ); + + if ( textureProperties.__webglInit === undefined ) return; + + _gl.deleteTexture( textureProperties.__webglTexture ); + + properties.remove( texture ); + + } + + function deallocateRenderTarget( renderTarget ) { + + var renderTargetProperties = properties.get( renderTarget ); + var textureProperties = properties.get( renderTarget.texture ); + + if ( ! renderTarget ) return; + + if ( textureProperties.__webglTexture !== undefined ) { + + _gl.deleteTexture( textureProperties.__webglTexture ); + + } + + if ( renderTarget.depthTexture ) { + + renderTarget.depthTexture.dispose(); + + } + + if ( renderTarget.isWebGLRenderTargetCube ) { + + for ( var i = 0; i < 6; i ++ ) { + + _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] ); + if ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] ); + + } + + } else { + + _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer ); + if ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer ); + + } + + properties.remove( renderTarget.texture ); + properties.remove( renderTarget ); + + } + + // + + var textureUnits = 0; + + function resetTextureUnits() { + + textureUnits = 0; + + } + + function allocateTextureUnit() { + + var textureUnit = textureUnits; + + if ( textureUnit >= capabilities.maxTextures ) { + + console.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures ); + + } + + textureUnits += 1; + + return textureUnit; + + } + + // + + function setTexture2D( texture, slot ) { + + var textureProperties = properties.get( texture ); + + if ( texture.isVideoTexture ) updateVideoTexture( texture ); + + if ( texture.version > 0 && textureProperties.__version !== texture.version ) { + + var image = texture.image; + + if ( image === undefined ) { + + console.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined' ); + + } else if ( image.complete === false ) { + + console.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' ); + + } else { + + uploadTexture( textureProperties, texture, slot ); + return; + + } + + } + + state.activeTexture( 33984 + slot ); + state.bindTexture( 3553, textureProperties.__webglTexture ); + + } + + function setTexture2DArray( texture, slot ) { + + var textureProperties = properties.get( texture ); + + if ( texture.version > 0 && textureProperties.__version !== texture.version ) { + + uploadTexture( textureProperties, texture, slot ); + return; + + } + + state.activeTexture( 33984 + slot ); + state.bindTexture( 35866, textureProperties.__webglTexture ); + + } + + function setTexture3D( texture, slot ) { + + var textureProperties = properties.get( texture ); + + if ( texture.version > 0 && textureProperties.__version !== texture.version ) { + + uploadTexture( textureProperties, texture, slot ); + return; + + } + + state.activeTexture( 33984 + slot ); + state.bindTexture( 32879, textureProperties.__webglTexture ); + + } + + function setTextureCube( texture, slot ) { + + var textureProperties = properties.get( texture ); + + if ( texture.image.length === 6 ) { + + if ( texture.version > 0 && textureProperties.__version !== texture.version ) { + + initTexture( textureProperties, texture ); + + state.activeTexture( 33984 + slot ); + state.bindTexture( 34067, textureProperties.__webglTexture ); + + _gl.pixelStorei( 37440, texture.flipY ); + + var isCompressed = ( texture && texture.isCompressedTexture ); + var isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture ); + + var cubeImage = []; + + for ( var i = 0; i < 6; i ++ ) { + + if ( ! isCompressed && ! isDataTexture ) { + + cubeImage[ i ] = resizeImage( texture.image[ i ], false, true, capabilities.maxCubemapSize ); + + } else { + + cubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ]; + + } + + } + + var image = cubeImage[ 0 ], + supportsMips = isPowerOfTwo( image ) || capabilities.isWebGL2, + glFormat = utils.convert( texture.format ), + glType = utils.convert( texture.type ), + glInternalFormat = getInternalFormat( glFormat, glType ); + + setTextureParameters( 34067, texture, supportsMips ); + + for ( var i = 0; i < 6; i ++ ) { + + if ( ! isCompressed ) { + + if ( isDataTexture ) { + + state.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data ); + + } else { + + state.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] ); + + } + + } else { + + var mipmap, mipmaps = cubeImage[ i ].mipmaps; + + for ( var j = 0, jl = mipmaps.length; j < jl; j ++ ) { + + mipmap = mipmaps[ j ]; + + if ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) { + + if ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) { + + state.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data ); + + } else { + + console.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' ); + + } + + } else { + + state.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); + + } + + } + + } + + } + + if ( ! isCompressed ) { + + textureProperties.__maxMipLevel = 0; + + } else { + + textureProperties.__maxMipLevel = mipmaps.length - 1; + + } + + if ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) { + + // We assume images for cube map have the same size. + generateMipmap( 34067, texture, image.width, image.height ); + + } + + textureProperties.__version = texture.version; + + if ( texture.onUpdate ) texture.onUpdate( texture ); + + } else { + + state.activeTexture( 33984 + slot ); + state.bindTexture( 34067, textureProperties.__webglTexture ); + + } + + } + + } + + function setTextureCubeDynamic( texture, slot ) { + + state.activeTexture( 33984 + slot ); + state.bindTexture( 34067, properties.get( texture ).__webglTexture ); + + } + + function setTextureParameters( textureType, texture, supportsMips ) { + + var extension; + + if ( supportsMips ) { + + _gl.texParameteri( textureType, 10242, utils.convert( texture.wrapS ) ); + _gl.texParameteri( textureType, 10243, utils.convert( texture.wrapT ) ); + + if ( textureType === 32879 || textureType === 35866 ) { + + _gl.texParameteri( textureType, 32882, utils.convert( texture.wrapR ) ); + + } + + _gl.texParameteri( textureType, 10240, utils.convert( texture.magFilter ) ); + _gl.texParameteri( textureType, 10241, utils.convert( texture.minFilter ) ); + + } else { + + _gl.texParameteri( textureType, 10242, 33071 ); + _gl.texParameteri( textureType, 10243, 33071 ); + + if ( textureType === 32879 || textureType === 35866 ) { + + _gl.texParameteri( textureType, 32882, 33071 ); + + } + + if ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) { + + console.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' ); + + } + + _gl.texParameteri( textureType, 10240, filterFallback( texture.magFilter ) ); + _gl.texParameteri( textureType, 10241, filterFallback( texture.minFilter ) ); + + if ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) { + + console.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' ); + + } + + } + + extension = extensions.get( 'EXT_texture_filter_anisotropic' ); + + if ( extension ) { + + if ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return; + if ( texture.type === HalfFloatType && ( capabilities.isWebGL2 || extensions.get( 'OES_texture_half_float_linear' ) ) === null ) return; + + if ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) { + + _gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) ); + properties.get( texture ).__currentAnisotropy = texture.anisotropy; + + } + + } + + } + + function initTexture( textureProperties, texture ) { + + if ( textureProperties.__webglInit === undefined ) { + + textureProperties.__webglInit = true; + + texture.addEventListener( 'dispose', onTextureDispose ); + + textureProperties.__webglTexture = _gl.createTexture(); + + info.memory.textures ++; + + } + + } + + function uploadTexture( textureProperties, texture, slot ) { + + var textureType = 3553; + + if ( texture.isDataTexture2DArray ) textureType = 35866; + if ( texture.isDataTexture3D ) textureType = 32879; + + initTexture( textureProperties, texture ); + + state.activeTexture( 33984 + slot ); + state.bindTexture( textureType, textureProperties.__webglTexture ); + + _gl.pixelStorei( 37440, texture.flipY ); + _gl.pixelStorei( 37441, texture.premultiplyAlpha ); + _gl.pixelStorei( 3317, texture.unpackAlignment ); + + var needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( texture.image ) === false; + var image = resizeImage( texture.image, needsPowerOfTwo, false, capabilities.maxTextureSize ); + + var supportsMips = isPowerOfTwo( image ) || capabilities.isWebGL2, + glFormat = utils.convert( texture.format ), + glType = utils.convert( texture.type ), + glInternalFormat = getInternalFormat( glFormat, glType ); + + setTextureParameters( textureType, texture, supportsMips ); + + var mipmap, mipmaps = texture.mipmaps; + + if ( texture.isDepthTexture ) { + + // populate depth texture with dummy data + + glInternalFormat = 6402; + + if ( texture.type === FloatType ) { + + if ( ! capabilities.isWebGL2 ) throw new Error( 'Float Depth Texture only supported in WebGL2.0' ); + glInternalFormat = 36012; + + } else if ( capabilities.isWebGL2 ) { + + // WebGL 2.0 requires signed internalformat for glTexImage2D + glInternalFormat = 33189; + + } + + if ( texture.format === DepthFormat && glInternalFormat === 6402 ) { + + // The error INVALID_OPERATION is generated by texImage2D if format and internalformat are + // DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT + // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/) + if ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) { + + console.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' ); + + texture.type = UnsignedShortType; + glType = utils.convert( texture.type ); + + } + + } + + // Depth stencil textures need the DEPTH_STENCIL internal format + // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/) + if ( texture.format === DepthStencilFormat ) { + + glInternalFormat = 34041; + + // The error INVALID_OPERATION is generated by texImage2D if format and internalformat are + // DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL. + // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/) + if ( texture.type !== UnsignedInt248Type ) { + + console.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' ); + + texture.type = UnsignedInt248Type; + glType = utils.convert( texture.type ); + + } + + } + + state.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null ); + + } else if ( texture.isDataTexture ) { + + // use manually created mipmaps if available + // if there are no manual mipmaps + // set 0 level mipmap and then use GL to generate other mipmap levels + + if ( mipmaps.length > 0 && supportsMips ) { + + for ( var i = 0, il = mipmaps.length; i < il; i ++ ) { + + mipmap = mipmaps[ i ]; + state.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); + + } + + texture.generateMipmaps = false; + textureProperties.__maxMipLevel = mipmaps.length - 1; + + } else { + + state.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data ); + textureProperties.__maxMipLevel = 0; + + } + + } else if ( texture.isCompressedTexture ) { + + for ( var i = 0, il = mipmaps.length; i < il; i ++ ) { + + mipmap = mipmaps[ i ]; + + if ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) { + + if ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) { + + state.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data ); + + } else { + + console.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' ); + + } + + } else { + + state.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); + + } + + } + + textureProperties.__maxMipLevel = mipmaps.length - 1; + + } else if ( texture.isDataTexture2DArray ) { + + state.texImage3D( 35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data ); + textureProperties.__maxMipLevel = 0; + + } else if ( texture.isDataTexture3D ) { + + state.texImage3D( 32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data ); + textureProperties.__maxMipLevel = 0; + + } else { + + // regular Texture (image, video, canvas) + + // use manually created mipmaps if available + // if there are no manual mipmaps + // set 0 level mipmap and then use GL to generate other mipmap levels + + if ( mipmaps.length > 0 && supportsMips ) { + + for ( var i = 0, il = mipmaps.length; i < il; i ++ ) { + + mipmap = mipmaps[ i ]; + state.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap ); + + } + + texture.generateMipmaps = false; + textureProperties.__maxMipLevel = mipmaps.length - 1; + + } else { + + state.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image ); + textureProperties.__maxMipLevel = 0; + + } + + } + + if ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) { + + generateMipmap( 3553, texture, image.width, image.height ); + + } + + textureProperties.__version = texture.version; + + if ( texture.onUpdate ) texture.onUpdate( texture ); + + } + + // Render targets + + // Setup storage for target texture and bind it to correct framebuffer + function setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) { + + var glFormat = utils.convert( renderTarget.texture.format ); + var glType = utils.convert( renderTarget.texture.type ); + var glInternalFormat = getInternalFormat( glFormat, glType ); + state.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null ); + _gl.bindFramebuffer( 36160, framebuffer ); + _gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 ); + _gl.bindFramebuffer( 36160, null ); + + } + + // Setup storage for internal depth/stencil buffers and bind to correct framebuffer + function setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) { + + _gl.bindRenderbuffer( 36161, renderbuffer ); + + if ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) { + + if ( isMultisample ) { + + var samples = getRenderTargetSamples( renderTarget ); + + _gl.renderbufferStorageMultisample( 36161, samples, 33189, renderTarget.width, renderTarget.height ); + + } else { + + _gl.renderbufferStorage( 36161, 33189, renderTarget.width, renderTarget.height ); + + } + + _gl.framebufferRenderbuffer( 36160, 36096, 36161, renderbuffer ); + + } else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) { + + if ( isMultisample ) { + + var samples = getRenderTargetSamples( renderTarget ); + + _gl.renderbufferStorageMultisample( 36161, samples, 34041, renderTarget.width, renderTarget.height ); + + } else { + + _gl.renderbufferStorage( 36161, 34041, renderTarget.width, renderTarget.height ); + + } + + + _gl.framebufferRenderbuffer( 36160, 33306, 36161, renderbuffer ); + + } else { + + var glFormat = utils.convert( renderTarget.texture.format ); + var glType = utils.convert( renderTarget.texture.type ); + var glInternalFormat = getInternalFormat( glFormat, glType ); + + if ( isMultisample ) { + + var samples = getRenderTargetSamples( renderTarget ); + + _gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height ); + + } else { + + _gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height ); + + } + + } + + _gl.bindRenderbuffer( 36161, null ); + + } + + // Setup resources for a Depth Texture for a FBO (needs an extension) + function setupDepthTexture( framebuffer, renderTarget ) { + + var isCube = ( renderTarget && renderTarget.isWebGLRenderTargetCube ); + if ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' ); + + _gl.bindFramebuffer( 36160, framebuffer ); + + if ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) { + + throw new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' ); + + } + + // upload an empty depth texture with framebuffer size + if ( ! properties.get( renderTarget.depthTexture ).__webglTexture || + renderTarget.depthTexture.image.width !== renderTarget.width || + renderTarget.depthTexture.image.height !== renderTarget.height ) { + + renderTarget.depthTexture.image.width = renderTarget.width; + renderTarget.depthTexture.image.height = renderTarget.height; + renderTarget.depthTexture.needsUpdate = true; + + } + + setTexture2D( renderTarget.depthTexture, 0 ); + + var webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture; + + if ( renderTarget.depthTexture.format === DepthFormat ) { + + _gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 ); + + } else if ( renderTarget.depthTexture.format === DepthStencilFormat ) { + + _gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 ); + + } else { + + throw new Error( 'Unknown depthTexture format' ); + + } + + } + + // Setup GL resources for a non-texture depth buffer + function setupDepthRenderbuffer( renderTarget ) { + + var renderTargetProperties = properties.get( renderTarget ); + + var isCube = ( renderTarget.isWebGLRenderTargetCube === true ); + + if ( renderTarget.depthTexture ) { + + if ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' ); + + setupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget ); + + } else { + + if ( isCube ) { + + renderTargetProperties.__webglDepthbuffer = []; + + for ( var i = 0; i < 6; i ++ ) { + + _gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer[ i ] ); + renderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer(); + setupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget ); + + } + + } else { + + _gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer ); + renderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer(); + setupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget ); + + } + + } + + _gl.bindFramebuffer( 36160, null ); + + } + + // Set up GL resources for the render target + function setupRenderTarget( renderTarget ) { + + var renderTargetProperties = properties.get( renderTarget ); + var textureProperties = properties.get( renderTarget.texture ); + + renderTarget.addEventListener( 'dispose', onRenderTargetDispose ); + + textureProperties.__webglTexture = _gl.createTexture(); + + info.memory.textures ++; + + var isCube = ( renderTarget.isWebGLRenderTargetCube === true ); + var isMultisample = ( renderTarget.isWebGLMultisampleRenderTarget === true ); + var supportsMips = isPowerOfTwo( renderTarget ) || capabilities.isWebGL2; + + // Setup framebuffer + + if ( isCube ) { + + renderTargetProperties.__webglFramebuffer = []; + + for ( var i = 0; i < 6; i ++ ) { + + renderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer(); + + } + + } else { + + renderTargetProperties.__webglFramebuffer = _gl.createFramebuffer(); + + if ( isMultisample ) { + + if ( capabilities.isWebGL2 ) { + + renderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer(); + renderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer(); + + _gl.bindRenderbuffer( 36161, renderTargetProperties.__webglColorRenderbuffer ); + var glFormat = utils.convert( renderTarget.texture.format ); + var glType = utils.convert( renderTarget.texture.type ); + var glInternalFormat = getInternalFormat( glFormat, glType ); + var samples = getRenderTargetSamples( renderTarget ); + _gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height ); + + _gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer ); + _gl.framebufferRenderbuffer( 36160, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer ); + _gl.bindRenderbuffer( 36161, null ); + + if ( renderTarget.depthBuffer ) { + + renderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer(); + setupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true ); + + } + + _gl.bindFramebuffer( 36160, null ); + + + } else { + + console.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' ); + + } + + } + + } + + // Setup color buffer + + if ( isCube ) { + + state.bindTexture( 34067, textureProperties.__webglTexture ); + setTextureParameters( 34067, renderTarget.texture, supportsMips ); + + for ( var i = 0; i < 6; i ++ ) { + + setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, 36064, 34069 + i ); + + } + + if ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) { + + generateMipmap( 34067, renderTarget.texture, renderTarget.width, renderTarget.height ); + + } + + state.bindTexture( 34067, null ); + + } else { + + state.bindTexture( 3553, textureProperties.__webglTexture ); + setTextureParameters( 3553, renderTarget.texture, supportsMips ); + setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, 36064, 3553 ); + + if ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) { + + generateMipmap( 3553, renderTarget.texture, renderTarget.width, renderTarget.height ); + + } + + state.bindTexture( 3553, null ); + + } + + // Setup depth and stencil buffers + + if ( renderTarget.depthBuffer ) { + + setupDepthRenderbuffer( renderTarget ); + + } + + } + + function updateRenderTargetMipmap( renderTarget ) { + + var texture = renderTarget.texture; + var supportsMips = isPowerOfTwo( renderTarget ) || capabilities.isWebGL2; + + if ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) { + + var target = renderTarget.isWebGLRenderTargetCube ? 34067 : 3553; + var webglTexture = properties.get( texture ).__webglTexture; + + state.bindTexture( target, webglTexture ); + generateMipmap( target, texture, renderTarget.width, renderTarget.height ); + state.bindTexture( target, null ); + + } + + } + + function updateMultisampleRenderTarget( renderTarget ) { + + if ( renderTarget.isWebGLMultisampleRenderTarget ) { + + if ( capabilities.isWebGL2 ) { + + var renderTargetProperties = properties.get( renderTarget ); + + _gl.bindFramebuffer( 36008, renderTargetProperties.__webglMultisampledFramebuffer ); + _gl.bindFramebuffer( 36009, renderTargetProperties.__webglFramebuffer ); + + var width = renderTarget.width; + var height = renderTarget.height; + var mask = 16384; + + if ( renderTarget.depthBuffer ) mask |= 256; + if ( renderTarget.stencilBuffer ) mask |= 1024; + + _gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, 9728 ); + + } else { + + console.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' ); + + } + + } + + } + + function getRenderTargetSamples( renderTarget ) { + + return ( capabilities.isWebGL2 && renderTarget.isWebGLMultisampleRenderTarget ) ? + Math.min( capabilities.maxSamples, renderTarget.samples ) : 0; + + } + + function updateVideoTexture( texture ) { + + var id = texture.id; + var frame = info.render.frame; + + // Check the last frame we updated the VideoTexture + + if ( _videoTextures[ id ] !== frame ) { + + _videoTextures[ id ] = frame; + texture.update(); + + } + + } + + // backwards compatibility + + var warnedTexture2D = false; + var warnedTextureCube = false; + + function safeSetTexture2D( texture, slot ) { + + if ( texture && texture.isWebGLRenderTarget ) { + + if ( warnedTexture2D === false ) { + + console.warn( "THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead." ); + warnedTexture2D = true; + + } + + texture = texture.texture; + + } + + setTexture2D( texture, slot ); + + } + + function safeSetTextureCube( texture, slot ) { + + if ( texture && texture.isWebGLRenderTargetCube ) { + + if ( warnedTextureCube === false ) { + + console.warn( "THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead." ); + warnedTextureCube = true; + + } + + texture = texture.texture; + + } + + // currently relying on the fact that WebGLRenderTargetCube.texture is a Texture and NOT a CubeTexture + // TODO: unify these code paths + if ( ( texture && texture.isCubeTexture ) || + ( Array.isArray( texture.image ) && texture.image.length === 6 ) ) { + + // CompressedTexture can have Array in image :/ + + // this function alone should take care of cube textures + setTextureCube( texture, slot ); + + } else { + + // assumed: texture property of THREE.WebGLRenderTargetCube + setTextureCubeDynamic( texture, slot ); + + } + + } + + // + + this.allocateTextureUnit = allocateTextureUnit; + this.resetTextureUnits = resetTextureUnits; + + this.setTexture2D = setTexture2D; + this.setTexture2DArray = setTexture2DArray; + this.setTexture3D = setTexture3D; + this.setTextureCube = setTextureCube; + this.setTextureCubeDynamic = setTextureCubeDynamic; + this.setupRenderTarget = setupRenderTarget; + this.updateRenderTargetMipmap = updateRenderTargetMipmap; + this.updateMultisampleRenderTarget = updateMultisampleRenderTarget; + + this.safeSetTexture2D = safeSetTexture2D; + this.safeSetTextureCube = safeSetTextureCube; + + } + + /** + * @author thespite / http://www.twitter.com/thespite + */ + + function WebGLUtils( gl, extensions, capabilities ) { + + function convert( p ) { + + var extension; + + if ( p === RepeatWrapping ) return 10497; + if ( p === ClampToEdgeWrapping ) return 33071; + if ( p === MirroredRepeatWrapping ) return 33648; + + if ( p === NearestFilter ) return 9728; + if ( p === NearestMipMapNearestFilter ) return 9984; + if ( p === NearestMipMapLinearFilter ) return 9986; + + if ( p === LinearFilter ) return 9729; + if ( p === LinearMipMapNearestFilter ) return 9985; + if ( p === LinearMipMapLinearFilter ) return 9987; + + if ( p === UnsignedByteType ) return 5121; + if ( p === UnsignedShort4444Type ) return 32819; + if ( p === UnsignedShort5551Type ) return 32820; + if ( p === UnsignedShort565Type ) return 33635; + + if ( p === ByteType ) return 5120; + if ( p === ShortType ) return 5122; + if ( p === UnsignedShortType ) return 5123; + if ( p === IntType ) return 5124; + if ( p === UnsignedIntType ) return 5125; + if ( p === FloatType ) return 5126; + + if ( p === HalfFloatType ) { + + if ( capabilities.isWebGL2 ) return 5131; + + extension = extensions.get( 'OES_texture_half_float' ); + + if ( extension !== null ) return extension.HALF_FLOAT_OES; + + } + + if ( p === AlphaFormat ) return 6406; + if ( p === RGBFormat ) return 6407; + if ( p === RGBAFormat ) return 6408; + if ( p === LuminanceFormat ) return 6409; + if ( p === LuminanceAlphaFormat ) return 6410; + if ( p === DepthFormat ) return 6402; + if ( p === DepthStencilFormat ) return 34041; + if ( p === RedFormat ) return 6403; + + if ( p === AddEquation ) return 32774; + if ( p === SubtractEquation ) return 32778; + if ( p === ReverseSubtractEquation ) return 32779; + + if ( p === ZeroFactor ) return 0; + if ( p === OneFactor ) return 1; + if ( p === SrcColorFactor ) return 768; + if ( p === OneMinusSrcColorFactor ) return 769; + if ( p === SrcAlphaFactor ) return 770; + if ( p === OneMinusSrcAlphaFactor ) return 771; + if ( p === DstAlphaFactor ) return 772; + if ( p === OneMinusDstAlphaFactor ) return 773; + + if ( p === DstColorFactor ) return 774; + if ( p === OneMinusDstColorFactor ) return 775; + if ( p === SrcAlphaSaturateFactor ) return 776; + + if ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || + p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) { + + extension = extensions.get( 'WEBGL_compressed_texture_s3tc' ); + + if ( extension !== null ) { + + if ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT; + if ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT; + if ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT; + if ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT; + + } + + } + + if ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || + p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) { + + extension = extensions.get( 'WEBGL_compressed_texture_pvrtc' ); + + if ( extension !== null ) { + + if ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG; + if ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG; + if ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; + if ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG; + + } + + } + + if ( p === RGB_ETC1_Format ) { + + extension = extensions.get( 'WEBGL_compressed_texture_etc1' ); + + if ( extension !== null ) return extension.COMPRESSED_RGB_ETC1_WEBGL; + + } + + if ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format || + p === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format || + p === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format || + p === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format || + p === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ) { + + extension = extensions.get( 'WEBGL_compressed_texture_astc' ); + + if ( extension !== null ) { + + return p; + + } + + } + + if ( p === MinEquation || p === MaxEquation ) { + + if ( capabilities.isWebGL2 ) { + + if ( p === MinEquation ) return 32775; + if ( p === MaxEquation ) return 32776; + + } + + extension = extensions.get( 'EXT_blend_minmax' ); + + if ( extension !== null ) { + + if ( p === MinEquation ) return extension.MIN_EXT; + if ( p === MaxEquation ) return extension.MAX_EXT; + + } + + } + + if ( p === UnsignedInt248Type ) { + + if ( capabilities.isWebGL2 ) return 34042; + + extension = extensions.get( 'WEBGL_depth_texture' ); + + if ( extension !== null ) return extension.UNSIGNED_INT_24_8_WEBGL; + + } + + return 0; + + } + + return { convert: convert }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function Group() { + + Object3D.call( this ); + + this.type = 'Group'; + + } + + Group.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Group, + + isGroup: true + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author mikael emtinger / http://gomo.se/ + * @author WestLangley / http://github.com/WestLangley + */ + + function Camera() { + + Object3D.call( this ); + + this.type = 'Camera'; + + this.matrixWorldInverse = new Matrix4(); + + this.projectionMatrix = new Matrix4(); + this.projectionMatrixInverse = new Matrix4(); + + } + + Camera.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Camera, + + isCamera: true, + + copy: function ( source, recursive ) { + + Object3D.prototype.copy.call( this, source, recursive ); + + this.matrixWorldInverse.copy( source.matrixWorldInverse ); + + this.projectionMatrix.copy( source.projectionMatrix ); + this.projectionMatrixInverse.copy( source.projectionMatrixInverse ); + + return this; + + }, + + getWorldDirection: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Camera: .getWorldDirection() target is now required' ); + target = new Vector3(); + + } + + this.updateMatrixWorld( true ); + + var e = this.matrixWorld.elements; + + return target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize(); + + }, + + updateMatrixWorld: function ( force ) { + + Object3D.prototype.updateMatrixWorld.call( this, force ); + + this.matrixWorldInverse.getInverse( this.matrixWorld ); + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author greggman / http://games.greggman.com/ + * @author zz85 / http://www.lab4games.net/zz85/blog + * @author tschw + */ + + function PerspectiveCamera( fov, aspect, near, far ) { + + Camera.call( this ); + + this.type = 'PerspectiveCamera'; + + this.fov = fov !== undefined ? fov : 50; + this.zoom = 1; + + this.near = near !== undefined ? near : 0.1; + this.far = far !== undefined ? far : 2000; + this.focus = 10; + + this.aspect = aspect !== undefined ? aspect : 1; + this.view = null; + + this.filmGauge = 35; // width of the film (default in millimeters) + this.filmOffset = 0; // horizontal film offset (same unit as gauge) + + this.updateProjectionMatrix(); + + } + + PerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), { + + constructor: PerspectiveCamera, + + isPerspectiveCamera: true, + + copy: function ( source, recursive ) { + + Camera.prototype.copy.call( this, source, recursive ); + + this.fov = source.fov; + this.zoom = source.zoom; + + this.near = source.near; + this.far = source.far; + this.focus = source.focus; + + this.aspect = source.aspect; + this.view = source.view === null ? null : Object.assign( {}, source.view ); + + this.filmGauge = source.filmGauge; + this.filmOffset = source.filmOffset; + + return this; + + }, + + /** + * Sets the FOV by focal length in respect to the current .filmGauge. + * + * The default film gauge is 35, so that the focal length can be specified for + * a 35mm (full frame) camera. + * + * Values for focal length and film gauge must have the same unit. + */ + setFocalLength: function ( focalLength ) { + + // see http://www.bobatkins.com/photography/technical/field_of_view.html + var vExtentSlope = 0.5 * this.getFilmHeight() / focalLength; + + this.fov = _Math.RAD2DEG * 2 * Math.atan( vExtentSlope ); + this.updateProjectionMatrix(); + + }, + + /** + * Calculates the focal length from the current .fov and .filmGauge. + */ + getFocalLength: function () { + + var vExtentSlope = Math.tan( _Math.DEG2RAD * 0.5 * this.fov ); + + return 0.5 * this.getFilmHeight() / vExtentSlope; + + }, + + getEffectiveFOV: function () { + + return _Math.RAD2DEG * 2 * Math.atan( + Math.tan( _Math.DEG2RAD * 0.5 * this.fov ) / this.zoom ); + + }, + + getFilmWidth: function () { + + // film not completely covered in portrait format (aspect < 1) + return this.filmGauge * Math.min( this.aspect, 1 ); + + }, + + getFilmHeight: function () { + + // film not completely covered in landscape format (aspect > 1) + return this.filmGauge / Math.max( this.aspect, 1 ); + + }, + + /** + * Sets an offset in a larger frustum. This is useful for multi-window or + * multi-monitor/multi-machine setups. + * + * For example, if you have 3x2 monitors and each monitor is 1920x1080 and + * the monitors are in grid like this + * + * +---+---+---+ + * | A | B | C | + * +---+---+---+ + * | D | E | F | + * +---+---+---+ + * + * then for each monitor you would call it like this + * + * var w = 1920; + * var h = 1080; + * var fullWidth = w * 3; + * var fullHeight = h * 2; + * + * --A-- + * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h ); + * --B-- + * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h ); + * --C-- + * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h ); + * --D-- + * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h ); + * --E-- + * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h ); + * --F-- + * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h ); + * + * Note there is no reason monitors have to be the same size or in a grid. + */ + setViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) { + + this.aspect = fullWidth / fullHeight; + + if ( this.view === null ) { + + this.view = { + enabled: true, + fullWidth: 1, + fullHeight: 1, + offsetX: 0, + offsetY: 0, + width: 1, + height: 1 + }; + + } + + this.view.enabled = true; + this.view.fullWidth = fullWidth; + this.view.fullHeight = fullHeight; + this.view.offsetX = x; + this.view.offsetY = y; + this.view.width = width; + this.view.height = height; + + this.updateProjectionMatrix(); + + }, + + clearViewOffset: function () { + + if ( this.view !== null ) { + + this.view.enabled = false; + + } + + this.updateProjectionMatrix(); + + }, + + updateProjectionMatrix: function () { + + var near = this.near, + top = near * Math.tan( _Math.DEG2RAD * 0.5 * this.fov ) / this.zoom, + height = 2 * top, + width = this.aspect * height, + left = - 0.5 * width, + view = this.view; + + if ( this.view !== null && this.view.enabled ) { + + var fullWidth = view.fullWidth, + fullHeight = view.fullHeight; + + left += view.offsetX * width / fullWidth; + top -= view.offsetY * height / fullHeight; + width *= view.width / fullWidth; + height *= view.height / fullHeight; + + } + + var skew = this.filmOffset; + if ( skew !== 0 ) left += near * skew / this.getFilmWidth(); + + this.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far ); + + this.projectionMatrixInverse.getInverse( this.projectionMatrix ); + + }, + + toJSON: function ( meta ) { + + var data = Object3D.prototype.toJSON.call( this, meta ); + + data.object.fov = this.fov; + data.object.zoom = this.zoom; + + data.object.near = this.near; + data.object.far = this.far; + data.object.focus = this.focus; + + data.object.aspect = this.aspect; + + if ( this.view !== null ) data.object.view = Object.assign( {}, this.view ); + + data.object.filmGauge = this.filmGauge; + data.object.filmOffset = this.filmOffset; + + return data; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function ArrayCamera( array ) { + + PerspectiveCamera.call( this ); + + this.cameras = array || []; + + } + + ArrayCamera.prototype = Object.assign( Object.create( PerspectiveCamera.prototype ), { + + constructor: ArrayCamera, + + isArrayCamera: true + + } ); + + /** + * @author jsantell / https://www.jsantell.com/ + * @author mrdoob / http://mrdoob.com/ + */ + + var cameraLPos = new Vector3(); + var cameraRPos = new Vector3(); + + /** + * Assumes 2 cameras that are parallel and share an X-axis, and that + * the cameras' projection and world matrices have already been set. + * And that near and far planes are identical for both cameras. + * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765 + */ + function setProjectionFromUnion( camera, cameraL, cameraR ) { + + cameraLPos.setFromMatrixPosition( cameraL.matrixWorld ); + cameraRPos.setFromMatrixPosition( cameraR.matrixWorld ); + + var ipd = cameraLPos.distanceTo( cameraRPos ); + + var projL = cameraL.projectionMatrix.elements; + var projR = cameraR.projectionMatrix.elements; + + // VR systems will have identical far and near planes, and + // most likely identical top and bottom frustum extents. + // Use the left camera for these values. + var near = projL[ 14 ] / ( projL[ 10 ] - 1 ); + var far = projL[ 14 ] / ( projL[ 10 ] + 1 ); + var topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ]; + var bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ]; + + var leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ]; + var rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ]; + var left = near * leftFov; + var right = near * rightFov; + + // Calculate the new camera's position offset from the + // left camera. xOffset should be roughly half `ipd`. + var zOffset = ipd / ( - leftFov + rightFov ); + var xOffset = zOffset * - leftFov; + + // TODO: Better way to apply this offset? + cameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale ); + camera.translateX( xOffset ); + camera.translateZ( zOffset ); + camera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale ); + camera.matrixWorldInverse.getInverse( camera.matrixWorld ); + + // Find the union of the frustum values of the cameras and scale + // the values so that the near plane's position does not change in world space, + // although must now be relative to the new union camera. + var near2 = near + zOffset; + var far2 = far + zOffset; + var left2 = left - xOffset; + var right2 = right + ( ipd - xOffset ); + var top2 = topFov * far / far2 * near2; + var bottom2 = bottomFov * far / far2 * near2; + + camera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 ); + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebVRManager( renderer ) { + + var renderWidth, renderHeight; + var scope = this; + + var device = null; + var frameData = null; + + var poseTarget = null; + + var controllers = []; + var standingMatrix = new Matrix4(); + var standingMatrixInverse = new Matrix4(); + + var framebufferScaleFactor = 1.0; + + var referenceSpaceType = 'local-floor'; + + if ( typeof window !== 'undefined' && 'VRFrameData' in window ) { + + frameData = new window.VRFrameData(); + window.addEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange, false ); + + } + + var matrixWorldInverse = new Matrix4(); + var tempQuaternion = new Quaternion(); + var tempPosition = new Vector3(); + + var cameraL = new PerspectiveCamera(); + cameraL.viewport = new Vector4(); + cameraL.layers.enable( 1 ); + + var cameraR = new PerspectiveCamera(); + cameraR.viewport = new Vector4(); + cameraR.layers.enable( 2 ); + + var cameraVR = new ArrayCamera( [ cameraL, cameraR ] ); + cameraVR.layers.enable( 1 ); + cameraVR.layers.enable( 2 ); + + // + + function isPresenting() { + + return device !== null && device.isPresenting === true; + + } + + var currentSize = new Vector2(), currentPixelRatio; + + function onVRDisplayPresentChange() { + + if ( isPresenting() ) { + + var eyeParameters = device.getEyeParameters( 'left' ); + renderWidth = 2 * eyeParameters.renderWidth * framebufferScaleFactor; + renderHeight = eyeParameters.renderHeight * framebufferScaleFactor; + + currentPixelRatio = renderer.getPixelRatio(); + renderer.getSize( currentSize ); + + renderer.setDrawingBufferSize( renderWidth, renderHeight, 1 ); + + cameraL.viewport.set( 0, 0, renderWidth / 2, renderHeight ); + cameraR.viewport.set( renderWidth / 2, 0, renderWidth / 2, renderHeight ); + + animation.start(); + + } else { + + if ( scope.enabled ) { + + renderer.setDrawingBufferSize( currentSize.width, currentSize.height, currentPixelRatio ); + + } + + animation.stop(); + + } + + } + + // + + var triggers = []; + + function findGamepad( id ) { + + var gamepads = navigator.getGamepads && navigator.getGamepads(); + + for ( var i = 0, j = 0, l = gamepads.length; i < l; i ++ ) { + + var gamepad = gamepads[ i ]; + + if ( gamepad && ( gamepad.id === 'Daydream Controller' || + gamepad.id === 'Gear VR Controller' || gamepad.id === 'Oculus Go Controller' || + gamepad.id === 'OpenVR Gamepad' || gamepad.id.startsWith( 'Oculus Touch' ) || + gamepad.id.startsWith( 'Spatial Controller' ) ) ) { + + if ( j === id ) return gamepad; + + j ++; + + } + + } + + } + + function updateControllers() { + + for ( var i = 0; i < controllers.length; i ++ ) { + + var controller = controllers[ i ]; + + var gamepad = findGamepad( i ); + + if ( gamepad !== undefined && gamepad.pose !== undefined ) { + + if ( gamepad.pose === null ) return; + + // Pose + + var pose = gamepad.pose; + + if ( pose.hasPosition === false ) controller.position.set( 0.2, - 0.6, - 0.05 ); + + if ( pose.position !== null ) controller.position.fromArray( pose.position ); + if ( pose.orientation !== null ) controller.quaternion.fromArray( pose.orientation ); + controller.matrix.compose( controller.position, controller.quaternion, controller.scale ); + controller.matrix.premultiply( standingMatrix ); + controller.matrix.decompose( controller.position, controller.quaternion, controller.scale ); + controller.matrixWorldNeedsUpdate = true; + controller.visible = true; + + // Trigger + + var buttonId = gamepad.id === 'Daydream Controller' ? 0 : 1; + + if ( triggers[ i ] === undefined ) triggers[ i ] = false; + + if ( triggers[ i ] !== gamepad.buttons[ buttonId ].pressed ) { + + triggers[ i ] = gamepad.buttons[ buttonId ].pressed; + + if ( triggers[ i ] === true ) { + + controller.dispatchEvent( { type: 'selectstart' } ); + + } else { + + controller.dispatchEvent( { type: 'selectend' } ); + controller.dispatchEvent( { type: 'select' } ); + + } + + } + + } else { + + controller.visible = false; + + } + + } + + } + + function updateViewportFromBounds( viewport, bounds ) { + + if ( bounds !== null && bounds.length === 4 ) { + + viewport.set( bounds[ 0 ] * renderWidth, bounds[ 1 ] * renderHeight, bounds[ 2 ] * renderWidth, bounds[ 3 ] * renderHeight ); + + } + + } + + // + + this.enabled = false; + + this.getController = function ( id ) { + + var controller = controllers[ id ]; + + if ( controller === undefined ) { + + controller = new Group(); + controller.matrixAutoUpdate = false; + controller.visible = false; + + controllers[ id ] = controller; + + } + + return controller; + + }; + + this.getDevice = function () { + + return device; + + }; + + this.setDevice = function ( value ) { + + if ( value !== undefined ) device = value; + + animation.setContext( value ); + + }; + + this.setFramebufferScaleFactor = function ( value ) { + + framebufferScaleFactor = value; + + }; + + this.setReferenceSpaceType = function ( value ) { + + referenceSpaceType = value; + + }; + + this.setPoseTarget = function ( object ) { + + if ( object !== undefined ) poseTarget = object; + + }; + + this.getCamera = function ( camera ) { + + var userHeight = referenceSpaceType === 'local-floor' ? 1.6 : 0; + + if ( isPresenting() === false ) { + + camera.position.set( 0, userHeight, 0 ); + camera.rotation.set( 0, 0, 0 ); + + return camera; + + } + + device.depthNear = camera.near; + device.depthFar = camera.far; + + device.getFrameData( frameData ); + + // + + if ( referenceSpaceType === 'local-floor' ) { + + var stageParameters = device.stageParameters; + + if ( stageParameters ) { + + standingMatrix.fromArray( stageParameters.sittingToStandingTransform ); + + } else { + + standingMatrix.makeTranslation( 0, userHeight, 0 ); + + } + + } + + + var pose = frameData.pose; + var poseObject = poseTarget !== null ? poseTarget : camera; + + // We want to manipulate poseObject by its position and quaternion components since users may rely on them. + poseObject.matrix.copy( standingMatrix ); + poseObject.matrix.decompose( poseObject.position, poseObject.quaternion, poseObject.scale ); + + if ( pose.orientation !== null ) { + + tempQuaternion.fromArray( pose.orientation ); + poseObject.quaternion.multiply( tempQuaternion ); + + } + + if ( pose.position !== null ) { + + tempQuaternion.setFromRotationMatrix( standingMatrix ); + tempPosition.fromArray( pose.position ); + tempPosition.applyQuaternion( tempQuaternion ); + poseObject.position.add( tempPosition ); + + } + + poseObject.updateMatrixWorld(); + + // + + cameraL.near = camera.near; + cameraR.near = camera.near; + + cameraL.far = camera.far; + cameraR.far = camera.far; + + cameraL.matrixWorldInverse.fromArray( frameData.leftViewMatrix ); + cameraR.matrixWorldInverse.fromArray( frameData.rightViewMatrix ); + + // TODO (mrdoob) Double check this code + + standingMatrixInverse.getInverse( standingMatrix ); + + if ( referenceSpaceType === 'local-floor' ) { + + cameraL.matrixWorldInverse.multiply( standingMatrixInverse ); + cameraR.matrixWorldInverse.multiply( standingMatrixInverse ); + + } + + var parent = poseObject.parent; + + if ( parent !== null ) { + + matrixWorldInverse.getInverse( parent.matrixWorld ); + + cameraL.matrixWorldInverse.multiply( matrixWorldInverse ); + cameraR.matrixWorldInverse.multiply( matrixWorldInverse ); + + } + + // envMap and Mirror needs camera.matrixWorld + + cameraL.matrixWorld.getInverse( cameraL.matrixWorldInverse ); + cameraR.matrixWorld.getInverse( cameraR.matrixWorldInverse ); + + cameraL.projectionMatrix.fromArray( frameData.leftProjectionMatrix ); + cameraR.projectionMatrix.fromArray( frameData.rightProjectionMatrix ); + + setProjectionFromUnion( cameraVR, cameraL, cameraR ); + + // + + var layers = device.getLayers(); + + if ( layers.length ) { + + var layer = layers[ 0 ]; + + updateViewportFromBounds( cameraL.viewport, layer.leftBounds ); + updateViewportFromBounds( cameraR.viewport, layer.rightBounds ); + + } + + updateControllers(); + + return cameraVR; + + }; + + this.getStandingMatrix = function () { + + return standingMatrix; + + }; + + this.isPresenting = isPresenting; + + // Animation Loop + + var animation = new WebGLAnimation(); + + this.setAnimationLoop = function ( callback ) { + + animation.setAnimationLoop( callback ); + + if ( isPresenting() ) animation.start(); + + }; + + this.submitFrame = function () { + + if ( isPresenting() ) device.submitFrame(); + + }; + + this.dispose = function () { + + if ( typeof window !== 'undefined' ) { + + window.removeEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange ); + + } + + }; + + // DEPRECATED + + this.setFrameOfReferenceType = function () { + + console.warn( 'THREE.WebVRManager: setFrameOfReferenceType() has been deprecated.' ); + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebXRManager( renderer ) { + + var gl = renderer.context; + + var session = null; + + var referenceSpace = null; + var referenceSpaceType = 'local-floor'; + + var pose = null; + + var controllers = []; + var inputSources = []; + + function isPresenting() { + + return session !== null && referenceSpace !== null; + + } + + // + + var cameraL = new PerspectiveCamera(); + cameraL.layers.enable( 1 ); + cameraL.viewport = new Vector4(); + + var cameraR = new PerspectiveCamera(); + cameraR.layers.enable( 2 ); + cameraR.viewport = new Vector4(); + + var cameraVR = new ArrayCamera( [ cameraL, cameraR ] ); + cameraVR.layers.enable( 1 ); + cameraVR.layers.enable( 2 ); + + // + + this.enabled = false; + + this.getController = function ( id ) { + + var controller = controllers[ id ]; + + if ( controller === undefined ) { + + controller = new Group(); + controller.matrixAutoUpdate = false; + controller.visible = false; + + controllers[ id ] = controller; + + } + + return controller; + + }; + + // + + function onSessionEvent( event ) { + + for ( var i = 0; i < controllers.length; i ++ ) { + + if ( inputSources[ i ] === event.inputSource ) { + + controllers[ i ].dispatchEvent( { type: event.type } ); + + } + + } + + } + + function onSessionEnd() { + + renderer.setFramebuffer( null ); + renderer.setRenderTarget( renderer.getRenderTarget() ); // Hack #15830 + animation.stop(); + + } + + function onRequestReferenceSpace( value ) { + + referenceSpace = value; + + animation.setContext( session ); + animation.start(); + + } + + this.setFramebufferScaleFactor = function ( value ) { + + }; + + this.setReferenceSpaceType = function ( value ) { + + referenceSpaceType = value; + + }; + + this.getSession = function () { + + return session; + + }; + + this.setSession = function ( value ) { + + session = value; + + if ( session !== null ) { + + session.addEventListener( 'select', onSessionEvent ); + session.addEventListener( 'selectstart', onSessionEvent ); + session.addEventListener( 'selectend', onSessionEvent ); + session.addEventListener( 'end', onSessionEnd ); + + session.updateRenderState( { baseLayer: new XRWebGLLayer( session, gl ) } ); + + session.requestReferenceSpace( referenceSpaceType ).then( onRequestReferenceSpace ); + + // + + inputSources = session.inputSources; + + session.addEventListener( 'inputsourceschange', function () { + + inputSources = session.inputSources; + console.log( inputSources ); + + for ( var i = 0; i < controllers.length; i ++ ) { + + var controller = controllers[ i ]; + controller.userData.inputSource = inputSources[ i ]; + + } + + } ); + + } + + }; + + function updateCamera( camera, parent ) { + + if ( parent === null ) { + + camera.matrixWorld.copy( camera.matrix ); + + } else { + + camera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix ); + + } + + camera.matrixWorldInverse.getInverse( camera.matrixWorld ); + + } + + this.getCamera = function ( camera ) { + + if ( isPresenting() ) { + + var parent = camera.parent; + var cameras = cameraVR.cameras; + + updateCamera( cameraVR, parent ); + + for ( var i = 0; i < cameras.length; i ++ ) { + + updateCamera( cameras[ i ], parent ); + + } + + // update camera and its children + + camera.matrixWorld.copy( cameraVR.matrixWorld ); + + var children = camera.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + children[ i ].updateMatrixWorld( true ); + + } + + setProjectionFromUnion( cameraVR, cameraL, cameraR ); + + return cameraVR; + + } + + return camera; + + }; + + this.isPresenting = isPresenting; + + // Animation Loop + + var onAnimationFrameCallback = null; + + function onAnimationFrame( time, frame ) { + + pose = frame.getViewerPose( referenceSpace ); + + if ( pose !== null ) { + + var views = pose.views; + var baseLayer = session.renderState.baseLayer; + + renderer.setFramebuffer( baseLayer.framebuffer ); + + for ( var i = 0; i < views.length; i ++ ) { + + var view = views[ i ]; + var viewport = baseLayer.getViewport( view ); + var viewMatrix = view.transform.inverse.matrix; + + var camera = cameraVR.cameras[ i ]; + camera.matrix.fromArray( viewMatrix ).getInverse( camera.matrix ); + camera.projectionMatrix.fromArray( view.projectionMatrix ); + camera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height ); + + if ( i === 0 ) { + + cameraVR.matrix.copy( camera.matrix ); + + } + + } + + } + + // + + for ( var i = 0; i < controllers.length; i ++ ) { + + var controller = controllers[ i ]; + + var inputSource = inputSources[ i ]; + + if ( inputSource ) { + + var inputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace ); + + if ( inputPose !== null ) { + + controller.matrix.fromArray( inputPose.transform.matrix ); + controller.matrix.decompose( controller.position, controller.rotation, controller.scale ); + controller.visible = true; + + continue; + + } + + } + + controller.visible = false; + + } + + if ( onAnimationFrameCallback ) onAnimationFrameCallback( time ); + + } + + var animation = new WebGLAnimation(); + animation.setAnimationLoop( onAnimationFrame ); + + this.setAnimationLoop = function ( callback ) { + + onAnimationFrameCallback = callback; + + }; + + this.dispose = function () {}; + + // DEPRECATED + + this.getStandingMatrix = function () { + + console.warn( 'THREE.WebXRManager: getStandingMatrix() is no longer needed.' ); + return new Matrix4(); + + }; + + this.getDevice = function () { + + console.warn( 'THREE.WebXRManager: getDevice() has been deprecated.' ); + + }; + + this.setDevice = function () { + + console.warn( 'THREE.WebXRManager: setDevice() has been deprecated.' ); + + }; + + this.setFrameOfReferenceType = function () { + + console.warn( 'THREE.WebXRManager: setFrameOfReferenceType() has been deprecated.' ); + + }; + + this.submitFrame = function () {}; + + } + + /** + * @author supereggbert / http://www.paulbrunt.co.uk/ + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * @author szimek / https://github.com/szimek/ + * @author tschw + */ + + function WebGLRenderer( parameters ) { + + console.log( 'THREE.WebGLRenderer', REVISION ); + + parameters = parameters || {}; + + var _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ), + _context = parameters.context !== undefined ? parameters.context : null, + + _alpha = parameters.alpha !== undefined ? parameters.alpha : false, + _depth = parameters.depth !== undefined ? parameters.depth : true, + _stencil = parameters.stencil !== undefined ? parameters.stencil : true, + _antialias = parameters.antialias !== undefined ? parameters.antialias : false, + _premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true, + _preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false, + _powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default', + _failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false; + + var currentRenderList = null; + var currentRenderState = null; + + // public properties + + this.domElement = _canvas; + this.context = null; + + // Debug configuration container + this.debug = { + + /** + * Enables error checking and reporting when shader programs are being compiled + * @type {boolean} + */ + checkShaderErrors: true + }; + + // clearing + + this.autoClear = true; + this.autoClearColor = true; + this.autoClearDepth = true; + this.autoClearStencil = true; + + // scene graph + + this.sortObjects = true; + + // user-defined clipping + + this.clippingPlanes = []; + this.localClippingEnabled = false; + + // physically based shading + + this.gammaFactor = 2.0; // for backwards compatibility + this.gammaInput = false; + this.gammaOutput = false; + + // physical lights + + this.physicallyCorrectLights = false; + + // tone mapping + + this.toneMapping = LinearToneMapping; + this.toneMappingExposure = 1.0; + this.toneMappingWhitePoint = 1.0; + + // morphs + + this.maxMorphTargets = 8; + this.maxMorphNormals = 4; + + // internal properties + + var _this = this, + + _isContextLost = false, + + // internal state cache + + _framebuffer = null, + + _currentActiveCubeFace = 0, + _currentActiveMipmapLevel = 0, + _currentRenderTarget = null, + _currentFramebuffer = null, + _currentMaterialId = - 1, + + // geometry and program caching + + _currentGeometryProgram = { + geometry: null, + program: null, + wireframe: false + }, + + _currentCamera = null, + _currentArrayCamera = null, + + _currentViewport = new Vector4(), + _currentScissor = new Vector4(), + _currentScissorTest = null, + + // + + _width = _canvas.width, + _height = _canvas.height, + + _pixelRatio = 1, + + _viewport = new Vector4( 0, 0, _width, _height ), + _scissor = new Vector4( 0, 0, _width, _height ), + _scissorTest = false, + + // frustum + + _frustum = new Frustum(), + + // clipping + + _clipping = new WebGLClipping(), + _clippingEnabled = false, + _localClippingEnabled = false, + + // camera matrices cache + + _projScreenMatrix = new Matrix4(), + + _vector3 = new Vector3(); + + function getTargetPixelRatio() { + + return _currentRenderTarget === null ? _pixelRatio : 1; + + } + + // initialize + + var _gl; + + try { + + var contextAttributes = { + alpha: _alpha, + depth: _depth, + stencil: _stencil, + antialias: _antialias, + premultipliedAlpha: _premultipliedAlpha, + preserveDrawingBuffer: _preserveDrawingBuffer, + powerPreference: _powerPreference, + failIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat, + xrCompatible: true + }; + + // event listeners must be registered before WebGL context is created, see #12753 + + _canvas.addEventListener( 'webglcontextlost', onContextLost, false ); + _canvas.addEventListener( 'webglcontextrestored', onContextRestore, false ); + + _gl = _context || _canvas.getContext( 'webgl', contextAttributes ) || _canvas.getContext( 'experimental-webgl', contextAttributes ); + + if ( _gl === null ) { + + if ( _canvas.getContext( 'webgl' ) !== null ) { + + throw new Error( 'Error creating WebGL context with your selected attributes.' ); + + } else { + + throw new Error( 'Error creating WebGL context.' ); + + } + + } + + // Some experimental-webgl implementations do not have getShaderPrecisionFormat + + if ( _gl.getShaderPrecisionFormat === undefined ) { + + _gl.getShaderPrecisionFormat = function () { + + return { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 }; + + }; + + } + + } catch ( error ) { + + console.error( 'THREE.WebGLRenderer: ' + error.message ); + throw error; + + } + + var extensions, capabilities, state, info; + var properties, textures, attributes, geometries, objects; + var programCache, renderLists, renderStates; + + var background, morphtargets, bufferRenderer, indexedBufferRenderer; + + var utils; + + function initGLContext() { + + extensions = new WebGLExtensions( _gl ); + + capabilities = new WebGLCapabilities( _gl, extensions, parameters ); + + if ( ! capabilities.isWebGL2 ) { + + extensions.get( 'WEBGL_depth_texture' ); + extensions.get( 'OES_texture_float' ); + extensions.get( 'OES_texture_half_float' ); + extensions.get( 'OES_texture_half_float_linear' ); + extensions.get( 'OES_standard_derivatives' ); + extensions.get( 'OES_element_index_uint' ); + extensions.get( 'ANGLE_instanced_arrays' ); + + } + + extensions.get( 'OES_texture_float_linear' ); + + utils = new WebGLUtils( _gl, extensions, capabilities ); + + state = new WebGLState( _gl, extensions, utils, capabilities ); + state.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ) ); + state.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ) ); + + info = new WebGLInfo( _gl ); + properties = new WebGLProperties(); + textures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ); + attributes = new WebGLAttributes( _gl ); + geometries = new WebGLGeometries( _gl, attributes, info ); + objects = new WebGLObjects( geometries, info ); + morphtargets = new WebGLMorphtargets( _gl ); + programCache = new WebGLPrograms( _this, extensions, capabilities, textures ); + renderLists = new WebGLRenderLists(); + renderStates = new WebGLRenderStates(); + + background = new WebGLBackground( _this, state, objects, _premultipliedAlpha ); + + bufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities ); + indexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities ); + + info.programs = programCache.programs; + + _this.context = _gl; + _this.capabilities = capabilities; + _this.extensions = extensions; + _this.properties = properties; + _this.renderLists = renderLists; + _this.state = state; + _this.info = info; + + } + + initGLContext(); + + // vr + + var vr = ( typeof navigator !== 'undefined' && 'xr' in navigator && 'supportsSession' in navigator.xr ) ? new WebXRManager( _this ) : new WebVRManager( _this ); + + this.vr = vr; + + // shadow map + + var shadowMap = new WebGLShadowMap( _this, objects, capabilities.maxTextureSize ); + + this.shadowMap = shadowMap; + + // API + + this.getContext = function () { + + return _gl; + + }; + + this.getContextAttributes = function () { + + return _gl.getContextAttributes(); + + }; + + this.forceContextLoss = function () { + + var extension = extensions.get( 'WEBGL_lose_context' ); + if ( extension ) extension.loseContext(); + + }; + + this.forceContextRestore = function () { + + var extension = extensions.get( 'WEBGL_lose_context' ); + if ( extension ) extension.restoreContext(); + + }; + + this.getPixelRatio = function () { + + return _pixelRatio; + + }; + + this.setPixelRatio = function ( value ) { + + if ( value === undefined ) return; + + _pixelRatio = value; + + this.setSize( _width, _height, false ); + + }; + + this.getSize = function ( target ) { + + if ( target === undefined ) { + + console.warn( 'WebGLRenderer: .getsize() now requires a Vector2 as an argument' ); + + target = new Vector2(); + + } + + return target.set( _width, _height ); + + }; + + this.setSize = function ( width, height, updateStyle ) { + + if ( vr.isPresenting() ) { + + console.warn( 'THREE.WebGLRenderer: Can\'t change size while VR device is presenting.' ); + return; + + } + + _width = width; + _height = height; + + _canvas.width = width * _pixelRatio; + _canvas.height = height * _pixelRatio; + + if ( updateStyle !== false ) { + + _canvas.style.width = width + 'px'; + _canvas.style.height = height + 'px'; + + } + + this.setViewport( 0, 0, width, height ); + + }; + + this.getDrawingBufferSize = function ( target ) { + + if ( target === undefined ) { + + console.warn( 'WebGLRenderer: .getdrawingBufferSize() now requires a Vector2 as an argument' ); + + target = new Vector2(); + + } + + return target.set( _width * _pixelRatio, _height * _pixelRatio ); + + }; + + this.setDrawingBufferSize = function ( width, height, pixelRatio ) { + + _width = width; + _height = height; + + _pixelRatio = pixelRatio; + + _canvas.width = width * pixelRatio; + _canvas.height = height * pixelRatio; + + this.setViewport( 0, 0, width, height ); + + }; + + this.getCurrentViewport = function ( target ) { + + if ( target === undefined ) { + + console.warn( 'WebGLRenderer: .getCurrentViewport() now requires a Vector4 as an argument' ); + + target = new Vector4(); + + } + + return target.copy( _currentViewport ); + + }; + + this.getViewport = function ( target ) { + + return target.copy( _viewport ); + + }; + + this.setViewport = function ( x, y, width, height ) { + + if ( x.isVector4 ) { + + _viewport.set( x.x, x.y, x.z, x.w ); + + } else { + + _viewport.set( x, y, width, height ); + + } + + state.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ) ); + + }; + + this.getScissor = function ( target ) { + + return target.copy( _scissor ); + + }; + + this.setScissor = function ( x, y, width, height ) { + + if ( x.isVector4 ) { + + _scissor.set( x.x, x.y, x.z, x.w ); + + } else { + + _scissor.set( x, y, width, height ); + + } + + state.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ) ); + + }; + + this.getScissorTest = function () { + + return _scissorTest; + + }; + + this.setScissorTest = function ( boolean ) { + + state.setScissorTest( _scissorTest = boolean ); + + }; + + // Clearing + + this.getClearColor = function () { + + return background.getClearColor(); + + }; + + this.setClearColor = function () { + + background.setClearColor.apply( background, arguments ); + + }; + + this.getClearAlpha = function () { + + return background.getClearAlpha(); + + }; + + this.setClearAlpha = function () { + + background.setClearAlpha.apply( background, arguments ); + + }; + + this.clear = function ( color, depth, stencil ) { + + var bits = 0; + + if ( color === undefined || color ) bits |= 16384; + if ( depth === undefined || depth ) bits |= 256; + if ( stencil === undefined || stencil ) bits |= 1024; + + _gl.clear( bits ); + + }; + + this.clearColor = function () { + + this.clear( true, false, false ); + + }; + + this.clearDepth = function () { + + this.clear( false, true, false ); + + }; + + this.clearStencil = function () { + + this.clear( false, false, true ); + + }; + + // + + this.dispose = function () { + + _canvas.removeEventListener( 'webglcontextlost', onContextLost, false ); + _canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false ); + + renderLists.dispose(); + renderStates.dispose(); + properties.dispose(); + objects.dispose(); + + vr.dispose(); + + animation.stop(); + + }; + + // Events + + function onContextLost( event ) { + + event.preventDefault(); + + console.log( 'THREE.WebGLRenderer: Context Lost.' ); + + _isContextLost = true; + + } + + function onContextRestore( /* event */ ) { + + console.log( 'THREE.WebGLRenderer: Context Restored.' ); + + _isContextLost = false; + + initGLContext(); + + } + + function onMaterialDispose( event ) { + + var material = event.target; + + material.removeEventListener( 'dispose', onMaterialDispose ); + + deallocateMaterial( material ); + + } + + // Buffer deallocation + + function deallocateMaterial( material ) { + + releaseMaterialProgramReference( material ); + + properties.remove( material ); + + } + + + function releaseMaterialProgramReference( material ) { + + var programInfo = properties.get( material ).program; + + material.program = undefined; + + if ( programInfo !== undefined ) { + + programCache.releaseProgram( programInfo ); + + } + + } + + // Buffer rendering + + function renderObjectImmediate( object, program ) { + + object.render( function ( object ) { + + _this.renderBufferImmediate( object, program ); + + } ); + + } + + this.renderBufferImmediate = function ( object, program ) { + + state.initAttributes(); + + var buffers = properties.get( object ); + + if ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer(); + if ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer(); + if ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer(); + if ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer(); + + var programAttributes = program.getAttributes(); + + if ( object.hasPositions ) { + + _gl.bindBuffer( 34962, buffers.position ); + _gl.bufferData( 34962, object.positionArray, 35048 ); + + state.enableAttribute( programAttributes.position ); + _gl.vertexAttribPointer( programAttributes.position, 3, 5126, false, 0, 0 ); + + } + + if ( object.hasNormals ) { + + _gl.bindBuffer( 34962, buffers.normal ); + _gl.bufferData( 34962, object.normalArray, 35048 ); + + state.enableAttribute( programAttributes.normal ); + _gl.vertexAttribPointer( programAttributes.normal, 3, 5126, false, 0, 0 ); + + } + + if ( object.hasUvs ) { + + _gl.bindBuffer( 34962, buffers.uv ); + _gl.bufferData( 34962, object.uvArray, 35048 ); + + state.enableAttribute( programAttributes.uv ); + _gl.vertexAttribPointer( programAttributes.uv, 2, 5126, false, 0, 0 ); + + } + + if ( object.hasColors ) { + + _gl.bindBuffer( 34962, buffers.color ); + _gl.bufferData( 34962, object.colorArray, 35048 ); + + state.enableAttribute( programAttributes.color ); + _gl.vertexAttribPointer( programAttributes.color, 3, 5126, false, 0, 0 ); + + } + + state.disableUnusedAttributes(); + + _gl.drawArrays( 4, 0, object.count ); + + object.count = 0; + + }; + + this.renderBufferDirect = function ( camera, fog, geometry, material, object, group ) { + + var frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 ); + + state.setMaterial( material, frontFaceCW ); + + var program = setProgram( camera, fog, material, object ); + + var updateBuffers = false; + + if ( _currentGeometryProgram.geometry !== geometry.id || + _currentGeometryProgram.program !== program.id || + _currentGeometryProgram.wireframe !== ( material.wireframe === true ) ) { + + _currentGeometryProgram.geometry = geometry.id; + _currentGeometryProgram.program = program.id; + _currentGeometryProgram.wireframe = material.wireframe === true; + updateBuffers = true; + + } + + if ( object.morphTargetInfluences ) { + + morphtargets.update( object, geometry, material, program ); + + updateBuffers = true; + + } + + // + + var index = geometry.index; + var position = geometry.attributes.position; + var rangeFactor = 1; + + if ( material.wireframe === true ) { + + index = geometries.getWireframeAttribute( geometry ); + rangeFactor = 2; + + } + + var attribute; + var renderer = bufferRenderer; + + if ( index !== null ) { + + attribute = attributes.get( index ); + + renderer = indexedBufferRenderer; + renderer.setIndex( attribute ); + + } + + if ( updateBuffers ) { + + setupVertexAttributes( material, program, geometry ); + + if ( index !== null ) { + + _gl.bindBuffer( 34963, attribute.buffer ); + + } + + } + + // + + var dataCount = Infinity; + + if ( index !== null ) { + + dataCount = index.count; + + } else if ( position !== undefined ) { + + dataCount = position.count; + + } + + var rangeStart = geometry.drawRange.start * rangeFactor; + var rangeCount = geometry.drawRange.count * rangeFactor; + + var groupStart = group !== null ? group.start * rangeFactor : 0; + var groupCount = group !== null ? group.count * rangeFactor : Infinity; + + var drawStart = Math.max( rangeStart, groupStart ); + var drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1; + + var drawCount = Math.max( 0, drawEnd - drawStart + 1 ); + + if ( drawCount === 0 ) return; + + // + + if ( object.isMesh ) { + + if ( material.wireframe === true ) { + + state.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() ); + renderer.setMode( 1 ); + + } else { + + switch ( object.drawMode ) { + + case TrianglesDrawMode: + renderer.setMode( 4 ); + break; + + case TriangleStripDrawMode: + renderer.setMode( 5 ); + break; + + case TriangleFanDrawMode: + renderer.setMode( 6 ); + break; + + } + + } + + + } else if ( object.isLine ) { + + var lineWidth = material.linewidth; + + if ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material + + state.setLineWidth( lineWidth * getTargetPixelRatio() ); + + if ( object.isLineSegments ) { + + renderer.setMode( 1 ); + + } else if ( object.isLineLoop ) { + + renderer.setMode( 2 ); + + } else { + + renderer.setMode( 3 ); + + } + + } else if ( object.isPoints ) { + + renderer.setMode( 0 ); + + } else if ( object.isSprite ) { + + renderer.setMode( 4 ); + + } + + if ( geometry && geometry.isInstancedBufferGeometry ) { + + if ( geometry.maxInstancedCount > 0 ) { + + renderer.renderInstances( geometry, drawStart, drawCount ); + + } + + } else { + + renderer.render( drawStart, drawCount ); + + } + + }; + + function setupVertexAttributes( material, program, geometry ) { + + if ( geometry && geometry.isInstancedBufferGeometry && ! capabilities.isWebGL2 ) { + + if ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) { + + console.error( 'THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' ); + return; + + } + + } + + state.initAttributes(); + + var geometryAttributes = geometry.attributes; + + var programAttributes = program.getAttributes(); + + var materialDefaultAttributeValues = material.defaultAttributeValues; + + for ( var name in programAttributes ) { + + var programAttribute = programAttributes[ name ]; + + if ( programAttribute >= 0 ) { + + var geometryAttribute = geometryAttributes[ name ]; + + if ( geometryAttribute !== undefined ) { + + var normalized = geometryAttribute.normalized; + var size = geometryAttribute.itemSize; + + var attribute = attributes.get( geometryAttribute ); + + // TODO Attribute may not be available on context restore + + if ( attribute === undefined ) continue; + + var buffer = attribute.buffer; + var type = attribute.type; + var bytesPerElement = attribute.bytesPerElement; + + if ( geometryAttribute.isInterleavedBufferAttribute ) { + + var data = geometryAttribute.data; + var stride = data.stride; + var offset = geometryAttribute.offset; + + if ( data && data.isInstancedInterleavedBuffer ) { + + state.enableAttributeAndDivisor( programAttribute, data.meshPerAttribute ); + + if ( geometry.maxInstancedCount === undefined ) { + + geometry.maxInstancedCount = data.meshPerAttribute * data.count; + + } + + } else { + + state.enableAttribute( programAttribute ); + + } + + _gl.bindBuffer( 34962, buffer ); + _gl.vertexAttribPointer( programAttribute, size, type, normalized, stride * bytesPerElement, offset * bytesPerElement ); + + } else { + + if ( geometryAttribute.isInstancedBufferAttribute ) { + + state.enableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute ); + + if ( geometry.maxInstancedCount === undefined ) { + + geometry.maxInstancedCount = geometryAttribute.meshPerAttribute * geometryAttribute.count; + + } + + } else { + + state.enableAttribute( programAttribute ); + + } + + _gl.bindBuffer( 34962, buffer ); + _gl.vertexAttribPointer( programAttribute, size, type, normalized, 0, 0 ); + + } + + } else if ( materialDefaultAttributeValues !== undefined ) { + + var value = materialDefaultAttributeValues[ name ]; + + if ( value !== undefined ) { + + switch ( value.length ) { + + case 2: + _gl.vertexAttrib2fv( programAttribute, value ); + break; + + case 3: + _gl.vertexAttrib3fv( programAttribute, value ); + break; + + case 4: + _gl.vertexAttrib4fv( programAttribute, value ); + break; + + default: + _gl.vertexAttrib1fv( programAttribute, value ); + + } + + } + + } + + } + + } + + state.disableUnusedAttributes(); + + } + + // Compile + + this.compile = function ( scene, camera ) { + + currentRenderState = renderStates.get( scene, camera ); + currentRenderState.init(); + + scene.traverse( function ( object ) { + + if ( object.isLight ) { + + currentRenderState.pushLight( object ); + + if ( object.castShadow ) { + + currentRenderState.pushShadow( object ); + + } + + } + + } ); + + currentRenderState.setupLights( camera ); + + scene.traverse( function ( object ) { + + if ( object.material ) { + + if ( Array.isArray( object.material ) ) { + + for ( var i = 0; i < object.material.length; i ++ ) { + + initMaterial( object.material[ i ], scene.fog, object ); + + } + + } else { + + initMaterial( object.material, scene.fog, object ); + + } + + } + + } ); + + }; + + // Animation Loop + + var onAnimationFrameCallback = null; + + function onAnimationFrame( time ) { + + if ( vr.isPresenting() ) return; + if ( onAnimationFrameCallback ) onAnimationFrameCallback( time ); + + } + + var animation = new WebGLAnimation(); + animation.setAnimationLoop( onAnimationFrame ); + + if ( typeof window !== 'undefined' ) animation.setContext( window ); + + this.setAnimationLoop = function ( callback ) { + + onAnimationFrameCallback = callback; + vr.setAnimationLoop( callback ); + + animation.start(); + + }; + + // Rendering + + this.render = function ( scene, camera ) { + + var renderTarget, forceClear; + + if ( arguments[ 2 ] !== undefined ) { + + console.warn( 'THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead.' ); + renderTarget = arguments[ 2 ]; + + } + + if ( arguments[ 3 ] !== undefined ) { + + console.warn( 'THREE.WebGLRenderer.render(): the forceClear argument has been removed. Use .clear() instead.' ); + forceClear = arguments[ 3 ]; + + } + + if ( ! ( camera && camera.isCamera ) ) { + + console.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' ); + return; + + } + + if ( _isContextLost ) return; + + // reset caching for this frame + + _currentGeometryProgram.geometry = null; + _currentGeometryProgram.program = null; + _currentGeometryProgram.wireframe = false; + _currentMaterialId = - 1; + _currentCamera = null; + + // update scene graph + + if ( scene.autoUpdate === true ) scene.updateMatrixWorld(); + + // update camera matrices and frustum + + if ( camera.parent === null ) camera.updateMatrixWorld(); + + if ( vr.enabled ) { + + camera = vr.getCamera( camera ); + + } + + // + + currentRenderState = renderStates.get( scene, camera ); + currentRenderState.init(); + + scene.onBeforeRender( _this, scene, camera, renderTarget || _currentRenderTarget ); + + _projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse ); + _frustum.setFromMatrix( _projScreenMatrix ); + + _localClippingEnabled = this.localClippingEnabled; + _clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera ); + + currentRenderList = renderLists.get( scene, camera ); + currentRenderList.init(); + + projectObject( scene, camera, 0, _this.sortObjects ); + + if ( _this.sortObjects === true ) { + + currentRenderList.sort(); + + } + + // + + if ( _clippingEnabled ) _clipping.beginShadows(); + + var shadowsArray = currentRenderState.state.shadowsArray; + + shadowMap.render( shadowsArray, scene, camera ); + + currentRenderState.setupLights( camera ); + + if ( _clippingEnabled ) _clipping.endShadows(); + + // + + if ( this.info.autoReset ) this.info.reset(); + + if ( renderTarget !== undefined ) { + + this.setRenderTarget( renderTarget ); + + } + + // + + background.render( currentRenderList, scene, camera, forceClear ); + + // render scene + + var opaqueObjects = currentRenderList.opaque; + var transparentObjects = currentRenderList.transparent; + + if ( scene.overrideMaterial ) { + + var overrideMaterial = scene.overrideMaterial; + + if ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera, overrideMaterial ); + if ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera, overrideMaterial ); + + } else { + + // opaque pass (front-to-back order) + + if ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera ); + + // transparent pass (back-to-front order) + + if ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera ); + + } + + // + + scene.onAfterRender( _this, scene, camera ); + + // + + if ( _currentRenderTarget !== null ) { + + // Generate mipmap if we're using any kind of mipmap filtering + + textures.updateRenderTargetMipmap( _currentRenderTarget ); + + // resolve multisample renderbuffers to a single-sample texture if necessary + + textures.updateMultisampleRenderTarget( _currentRenderTarget ); + + } + + // Ensure depth buffer writing is enabled so it can be cleared on next render + + state.buffers.depth.setTest( true ); + state.buffers.depth.setMask( true ); + state.buffers.color.setMask( true ); + + state.setPolygonOffset( false ); + + if ( vr.enabled ) { + + vr.submitFrame(); + + } + + // _gl.finish(); + + currentRenderList = null; + currentRenderState = null; + + }; + + function projectObject( object, camera, groupOrder, sortObjects ) { + + if ( object.visible === false ) return; + + var visible = object.layers.test( camera.layers ); + + if ( visible ) { + + if ( object.isGroup ) { + + groupOrder = object.renderOrder; + + } else if ( object.isLight ) { + + currentRenderState.pushLight( object ); + + if ( object.castShadow ) { + + currentRenderState.pushShadow( object ); + + } + + } else if ( object.isSprite ) { + + if ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) { + + if ( sortObjects ) { + + _vector3.setFromMatrixPosition( object.matrixWorld ) + .applyMatrix4( _projScreenMatrix ); + + } + + var geometry = objects.update( object ); + var material = object.material; + + if ( material.visible ) { + + currentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null ); + + } + + } + + } else if ( object.isImmediateRenderObject ) { + + if ( sortObjects ) { + + _vector3.setFromMatrixPosition( object.matrixWorld ) + .applyMatrix4( _projScreenMatrix ); + + } + + currentRenderList.push( object, null, object.material, groupOrder, _vector3.z, null ); + + } else if ( object.isMesh || object.isLine || object.isPoints ) { + + if ( object.isSkinnedMesh ) { + + object.skeleton.update(); + + } + + if ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) { + + if ( sortObjects ) { + + _vector3.setFromMatrixPosition( object.matrixWorld ) + .applyMatrix4( _projScreenMatrix ); + + } + + var geometry = objects.update( object ); + var material = object.material; + + if ( Array.isArray( material ) ) { + + var groups = geometry.groups; + + for ( var i = 0, l = groups.length; i < l; i ++ ) { + + var group = groups[ i ]; + var groupMaterial = material[ group.materialIndex ]; + + if ( groupMaterial && groupMaterial.visible ) { + + currentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group ); + + } + + } + + } else if ( material.visible ) { + + currentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null ); + + } + + } + + } + + } + + var children = object.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + projectObject( children[ i ], camera, groupOrder, sortObjects ); + + } + + } + + function renderObjects( renderList, scene, camera, overrideMaterial ) { + + for ( var i = 0, l = renderList.length; i < l; i ++ ) { + + var renderItem = renderList[ i ]; + + var object = renderItem.object; + var geometry = renderItem.geometry; + var material = overrideMaterial === undefined ? renderItem.material : overrideMaterial; + var group = renderItem.group; + + if ( camera.isArrayCamera ) { + + _currentArrayCamera = camera; + + var cameras = camera.cameras; + + for ( var j = 0, jl = cameras.length; j < jl; j ++ ) { + + var camera2 = cameras[ j ]; + + if ( object.layers.test( camera2.layers ) ) { + + state.viewport( _currentViewport.copy( camera2.viewport ) ); + + currentRenderState.setupLights( camera2 ); + + renderObject( object, scene, camera2, geometry, material, group ); + + } + + } + + } else { + + _currentArrayCamera = null; + + renderObject( object, scene, camera, geometry, material, group ); + + } + + } + + } + + function renderObject( object, scene, camera, geometry, material, group ) { + + object.onBeforeRender( _this, scene, camera, geometry, material, group ); + currentRenderState = renderStates.get( scene, _currentArrayCamera || camera ); + + object.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld ); + object.normalMatrix.getNormalMatrix( object.modelViewMatrix ); + + if ( object.isImmediateRenderObject ) { + + state.setMaterial( material ); + + var program = setProgram( camera, scene.fog, material, object ); + + _currentGeometryProgram.geometry = null; + _currentGeometryProgram.program = null; + _currentGeometryProgram.wireframe = false; + + renderObjectImmediate( object, program ); + + } else { + + _this.renderBufferDirect( camera, scene.fog, geometry, material, object, group ); + + } + + object.onAfterRender( _this, scene, camera, geometry, material, group ); + currentRenderState = renderStates.get( scene, _currentArrayCamera || camera ); + + } + + function initMaterial( material, fog, object ) { + + var materialProperties = properties.get( material ); + + var lights = currentRenderState.state.lights; + var shadowsArray = currentRenderState.state.shadowsArray; + + var lightsHash = materialProperties.lightsHash; + var lightsStateHash = lights.state.hash; + + var parameters = programCache.getParameters( + material, lights.state, shadowsArray, fog, _clipping.numPlanes, _clipping.numIntersection, object ); + + var code = programCache.getProgramCode( material, parameters ); + + var program = materialProperties.program; + var programChange = true; + + if ( program === undefined ) { + + // new material + material.addEventListener( 'dispose', onMaterialDispose ); + + } else if ( program.code !== code ) { + + // changed glsl or parameters + releaseMaterialProgramReference( material ); + + } else if ( lightsHash.stateID !== lightsStateHash.stateID || + lightsHash.directionalLength !== lightsStateHash.directionalLength || + lightsHash.pointLength !== lightsStateHash.pointLength || + lightsHash.spotLength !== lightsStateHash.spotLength || + lightsHash.rectAreaLength !== lightsStateHash.rectAreaLength || + lightsHash.hemiLength !== lightsStateHash.hemiLength || + lightsHash.shadowsLength !== lightsStateHash.shadowsLength ) { + + lightsHash.stateID = lightsStateHash.stateID; + lightsHash.directionalLength = lightsStateHash.directionalLength; + lightsHash.pointLength = lightsStateHash.pointLength; + lightsHash.spotLength = lightsStateHash.spotLength; + lightsHash.rectAreaLength = lightsStateHash.rectAreaLength; + lightsHash.hemiLength = lightsStateHash.hemiLength; + lightsHash.shadowsLength = lightsStateHash.shadowsLength; + + programChange = false; + + } else if ( parameters.shaderID !== undefined ) { + + // same glsl and uniform list + return; + + } else { + + // only rebuild uniform list + programChange = false; + + } + + if ( programChange ) { + + if ( parameters.shaderID ) { + + var shader = ShaderLib[ parameters.shaderID ]; + + materialProperties.shader = { + name: material.type, + uniforms: cloneUniforms( shader.uniforms ), + vertexShader: shader.vertexShader, + fragmentShader: shader.fragmentShader + }; + + } else { + + materialProperties.shader = { + name: material.type, + uniforms: material.uniforms, + vertexShader: material.vertexShader, + fragmentShader: material.fragmentShader + }; + + } + + material.onBeforeCompile( materialProperties.shader, _this ); + + // Computing code again as onBeforeCompile may have changed the shaders + code = programCache.getProgramCode( material, parameters ); + + program = programCache.acquireProgram( material, materialProperties.shader, parameters, code ); + + materialProperties.program = program; + material.program = program; + + } + + var programAttributes = program.getAttributes(); + + if ( material.morphTargets ) { + + material.numSupportedMorphTargets = 0; + + for ( var i = 0; i < _this.maxMorphTargets; i ++ ) { + + if ( programAttributes[ 'morphTarget' + i ] >= 0 ) { + + material.numSupportedMorphTargets ++; + + } + + } + + } + + if ( material.morphNormals ) { + + material.numSupportedMorphNormals = 0; + + for ( var i = 0; i < _this.maxMorphNormals; i ++ ) { + + if ( programAttributes[ 'morphNormal' + i ] >= 0 ) { + + material.numSupportedMorphNormals ++; + + } + + } + + } + + var uniforms = materialProperties.shader.uniforms; + + if ( ! material.isShaderMaterial && + ! material.isRawShaderMaterial || + material.clipping === true ) { + + materialProperties.numClippingPlanes = _clipping.numPlanes; + materialProperties.numIntersection = _clipping.numIntersection; + uniforms.clippingPlanes = _clipping.uniform; + + } + + materialProperties.fog = fog; + + // store the light setup it was created for + if ( lightsHash === undefined ) { + + materialProperties.lightsHash = lightsHash = {}; + + } + + lightsHash.stateID = lightsStateHash.stateID; + lightsHash.directionalLength = lightsStateHash.directionalLength; + lightsHash.pointLength = lightsStateHash.pointLength; + lightsHash.spotLength = lightsStateHash.spotLength; + lightsHash.rectAreaLength = lightsStateHash.rectAreaLength; + lightsHash.hemiLength = lightsStateHash.hemiLength; + lightsHash.shadowsLength = lightsStateHash.shadowsLength; + + if ( material.lights ) { + + // wire up the material to this renderer's lighting state + + uniforms.ambientLightColor.value = lights.state.ambient; + uniforms.lightProbe.value = lights.state.probe; + uniforms.directionalLights.value = lights.state.directional; + uniforms.spotLights.value = lights.state.spot; + uniforms.rectAreaLights.value = lights.state.rectArea; + uniforms.pointLights.value = lights.state.point; + uniforms.hemisphereLights.value = lights.state.hemi; + + uniforms.directionalShadowMap.value = lights.state.directionalShadowMap; + uniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix; + uniforms.spotShadowMap.value = lights.state.spotShadowMap; + uniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix; + uniforms.pointShadowMap.value = lights.state.pointShadowMap; + uniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix; + // TODO (abelnation): add area lights shadow info to uniforms + + } + + var progUniforms = materialProperties.program.getUniforms(), + uniformsList = + WebGLUniforms.seqWithValue( progUniforms.seq, uniforms ); + + materialProperties.uniformsList = uniformsList; + + } + + function setProgram( camera, fog, material, object ) { + + textures.resetTextureUnits(); + + var materialProperties = properties.get( material ); + var lights = currentRenderState.state.lights; + + var lightsHash = materialProperties.lightsHash; + var lightsStateHash = lights.state.hash; + + if ( _clippingEnabled ) { + + if ( _localClippingEnabled || camera !== _currentCamera ) { + + var useCache = + camera === _currentCamera && + material.id === _currentMaterialId; + + // we might want to call this function with some ClippingGroup + // object instead of the material, once it becomes feasible + // (#8465, #8379) + _clipping.setState( + material.clippingPlanes, material.clipIntersection, material.clipShadows, + camera, materialProperties, useCache ); + + } + + } + + if ( material.needsUpdate === false ) { + + if ( materialProperties.program === undefined ) { + + material.needsUpdate = true; + + } else if ( material.fog && materialProperties.fog !== fog ) { + + material.needsUpdate = true; + + } else if ( material.lights && ( lightsHash.stateID !== lightsStateHash.stateID || + lightsHash.directionalLength !== lightsStateHash.directionalLength || + lightsHash.pointLength !== lightsStateHash.pointLength || + lightsHash.spotLength !== lightsStateHash.spotLength || + lightsHash.rectAreaLength !== lightsStateHash.rectAreaLength || + lightsHash.hemiLength !== lightsStateHash.hemiLength || + lightsHash.shadowsLength !== lightsStateHash.shadowsLength ) ) { + + material.needsUpdate = true; + + } else if ( materialProperties.numClippingPlanes !== undefined && + ( materialProperties.numClippingPlanes !== _clipping.numPlanes || + materialProperties.numIntersection !== _clipping.numIntersection ) ) { + + material.needsUpdate = true; + + } + + } + + if ( material.needsUpdate ) { + + initMaterial( material, fog, object ); + material.needsUpdate = false; + + } + + var refreshProgram = false; + var refreshMaterial = false; + var refreshLights = false; + + var program = materialProperties.program, + p_uniforms = program.getUniforms(), + m_uniforms = materialProperties.shader.uniforms; + + if ( state.useProgram( program.program ) ) { + + refreshProgram = true; + refreshMaterial = true; + refreshLights = true; + + } + + if ( material.id !== _currentMaterialId ) { + + _currentMaterialId = material.id; + + refreshMaterial = true; + + } + + if ( refreshProgram || _currentCamera !== camera ) { + + p_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix ); + + if ( capabilities.logarithmicDepthBuffer ) { + + p_uniforms.setValue( _gl, 'logDepthBufFC', + 2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) ); + + } + + if ( _currentCamera !== camera ) { + + _currentCamera = camera; + + // lighting uniforms depend on the camera so enforce an update + // now, in case this material supports lights - or later, when + // the next material that does gets activated: + + refreshMaterial = true; // set to true on material change + refreshLights = true; // remains set until update done + + } + + // load material specific uniforms + // (shader material also gets them for the sake of genericity) + + if ( material.isShaderMaterial || + material.isMeshPhongMaterial || + material.isMeshStandardMaterial || + material.envMap ) { + + var uCamPos = p_uniforms.map.cameraPosition; + + if ( uCamPos !== undefined ) { + + uCamPos.setValue( _gl, + _vector3.setFromMatrixPosition( camera.matrixWorld ) ); + + } + + } + + if ( material.isMeshPhongMaterial || + material.isMeshLambertMaterial || + material.isMeshBasicMaterial || + material.isMeshStandardMaterial || + material.isShaderMaterial || + material.skinning ) { + + p_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse ); + + } + + } + + // skinning uniforms must be set even if material didn't change + // auto-setting of texture unit for bone texture must go before other textures + // not sure why, but otherwise weird things happen + + if ( material.skinning ) { + + p_uniforms.setOptional( _gl, object, 'bindMatrix' ); + p_uniforms.setOptional( _gl, object, 'bindMatrixInverse' ); + + var skeleton = object.skeleton; + + if ( skeleton ) { + + var bones = skeleton.bones; + + if ( capabilities.floatVertexTextures ) { + + if ( skeleton.boneTexture === undefined ) { + + // layout (1 matrix = 4 pixels) + // RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4) + // with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8) + // 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16) + // 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32) + // 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64) + + + var size = Math.sqrt( bones.length * 4 ); // 4 pixels needed for 1 matrix + size = _Math.ceilPowerOfTwo( size ); + size = Math.max( size, 4 ); + + var boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel + boneMatrices.set( skeleton.boneMatrices ); // copy current values + + var boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType ); + boneTexture.needsUpdate = true; + + skeleton.boneMatrices = boneMatrices; + skeleton.boneTexture = boneTexture; + skeleton.boneTextureSize = size; + + } + + p_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures ); + p_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize ); + + } else { + + p_uniforms.setOptional( _gl, skeleton, 'boneMatrices' ); + + } + + } + + } + + if ( refreshMaterial ) { + + p_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure ); + p_uniforms.setValue( _gl, 'toneMappingWhitePoint', _this.toneMappingWhitePoint ); + + if ( material.lights ) { + + // the current material requires lighting info + + // note: all lighting uniforms are always set correctly + // they simply reference the renderer's state for their + // values + // + // use the current material's .needsUpdate flags to set + // the GL state when required + + markUniformsLightsNeedsUpdate( m_uniforms, refreshLights ); + + } + + // refresh uniforms common to several materials + + if ( fog && material.fog ) { + + refreshUniformsFog( m_uniforms, fog ); + + } + + if ( material.isMeshBasicMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + + } else if ( material.isMeshLambertMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + refreshUniformsLambert( m_uniforms, material ); + + } else if ( material.isMeshPhongMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + + if ( material.isMeshToonMaterial ) { + + refreshUniformsToon( m_uniforms, material ); + + } else { + + refreshUniformsPhong( m_uniforms, material ); + + } + + } else if ( material.isMeshStandardMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + + if ( material.isMeshPhysicalMaterial ) { + + refreshUniformsPhysical( m_uniforms, material ); + + } else { + + refreshUniformsStandard( m_uniforms, material ); + + } + + } else if ( material.isMeshMatcapMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + + refreshUniformsMatcap( m_uniforms, material ); + + } else if ( material.isMeshDepthMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + refreshUniformsDepth( m_uniforms, material ); + + } else if ( material.isMeshDistanceMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + refreshUniformsDistance( m_uniforms, material ); + + } else if ( material.isMeshNormalMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + refreshUniformsNormal( m_uniforms, material ); + + } else if ( material.isLineBasicMaterial ) { + + refreshUniformsLine( m_uniforms, material ); + + if ( material.isLineDashedMaterial ) { + + refreshUniformsDash( m_uniforms, material ); + + } + + } else if ( material.isPointsMaterial ) { + + refreshUniformsPoints( m_uniforms, material ); + + } else if ( material.isSpriteMaterial ) { + + refreshUniformsSprites( m_uniforms, material ); + + } else if ( material.isShadowMaterial ) { + + m_uniforms.color.value.copy( material.color ); + m_uniforms.opacity.value = material.opacity; + + } + + // RectAreaLight Texture + // TODO (mrdoob): Find a nicer implementation + + if ( m_uniforms.ltc_1 !== undefined ) m_uniforms.ltc_1.value = UniformsLib.LTC_1; + if ( m_uniforms.ltc_2 !== undefined ) m_uniforms.ltc_2.value = UniformsLib.LTC_2; + + WebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures ); + + } + + if ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) { + + WebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures ); + material.uniformsNeedUpdate = false; + + } + + if ( material.isSpriteMaterial ) { + + p_uniforms.setValue( _gl, 'center', object.center ); + + } + + // common matrices + + p_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix ); + p_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix ); + p_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld ); + + return program; + + } + + // Uniforms (refresh uniforms objects) + + function refreshUniformsCommon( uniforms, material ) { + + uniforms.opacity.value = material.opacity; + + if ( material.color ) { + + uniforms.diffuse.value.copy( material.color ); + + } + + if ( material.emissive ) { + + uniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity ); + + } + + if ( material.map ) { + + uniforms.map.value = material.map; + + } + + if ( material.alphaMap ) { + + uniforms.alphaMap.value = material.alphaMap; + + } + + if ( material.specularMap ) { + + uniforms.specularMap.value = material.specularMap; + + } + + if ( material.envMap ) { + + uniforms.envMap.value = material.envMap; + + // don't flip CubeTexture envMaps, flip everything else: + // WebGLRenderTargetCube will be flipped for backwards compatibility + // WebGLRenderTargetCube.texture will be flipped because it's a Texture and NOT a CubeTexture + // this check must be handled differently, or removed entirely, if WebGLRenderTargetCube uses a CubeTexture in the future + uniforms.flipEnvMap.value = material.envMap.isCubeTexture ? - 1 : 1; + + uniforms.reflectivity.value = material.reflectivity; + uniforms.refractionRatio.value = material.refractionRatio; + + uniforms.maxMipLevel.value = properties.get( material.envMap ).__maxMipLevel; + + } + + if ( material.lightMap ) { + + uniforms.lightMap.value = material.lightMap; + uniforms.lightMapIntensity.value = material.lightMapIntensity; + + } + + if ( material.aoMap ) { + + uniforms.aoMap.value = material.aoMap; + uniforms.aoMapIntensity.value = material.aoMapIntensity; + + } + + // uv repeat and offset setting priorities + // 1. color map + // 2. specular map + // 3. normal map + // 4. bump map + // 5. alpha map + // 6. emissive map + + var uvScaleMap; + + if ( material.map ) { + + uvScaleMap = material.map; + + } else if ( material.specularMap ) { + + uvScaleMap = material.specularMap; + + } else if ( material.displacementMap ) { + + uvScaleMap = material.displacementMap; + + } else if ( material.normalMap ) { + + uvScaleMap = material.normalMap; + + } else if ( material.bumpMap ) { + + uvScaleMap = material.bumpMap; + + } else if ( material.roughnessMap ) { + + uvScaleMap = material.roughnessMap; + + } else if ( material.metalnessMap ) { + + uvScaleMap = material.metalnessMap; + + } else if ( material.alphaMap ) { + + uvScaleMap = material.alphaMap; + + } else if ( material.emissiveMap ) { + + uvScaleMap = material.emissiveMap; + + } + + if ( uvScaleMap !== undefined ) { + + // backwards compatibility + if ( uvScaleMap.isWebGLRenderTarget ) { + + uvScaleMap = uvScaleMap.texture; + + } + + if ( uvScaleMap.matrixAutoUpdate === true ) { + + uvScaleMap.updateMatrix(); + + } + + uniforms.uvTransform.value.copy( uvScaleMap.matrix ); + + } + + } + + function refreshUniformsLine( uniforms, material ) { + + uniforms.diffuse.value.copy( material.color ); + uniforms.opacity.value = material.opacity; + + } + + function refreshUniformsDash( uniforms, material ) { + + uniforms.dashSize.value = material.dashSize; + uniforms.totalSize.value = material.dashSize + material.gapSize; + uniforms.scale.value = material.scale; + + } + + function refreshUniformsPoints( uniforms, material ) { + + uniforms.diffuse.value.copy( material.color ); + uniforms.opacity.value = material.opacity; + uniforms.size.value = material.size * _pixelRatio; + uniforms.scale.value = _height * 0.5; + + uniforms.map.value = material.map; + + if ( material.map !== null ) { + + if ( material.map.matrixAutoUpdate === true ) { + + material.map.updateMatrix(); + + } + + uniforms.uvTransform.value.copy( material.map.matrix ); + + } + + } + + function refreshUniformsSprites( uniforms, material ) { + + uniforms.diffuse.value.copy( material.color ); + uniforms.opacity.value = material.opacity; + uniforms.rotation.value = material.rotation; + uniforms.map.value = material.map; + + if ( material.map !== null ) { + + if ( material.map.matrixAutoUpdate === true ) { + + material.map.updateMatrix(); + + } + + uniforms.uvTransform.value.copy( material.map.matrix ); + + } + + } + + function refreshUniformsFog( uniforms, fog ) { + + uniforms.fogColor.value.copy( fog.color ); + + if ( fog.isFog ) { + + uniforms.fogNear.value = fog.near; + uniforms.fogFar.value = fog.far; + + } else if ( fog.isFogExp2 ) { + + uniforms.fogDensity.value = fog.density; + + } + + } + + function refreshUniformsLambert( uniforms, material ) { + + if ( material.emissiveMap ) { + + uniforms.emissiveMap.value = material.emissiveMap; + + } + + } + + function refreshUniformsPhong( uniforms, material ) { + + uniforms.specular.value.copy( material.specular ); + uniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 ) + + if ( material.emissiveMap ) { + + uniforms.emissiveMap.value = material.emissiveMap; + + } + + if ( material.bumpMap ) { + + uniforms.bumpMap.value = material.bumpMap; + uniforms.bumpScale.value = material.bumpScale; + if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1; + + } + + if ( material.normalMap ) { + + uniforms.normalMap.value = material.normalMap; + uniforms.normalScale.value.copy( material.normalScale ); + if ( material.side === BackSide ) uniforms.normalScale.value.negate(); + + } + + if ( material.displacementMap ) { + + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + + } + + } + + function refreshUniformsToon( uniforms, material ) { + + refreshUniformsPhong( uniforms, material ); + + if ( material.gradientMap ) { + + uniforms.gradientMap.value = material.gradientMap; + + } + + } + + function refreshUniformsStandard( uniforms, material ) { + + uniforms.roughness.value = material.roughness; + uniforms.metalness.value = material.metalness; + + if ( material.roughnessMap ) { + + uniforms.roughnessMap.value = material.roughnessMap; + + } + + if ( material.metalnessMap ) { + + uniforms.metalnessMap.value = material.metalnessMap; + + } + + if ( material.emissiveMap ) { + + uniforms.emissiveMap.value = material.emissiveMap; + + } + + if ( material.bumpMap ) { + + uniforms.bumpMap.value = material.bumpMap; + uniforms.bumpScale.value = material.bumpScale; + if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1; + + } + + if ( material.normalMap ) { + + uniforms.normalMap.value = material.normalMap; + uniforms.normalScale.value.copy( material.normalScale ); + if ( material.side === BackSide ) uniforms.normalScale.value.negate(); + + } + + if ( material.displacementMap ) { + + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + + } + + if ( material.envMap ) { + + //uniforms.envMap.value = material.envMap; // part of uniforms common + uniforms.envMapIntensity.value = material.envMapIntensity; + + } + + } + + function refreshUniformsPhysical( uniforms, material ) { + + refreshUniformsStandard( uniforms, material ); + + uniforms.reflectivity.value = material.reflectivity; // also part of uniforms common + + uniforms.clearCoat.value = material.clearCoat; + uniforms.clearCoatRoughness.value = material.clearCoatRoughness; + + } + + function refreshUniformsMatcap( uniforms, material ) { + + if ( material.matcap ) { + + uniforms.matcap.value = material.matcap; + + } + + if ( material.bumpMap ) { + + uniforms.bumpMap.value = material.bumpMap; + uniforms.bumpScale.value = material.bumpScale; + if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1; + + } + + if ( material.normalMap ) { + + uniforms.normalMap.value = material.normalMap; + uniforms.normalScale.value.copy( material.normalScale ); + if ( material.side === BackSide ) uniforms.normalScale.value.negate(); + + } + + if ( material.displacementMap ) { + + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + + } + + } + + function refreshUniformsDepth( uniforms, material ) { + + if ( material.displacementMap ) { + + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + + } + + } + + function refreshUniformsDistance( uniforms, material ) { + + if ( material.displacementMap ) { + + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + + } + + uniforms.referencePosition.value.copy( material.referencePosition ); + uniforms.nearDistance.value = material.nearDistance; + uniforms.farDistance.value = material.farDistance; + + } + + function refreshUniformsNormal( uniforms, material ) { + + if ( material.bumpMap ) { + + uniforms.bumpMap.value = material.bumpMap; + uniforms.bumpScale.value = material.bumpScale; + if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1; + + } + + if ( material.normalMap ) { + + uniforms.normalMap.value = material.normalMap; + uniforms.normalScale.value.copy( material.normalScale ); + if ( material.side === BackSide ) uniforms.normalScale.value.negate(); + + } + + if ( material.displacementMap ) { + + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + + } + + } + + // If uniforms are marked as clean, they don't need to be loaded to the GPU. + + function markUniformsLightsNeedsUpdate( uniforms, value ) { + + uniforms.ambientLightColor.needsUpdate = value; + uniforms.lightProbe.needsUpdate = value; + + uniforms.directionalLights.needsUpdate = value; + uniforms.pointLights.needsUpdate = value; + uniforms.spotLights.needsUpdate = value; + uniforms.rectAreaLights.needsUpdate = value; + uniforms.hemisphereLights.needsUpdate = value; + + } + + // + this.setFramebuffer = function ( value ) { + + if ( _framebuffer !== value ) _gl.bindFramebuffer( 36160, value ); + + _framebuffer = value; + + }; + + this.getActiveCubeFace = function () { + + return _currentActiveCubeFace; + + }; + + this.getActiveMipMapLevel = function () { + + return _currentActiveMipmapLevel; + + }; + + this.getRenderTarget = function () { + + return _currentRenderTarget; + + }; + + this.setRenderTarget = function ( renderTarget, activeCubeFace, activeMipMapLevel ) { + + _currentRenderTarget = renderTarget; + _currentActiveCubeFace = activeCubeFace; + _currentActiveMipmapLevel = activeMipMapLevel; + + if ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) { + + textures.setupRenderTarget( renderTarget ); + + } + + var framebuffer = _framebuffer; + var isCube = false; + + if ( renderTarget ) { + + var __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer; + + if ( renderTarget.isWebGLRenderTargetCube ) { + + framebuffer = __webglFramebuffer[ activeCubeFace || 0 ]; + isCube = true; + + } else if ( renderTarget.isWebGLMultisampleRenderTarget ) { + + framebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer; + + } else { + + framebuffer = __webglFramebuffer; + + } + + _currentViewport.copy( renderTarget.viewport ); + _currentScissor.copy( renderTarget.scissor ); + _currentScissorTest = renderTarget.scissorTest; + + } else { + + _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ); + _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ); + _currentScissorTest = _scissorTest; + + } + + if ( _currentFramebuffer !== framebuffer ) { + + _gl.bindFramebuffer( 36160, framebuffer ); + _currentFramebuffer = framebuffer; + + } + + state.viewport( _currentViewport ); + state.scissor( _currentScissor ); + state.setScissorTest( _currentScissorTest ); + + if ( isCube ) { + + var textureProperties = properties.get( renderTarget.texture ); + _gl.framebufferTexture2D( 36160, 36064, 34069 + ( activeCubeFace || 0 ), textureProperties.__webglTexture, activeMipMapLevel || 0 ); + + } + + }; + + this.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) { + + if ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) { + + console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' ); + return; + + } + + var framebuffer = properties.get( renderTarget ).__webglFramebuffer; + + if ( renderTarget.isWebGLRenderTargetCube && activeCubeFaceIndex !== undefined ) { + + framebuffer = framebuffer[ activeCubeFaceIndex ]; + + } + + if ( framebuffer ) { + + var restore = false; + + if ( framebuffer !== _currentFramebuffer ) { + + _gl.bindFramebuffer( 36160, framebuffer ); + + restore = true; + + } + + try { + + var texture = renderTarget.texture; + var textureFormat = texture.format; + var textureType = texture.type; + + if ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) { + + console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' ); + return; + + } + + if ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // IE11, Edge and Chrome Mac < 52 (#9513) + ! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.get( 'OES_texture_float' ) || extensions.get( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox + ! ( textureType === HalfFloatType && ( capabilities.isWebGL2 ? extensions.get( 'EXT_color_buffer_float' ) : extensions.get( 'EXT_color_buffer_half_float' ) ) ) ) { + + console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' ); + return; + + } + + if ( _gl.checkFramebufferStatus( 36160 ) === 36053 ) { + + // the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604) + + if ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) { + + _gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer ); + + } + + } else { + + console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' ); + + } + + } finally { + + if ( restore ) { + + _gl.bindFramebuffer( 36160, _currentFramebuffer ); + + } + + } + + } + + }; + + this.copyFramebufferToTexture = function ( position, texture, level ) { + + var width = texture.image.width; + var height = texture.image.height; + var glFormat = utils.convert( texture.format ); + + textures.setTexture2D( texture, 0 ); + + _gl.copyTexImage2D( 3553, level || 0, glFormat, position.x, position.y, width, height, 0 ); + + }; + + this.copyTextureToTexture = function ( position, srcTexture, dstTexture, level ) { + + var width = srcTexture.image.width; + var height = srcTexture.image.height; + var glFormat = utils.convert( dstTexture.format ); + var glType = utils.convert( dstTexture.type ); + + textures.setTexture2D( dstTexture, 0 ); + + if ( srcTexture.isDataTexture ) { + + _gl.texSubImage2D( 3553, level || 0, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data ); + + } else { + + _gl.texSubImage2D( 3553, level || 0, position.x, position.y, glFormat, glType, srcTexture.image ); + + } + + }; + + /* + if ( typeof __THREE_DEVTOOLS__ !== undefined ) { + __THREE_DEVTOOLS__.dispatchEvent( { type: 'renderer', value: this } ); + } + */ + + } + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + */ + + function FogExp2( color, density ) { + + this.name = ''; + + this.color = new Color( color ); + this.density = ( density !== undefined ) ? density : 0.00025; + + } + + Object.assign( FogExp2.prototype, { + + isFogExp2: true, + + clone: function () { + + return new FogExp2( this.color, this.density ); + + }, + + toJSON: function ( /* meta */ ) { + + return { + type: 'FogExp2', + color: this.color.getHex(), + density: this.density + }; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + */ + + function Fog( color, near, far ) { + + this.name = ''; + + this.color = new Color( color ); + + this.near = ( near !== undefined ) ? near : 1; + this.far = ( far !== undefined ) ? far : 1000; + + } + + Object.assign( Fog.prototype, { + + isFog: true, + + clone: function () { + + return new Fog( this.color, this.near, this.far ); + + }, + + toJSON: function ( /* meta */ ) { + + return { + type: 'Fog', + color: this.color.getHex(), + near: this.near, + far: this.far + }; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function Scene() { + + Object3D.call( this ); + + this.type = 'Scene'; + + this.background = null; + this.fog = null; + this.overrideMaterial = null; + + this.autoUpdate = true; // checked by the renderer + + /* + if ( typeof __THREE_DEVTOOLS__ !== undefined ) { + __THREE_DEVTOOLS__.dispatchEvent( { type: 'scene', value: this } ); + } + */ + + } + + Scene.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Scene, + + isScene: true, + + copy: function ( source, recursive ) { + + Object3D.prototype.copy.call( this, source, recursive ); + + if ( source.background !== null ) this.background = source.background.clone(); + if ( source.fog !== null ) this.fog = source.fog.clone(); + if ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone(); + + this.autoUpdate = source.autoUpdate; + this.matrixAutoUpdate = source.matrixAutoUpdate; + + return this; + + }, + + toJSON: function ( meta ) { + + var data = Object3D.prototype.toJSON.call( this, meta ); + + if ( this.background !== null ) data.object.background = this.background.toJSON( meta ); + if ( this.fog !== null ) data.object.fog = this.fog.toJSON(); + + return data; + + }, + + dispose: function () { + + this.dispatchEvent( { type: 'dispose' } ); + + } + + } ); + + /** + * @author benaadams / https://twitter.com/ben_a_adams + */ + + function InterleavedBuffer( array, stride ) { + + this.array = array; + this.stride = stride; + this.count = array !== undefined ? array.length / stride : 0; + + this.dynamic = false; + this.updateRange = { offset: 0, count: - 1 }; + + this.version = 0; + + } + + Object.defineProperty( InterleavedBuffer.prototype, 'needsUpdate', { + + set: function ( value ) { + + if ( value === true ) this.version ++; + + } + + } ); + + Object.assign( InterleavedBuffer.prototype, { + + isInterleavedBuffer: true, + + onUploadCallback: function () {}, + + setArray: function ( array ) { + + if ( Array.isArray( array ) ) { + + throw new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' ); + + } + + this.count = array !== undefined ? array.length / this.stride : 0; + this.array = array; + + return this; + + }, + + setDynamic: function ( value ) { + + this.dynamic = value; + + return this; + + }, + + copy: function ( source ) { + + this.array = new source.array.constructor( source.array ); + this.count = source.count; + this.stride = source.stride; + this.dynamic = source.dynamic; + + return this; + + }, + + copyAt: function ( index1, attribute, index2 ) { + + index1 *= this.stride; + index2 *= attribute.stride; + + for ( var i = 0, l = this.stride; i < l; i ++ ) { + + this.array[ index1 + i ] = attribute.array[ index2 + i ]; + + } + + return this; + + }, + + set: function ( value, offset ) { + + if ( offset === undefined ) offset = 0; + + this.array.set( value, offset ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + onUpload: function ( callback ) { + + this.onUploadCallback = callback; + + return this; + + } + + } ); + + /** + * @author benaadams / https://twitter.com/ben_a_adams + */ + + function InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) { + + this.data = interleavedBuffer; + this.itemSize = itemSize; + this.offset = offset; + + this.normalized = normalized === true; + + } + + Object.defineProperties( InterleavedBufferAttribute.prototype, { + + count: { + + get: function () { + + return this.data.count; + + } + + }, + + array: { + + get: function () { + + return this.data.array; + + } + + } + + } ); + + Object.assign( InterleavedBufferAttribute.prototype, { + + isInterleavedBufferAttribute: true, + + setX: function ( index, x ) { + + this.data.array[ index * this.data.stride + this.offset ] = x; + + return this; + + }, + + setY: function ( index, y ) { + + this.data.array[ index * this.data.stride + this.offset + 1 ] = y; + + return this; + + }, + + setZ: function ( index, z ) { + + this.data.array[ index * this.data.stride + this.offset + 2 ] = z; + + return this; + + }, + + setW: function ( index, w ) { + + this.data.array[ index * this.data.stride + this.offset + 3 ] = w; + + return this; + + }, + + getX: function ( index ) { + + return this.data.array[ index * this.data.stride + this.offset ]; + + }, + + getY: function ( index ) { + + return this.data.array[ index * this.data.stride + this.offset + 1 ]; + + }, + + getZ: function ( index ) { + + return this.data.array[ index * this.data.stride + this.offset + 2 ]; + + }, + + getW: function ( index ) { + + return this.data.array[ index * this.data.stride + this.offset + 3 ]; + + }, + + setXY: function ( index, x, y ) { + + index = index * this.data.stride + this.offset; + + this.data.array[ index + 0 ] = x; + this.data.array[ index + 1 ] = y; + + return this; + + }, + + setXYZ: function ( index, x, y, z ) { + + index = index * this.data.stride + this.offset; + + this.data.array[ index + 0 ] = x; + this.data.array[ index + 1 ] = y; + this.data.array[ index + 2 ] = z; + + return this; + + }, + + setXYZW: function ( index, x, y, z, w ) { + + index = index * this.data.stride + this.offset; + + this.data.array[ index + 0 ] = x; + this.data.array[ index + 1 ] = y; + this.data.array[ index + 2 ] = z; + this.data.array[ index + 3 ] = w; + + return this; + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * color: , + * map: new THREE.Texture( ), + * rotation: , + * sizeAttenuation: + * } + */ + + function SpriteMaterial( parameters ) { + + Material.call( this ); + + this.type = 'SpriteMaterial'; + + this.color = new Color( 0xffffff ); + this.map = null; + + this.rotation = 0; + + this.sizeAttenuation = true; + + this.lights = false; + this.transparent = true; + + this.setValues( parameters ); + + } + + SpriteMaterial.prototype = Object.create( Material.prototype ); + SpriteMaterial.prototype.constructor = SpriteMaterial; + SpriteMaterial.prototype.isSpriteMaterial = true; + + SpriteMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + this.map = source.map; + + this.rotation = source.rotation; + + this.sizeAttenuation = source.sizeAttenuation; + + return this; + + }; + + /** + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + */ + + var geometry; + + function Sprite( material ) { + + Object3D.call( this ); + + this.type = 'Sprite'; + + if ( geometry === undefined ) { + + geometry = new BufferGeometry(); + + var float32Array = new Float32Array( [ + - 0.5, - 0.5, 0, 0, 0, + 0.5, - 0.5, 0, 1, 0, + 0.5, 0.5, 0, 1, 1, + - 0.5, 0.5, 0, 0, 1 + ] ); + + var interleavedBuffer = new InterleavedBuffer( float32Array, 5 ); + + geometry.setIndex( [ 0, 1, 2, 0, 2, 3 ] ); + geometry.addAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) ); + geometry.addAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) ); + + } + + this.geometry = geometry; + this.material = ( material !== undefined ) ? material : new SpriteMaterial(); + + this.center = new Vector2( 0.5, 0.5 ); + + } + + Sprite.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Sprite, + + isSprite: true, + + raycast: ( function () { + + var intersectPoint = new Vector3(); + var worldScale = new Vector3(); + var mvPosition = new Vector3(); + + var alignedPosition = new Vector2(); + var rotatedPosition = new Vector2(); + var viewWorldMatrix = new Matrix4(); + + var vA = new Vector3(); + var vB = new Vector3(); + var vC = new Vector3(); + + var uvA = new Vector2(); + var uvB = new Vector2(); + var uvC = new Vector2(); + + function transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) { + + // compute position in camera space + alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale ); + + // to check if rotation is not zero + if ( sin !== undefined ) { + + rotatedPosition.x = ( cos * alignedPosition.x ) - ( sin * alignedPosition.y ); + rotatedPosition.y = ( sin * alignedPosition.x ) + ( cos * alignedPosition.y ); + + } else { + + rotatedPosition.copy( alignedPosition ); + + } + + + vertexPosition.copy( mvPosition ); + vertexPosition.x += rotatedPosition.x; + vertexPosition.y += rotatedPosition.y; + + // transform to world space + vertexPosition.applyMatrix4( viewWorldMatrix ); + + } + + return function raycast( raycaster, intersects ) { + + worldScale.setFromMatrixScale( this.matrixWorld ); + viewWorldMatrix.getInverse( this.modelViewMatrix ).premultiply( this.matrixWorld ); + mvPosition.setFromMatrixPosition( this.modelViewMatrix ); + + var rotation = this.material.rotation; + var sin, cos; + if ( rotation !== 0 ) { + + cos = Math.cos( rotation ); + sin = Math.sin( rotation ); + + } + + var center = this.center; + + transformVertex( vA.set( - 0.5, - 0.5, 0 ), mvPosition, center, worldScale, sin, cos ); + transformVertex( vB.set( 0.5, - 0.5, 0 ), mvPosition, center, worldScale, sin, cos ); + transformVertex( vC.set( 0.5, 0.5, 0 ), mvPosition, center, worldScale, sin, cos ); + + uvA.set( 0, 0 ); + uvB.set( 1, 0 ); + uvC.set( 1, 1 ); + + // check first triangle + var intersect = raycaster.ray.intersectTriangle( vA, vB, vC, false, intersectPoint ); + + if ( intersect === null ) { + + // check second triangle + transformVertex( vB.set( - 0.5, 0.5, 0 ), mvPosition, center, worldScale, sin, cos ); + uvB.set( 0, 1 ); + + intersect = raycaster.ray.intersectTriangle( vA, vC, vB, false, intersectPoint ); + if ( intersect === null ) { + + return; + + } + + } + + var distance = raycaster.ray.origin.distanceTo( intersectPoint ); + + if ( distance < raycaster.near || distance > raycaster.far ) return; + + intersects.push( { + + distance: distance, + point: intersectPoint.clone(), + uv: Triangle.getUV( intersectPoint, vA, vB, vC, uvA, uvB, uvC, new Vector2() ), + face: null, + object: this + + } ); + + }; + + }() ), + + clone: function () { + + return new this.constructor( this.material ).copy( this ); + + }, + + copy: function ( source ) { + + Object3D.prototype.copy.call( this, source ); + + if ( source.center !== undefined ) this.center.copy( source.center ); + + return this; + + } + + + } ); + + /** + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + */ + + function LOD() { + + Object3D.call( this ); + + this.type = 'LOD'; + + Object.defineProperties( this, { + levels: { + enumerable: true, + value: [] + } + } ); + + } + + LOD.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: LOD, + + isLOD: true, + + copy: function ( source ) { + + Object3D.prototype.copy.call( this, source, false ); + + var levels = source.levels; + + for ( var i = 0, l = levels.length; i < l; i ++ ) { + + var level = levels[ i ]; + + this.addLevel( level.object.clone(), level.distance ); + + } + + return this; + + }, + + addLevel: function ( object, distance ) { + + if ( distance === undefined ) distance = 0; + + distance = Math.abs( distance ); + + var levels = this.levels; + + for ( var l = 0; l < levels.length; l ++ ) { + + if ( distance < levels[ l ].distance ) { + + break; + + } + + } + + levels.splice( l, 0, { distance: distance, object: object } ); + + this.add( object ); + + return this; + + }, + + getObjectForDistance: function ( distance ) { + + var levels = this.levels; + + for ( var i = 1, l = levels.length; i < l; i ++ ) { + + if ( distance < levels[ i ].distance ) { + + break; + + } + + } + + return levels[ i - 1 ].object; + + }, + + raycast: ( function () { + + var matrixPosition = new Vector3(); + + return function raycast( raycaster, intersects ) { + + matrixPosition.setFromMatrixPosition( this.matrixWorld ); + + var distance = raycaster.ray.origin.distanceTo( matrixPosition ); + + this.getObjectForDistance( distance ).raycast( raycaster, intersects ); + + }; + + }() ), + + update: function () { + + var v1 = new Vector3(); + var v2 = new Vector3(); + + return function update( camera ) { + + var levels = this.levels; + + if ( levels.length > 1 ) { + + v1.setFromMatrixPosition( camera.matrixWorld ); + v2.setFromMatrixPosition( this.matrixWorld ); + + var distance = v1.distanceTo( v2 ); + + levels[ 0 ].object.visible = true; + + for ( var i = 1, l = levels.length; i < l; i ++ ) { + + if ( distance >= levels[ i ].distance ) { + + levels[ i - 1 ].object.visible = false; + levels[ i ].object.visible = true; + + } else { + + break; + + } + + } + + for ( ; i < l; i ++ ) { + + levels[ i ].object.visible = false; + + } + + } + + }; + + }(), + + toJSON: function ( meta ) { + + var data = Object3D.prototype.toJSON.call( this, meta ); + + data.object.levels = []; + + var levels = this.levels; + + for ( var i = 0, l = levels.length; i < l; i ++ ) { + + var level = levels[ i ]; + + data.object.levels.push( { + object: level.object.uuid, + distance: level.distance + } ); + + } + + return data; + + } + + } ); + + /** + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + * @author ikerr / http://verold.com + */ + + function SkinnedMesh( geometry, material ) { + + if ( geometry && geometry.isGeometry ) { + + console.error( 'THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' ); + + } + + Mesh.call( this, geometry, material ); + + this.type = 'SkinnedMesh'; + + this.bindMode = 'attached'; + this.bindMatrix = new Matrix4(); + this.bindMatrixInverse = new Matrix4(); + + } + + SkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), { + + constructor: SkinnedMesh, + + isSkinnedMesh: true, + + bind: function ( skeleton, bindMatrix ) { + + this.skeleton = skeleton; + + if ( bindMatrix === undefined ) { + + this.updateMatrixWorld( true ); + + this.skeleton.calculateInverses(); + + bindMatrix = this.matrixWorld; + + } + + this.bindMatrix.copy( bindMatrix ); + this.bindMatrixInverse.getInverse( bindMatrix ); + + }, + + pose: function () { + + this.skeleton.pose(); + + }, + + normalizeSkinWeights: function () { + + var vector = new Vector4(); + + var skinWeight = this.geometry.attributes.skinWeight; + + for ( var i = 0, l = skinWeight.count; i < l; i ++ ) { + + vector.x = skinWeight.getX( i ); + vector.y = skinWeight.getY( i ); + vector.z = skinWeight.getZ( i ); + vector.w = skinWeight.getW( i ); + + var scale = 1.0 / vector.manhattanLength(); + + if ( scale !== Infinity ) { + + vector.multiplyScalar( scale ); + + } else { + + vector.set( 1, 0, 0, 0 ); // do something reasonable + + } + + skinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w ); + + } + + }, + + updateMatrixWorld: function ( force ) { + + Mesh.prototype.updateMatrixWorld.call( this, force ); + + if ( this.bindMode === 'attached' ) { + + this.bindMatrixInverse.getInverse( this.matrixWorld ); + + } else if ( this.bindMode === 'detached' ) { + + this.bindMatrixInverse.getInverse( this.bindMatrix ); + + } else { + + console.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode ); + + } + + }, + + clone: function () { + + return new this.constructor( this.geometry, this.material ).copy( this ); + + } + + } ); + + /** + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + * @author michael guerrero / http://realitymeltdown.com + * @author ikerr / http://verold.com + */ + + function Skeleton( bones, boneInverses ) { + + // copy the bone array + + bones = bones || []; + + this.bones = bones.slice( 0 ); + this.boneMatrices = new Float32Array( this.bones.length * 16 ); + + // use the supplied bone inverses or calculate the inverses + + if ( boneInverses === undefined ) { + + this.calculateInverses(); + + } else { + + if ( this.bones.length === boneInverses.length ) { + + this.boneInverses = boneInverses.slice( 0 ); + + } else { + + console.warn( 'THREE.Skeleton boneInverses is the wrong length.' ); + + this.boneInverses = []; + + for ( var i = 0, il = this.bones.length; i < il; i ++ ) { + + this.boneInverses.push( new Matrix4() ); + + } + + } + + } + + } + + Object.assign( Skeleton.prototype, { + + calculateInverses: function () { + + this.boneInverses = []; + + for ( var i = 0, il = this.bones.length; i < il; i ++ ) { + + var inverse = new Matrix4(); + + if ( this.bones[ i ] ) { + + inverse.getInverse( this.bones[ i ].matrixWorld ); + + } + + this.boneInverses.push( inverse ); + + } + + }, + + pose: function () { + + var bone, i, il; + + // recover the bind-time world matrices + + for ( i = 0, il = this.bones.length; i < il; i ++ ) { + + bone = this.bones[ i ]; + + if ( bone ) { + + bone.matrixWorld.getInverse( this.boneInverses[ i ] ); + + } + + } + + // compute the local matrices, positions, rotations and scales + + for ( i = 0, il = this.bones.length; i < il; i ++ ) { + + bone = this.bones[ i ]; + + if ( bone ) { + + if ( bone.parent && bone.parent.isBone ) { + + bone.matrix.getInverse( bone.parent.matrixWorld ); + bone.matrix.multiply( bone.matrixWorld ); + + } else { + + bone.matrix.copy( bone.matrixWorld ); + + } + + bone.matrix.decompose( bone.position, bone.quaternion, bone.scale ); + + } + + } + + }, + + update: ( function () { + + var offsetMatrix = new Matrix4(); + var identityMatrix = new Matrix4(); + + return function update() { + + var bones = this.bones; + var boneInverses = this.boneInverses; + var boneMatrices = this.boneMatrices; + var boneTexture = this.boneTexture; + + // flatten bone matrices to array + + for ( var i = 0, il = bones.length; i < il; i ++ ) { + + // compute the offset between the current and the original transform + + var matrix = bones[ i ] ? bones[ i ].matrixWorld : identityMatrix; + + offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] ); + offsetMatrix.toArray( boneMatrices, i * 16 ); + + } + + if ( boneTexture !== undefined ) { + + boneTexture.needsUpdate = true; + + } + + }; + + } )(), + + clone: function () { + + return new Skeleton( this.bones, this.boneInverses ); + + }, + + getBoneByName: function ( name ) { + + for ( var i = 0, il = this.bones.length; i < il; i ++ ) { + + var bone = this.bones[ i ]; + + if ( bone.name === name ) { + + return bone; + + } + + } + + return undefined; + + } + + } ); + + /** + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + * @author ikerr / http://verold.com + */ + + function Bone() { + + Object3D.call( this ); + + this.type = 'Bone'; + + } + + Bone.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Bone, + + isBone: true + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * color: , + * opacity: , + * + * linewidth: , + * linecap: "round", + * linejoin: "round" + * } + */ + + function LineBasicMaterial( parameters ) { + + Material.call( this ); + + this.type = 'LineBasicMaterial'; + + this.color = new Color( 0xffffff ); + + this.linewidth = 1; + this.linecap = 'round'; + this.linejoin = 'round'; + + this.lights = false; + + this.setValues( parameters ); + + } + + LineBasicMaterial.prototype = Object.create( Material.prototype ); + LineBasicMaterial.prototype.constructor = LineBasicMaterial; + + LineBasicMaterial.prototype.isLineBasicMaterial = true; + + LineBasicMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + + this.linewidth = source.linewidth; + this.linecap = source.linecap; + this.linejoin = source.linejoin; + + return this; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function Line( geometry, material, mode ) { + + if ( mode === 1 ) { + + console.error( 'THREE.Line: parameter THREE.LinePieces no longer supported. Use THREE.LineSegments instead.' ); + + } + + Object3D.call( this ); + + this.type = 'Line'; + + this.geometry = geometry !== undefined ? geometry : new BufferGeometry(); + this.material = material !== undefined ? material : new LineBasicMaterial( { color: Math.random() * 0xffffff } ); + + } + + Line.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Line, + + isLine: true, + + computeLineDistances: ( function () { + + var start = new Vector3(); + var end = new Vector3(); + + return function computeLineDistances() { + + var geometry = this.geometry; + + if ( geometry.isBufferGeometry ) { + + // we assume non-indexed geometry + + if ( geometry.index === null ) { + + var positionAttribute = geometry.attributes.position; + var lineDistances = [ 0 ]; + + for ( var i = 1, l = positionAttribute.count; i < l; i ++ ) { + + start.fromBufferAttribute( positionAttribute, i - 1 ); + end.fromBufferAttribute( positionAttribute, i ); + + lineDistances[ i ] = lineDistances[ i - 1 ]; + lineDistances[ i ] += start.distanceTo( end ); + + } + + geometry.addAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) ); + + } else { + + console.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' ); + + } + + } else if ( geometry.isGeometry ) { + + var vertices = geometry.vertices; + var lineDistances = geometry.lineDistances; + + lineDistances[ 0 ] = 0; + + for ( var i = 1, l = vertices.length; i < l; i ++ ) { + + lineDistances[ i ] = lineDistances[ i - 1 ]; + lineDistances[ i ] += vertices[ i - 1 ].distanceTo( vertices[ i ] ); + + } + + } + + return this; + + }; + + }() ), + + raycast: ( function () { + + var inverseMatrix = new Matrix4(); + var ray = new Ray(); + var sphere = new Sphere(); + + return function raycast( raycaster, intersects ) { + + var precision = raycaster.linePrecision; + + var geometry = this.geometry; + var matrixWorld = this.matrixWorld; + + // Checking boundingSphere distance to ray + + if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere(); + + sphere.copy( geometry.boundingSphere ); + sphere.applyMatrix4( matrixWorld ); + sphere.radius += precision; + + if ( raycaster.ray.intersectsSphere( sphere ) === false ) return; + + // + + inverseMatrix.getInverse( matrixWorld ); + ray.copy( raycaster.ray ).applyMatrix4( inverseMatrix ); + + var localPrecision = precision / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 ); + var localPrecisionSq = localPrecision * localPrecision; + + var vStart = new Vector3(); + var vEnd = new Vector3(); + var interSegment = new Vector3(); + var interRay = new Vector3(); + var step = ( this && this.isLineSegments ) ? 2 : 1; + + if ( geometry.isBufferGeometry ) { + + var index = geometry.index; + var attributes = geometry.attributes; + var positions = attributes.position.array; + + if ( index !== null ) { + + var indices = index.array; + + for ( var i = 0, l = indices.length - 1; i < l; i += step ) { + + var a = indices[ i ]; + var b = indices[ i + 1 ]; + + vStart.fromArray( positions, a * 3 ); + vEnd.fromArray( positions, b * 3 ); + + var distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment ); + + if ( distSq > localPrecisionSq ) continue; + + interRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation + + var distance = raycaster.ray.origin.distanceTo( interRay ); + + if ( distance < raycaster.near || distance > raycaster.far ) continue; + + intersects.push( { + + distance: distance, + // What do we want? intersection point on the ray or on the segment?? + // point: raycaster.ray.at( distance ), + point: interSegment.clone().applyMatrix4( this.matrixWorld ), + index: i, + face: null, + faceIndex: null, + object: this + + } ); + + } + + } else { + + for ( var i = 0, l = positions.length / 3 - 1; i < l; i += step ) { + + vStart.fromArray( positions, 3 * i ); + vEnd.fromArray( positions, 3 * i + 3 ); + + var distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment ); + + if ( distSq > localPrecisionSq ) continue; + + interRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation + + var distance = raycaster.ray.origin.distanceTo( interRay ); + + if ( distance < raycaster.near || distance > raycaster.far ) continue; + + intersects.push( { + + distance: distance, + // What do we want? intersection point on the ray or on the segment?? + // point: raycaster.ray.at( distance ), + point: interSegment.clone().applyMatrix4( this.matrixWorld ), + index: i, + face: null, + faceIndex: null, + object: this + + } ); + + } + + } + + } else if ( geometry.isGeometry ) { + + var vertices = geometry.vertices; + var nbVertices = vertices.length; + + for ( var i = 0; i < nbVertices - 1; i += step ) { + + var distSq = ray.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment ); + + if ( distSq > localPrecisionSq ) continue; + + interRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation + + var distance = raycaster.ray.origin.distanceTo( interRay ); + + if ( distance < raycaster.near || distance > raycaster.far ) continue; + + intersects.push( { + + distance: distance, + // What do we want? intersection point on the ray or on the segment?? + // point: raycaster.ray.at( distance ), + point: interSegment.clone().applyMatrix4( this.matrixWorld ), + index: i, + face: null, + faceIndex: null, + object: this + + } ); + + } + + } + + }; + + }() ), + + clone: function () { + + return new this.constructor( this.geometry, this.material ).copy( this ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function LineSegments( geometry, material ) { + + Line.call( this, geometry, material ); + + this.type = 'LineSegments'; + + } + + LineSegments.prototype = Object.assign( Object.create( Line.prototype ), { + + constructor: LineSegments, + + isLineSegments: true, + + computeLineDistances: ( function () { + + var start = new Vector3(); + var end = new Vector3(); + + return function computeLineDistances() { + + var geometry = this.geometry; + + if ( geometry.isBufferGeometry ) { + + // we assume non-indexed geometry + + if ( geometry.index === null ) { + + var positionAttribute = geometry.attributes.position; + var lineDistances = []; + + for ( var i = 0, l = positionAttribute.count; i < l; i += 2 ) { + + start.fromBufferAttribute( positionAttribute, i ); + end.fromBufferAttribute( positionAttribute, i + 1 ); + + lineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ]; + lineDistances[ i + 1 ] = lineDistances[ i ] + start.distanceTo( end ); + + } + + geometry.addAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) ); + + } else { + + console.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' ); + + } + + } else if ( geometry.isGeometry ) { + + var vertices = geometry.vertices; + var lineDistances = geometry.lineDistances; + + for ( var i = 0, l = vertices.length; i < l; i += 2 ) { + + start.copy( vertices[ i ] ); + end.copy( vertices[ i + 1 ] ); + + lineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ]; + lineDistances[ i + 1 ] = lineDistances[ i ] + start.distanceTo( end ); + + } + + } + + return this; + + }; + + }() ) + + } ); + + /** + * @author mgreter / http://github.com/mgreter + */ + + function LineLoop( geometry, material ) { + + Line.call( this, geometry, material ); + + this.type = 'LineLoop'; + + } + + LineLoop.prototype = Object.assign( Object.create( Line.prototype ), { + + constructor: LineLoop, + + isLineLoop: true, + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * color: , + * opacity: , + * map: new THREE.Texture( ), + * + * size: , + * sizeAttenuation: + * + * morphTargets: + * } + */ + + function PointsMaterial( parameters ) { + + Material.call( this ); + + this.type = 'PointsMaterial'; + + this.color = new Color( 0xffffff ); + + this.map = null; + + this.size = 1; + this.sizeAttenuation = true; + + this.morphTargets = false; + + this.lights = false; + + this.setValues( parameters ); + + } + + PointsMaterial.prototype = Object.create( Material.prototype ); + PointsMaterial.prototype.constructor = PointsMaterial; + + PointsMaterial.prototype.isPointsMaterial = true; + + PointsMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + + this.map = source.map; + + this.size = source.size; + this.sizeAttenuation = source.sizeAttenuation; + + this.morphTargets = source.morphTargets; + + return this; + + }; + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function Points( geometry, material ) { + + Object3D.call( this ); + + this.type = 'Points'; + + this.geometry = geometry !== undefined ? geometry : new BufferGeometry(); + this.material = material !== undefined ? material : new PointsMaterial( { color: Math.random() * 0xffffff } ); + + } + + Points.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Points, + + isPoints: true, + + raycast: ( function () { + + var inverseMatrix = new Matrix4(); + var ray = new Ray(); + var sphere = new Sphere(); + + return function raycast( raycaster, intersects ) { + + var object = this; + var geometry = this.geometry; + var matrixWorld = this.matrixWorld; + var threshold = raycaster.params.Points.threshold; + + // Checking boundingSphere distance to ray + + if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere(); + + sphere.copy( geometry.boundingSphere ); + sphere.applyMatrix4( matrixWorld ); + sphere.radius += threshold; + + if ( raycaster.ray.intersectsSphere( sphere ) === false ) return; + + // + + inverseMatrix.getInverse( matrixWorld ); + ray.copy( raycaster.ray ).applyMatrix4( inverseMatrix ); + + var localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 ); + var localThresholdSq = localThreshold * localThreshold; + var position = new Vector3(); + var intersectPoint = new Vector3(); + + function testPoint( point, index ) { + + var rayPointDistanceSq = ray.distanceSqToPoint( point ); + + if ( rayPointDistanceSq < localThresholdSq ) { + + ray.closestPointToPoint( point, intersectPoint ); + intersectPoint.applyMatrix4( matrixWorld ); + + var distance = raycaster.ray.origin.distanceTo( intersectPoint ); + + if ( distance < raycaster.near || distance > raycaster.far ) return; + + intersects.push( { + + distance: distance, + distanceToRay: Math.sqrt( rayPointDistanceSq ), + point: intersectPoint.clone(), + index: index, + face: null, + object: object + + } ); + + } + + } + + if ( geometry.isBufferGeometry ) { + + var index = geometry.index; + var attributes = geometry.attributes; + var positions = attributes.position.array; + + if ( index !== null ) { + + var indices = index.array; + + for ( var i = 0, il = indices.length; i < il; i ++ ) { + + var a = indices[ i ]; + + position.fromArray( positions, a * 3 ); + + testPoint( position, a ); + + } + + } else { + + for ( var i = 0, l = positions.length / 3; i < l; i ++ ) { + + position.fromArray( positions, i * 3 ); + + testPoint( position, i ); + + } + + } + + } else { + + var vertices = geometry.vertices; + + for ( var i = 0, l = vertices.length; i < l; i ++ ) { + + testPoint( vertices[ i ], i ); + + } + + } + + }; + + }() ), + + clone: function () { + + return new this.constructor( this.geometry, this.material ).copy( this ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) { + + Texture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ); + + this.format = format !== undefined ? format : RGBFormat; + + this.minFilter = minFilter !== undefined ? minFilter : LinearFilter; + this.magFilter = magFilter !== undefined ? magFilter : LinearFilter; + + this.generateMipmaps = false; + + } + + VideoTexture.prototype = Object.assign( Object.create( Texture.prototype ), { + + constructor: VideoTexture, + + isVideoTexture: true, + + update: function () { + + var video = this.image; + + if ( video.readyState >= video.HAVE_CURRENT_DATA ) { + + this.needsUpdate = true; + + } + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) { + + Texture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ); + + this.image = { width: width, height: height }; + this.mipmaps = mipmaps; + + // no flipping for cube textures + // (also flipping doesn't work for compressed textures ) + + this.flipY = false; + + // can't generate mipmaps for compressed textures + // mips must be embedded in DDS files + + this.generateMipmaps = false; + + } + + CompressedTexture.prototype = Object.create( Texture.prototype ); + CompressedTexture.prototype.constructor = CompressedTexture; + + CompressedTexture.prototype.isCompressedTexture = true; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) { + + Texture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ); + + this.needsUpdate = true; + + } + + CanvasTexture.prototype = Object.create( Texture.prototype ); + CanvasTexture.prototype.constructor = CanvasTexture; + CanvasTexture.prototype.isCanvasTexture = true; + + /** + * @author Matt DesLauriers / @mattdesl + * @author atix / arthursilber.de + */ + + function DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) { + + format = format !== undefined ? format : DepthFormat; + + if ( format !== DepthFormat && format !== DepthStencilFormat ) { + + throw new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' ); + + } + + if ( type === undefined && format === DepthFormat ) type = UnsignedShortType; + if ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type; + + Texture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ); + + this.image = { width: width, height: height }; + + this.magFilter = magFilter !== undefined ? magFilter : NearestFilter; + this.minFilter = minFilter !== undefined ? minFilter : NearestFilter; + + this.flipY = false; + this.generateMipmaps = false; + + } + + DepthTexture.prototype = Object.create( Texture.prototype ); + DepthTexture.prototype.constructor = DepthTexture; + DepthTexture.prototype.isDepthTexture = true; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / https://github.com/Mugen87 + */ + + function WireframeGeometry( geometry ) { + + BufferGeometry.call( this ); + + this.type = 'WireframeGeometry'; + + // buffer + + var vertices = []; + + // helper variables + + var i, j, l, o, ol; + var edge = [ 0, 0 ], edges = {}, e, edge1, edge2; + var key, keys = [ 'a', 'b', 'c' ]; + var vertex; + + // different logic for Geometry and BufferGeometry + + if ( geometry && geometry.isGeometry ) { + + // create a data structure that contains all edges without duplicates + + var faces = geometry.faces; + + for ( i = 0, l = faces.length; i < l; i ++ ) { + + var face = faces[ i ]; + + for ( j = 0; j < 3; j ++ ) { + + edge1 = face[ keys[ j ] ]; + edge2 = face[ keys[ ( j + 1 ) % 3 ] ]; + edge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates + edge[ 1 ] = Math.max( edge1, edge2 ); + + key = edge[ 0 ] + ',' + edge[ 1 ]; + + if ( edges[ key ] === undefined ) { + + edges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] }; + + } + + } + + } + + // generate vertices + + for ( key in edges ) { + + e = edges[ key ]; + + vertex = geometry.vertices[ e.index1 ]; + vertices.push( vertex.x, vertex.y, vertex.z ); + + vertex = geometry.vertices[ e.index2 ]; + vertices.push( vertex.x, vertex.y, vertex.z ); + + } + + } else if ( geometry && geometry.isBufferGeometry ) { + + var position, indices, groups; + var group, start, count; + var index1, index2; + + vertex = new Vector3(); + + if ( geometry.index !== null ) { + + // indexed BufferGeometry + + position = geometry.attributes.position; + indices = geometry.index; + groups = geometry.groups; + + if ( groups.length === 0 ) { + + groups = [ { start: 0, count: indices.count, materialIndex: 0 } ]; + + } + + // create a data structure that contains all eges without duplicates + + for ( o = 0, ol = groups.length; o < ol; ++ o ) { + + group = groups[ o ]; + + start = group.start; + count = group.count; + + for ( i = start, l = ( start + count ); i < l; i += 3 ) { + + for ( j = 0; j < 3; j ++ ) { + + edge1 = indices.getX( i + j ); + edge2 = indices.getX( i + ( j + 1 ) % 3 ); + edge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates + edge[ 1 ] = Math.max( edge1, edge2 ); + + key = edge[ 0 ] + ',' + edge[ 1 ]; + + if ( edges[ key ] === undefined ) { + + edges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] }; + + } + + } + + } + + } + + // generate vertices + + for ( key in edges ) { + + e = edges[ key ]; + + vertex.fromBufferAttribute( position, e.index1 ); + vertices.push( vertex.x, vertex.y, vertex.z ); + + vertex.fromBufferAttribute( position, e.index2 ); + vertices.push( vertex.x, vertex.y, vertex.z ); + + } + + } else { + + // non-indexed BufferGeometry + + position = geometry.attributes.position; + + for ( i = 0, l = ( position.count / 3 ); i < l; i ++ ) { + + for ( j = 0; j < 3; j ++ ) { + + // three edges per triangle, an edge is represented as (index1, index2) + // e.g. the first triangle has the following edges: (0,1),(1,2),(2,0) + + index1 = 3 * i + j; + vertex.fromBufferAttribute( position, index1 ); + vertices.push( vertex.x, vertex.y, vertex.z ); + + index2 = 3 * i + ( ( j + 1 ) % 3 ); + vertex.fromBufferAttribute( position, index2 ); + vertices.push( vertex.x, vertex.y, vertex.z ); + + } + + } + + } + + } + + // build geometry + + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + + } + + WireframeGeometry.prototype = Object.create( BufferGeometry.prototype ); + WireframeGeometry.prototype.constructor = WireframeGeometry; + + /** + * @author zz85 / https://github.com/zz85 + * @author Mugen87 / https://github.com/Mugen87 + * + * Parametric Surfaces Geometry + * based on the brilliant article by @prideout http://prideout.net/blog/?p=44 + */ + + // ParametricGeometry + + function ParametricGeometry( func, slices, stacks ) { + + Geometry.call( this ); + + this.type = 'ParametricGeometry'; + + this.parameters = { + func: func, + slices: slices, + stacks: stacks + }; + + this.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) ); + this.mergeVertices(); + + } + + ParametricGeometry.prototype = Object.create( Geometry.prototype ); + ParametricGeometry.prototype.constructor = ParametricGeometry; + + // ParametricBufferGeometry + + function ParametricBufferGeometry( func, slices, stacks ) { + + BufferGeometry.call( this ); + + this.type = 'ParametricBufferGeometry'; + + this.parameters = { + func: func, + slices: slices, + stacks: stacks + }; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + var EPS = 0.00001; + + var normal = new Vector3(); + + var p0 = new Vector3(), p1 = new Vector3(); + var pu = new Vector3(), pv = new Vector3(); + + var i, j; + + if ( func.length < 3 ) { + + console.error( 'THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.' ); + + } + + // generate vertices, normals and uvs + + var sliceCount = slices + 1; + + for ( i = 0; i <= stacks; i ++ ) { + + var v = i / stacks; + + for ( j = 0; j <= slices; j ++ ) { + + var u = j / slices; + + // vertex + + func( u, v, p0 ); + vertices.push( p0.x, p0.y, p0.z ); + + // normal + + // approximate tangent vectors via finite differences + + if ( u - EPS >= 0 ) { + + func( u - EPS, v, p1 ); + pu.subVectors( p0, p1 ); + + } else { + + func( u + EPS, v, p1 ); + pu.subVectors( p1, p0 ); + + } + + if ( v - EPS >= 0 ) { + + func( u, v - EPS, p1 ); + pv.subVectors( p0, p1 ); + + } else { + + func( u, v + EPS, p1 ); + pv.subVectors( p1, p0 ); + + } + + // cross product of tangent vectors returns surface normal + + normal.crossVectors( pu, pv ).normalize(); + normals.push( normal.x, normal.y, normal.z ); + + // uv + + uvs.push( u, v ); + + } + + } + + // generate indices + + for ( i = 0; i < stacks; i ++ ) { + + for ( j = 0; j < slices; j ++ ) { + + var a = i * sliceCount + j; + var b = i * sliceCount + j + 1; + var c = ( i + 1 ) * sliceCount + j + 1; + var d = ( i + 1 ) * sliceCount + j; + + // faces one and two + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + } + + ParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + ParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry; + + /** + * @author clockworkgeek / https://github.com/clockworkgeek + * @author timothypratley / https://github.com/timothypratley + * @author WestLangley / http://github.com/WestLangley + * @author Mugen87 / https://github.com/Mugen87 + */ + + // PolyhedronGeometry + + function PolyhedronGeometry( vertices, indices, radius, detail ) { + + Geometry.call( this ); + + this.type = 'PolyhedronGeometry'; + + this.parameters = { + vertices: vertices, + indices: indices, + radius: radius, + detail: detail + }; + + this.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) ); + this.mergeVertices(); + + } + + PolyhedronGeometry.prototype = Object.create( Geometry.prototype ); + PolyhedronGeometry.prototype.constructor = PolyhedronGeometry; + + // PolyhedronBufferGeometry + + function PolyhedronBufferGeometry( vertices, indices, radius, detail ) { + + BufferGeometry.call( this ); + + this.type = 'PolyhedronBufferGeometry'; + + this.parameters = { + vertices: vertices, + indices: indices, + radius: radius, + detail: detail + }; + + radius = radius || 1; + detail = detail || 0; + + // default buffer data + + var vertexBuffer = []; + var uvBuffer = []; + + // the subdivision creates the vertex buffer data + + subdivide( detail ); + + // all vertices should lie on a conceptual sphere with a given radius + + appplyRadius( radius ); + + // finally, create the uv data + + generateUVs(); + + // build non-indexed geometry + + this.addAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) ); + + if ( detail === 0 ) { + + this.computeVertexNormals(); // flat normals + + } else { + + this.normalizeNormals(); // smooth normals + + } + + // helper functions + + function subdivide( detail ) { + + var a = new Vector3(); + var b = new Vector3(); + var c = new Vector3(); + + // iterate over all faces and apply a subdivison with the given detail value + + for ( var i = 0; i < indices.length; i += 3 ) { + + // get the vertices of the face + + getVertexByIndex( indices[ i + 0 ], a ); + getVertexByIndex( indices[ i + 1 ], b ); + getVertexByIndex( indices[ i + 2 ], c ); + + // perform subdivision + + subdivideFace( a, b, c, detail ); + + } + + } + + function subdivideFace( a, b, c, detail ) { + + var cols = Math.pow( 2, detail ); + + // we use this multidimensional array as a data structure for creating the subdivision + + var v = []; + + var i, j; + + // construct all of the vertices for this subdivision + + for ( i = 0; i <= cols; i ++ ) { + + v[ i ] = []; + + var aj = a.clone().lerp( c, i / cols ); + var bj = b.clone().lerp( c, i / cols ); + + var rows = cols - i; + + for ( j = 0; j <= rows; j ++ ) { + + if ( j === 0 && i === cols ) { + + v[ i ][ j ] = aj; + + } else { + + v[ i ][ j ] = aj.clone().lerp( bj, j / rows ); + + } + + } + + } + + // construct all of the faces + + for ( i = 0; i < cols; i ++ ) { + + for ( j = 0; j < 2 * ( cols - i ) - 1; j ++ ) { + + var k = Math.floor( j / 2 ); + + if ( j % 2 === 0 ) { + + pushVertex( v[ i ][ k + 1 ] ); + pushVertex( v[ i + 1 ][ k ] ); + pushVertex( v[ i ][ k ] ); + + } else { + + pushVertex( v[ i ][ k + 1 ] ); + pushVertex( v[ i + 1 ][ k + 1 ] ); + pushVertex( v[ i + 1 ][ k ] ); + + } + + } + + } + + } + + function appplyRadius( radius ) { + + var vertex = new Vector3(); + + // iterate over the entire buffer and apply the radius to each vertex + + for ( var i = 0; i < vertexBuffer.length; i += 3 ) { + + vertex.x = vertexBuffer[ i + 0 ]; + vertex.y = vertexBuffer[ i + 1 ]; + vertex.z = vertexBuffer[ i + 2 ]; + + vertex.normalize().multiplyScalar( radius ); + + vertexBuffer[ i + 0 ] = vertex.x; + vertexBuffer[ i + 1 ] = vertex.y; + vertexBuffer[ i + 2 ] = vertex.z; + + } + + } + + function generateUVs() { + + var vertex = new Vector3(); + + for ( var i = 0; i < vertexBuffer.length; i += 3 ) { + + vertex.x = vertexBuffer[ i + 0 ]; + vertex.y = vertexBuffer[ i + 1 ]; + vertex.z = vertexBuffer[ i + 2 ]; + + var u = azimuth( vertex ) / 2 / Math.PI + 0.5; + var v = inclination( vertex ) / Math.PI + 0.5; + uvBuffer.push( u, 1 - v ); + + } + + correctUVs(); + + correctSeam(); + + } + + function correctSeam() { + + // handle case when face straddles the seam, see #3269 + + for ( var i = 0; i < uvBuffer.length; i += 6 ) { + + // uv data of a single face + + var x0 = uvBuffer[ i + 0 ]; + var x1 = uvBuffer[ i + 2 ]; + var x2 = uvBuffer[ i + 4 ]; + + var max = Math.max( x0, x1, x2 ); + var min = Math.min( x0, x1, x2 ); + + // 0.9 is somewhat arbitrary + + if ( max > 0.9 && min < 0.1 ) { + + if ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1; + if ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1; + if ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1; + + } + + } + + } + + function pushVertex( vertex ) { + + vertexBuffer.push( vertex.x, vertex.y, vertex.z ); + + } + + function getVertexByIndex( index, vertex ) { + + var stride = index * 3; + + vertex.x = vertices[ stride + 0 ]; + vertex.y = vertices[ stride + 1 ]; + vertex.z = vertices[ stride + 2 ]; + + } + + function correctUVs() { + + var a = new Vector3(); + var b = new Vector3(); + var c = new Vector3(); + + var centroid = new Vector3(); + + var uvA = new Vector2(); + var uvB = new Vector2(); + var uvC = new Vector2(); + + for ( var i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) { + + a.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] ); + b.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] ); + c.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] ); + + uvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] ); + uvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] ); + uvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] ); + + centroid.copy( a ).add( b ).add( c ).divideScalar( 3 ); + + var azi = azimuth( centroid ); + + correctUV( uvA, j + 0, a, azi ); + correctUV( uvB, j + 2, b, azi ); + correctUV( uvC, j + 4, c, azi ); + + } + + } + + function correctUV( uv, stride, vector, azimuth ) { + + if ( ( azimuth < 0 ) && ( uv.x === 1 ) ) { + + uvBuffer[ stride ] = uv.x - 1; + + } + + if ( ( vector.x === 0 ) && ( vector.z === 0 ) ) { + + uvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5; + + } + + } + + // Angle around the Y axis, counter-clockwise when looking from above. + + function azimuth( vector ) { + + return Math.atan2( vector.z, - vector.x ); + + } + + + // Angle above the XZ plane. + + function inclination( vector ) { + + return Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) ); + + } + + } + + PolyhedronBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + PolyhedronBufferGeometry.prototype.constructor = PolyhedronBufferGeometry; + + /** + * @author timothypratley / https://github.com/timothypratley + * @author Mugen87 / https://github.com/Mugen87 + */ + + // TetrahedronGeometry + + function TetrahedronGeometry( radius, detail ) { + + Geometry.call( this ); + + this.type = 'TetrahedronGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + this.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) ); + this.mergeVertices(); + + } + + TetrahedronGeometry.prototype = Object.create( Geometry.prototype ); + TetrahedronGeometry.prototype.constructor = TetrahedronGeometry; + + // TetrahedronBufferGeometry + + function TetrahedronBufferGeometry( radius, detail ) { + + var vertices = [ + 1, 1, 1, - 1, - 1, 1, - 1, 1, - 1, 1, - 1, - 1 + ]; + + var indices = [ + 2, 1, 0, 0, 3, 2, 1, 3, 0, 2, 3, 1 + ]; + + PolyhedronBufferGeometry.call( this, vertices, indices, radius, detail ); + + this.type = 'TetrahedronBufferGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + } + + TetrahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype ); + TetrahedronBufferGeometry.prototype.constructor = TetrahedronBufferGeometry; + + /** + * @author timothypratley / https://github.com/timothypratley + * @author Mugen87 / https://github.com/Mugen87 + */ + + // OctahedronGeometry + + function OctahedronGeometry( radius, detail ) { + + Geometry.call( this ); + + this.type = 'OctahedronGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + this.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) ); + this.mergeVertices(); + + } + + OctahedronGeometry.prototype = Object.create( Geometry.prototype ); + OctahedronGeometry.prototype.constructor = OctahedronGeometry; + + // OctahedronBufferGeometry + + function OctahedronBufferGeometry( radius, detail ) { + + var vertices = [ + 1, 0, 0, - 1, 0, 0, 0, 1, 0, + 0, - 1, 0, 0, 0, 1, 0, 0, - 1 + ]; + + var indices = [ + 0, 2, 4, 0, 4, 3, 0, 3, 5, + 0, 5, 2, 1, 2, 5, 1, 5, 3, + 1, 3, 4, 1, 4, 2 + ]; + + PolyhedronBufferGeometry.call( this, vertices, indices, radius, detail ); + + this.type = 'OctahedronBufferGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + } + + OctahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype ); + OctahedronBufferGeometry.prototype.constructor = OctahedronBufferGeometry; + + /** + * @author timothypratley / https://github.com/timothypratley + * @author Mugen87 / https://github.com/Mugen87 + */ + + // IcosahedronGeometry + + function IcosahedronGeometry( radius, detail ) { + + Geometry.call( this ); + + this.type = 'IcosahedronGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + this.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) ); + this.mergeVertices(); + + } + + IcosahedronGeometry.prototype = Object.create( Geometry.prototype ); + IcosahedronGeometry.prototype.constructor = IcosahedronGeometry; + + // IcosahedronBufferGeometry + + function IcosahedronBufferGeometry( radius, detail ) { + + var t = ( 1 + Math.sqrt( 5 ) ) / 2; + + var vertices = [ + - 1, t, 0, 1, t, 0, - 1, - t, 0, 1, - t, 0, + 0, - 1, t, 0, 1, t, 0, - 1, - t, 0, 1, - t, + t, 0, - 1, t, 0, 1, - t, 0, - 1, - t, 0, 1 + ]; + + var indices = [ + 0, 11, 5, 0, 5, 1, 0, 1, 7, 0, 7, 10, 0, 10, 11, + 1, 5, 9, 5, 11, 4, 11, 10, 2, 10, 7, 6, 7, 1, 8, + 3, 9, 4, 3, 4, 2, 3, 2, 6, 3, 6, 8, 3, 8, 9, + 4, 9, 5, 2, 4, 11, 6, 2, 10, 8, 6, 7, 9, 8, 1 + ]; + + PolyhedronBufferGeometry.call( this, vertices, indices, radius, detail ); + + this.type = 'IcosahedronBufferGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + } + + IcosahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype ); + IcosahedronBufferGeometry.prototype.constructor = IcosahedronBufferGeometry; + + /** + * @author Abe Pazos / https://hamoid.com + * @author Mugen87 / https://github.com/Mugen87 + */ + + // DodecahedronGeometry + + function DodecahedronGeometry( radius, detail ) { + + Geometry.call( this ); + + this.type = 'DodecahedronGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + this.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) ); + this.mergeVertices(); + + } + + DodecahedronGeometry.prototype = Object.create( Geometry.prototype ); + DodecahedronGeometry.prototype.constructor = DodecahedronGeometry; + + // DodecahedronBufferGeometry + + function DodecahedronBufferGeometry( radius, detail ) { + + var t = ( 1 + Math.sqrt( 5 ) ) / 2; + var r = 1 / t; + + var vertices = [ + + // (±1, ±1, ±1) + - 1, - 1, - 1, - 1, - 1, 1, + - 1, 1, - 1, - 1, 1, 1, + 1, - 1, - 1, 1, - 1, 1, + 1, 1, - 1, 1, 1, 1, + + // (0, ±1/φ, ±φ) + 0, - r, - t, 0, - r, t, + 0, r, - t, 0, r, t, + + // (±1/φ, ±φ, 0) + - r, - t, 0, - r, t, 0, + r, - t, 0, r, t, 0, + + // (±φ, 0, ±1/φ) + - t, 0, - r, t, 0, - r, + - t, 0, r, t, 0, r + ]; + + var indices = [ + 3, 11, 7, 3, 7, 15, 3, 15, 13, + 7, 19, 17, 7, 17, 6, 7, 6, 15, + 17, 4, 8, 17, 8, 10, 17, 10, 6, + 8, 0, 16, 8, 16, 2, 8, 2, 10, + 0, 12, 1, 0, 1, 18, 0, 18, 16, + 6, 10, 2, 6, 2, 13, 6, 13, 15, + 2, 16, 18, 2, 18, 3, 2, 3, 13, + 18, 1, 9, 18, 9, 11, 18, 11, 3, + 4, 14, 12, 4, 12, 0, 4, 0, 8, + 11, 9, 5, 11, 5, 19, 11, 19, 7, + 19, 5, 14, 19, 14, 4, 19, 4, 17, + 1, 12, 14, 1, 14, 5, 1, 5, 9 + ]; + + PolyhedronBufferGeometry.call( this, vertices, indices, radius, detail ); + + this.type = 'DodecahedronBufferGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + } + + DodecahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype ); + DodecahedronBufferGeometry.prototype.constructor = DodecahedronBufferGeometry; + + /** + * @author oosmoxiecode / https://github.com/oosmoxiecode + * @author WestLangley / https://github.com/WestLangley + * @author zz85 / https://github.com/zz85 + * @author miningold / https://github.com/miningold + * @author jonobr1 / https://github.com/jonobr1 + * @author Mugen87 / https://github.com/Mugen87 + * + */ + + // TubeGeometry + + function TubeGeometry( path, tubularSegments, radius, radialSegments, closed, taper ) { + + Geometry.call( this ); + + this.type = 'TubeGeometry'; + + this.parameters = { + path: path, + tubularSegments: tubularSegments, + radius: radius, + radialSegments: radialSegments, + closed: closed + }; + + if ( taper !== undefined ) console.warn( 'THREE.TubeGeometry: taper has been removed.' ); + + var bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ); + + // expose internals + + this.tangents = bufferGeometry.tangents; + this.normals = bufferGeometry.normals; + this.binormals = bufferGeometry.binormals; + + // create geometry + + this.fromBufferGeometry( bufferGeometry ); + this.mergeVertices(); + + } + + TubeGeometry.prototype = Object.create( Geometry.prototype ); + TubeGeometry.prototype.constructor = TubeGeometry; + + // TubeBufferGeometry + + function TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ) { + + BufferGeometry.call( this ); + + this.type = 'TubeBufferGeometry'; + + this.parameters = { + path: path, + tubularSegments: tubularSegments, + radius: radius, + radialSegments: radialSegments, + closed: closed + }; + + tubularSegments = tubularSegments || 64; + radius = radius || 1; + radialSegments = radialSegments || 8; + closed = closed || false; + + var frames = path.computeFrenetFrames( tubularSegments, closed ); + + // expose internals + + this.tangents = frames.tangents; + this.normals = frames.normals; + this.binormals = frames.binormals; + + // helper variables + + var vertex = new Vector3(); + var normal = new Vector3(); + var uv = new Vector2(); + var P = new Vector3(); + + var i, j; + + // buffer + + var vertices = []; + var normals = []; + var uvs = []; + var indices = []; + + // create buffer data + + generateBufferData(); + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + // functions + + function generateBufferData() { + + for ( i = 0; i < tubularSegments; i ++ ) { + + generateSegment( i ); + + } + + // if the geometry is not closed, generate the last row of vertices and normals + // at the regular position on the given path + // + // if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ) + + generateSegment( ( closed === false ) ? tubularSegments : 0 ); + + // uvs are generated in a separate function. + // this makes it easy compute correct values for closed geometries + + generateUVs(); + + // finally create faces + + generateIndices(); + + } + + function generateSegment( i ) { + + // we use getPointAt to sample evenly distributed points from the given path + + P = path.getPointAt( i / tubularSegments, P ); + + // retrieve corresponding normal and binormal + + var N = frames.normals[ i ]; + var B = frames.binormals[ i ]; + + // generate normals and vertices for the current segment + + for ( j = 0; j <= radialSegments; j ++ ) { + + var v = j / radialSegments * Math.PI * 2; + + var sin = Math.sin( v ); + var cos = - Math.cos( v ); + + // normal + + normal.x = ( cos * N.x + sin * B.x ); + normal.y = ( cos * N.y + sin * B.y ); + normal.z = ( cos * N.z + sin * B.z ); + normal.normalize(); + + normals.push( normal.x, normal.y, normal.z ); + + // vertex + + vertex.x = P.x + radius * normal.x; + vertex.y = P.y + radius * normal.y; + vertex.z = P.z + radius * normal.z; + + vertices.push( vertex.x, vertex.y, vertex.z ); + + } + + } + + function generateIndices() { + + for ( j = 1; j <= tubularSegments; j ++ ) { + + for ( i = 1; i <= radialSegments; i ++ ) { + + var a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 ); + var b = ( radialSegments + 1 ) * j + ( i - 1 ); + var c = ( radialSegments + 1 ) * j + i; + var d = ( radialSegments + 1 ) * ( j - 1 ) + i; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + } + + function generateUVs() { + + for ( i = 0; i <= tubularSegments; i ++ ) { + + for ( j = 0; j <= radialSegments; j ++ ) { + + uv.x = i / tubularSegments; + uv.y = j / radialSegments; + + uvs.push( uv.x, uv.y ); + + } + + } + + } + + } + + TubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + TubeBufferGeometry.prototype.constructor = TubeBufferGeometry; + + TubeBufferGeometry.prototype.toJSON = function () { + + var data = BufferGeometry.prototype.toJSON.call( this ); + + data.path = this.parameters.path.toJSON(); + + return data; + + }; + + /** + * @author oosmoxiecode + * @author Mugen87 / https://github.com/Mugen87 + * + * based on http://www.blackpawn.com/texts/pqtorus/ + */ + + // TorusKnotGeometry + + function TorusKnotGeometry( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) { + + Geometry.call( this ); + + this.type = 'TorusKnotGeometry'; + + this.parameters = { + radius: radius, + tube: tube, + tubularSegments: tubularSegments, + radialSegments: radialSegments, + p: p, + q: q + }; + + if ( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' ); + + this.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) ); + this.mergeVertices(); + + } + + TorusKnotGeometry.prototype = Object.create( Geometry.prototype ); + TorusKnotGeometry.prototype.constructor = TorusKnotGeometry; + + // TorusKnotBufferGeometry + + function TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) { + + BufferGeometry.call( this ); + + this.type = 'TorusKnotBufferGeometry'; + + this.parameters = { + radius: radius, + tube: tube, + tubularSegments: tubularSegments, + radialSegments: radialSegments, + p: p, + q: q + }; + + radius = radius || 1; + tube = tube || 0.4; + tubularSegments = Math.floor( tubularSegments ) || 64; + radialSegments = Math.floor( radialSegments ) || 8; + p = p || 2; + q = q || 3; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // helper variables + + var i, j; + + var vertex = new Vector3(); + var normal = new Vector3(); + + var P1 = new Vector3(); + var P2 = new Vector3(); + + var B = new Vector3(); + var T = new Vector3(); + var N = new Vector3(); + + // generate vertices, normals and uvs + + for ( i = 0; i <= tubularSegments; ++ i ) { + + // the radian "u" is used to calculate the position on the torus curve of the current tubular segement + + var u = i / tubularSegments * p * Math.PI * 2; + + // now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead. + // these points are used to create a special "coordinate space", which is necessary to calculate the correct vertex positions + + calculatePositionOnCurve( u, p, q, radius, P1 ); + calculatePositionOnCurve( u + 0.01, p, q, radius, P2 ); + + // calculate orthonormal basis + + T.subVectors( P2, P1 ); + N.addVectors( P2, P1 ); + B.crossVectors( T, N ); + N.crossVectors( B, T ); + + // normalize B, N. T can be ignored, we don't use it + + B.normalize(); + N.normalize(); + + for ( j = 0; j <= radialSegments; ++ j ) { + + // now calculate the vertices. they are nothing more than an extrusion of the torus curve. + // because we extrude a shape in the xy-plane, there is no need to calculate a z-value. + + var v = j / radialSegments * Math.PI * 2; + var cx = - tube * Math.cos( v ); + var cy = tube * Math.sin( v ); + + // now calculate the final vertex position. + // first we orient the extrusion with our basis vectos, then we add it to the current position on the curve + + vertex.x = P1.x + ( cx * N.x + cy * B.x ); + vertex.y = P1.y + ( cx * N.y + cy * B.y ); + vertex.z = P1.z + ( cx * N.z + cy * B.z ); + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal) + + normal.subVectors( vertex, P1 ).normalize(); + + normals.push( normal.x, normal.y, normal.z ); + + // uv + + uvs.push( i / tubularSegments ); + uvs.push( j / radialSegments ); + + } + + } + + // generate indices + + for ( j = 1; j <= tubularSegments; j ++ ) { + + for ( i = 1; i <= radialSegments; i ++ ) { + + // indices + + var a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 ); + var b = ( radialSegments + 1 ) * j + ( i - 1 ); + var c = ( radialSegments + 1 ) * j + i; + var d = ( radialSegments + 1 ) * ( j - 1 ) + i; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + // this function calculates the current position on the torus curve + + function calculatePositionOnCurve( u, p, q, radius, position ) { + + var cu = Math.cos( u ); + var su = Math.sin( u ); + var quOverP = q / p * u; + var cs = Math.cos( quOverP ); + + position.x = radius * ( 2 + cs ) * 0.5 * cu; + position.y = radius * ( 2 + cs ) * su * 0.5; + position.z = radius * Math.sin( quOverP ) * 0.5; + + } + + } + + TorusKnotBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + TorusKnotBufferGeometry.prototype.constructor = TorusKnotBufferGeometry; + + /** + * @author oosmoxiecode + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / https://github.com/Mugen87 + */ + + // TorusGeometry + + function TorusGeometry( radius, tube, radialSegments, tubularSegments, arc ) { + + Geometry.call( this ); + + this.type = 'TorusGeometry'; + + this.parameters = { + radius: radius, + tube: tube, + radialSegments: radialSegments, + tubularSegments: tubularSegments, + arc: arc + }; + + this.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) ); + this.mergeVertices(); + + } + + TorusGeometry.prototype = Object.create( Geometry.prototype ); + TorusGeometry.prototype.constructor = TorusGeometry; + + // TorusBufferGeometry + + function TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) { + + BufferGeometry.call( this ); + + this.type = 'TorusBufferGeometry'; + + this.parameters = { + radius: radius, + tube: tube, + radialSegments: radialSegments, + tubularSegments: tubularSegments, + arc: arc + }; + + radius = radius || 1; + tube = tube || 0.4; + radialSegments = Math.floor( radialSegments ) || 8; + tubularSegments = Math.floor( tubularSegments ) || 6; + arc = arc || Math.PI * 2; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // helper variables + + var center = new Vector3(); + var vertex = new Vector3(); + var normal = new Vector3(); + + var j, i; + + // generate vertices, normals and uvs + + for ( j = 0; j <= radialSegments; j ++ ) { + + for ( i = 0; i <= tubularSegments; i ++ ) { + + var u = i / tubularSegments * arc; + var v = j / radialSegments * Math.PI * 2; + + // vertex + + vertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u ); + vertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u ); + vertex.z = tube * Math.sin( v ); + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + center.x = radius * Math.cos( u ); + center.y = radius * Math.sin( u ); + normal.subVectors( vertex, center ).normalize(); + + normals.push( normal.x, normal.y, normal.z ); + + // uv + + uvs.push( i / tubularSegments ); + uvs.push( j / radialSegments ); + + } + + } + + // generate indices + + for ( j = 1; j <= radialSegments; j ++ ) { + + for ( i = 1; i <= tubularSegments; i ++ ) { + + // indices + + var a = ( tubularSegments + 1 ) * j + i - 1; + var b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1; + var c = ( tubularSegments + 1 ) * ( j - 1 ) + i; + var d = ( tubularSegments + 1 ) * j + i; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + } + + TorusBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + TorusBufferGeometry.prototype.constructor = TorusBufferGeometry; + + /** + * @author Mugen87 / https://github.com/Mugen87 + * Port from https://github.com/mapbox/earcut (v2.1.2) + */ + + var Earcut = { + + triangulate: function ( data, holeIndices, dim ) { + + dim = dim || 2; + + var hasHoles = holeIndices && holeIndices.length, + outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length, + outerNode = linkedList( data, 0, outerLen, dim, true ), + triangles = []; + + if ( ! outerNode ) return triangles; + + var minX, minY, maxX, maxY, x, y, invSize; + + if ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim ); + + // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox + + if ( data.length > 80 * dim ) { + + minX = maxX = data[ 0 ]; + minY = maxY = data[ 1 ]; + + for ( var i = dim; i < outerLen; i += dim ) { + + x = data[ i ]; + y = data[ i + 1 ]; + if ( x < minX ) minX = x; + if ( y < minY ) minY = y; + if ( x > maxX ) maxX = x; + if ( y > maxY ) maxY = y; + + } + + // minX, minY and invSize are later used to transform coords into integers for z-order calculation + + invSize = Math.max( maxX - minX, maxY - minY ); + invSize = invSize !== 0 ? 1 / invSize : 0; + + } + + earcutLinked( outerNode, triangles, dim, minX, minY, invSize ); + + return triangles; + + } + + }; + + // create a circular doubly linked list from polygon points in the specified winding order + + function linkedList( data, start, end, dim, clockwise ) { + + var i, last; + + if ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) { + + for ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last ); + + } else { + + for ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last ); + + } + + if ( last && equals( last, last.next ) ) { + + removeNode( last ); + last = last.next; + + } + + return last; + + } + + // eliminate colinear or duplicate points + + function filterPoints( start, end ) { + + if ( ! start ) return start; + if ( ! end ) end = start; + + var p = start, again; + + do { + + again = false; + + if ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) { + + removeNode( p ); + p = end = p.prev; + if ( p === p.next ) break; + again = true; + + } else { + + p = p.next; + + } + + } while ( again || p !== end ); + + return end; + + } + + // main ear slicing loop which triangulates a polygon (given as a linked list) + + function earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) { + + if ( ! ear ) return; + + // interlink polygon nodes in z-order + + if ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize ); + + var stop = ear, prev, next; + + // iterate through ears, slicing them one by one + + while ( ear.prev !== ear.next ) { + + prev = ear.prev; + next = ear.next; + + if ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) { + + // cut off the triangle + triangles.push( prev.i / dim ); + triangles.push( ear.i / dim ); + triangles.push( next.i / dim ); + + removeNode( ear ); + + // skipping the next vertice leads to less sliver triangles + ear = next.next; + stop = next.next; + + continue; + + } + + ear = next; + + // if we looped through the whole remaining polygon and can't find any more ears + + if ( ear === stop ) { + + // try filtering points and slicing again + + if ( ! pass ) { + + earcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 ); + + // if this didn't work, try curing all small self-intersections locally + + } else if ( pass === 1 ) { + + ear = cureLocalIntersections( ear, triangles, dim ); + earcutLinked( ear, triangles, dim, minX, minY, invSize, 2 ); + + // as a last resort, try splitting the remaining polygon into two + + } else if ( pass === 2 ) { + + splitEarcut( ear, triangles, dim, minX, minY, invSize ); + + } + + break; + + } + + } + + } + + // check whether a polygon node forms a valid ear with adjacent nodes + + function isEar( ear ) { + + var a = ear.prev, + b = ear, + c = ear.next; + + if ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear + + // now make sure we don't have other points inside the potential ear + var p = ear.next.next; + + while ( p !== ear.prev ) { + + if ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) { + + return false; + + } + + p = p.next; + + } + + return true; + + } + + function isEarHashed( ear, minX, minY, invSize ) { + + var a = ear.prev, + b = ear, + c = ear.next; + + if ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear + + // triangle bbox; min & max are calculated like this for speed + + var minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ), + minTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ), + maxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ), + maxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y ); + + // z-order range for the current triangle bbox; + + var minZ = zOrder( minTX, minTY, minX, minY, invSize ), + maxZ = zOrder( maxTX, maxTY, minX, minY, invSize ); + + // first look for points inside the triangle in increasing z-order + + var p = ear.nextZ; + + while ( p && p.z <= maxZ ) { + + if ( p !== ear.prev && p !== ear.next && + pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) && + area( p.prev, p, p.next ) >= 0 ) return false; + p = p.nextZ; + + } + + // then look for points in decreasing z-order + + p = ear.prevZ; + + while ( p && p.z >= minZ ) { + + if ( p !== ear.prev && p !== ear.next && + pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) && + area( p.prev, p, p.next ) >= 0 ) return false; + + p = p.prevZ; + + } + + return true; + + } + + // go through all polygon nodes and cure small local self-intersections + + function cureLocalIntersections( start, triangles, dim ) { + + var p = start; + + do { + + var a = p.prev, b = p.next.next; + + if ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) { + + triangles.push( a.i / dim ); + triangles.push( p.i / dim ); + triangles.push( b.i / dim ); + + // remove two nodes involved + + removeNode( p ); + removeNode( p.next ); + + p = start = b; + + } + + p = p.next; + + } while ( p !== start ); + + return p; + + } + + // try splitting polygon into two and triangulate them independently + + function splitEarcut( start, triangles, dim, minX, minY, invSize ) { + + // look for a valid diagonal that divides the polygon into two + + var a = start; + + do { + + var b = a.next.next; + + while ( b !== a.prev ) { + + if ( a.i !== b.i && isValidDiagonal( a, b ) ) { + + // split the polygon in two by the diagonal + + var c = splitPolygon( a, b ); + + // filter colinear points around the cuts + + a = filterPoints( a, a.next ); + c = filterPoints( c, c.next ); + + // run earcut on each half + + earcutLinked( a, triangles, dim, minX, minY, invSize ); + earcutLinked( c, triangles, dim, minX, minY, invSize ); + return; + + } + + b = b.next; + + } + + a = a.next; + + } while ( a !== start ); + + } + + // link every hole into the outer loop, producing a single-ring polygon without holes + + function eliminateHoles( data, holeIndices, outerNode, dim ) { + + var queue = [], i, len, start, end, list; + + for ( i = 0, len = holeIndices.length; i < len; i ++ ) { + + start = holeIndices[ i ] * dim; + end = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length; + list = linkedList( data, start, end, dim, false ); + if ( list === list.next ) list.steiner = true; + queue.push( getLeftmost( list ) ); + + } + + queue.sort( compareX ); + + // process holes from left to right + + for ( i = 0; i < queue.length; i ++ ) { + + eliminateHole( queue[ i ], outerNode ); + outerNode = filterPoints( outerNode, outerNode.next ); + + } + + return outerNode; + + } + + function compareX( a, b ) { + + return a.x - b.x; + + } + + // find a bridge between vertices that connects hole with an outer ring and and link it + + function eliminateHole( hole, outerNode ) { + + outerNode = findHoleBridge( hole, outerNode ); + + if ( outerNode ) { + + var b = splitPolygon( outerNode, hole ); + + filterPoints( b, b.next ); + + } + + } + + // David Eberly's algorithm for finding a bridge between hole and outer polygon + + function findHoleBridge( hole, outerNode ) { + + var p = outerNode, + hx = hole.x, + hy = hole.y, + qx = - Infinity, + m; + + // find a segment intersected by a ray from the hole's leftmost point to the left; + // segment's endpoint with lesser x will be potential connection point + + do { + + if ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) { + + var x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y ); + + if ( x <= hx && x > qx ) { + + qx = x; + + if ( x === hx ) { + + if ( hy === p.y ) return p; + if ( hy === p.next.y ) return p.next; + + } + + m = p.x < p.next.x ? p : p.next; + + } + + } + + p = p.next; + + } while ( p !== outerNode ); + + if ( ! m ) return null; + + if ( hx === qx ) return m.prev; // hole touches outer segment; pick lower endpoint + + // look for points inside the triangle of hole point, segment intersection and endpoint; + // if there are no points found, we have a valid connection; + // otherwise choose the point of the minimum angle with the ray as connection point + + var stop = m, + mx = m.x, + my = m.y, + tanMin = Infinity, + tan; + + p = m.next; + + while ( p !== stop ) { + + if ( hx >= p.x && p.x >= mx && hx !== p.x && + pointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) { + + tan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential + + if ( ( tan < tanMin || ( tan === tanMin && p.x > m.x ) ) && locallyInside( p, hole ) ) { + + m = p; + tanMin = tan; + + } + + } + + p = p.next; + + } + + return m; + + } + + // interlink polygon nodes in z-order + + function indexCurve( start, minX, minY, invSize ) { + + var p = start; + + do { + + if ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize ); + p.prevZ = p.prev; + p.nextZ = p.next; + p = p.next; + + } while ( p !== start ); + + p.prevZ.nextZ = null; + p.prevZ = null; + + sortLinked( p ); + + } + + // Simon Tatham's linked list merge sort algorithm + // http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html + + function sortLinked( list ) { + + var i, p, q, e, tail, numMerges, pSize, qSize, inSize = 1; + + do { + + p = list; + list = null; + tail = null; + numMerges = 0; + + while ( p ) { + + numMerges ++; + q = p; + pSize = 0; + + for ( i = 0; i < inSize; i ++ ) { + + pSize ++; + q = q.nextZ; + if ( ! q ) break; + + } + + qSize = inSize; + + while ( pSize > 0 || ( qSize > 0 && q ) ) { + + if ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) { + + e = p; + p = p.nextZ; + pSize --; + + } else { + + e = q; + q = q.nextZ; + qSize --; + + } + + if ( tail ) tail.nextZ = e; + else list = e; + + e.prevZ = tail; + tail = e; + + } + + p = q; + + } + + tail.nextZ = null; + inSize *= 2; + + } while ( numMerges > 1 ); + + return list; + + } + + // z-order of a point given coords and inverse of the longer side of data bbox + + function zOrder( x, y, minX, minY, invSize ) { + + // coords are transformed into non-negative 15-bit integer range + + x = 32767 * ( x - minX ) * invSize; + y = 32767 * ( y - minY ) * invSize; + + x = ( x | ( x << 8 ) ) & 0x00FF00FF; + x = ( x | ( x << 4 ) ) & 0x0F0F0F0F; + x = ( x | ( x << 2 ) ) & 0x33333333; + x = ( x | ( x << 1 ) ) & 0x55555555; + + y = ( y | ( y << 8 ) ) & 0x00FF00FF; + y = ( y | ( y << 4 ) ) & 0x0F0F0F0F; + y = ( y | ( y << 2 ) ) & 0x33333333; + y = ( y | ( y << 1 ) ) & 0x55555555; + + return x | ( y << 1 ); + + } + + // find the leftmost node of a polygon ring + + function getLeftmost( start ) { + + var p = start, leftmost = start; + + do { + + if ( p.x < leftmost.x ) leftmost = p; + p = p.next; + + } while ( p !== start ); + + return leftmost; + + } + + // check if a point lies within a convex triangle + + function pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) { + + return ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 && + ( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 && + ( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0; + + } + + // check if a diagonal between two polygon nodes is valid (lies in polygon interior) + + function isValidDiagonal( a, b ) { + + return a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && + locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ); + + } + + // signed area of a triangle + + function area( p, q, r ) { + + return ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y ); + + } + + // check if two points are equal + + function equals( p1, p2 ) { + + return p1.x === p2.x && p1.y === p2.y; + + } + + // check if two segments intersect + + function intersects( p1, q1, p2, q2 ) { + + if ( ( equals( p1, q1 ) && equals( p2, q2 ) ) || + ( equals( p1, q2 ) && equals( p2, q1 ) ) ) return true; + + return area( p1, q1, p2 ) > 0 !== area( p1, q1, q2 ) > 0 && + area( p2, q2, p1 ) > 0 !== area( p2, q2, q1 ) > 0; + + } + + // check if a polygon diagonal intersects any polygon segments + + function intersectsPolygon( a, b ) { + + var p = a; + + do { + + if ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && + intersects( p, p.next, a, b ) ) { + + return true; + + } + + p = p.next; + + } while ( p !== a ); + + return false; + + } + + // check if a polygon diagonal is locally inside the polygon + + function locallyInside( a, b ) { + + return area( a.prev, a, a.next ) < 0 ? + area( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 : + area( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0; + + } + + // check if the middle point of a polygon diagonal is inside the polygon + + function middleInside( a, b ) { + + var p = a, + inside = false, + px = ( a.x + b.x ) / 2, + py = ( a.y + b.y ) / 2; + + do { + + if ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y && + ( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) ) { + + inside = ! inside; + + } + + p = p.next; + + } while ( p !== a ); + + return inside; + + } + + // link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two; + // if one belongs to the outer ring and another to a hole, it merges it into a single ring + + function splitPolygon( a, b ) { + + var a2 = new Node( a.i, a.x, a.y ), + b2 = new Node( b.i, b.x, b.y ), + an = a.next, + bp = b.prev; + + a.next = b; + b.prev = a; + + a2.next = an; + an.prev = a2; + + b2.next = a2; + a2.prev = b2; + + bp.next = b2; + b2.prev = bp; + + return b2; + + } + + // create a node and optionally link it with previous one (in a circular doubly linked list) + + function insertNode( i, x, y, last ) { + + var p = new Node( i, x, y ); + + if ( ! last ) { + + p.prev = p; + p.next = p; + + } else { + + p.next = last.next; + p.prev = last; + last.next.prev = p; + last.next = p; + + } + + return p; + + } + + function removeNode( p ) { + + p.next.prev = p.prev; + p.prev.next = p.next; + + if ( p.prevZ ) p.prevZ.nextZ = p.nextZ; + if ( p.nextZ ) p.nextZ.prevZ = p.prevZ; + + } + + function Node( i, x, y ) { + + // vertice index in coordinates array + this.i = i; + + // vertex coordinates + this.x = x; + this.y = y; + + // previous and next vertice nodes in a polygon ring + this.prev = null; + this.next = null; + + // z-order curve value + this.z = null; + + // previous and next nodes in z-order + this.prevZ = null; + this.nextZ = null; + + // indicates whether this is a steiner point + this.steiner = false; + + } + + function signedArea( data, start, end, dim ) { + + var sum = 0; + + for ( var i = start, j = end - dim; i < end; i += dim ) { + + sum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] ); + j = i; + + } + + return sum; + + } + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + */ + + var ShapeUtils = { + + // calculate area of the contour polygon + + area: function ( contour ) { + + var n = contour.length; + var a = 0.0; + + for ( var p = n - 1, q = 0; q < n; p = q ++ ) { + + a += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y; + + } + + return a * 0.5; + + }, + + isClockWise: function ( pts ) { + + return ShapeUtils.area( pts ) < 0; + + }, + + triangulateShape: function ( contour, holes ) { + + var vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ] + var holeIndices = []; // array of hole indices + var faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ] + + removeDupEndPts( contour ); + addContour( vertices, contour ); + + // + + var holeIndex = contour.length; + + holes.forEach( removeDupEndPts ); + + for ( var i = 0; i < holes.length; i ++ ) { + + holeIndices.push( holeIndex ); + holeIndex += holes[ i ].length; + addContour( vertices, holes[ i ] ); + + } + + // + + var triangles = Earcut.triangulate( vertices, holeIndices ); + + // + + for ( var i = 0; i < triangles.length; i += 3 ) { + + faces.push( triangles.slice( i, i + 3 ) ); + + } + + return faces; + + } + + }; + + function removeDupEndPts( points ) { + + var l = points.length; + + if ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) { + + points.pop(); + + } + + } + + function addContour( vertices, contour ) { + + for ( var i = 0; i < contour.length; i ++ ) { + + vertices.push( contour[ i ].x ); + vertices.push( contour[ i ].y ); + + } + + } + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * + * Creates extruded geometry from a path shape. + * + * parameters = { + * + * curveSegments: , // number of points on the curves + * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too + * depth: , // Depth to extrude the shape + * + * bevelEnabled: , // turn on bevel + * bevelThickness: , // how deep into the original shape bevel goes + * bevelSize: , // how far from shape outline (including bevelOffset) is bevel + * bevelOffset: , // how far from shape outline does bevel start + * bevelSegments: , // number of bevel layers + * + * extrudePath: // curve to extrude shape along + * + * UVGenerator: // object that provides UV generator functions + * + * } + */ + + // ExtrudeGeometry + + function ExtrudeGeometry( shapes, options ) { + + Geometry.call( this ); + + this.type = 'ExtrudeGeometry'; + + this.parameters = { + shapes: shapes, + options: options + }; + + this.fromBufferGeometry( new ExtrudeBufferGeometry( shapes, options ) ); + this.mergeVertices(); + + } + + ExtrudeGeometry.prototype = Object.create( Geometry.prototype ); + ExtrudeGeometry.prototype.constructor = ExtrudeGeometry; + + ExtrudeGeometry.prototype.toJSON = function () { + + var data = Geometry.prototype.toJSON.call( this ); + + var shapes = this.parameters.shapes; + var options = this.parameters.options; + + return toJSON( shapes, options, data ); + + }; + + // ExtrudeBufferGeometry + + function ExtrudeBufferGeometry( shapes, options ) { + + BufferGeometry.call( this ); + + this.type = 'ExtrudeBufferGeometry'; + + this.parameters = { + shapes: shapes, + options: options + }; + + shapes = Array.isArray( shapes ) ? shapes : [ shapes ]; + + var scope = this; + + var verticesArray = []; + var uvArray = []; + + for ( var i = 0, l = shapes.length; i < l; i ++ ) { + + var shape = shapes[ i ]; + addShape( shape ); + + } + + // build geometry + + this.addAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) ); + + this.computeVertexNormals(); + + // functions + + function addShape( shape ) { + + var placeholder = []; + + // options + + var curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12; + var steps = options.steps !== undefined ? options.steps : 1; + var depth = options.depth !== undefined ? options.depth : 100; + + var bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true; + var bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6; + var bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2; + var bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0; + var bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3; + + var extrudePath = options.extrudePath; + + var uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator; + + // deprecated options + + if ( options.amount !== undefined ) { + + console.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' ); + depth = options.amount; + + } + + // + + var extrudePts, extrudeByPath = false; + var splineTube, binormal, normal, position2; + + if ( extrudePath ) { + + extrudePts = extrudePath.getSpacedPoints( steps ); + + extrudeByPath = true; + bevelEnabled = false; // bevels not supported for path extrusion + + // SETUP TNB variables + + // TODO1 - have a .isClosed in spline? + + splineTube = extrudePath.computeFrenetFrames( steps, false ); + + // console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length); + + binormal = new Vector3(); + normal = new Vector3(); + position2 = new Vector3(); + + } + + // Safeguards if bevels are not enabled + + if ( ! bevelEnabled ) { + + bevelSegments = 0; + bevelThickness = 0; + bevelSize = 0; + bevelOffset = 0; + + } + + // Variables initialization + + var ahole, h, hl; // looping of holes + + var shapePoints = shape.extractPoints( curveSegments ); + + var vertices = shapePoints.shape; + var holes = shapePoints.holes; + + var reverse = ! ShapeUtils.isClockWise( vertices ); + + if ( reverse ) { + + vertices = vertices.reverse(); + + // Maybe we should also check if holes are in the opposite direction, just to be safe ... + + for ( h = 0, hl = holes.length; h < hl; h ++ ) { + + ahole = holes[ h ]; + + if ( ShapeUtils.isClockWise( ahole ) ) { + + holes[ h ] = ahole.reverse(); + + } + + } + + } + + + var faces = ShapeUtils.triangulateShape( vertices, holes ); + + /* Vertices */ + + var contour = vertices; // vertices has all points but contour has only points of circumference + + for ( h = 0, hl = holes.length; h < hl; h ++ ) { + + ahole = holes[ h ]; + + vertices = vertices.concat( ahole ); + + } + + + function scalePt2( pt, vec, size ) { + + if ( ! vec ) console.error( "THREE.ExtrudeGeometry: vec does not exist" ); + + return vec.clone().multiplyScalar( size ).add( pt ); + + } + + var b, bs, t, z, + vert, vlen = vertices.length, + face, flen = faces.length; + + + // Find directions for point movement + + + function getBevelVec( inPt, inPrev, inNext ) { + + // computes for inPt the corresponding point inPt' on a new contour + // shifted by 1 unit (length of normalized vector) to the left + // if we walk along contour clockwise, this new contour is outside the old one + // + // inPt' is the intersection of the two lines parallel to the two + // adjacent edges of inPt at a distance of 1 unit on the left side. + + var v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt + + // good reading for geometry algorithms (here: line-line intersection) + // http://geomalgorithms.com/a05-_intersect-1.html + + var v_prev_x = inPt.x - inPrev.x, + v_prev_y = inPt.y - inPrev.y; + var v_next_x = inNext.x - inPt.x, + v_next_y = inNext.y - inPt.y; + + var v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y ); + + // check for collinear edges + var collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x ); + + if ( Math.abs( collinear0 ) > Number.EPSILON ) { + + // not collinear + + // length of vectors for normalizing + + var v_prev_len = Math.sqrt( v_prev_lensq ); + var v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y ); + + // shift adjacent points by unit vectors to the left + + var ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len ); + var ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len ); + + var ptNextShift_x = ( inNext.x - v_next_y / v_next_len ); + var ptNextShift_y = ( inNext.y + v_next_x / v_next_len ); + + // scaling factor for v_prev to intersection point + + var sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y - + ( ptNextShift_y - ptPrevShift_y ) * v_next_x ) / + ( v_prev_x * v_next_y - v_prev_y * v_next_x ); + + // vector from inPt to intersection point + + v_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x ); + v_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y ); + + // Don't normalize!, otherwise sharp corners become ugly + // but prevent crazy spikes + var v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y ); + if ( v_trans_lensq <= 2 ) { + + return new Vector2( v_trans_x, v_trans_y ); + + } else { + + shrink_by = Math.sqrt( v_trans_lensq / 2 ); + + } + + } else { + + // handle special case of collinear edges + + var direction_eq = false; // assumes: opposite + if ( v_prev_x > Number.EPSILON ) { + + if ( v_next_x > Number.EPSILON ) { + + direction_eq = true; + + } + + } else { + + if ( v_prev_x < - Number.EPSILON ) { + + if ( v_next_x < - Number.EPSILON ) { + + direction_eq = true; + + } + + } else { + + if ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) { + + direction_eq = true; + + } + + } + + } + + if ( direction_eq ) { + + // console.log("Warning: lines are a straight sequence"); + v_trans_x = - v_prev_y; + v_trans_y = v_prev_x; + shrink_by = Math.sqrt( v_prev_lensq ); + + } else { + + // console.log("Warning: lines are a straight spike"); + v_trans_x = v_prev_x; + v_trans_y = v_prev_y; + shrink_by = Math.sqrt( v_prev_lensq / 2 ); + + } + + } + + return new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by ); + + } + + + var contourMovements = []; + + for ( var i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) { + + if ( j === il ) j = 0; + if ( k === il ) k = 0; + + // (j)---(i)---(k) + // console.log('i,j,k', i, j , k) + + contourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] ); + + } + + var holesMovements = [], + oneHoleMovements, verticesMovements = contourMovements.concat(); + + for ( h = 0, hl = holes.length; h < hl; h ++ ) { + + ahole = holes[ h ]; + + oneHoleMovements = []; + + for ( i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) { + + if ( j === il ) j = 0; + if ( k === il ) k = 0; + + // (j)---(i)---(k) + oneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] ); + + } + + holesMovements.push( oneHoleMovements ); + verticesMovements = verticesMovements.concat( oneHoleMovements ); + + } + + + // Loop bevelSegments, 1 for the front, 1 for the back + + for ( b = 0; b < bevelSegments; b ++ ) { + + //for ( b = bevelSegments; b > 0; b -- ) { + + t = b / bevelSegments; + z = bevelThickness * Math.cos( t * Math.PI / 2 ); + bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset; + + // contract shape + + for ( i = 0, il = contour.length; i < il; i ++ ) { + + vert = scalePt2( contour[ i ], contourMovements[ i ], bs ); + + v( vert.x, vert.y, - z ); + + } + + // expand holes + + for ( h = 0, hl = holes.length; h < hl; h ++ ) { + + ahole = holes[ h ]; + oneHoleMovements = holesMovements[ h ]; + + for ( i = 0, il = ahole.length; i < il; i ++ ) { + + vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs ); + + v( vert.x, vert.y, - z ); + + } + + } + + } + + bs = bevelSize + bevelOffset; + + // Back facing vertices + + for ( i = 0; i < vlen; i ++ ) { + + vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ]; + + if ( ! extrudeByPath ) { + + v( vert.x, vert.y, 0 ); + + } else { + + // v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x ); + + normal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x ); + binormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y ); + + position2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal ); + + v( position2.x, position2.y, position2.z ); + + } + + } + + // Add stepped vertices... + // Including front facing vertices + + var s; + + for ( s = 1; s <= steps; s ++ ) { + + for ( i = 0; i < vlen; i ++ ) { + + vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ]; + + if ( ! extrudeByPath ) { + + v( vert.x, vert.y, depth / steps * s ); + + } else { + + // v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x ); + + normal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x ); + binormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y ); + + position2.copy( extrudePts[ s ] ).add( normal ).add( binormal ); + + v( position2.x, position2.y, position2.z ); + + } + + } + + } + + + // Add bevel segments planes + + //for ( b = 1; b <= bevelSegments; b ++ ) { + for ( b = bevelSegments - 1; b >= 0; b -- ) { + + t = b / bevelSegments; + z = bevelThickness * Math.cos( t * Math.PI / 2 ); + bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset; + + // contract shape + + for ( i = 0, il = contour.length; i < il; i ++ ) { + + vert = scalePt2( contour[ i ], contourMovements[ i ], bs ); + v( vert.x, vert.y, depth + z ); + + } + + // expand holes + + for ( h = 0, hl = holes.length; h < hl; h ++ ) { + + ahole = holes[ h ]; + oneHoleMovements = holesMovements[ h ]; + + for ( i = 0, il = ahole.length; i < il; i ++ ) { + + vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs ); + + if ( ! extrudeByPath ) { + + v( vert.x, vert.y, depth + z ); + + } else { + + v( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z ); + + } + + } + + } + + } + + /* Faces */ + + // Top and bottom faces + + buildLidFaces(); + + // Sides faces + + buildSideFaces(); + + + ///// Internal functions + + function buildLidFaces() { + + var start = verticesArray.length / 3; + + if ( bevelEnabled ) { + + var layer = 0; // steps + 1 + var offset = vlen * layer; + + // Bottom faces + + for ( i = 0; i < flen; i ++ ) { + + face = faces[ i ]; + f3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset ); + + } + + layer = steps + bevelSegments * 2; + offset = vlen * layer; + + // Top faces + + for ( i = 0; i < flen; i ++ ) { + + face = faces[ i ]; + f3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset ); + + } + + } else { + + // Bottom faces + + for ( i = 0; i < flen; i ++ ) { + + face = faces[ i ]; + f3( face[ 2 ], face[ 1 ], face[ 0 ] ); + + } + + // Top faces + + for ( i = 0; i < flen; i ++ ) { + + face = faces[ i ]; + f3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps ); + + } + + } + + scope.addGroup( start, verticesArray.length / 3 - start, 0 ); + + } + + // Create faces for the z-sides of the shape + + function buildSideFaces() { + + var start = verticesArray.length / 3; + var layeroffset = 0; + sidewalls( contour, layeroffset ); + layeroffset += contour.length; + + for ( h = 0, hl = holes.length; h < hl; h ++ ) { + + ahole = holes[ h ]; + sidewalls( ahole, layeroffset ); + + //, true + layeroffset += ahole.length; + + } + + + scope.addGroup( start, verticesArray.length / 3 - start, 1 ); + + + } + + function sidewalls( contour, layeroffset ) { + + var j, k; + i = contour.length; + + while ( -- i >= 0 ) { + + j = i; + k = i - 1; + if ( k < 0 ) k = contour.length - 1; + + //console.log('b', i,j, i-1, k,vertices.length); + + var s = 0, + sl = steps + bevelSegments * 2; + + for ( s = 0; s < sl; s ++ ) { + + var slen1 = vlen * s; + var slen2 = vlen * ( s + 1 ); + + var a = layeroffset + j + slen1, + b = layeroffset + k + slen1, + c = layeroffset + k + slen2, + d = layeroffset + j + slen2; + + f4( a, b, c, d ); + + } + + } + + } + + function v( x, y, z ) { + + placeholder.push( x ); + placeholder.push( y ); + placeholder.push( z ); + + } + + + function f3( a, b, c ) { + + addVertex( a ); + addVertex( b ); + addVertex( c ); + + var nextIndex = verticesArray.length / 3; + var uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 ); + + addUV( uvs[ 0 ] ); + addUV( uvs[ 1 ] ); + addUV( uvs[ 2 ] ); + + } + + function f4( a, b, c, d ) { + + addVertex( a ); + addVertex( b ); + addVertex( d ); + + addVertex( b ); + addVertex( c ); + addVertex( d ); + + + var nextIndex = verticesArray.length / 3; + var uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 ); + + addUV( uvs[ 0 ] ); + addUV( uvs[ 1 ] ); + addUV( uvs[ 3 ] ); + + addUV( uvs[ 1 ] ); + addUV( uvs[ 2 ] ); + addUV( uvs[ 3 ] ); + + } + + function addVertex( index ) { + + verticesArray.push( placeholder[ index * 3 + 0 ] ); + verticesArray.push( placeholder[ index * 3 + 1 ] ); + verticesArray.push( placeholder[ index * 3 + 2 ] ); + + } + + + function addUV( vector2 ) { + + uvArray.push( vector2.x ); + uvArray.push( vector2.y ); + + } + + } + + } + + ExtrudeBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + ExtrudeBufferGeometry.prototype.constructor = ExtrudeBufferGeometry; + + ExtrudeBufferGeometry.prototype.toJSON = function () { + + var data = BufferGeometry.prototype.toJSON.call( this ); + + var shapes = this.parameters.shapes; + var options = this.parameters.options; + + return toJSON( shapes, options, data ); + + }; + + // + + var WorldUVGenerator = { + + generateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) { + + var a_x = vertices[ indexA * 3 ]; + var a_y = vertices[ indexA * 3 + 1 ]; + var b_x = vertices[ indexB * 3 ]; + var b_y = vertices[ indexB * 3 + 1 ]; + var c_x = vertices[ indexC * 3 ]; + var c_y = vertices[ indexC * 3 + 1 ]; + + return [ + new Vector2( a_x, a_y ), + new Vector2( b_x, b_y ), + new Vector2( c_x, c_y ) + ]; + + }, + + generateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) { + + var a_x = vertices[ indexA * 3 ]; + var a_y = vertices[ indexA * 3 + 1 ]; + var a_z = vertices[ indexA * 3 + 2 ]; + var b_x = vertices[ indexB * 3 ]; + var b_y = vertices[ indexB * 3 + 1 ]; + var b_z = vertices[ indexB * 3 + 2 ]; + var c_x = vertices[ indexC * 3 ]; + var c_y = vertices[ indexC * 3 + 1 ]; + var c_z = vertices[ indexC * 3 + 2 ]; + var d_x = vertices[ indexD * 3 ]; + var d_y = vertices[ indexD * 3 + 1 ]; + var d_z = vertices[ indexD * 3 + 2 ]; + + if ( Math.abs( a_y - b_y ) < 0.01 ) { + + return [ + new Vector2( a_x, 1 - a_z ), + new Vector2( b_x, 1 - b_z ), + new Vector2( c_x, 1 - c_z ), + new Vector2( d_x, 1 - d_z ) + ]; + + } else { + + return [ + new Vector2( a_y, 1 - a_z ), + new Vector2( b_y, 1 - b_z ), + new Vector2( c_y, 1 - c_z ), + new Vector2( d_y, 1 - d_z ) + ]; + + } + + } + }; + + function toJSON( shapes, options, data ) { + + // + + data.shapes = []; + + if ( Array.isArray( shapes ) ) { + + for ( var i = 0, l = shapes.length; i < l; i ++ ) { + + var shape = shapes[ i ]; + + data.shapes.push( shape.uuid ); + + } + + } else { + + data.shapes.push( shapes.uuid ); + + } + + // + + if ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON(); + + return data; + + } + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * @author alteredq / http://alteredqualia.com/ + * + * Text = 3D Text + * + * parameters = { + * font: , // font + * + * size: , // size of the text + * height: , // thickness to extrude text + * curveSegments: , // number of points on the curves + * + * bevelEnabled: , // turn on bevel + * bevelThickness: , // how deep into text bevel goes + * bevelSize: , // how far from text outline (including bevelOffset) is bevel + * bevelOffset: // how far from text outline does bevel start + * } + */ + + // TextGeometry + + function TextGeometry( text, parameters ) { + + Geometry.call( this ); + + this.type = 'TextGeometry'; + + this.parameters = { + text: text, + parameters: parameters + }; + + this.fromBufferGeometry( new TextBufferGeometry( text, parameters ) ); + this.mergeVertices(); + + } + + TextGeometry.prototype = Object.create( Geometry.prototype ); + TextGeometry.prototype.constructor = TextGeometry; + + // TextBufferGeometry + + function TextBufferGeometry( text, parameters ) { + + parameters = parameters || {}; + + var font = parameters.font; + + if ( ! ( font && font.isFont ) ) { + + console.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' ); + return new Geometry(); + + } + + var shapes = font.generateShapes( text, parameters.size ); + + // translate parameters to ExtrudeGeometry API + + parameters.depth = parameters.height !== undefined ? parameters.height : 50; + + // defaults + + if ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10; + if ( parameters.bevelSize === undefined ) parameters.bevelSize = 8; + if ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false; + + ExtrudeBufferGeometry.call( this, shapes, parameters ); + + this.type = 'TextBufferGeometry'; + + } + + TextBufferGeometry.prototype = Object.create( ExtrudeBufferGeometry.prototype ); + TextBufferGeometry.prototype.constructor = TextBufferGeometry; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author benaadams / https://twitter.com/ben_a_adams + * @author Mugen87 / https://github.com/Mugen87 + */ + + // SphereGeometry + + function SphereGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) { + + Geometry.call( this ); + + this.type = 'SphereGeometry'; + + this.parameters = { + radius: radius, + widthSegments: widthSegments, + heightSegments: heightSegments, + phiStart: phiStart, + phiLength: phiLength, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + this.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) ); + this.mergeVertices(); + + } + + SphereGeometry.prototype = Object.create( Geometry.prototype ); + SphereGeometry.prototype.constructor = SphereGeometry; + + // SphereBufferGeometry + + function SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) { + + BufferGeometry.call( this ); + + this.type = 'SphereBufferGeometry'; + + this.parameters = { + radius: radius, + widthSegments: widthSegments, + heightSegments: heightSegments, + phiStart: phiStart, + phiLength: phiLength, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + radius = radius || 1; + + widthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 ); + heightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 ); + + phiStart = phiStart !== undefined ? phiStart : 0; + phiLength = phiLength !== undefined ? phiLength : Math.PI * 2; + + thetaStart = thetaStart !== undefined ? thetaStart : 0; + thetaLength = thetaLength !== undefined ? thetaLength : Math.PI; + + var thetaEnd = Math.min( thetaStart + thetaLength, Math.PI ); + + var ix, iy; + + var index = 0; + var grid = []; + + var vertex = new Vector3(); + var normal = new Vector3(); + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // generate vertices, normals and uvs + + for ( iy = 0; iy <= heightSegments; iy ++ ) { + + var verticesRow = []; + + var v = iy / heightSegments; + + // special case for the poles + + var uOffset = 0; + + if ( iy == 0 && thetaStart == 0 ) { + + uOffset = 0.5 / widthSegments; + + } else if ( iy == heightSegments && thetaEnd == Math.PI ) { + + uOffset = - 0.5 / widthSegments; + + } + + for ( ix = 0; ix <= widthSegments; ix ++ ) { + + var u = ix / widthSegments; + + // vertex + + vertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength ); + vertex.y = radius * Math.cos( thetaStart + v * thetaLength ); + vertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength ); + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + normal.copy( vertex ).normalize(); + normals.push( normal.x, normal.y, normal.z ); + + // uv + + uvs.push( u + uOffset, 1 - v ); + + verticesRow.push( index ++ ); + + } + + grid.push( verticesRow ); + + } + + // indices + + for ( iy = 0; iy < heightSegments; iy ++ ) { + + for ( ix = 0; ix < widthSegments; ix ++ ) { + + var a = grid[ iy ][ ix + 1 ]; + var b = grid[ iy ][ ix ]; + var c = grid[ iy + 1 ][ ix ]; + var d = grid[ iy + 1 ][ ix + 1 ]; + + if ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d ); + if ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + } + + SphereBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + SphereBufferGeometry.prototype.constructor = SphereBufferGeometry; + + /** + * @author Kaleb Murphy + * @author Mugen87 / https://github.com/Mugen87 + */ + + // RingGeometry + + function RingGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) { + + Geometry.call( this ); + + this.type = 'RingGeometry'; + + this.parameters = { + innerRadius: innerRadius, + outerRadius: outerRadius, + thetaSegments: thetaSegments, + phiSegments: phiSegments, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + this.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) ); + this.mergeVertices(); + + } + + RingGeometry.prototype = Object.create( Geometry.prototype ); + RingGeometry.prototype.constructor = RingGeometry; + + // RingBufferGeometry + + function RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) { + + BufferGeometry.call( this ); + + this.type = 'RingBufferGeometry'; + + this.parameters = { + innerRadius: innerRadius, + outerRadius: outerRadius, + thetaSegments: thetaSegments, + phiSegments: phiSegments, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + innerRadius = innerRadius || 0.5; + outerRadius = outerRadius || 1; + + thetaStart = thetaStart !== undefined ? thetaStart : 0; + thetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2; + + thetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8; + phiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // some helper variables + + var segment; + var radius = innerRadius; + var radiusStep = ( ( outerRadius - innerRadius ) / phiSegments ); + var vertex = new Vector3(); + var uv = new Vector2(); + var j, i; + + // generate vertices, normals and uvs + + for ( j = 0; j <= phiSegments; j ++ ) { + + for ( i = 0; i <= thetaSegments; i ++ ) { + + // values are generate from the inside of the ring to the outside + + segment = thetaStart + i / thetaSegments * thetaLength; + + // vertex + + vertex.x = radius * Math.cos( segment ); + vertex.y = radius * Math.sin( segment ); + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + normals.push( 0, 0, 1 ); + + // uv + + uv.x = ( vertex.x / outerRadius + 1 ) / 2; + uv.y = ( vertex.y / outerRadius + 1 ) / 2; + + uvs.push( uv.x, uv.y ); + + } + + // increase the radius for next row of vertices + + radius += radiusStep; + + } + + // indices + + for ( j = 0; j < phiSegments; j ++ ) { + + var thetaSegmentLevel = j * ( thetaSegments + 1 ); + + for ( i = 0; i < thetaSegments; i ++ ) { + + segment = i + thetaSegmentLevel; + + var a = segment; + var b = segment + thetaSegments + 1; + var c = segment + thetaSegments + 2; + var d = segment + 1; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + } + + RingBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + RingBufferGeometry.prototype.constructor = RingBufferGeometry; + + /** + * @author zz85 / https://github.com/zz85 + * @author bhouston / http://clara.io + * @author Mugen87 / https://github.com/Mugen87 + */ + + // LatheGeometry + + function LatheGeometry( points, segments, phiStart, phiLength ) { + + Geometry.call( this ); + + this.type = 'LatheGeometry'; + + this.parameters = { + points: points, + segments: segments, + phiStart: phiStart, + phiLength: phiLength + }; + + this.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) ); + this.mergeVertices(); + + } + + LatheGeometry.prototype = Object.create( Geometry.prototype ); + LatheGeometry.prototype.constructor = LatheGeometry; + + // LatheBufferGeometry + + function LatheBufferGeometry( points, segments, phiStart, phiLength ) { + + BufferGeometry.call( this ); + + this.type = 'LatheBufferGeometry'; + + this.parameters = { + points: points, + segments: segments, + phiStart: phiStart, + phiLength: phiLength + }; + + segments = Math.floor( segments ) || 12; + phiStart = phiStart || 0; + phiLength = phiLength || Math.PI * 2; + + // clamp phiLength so it's in range of [ 0, 2PI ] + + phiLength = _Math.clamp( phiLength, 0, Math.PI * 2 ); + + + // buffers + + var indices = []; + var vertices = []; + var uvs = []; + + // helper variables + + var base; + var inverseSegments = 1.0 / segments; + var vertex = new Vector3(); + var uv = new Vector2(); + var i, j; + + // generate vertices and uvs + + for ( i = 0; i <= segments; i ++ ) { + + var phi = phiStart + i * inverseSegments * phiLength; + + var sin = Math.sin( phi ); + var cos = Math.cos( phi ); + + for ( j = 0; j <= ( points.length - 1 ); j ++ ) { + + // vertex + + vertex.x = points[ j ].x * sin; + vertex.y = points[ j ].y; + vertex.z = points[ j ].x * cos; + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // uv + + uv.x = i / segments; + uv.y = j / ( points.length - 1 ); + + uvs.push( uv.x, uv.y ); + + + } + + } + + // indices + + for ( i = 0; i < segments; i ++ ) { + + for ( j = 0; j < ( points.length - 1 ); j ++ ) { + + base = j + i * points.length; + + var a = base; + var b = base + points.length; + var c = base + points.length + 1; + var d = base + 1; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + // generate normals + + this.computeVertexNormals(); + + // if the geometry is closed, we need to average the normals along the seam. + // because the corresponding vertices are identical (but still have different UVs). + + if ( phiLength === Math.PI * 2 ) { + + var normals = this.attributes.normal.array; + var n1 = new Vector3(); + var n2 = new Vector3(); + var n = new Vector3(); + + // this is the buffer offset for the last line of vertices + + base = segments * points.length * 3; + + for ( i = 0, j = 0; i < points.length; i ++, j += 3 ) { + + // select the normal of the vertex in the first line + + n1.x = normals[ j + 0 ]; + n1.y = normals[ j + 1 ]; + n1.z = normals[ j + 2 ]; + + // select the normal of the vertex in the last line + + n2.x = normals[ base + j + 0 ]; + n2.y = normals[ base + j + 1 ]; + n2.z = normals[ base + j + 2 ]; + + // average normals + + n.addVectors( n1, n2 ).normalize(); + + // assign the new values to both normals + + normals[ j + 0 ] = normals[ base + j + 0 ] = n.x; + normals[ j + 1 ] = normals[ base + j + 1 ] = n.y; + normals[ j + 2 ] = normals[ base + j + 2 ] = n.z; + + } + + } + + } + + LatheBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + LatheBufferGeometry.prototype.constructor = LatheBufferGeometry; + + /** + * @author jonobr1 / http://jonobr1.com + * @author Mugen87 / https://github.com/Mugen87 + */ + + // ShapeGeometry + + function ShapeGeometry( shapes, curveSegments ) { + + Geometry.call( this ); + + this.type = 'ShapeGeometry'; + + if ( typeof curveSegments === 'object' ) { + + console.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' ); + + curveSegments = curveSegments.curveSegments; + + } + + this.parameters = { + shapes: shapes, + curveSegments: curveSegments + }; + + this.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) ); + this.mergeVertices(); + + } + + ShapeGeometry.prototype = Object.create( Geometry.prototype ); + ShapeGeometry.prototype.constructor = ShapeGeometry; + + ShapeGeometry.prototype.toJSON = function () { + + var data = Geometry.prototype.toJSON.call( this ); + + var shapes = this.parameters.shapes; + + return toJSON$1( shapes, data ); + + }; + + // ShapeBufferGeometry + + function ShapeBufferGeometry( shapes, curveSegments ) { + + BufferGeometry.call( this ); + + this.type = 'ShapeBufferGeometry'; + + this.parameters = { + shapes: shapes, + curveSegments: curveSegments + }; + + curveSegments = curveSegments || 12; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // helper variables + + var groupStart = 0; + var groupCount = 0; + + // allow single and array values for "shapes" parameter + + if ( Array.isArray( shapes ) === false ) { + + addShape( shapes ); + + } else { + + for ( var i = 0; i < shapes.length; i ++ ) { + + addShape( shapes[ i ] ); + + this.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support + + groupStart += groupCount; + groupCount = 0; + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + + // helper functions + + function addShape( shape ) { + + var i, l, shapeHole; + + var indexOffset = vertices.length / 3; + var points = shape.extractPoints( curveSegments ); + + var shapeVertices = points.shape; + var shapeHoles = points.holes; + + // check direction of vertices + + if ( ShapeUtils.isClockWise( shapeVertices ) === false ) { + + shapeVertices = shapeVertices.reverse(); + + } + + for ( i = 0, l = shapeHoles.length; i < l; i ++ ) { + + shapeHole = shapeHoles[ i ]; + + if ( ShapeUtils.isClockWise( shapeHole ) === true ) { + + shapeHoles[ i ] = shapeHole.reverse(); + + } + + } + + var faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles ); + + // join vertices of inner and outer paths to a single array + + for ( i = 0, l = shapeHoles.length; i < l; i ++ ) { + + shapeHole = shapeHoles[ i ]; + shapeVertices = shapeVertices.concat( shapeHole ); + + } + + // vertices, normals, uvs + + for ( i = 0, l = shapeVertices.length; i < l; i ++ ) { + + var vertex = shapeVertices[ i ]; + + vertices.push( vertex.x, vertex.y, 0 ); + normals.push( 0, 0, 1 ); + uvs.push( vertex.x, vertex.y ); // world uvs + + } + + // incides + + for ( i = 0, l = faces.length; i < l; i ++ ) { + + var face = faces[ i ]; + + var a = face[ 0 ] + indexOffset; + var b = face[ 1 ] + indexOffset; + var c = face[ 2 ] + indexOffset; + + indices.push( a, b, c ); + groupCount += 3; + + } + + } + + } + + ShapeBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + ShapeBufferGeometry.prototype.constructor = ShapeBufferGeometry; + + ShapeBufferGeometry.prototype.toJSON = function () { + + var data = BufferGeometry.prototype.toJSON.call( this ); + + var shapes = this.parameters.shapes; + + return toJSON$1( shapes, data ); + + }; + + // + + function toJSON$1( shapes, data ) { + + data.shapes = []; + + if ( Array.isArray( shapes ) ) { + + for ( var i = 0, l = shapes.length; i < l; i ++ ) { + + var shape = shapes[ i ]; + + data.shapes.push( shape.uuid ); + + } + + } else { + + data.shapes.push( shapes.uuid ); + + } + + return data; + + } + + /** + * @author WestLangley / http://github.com/WestLangley + * @author Mugen87 / https://github.com/Mugen87 + */ + + function EdgesGeometry( geometry, thresholdAngle ) { + + BufferGeometry.call( this ); + + this.type = 'EdgesGeometry'; + + this.parameters = { + thresholdAngle: thresholdAngle + }; + + thresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1; + + // buffer + + var vertices = []; + + // helper variables + + var thresholdDot = Math.cos( _Math.DEG2RAD * thresholdAngle ); + var edge = [ 0, 0 ], edges = {}, edge1, edge2; + var key, keys = [ 'a', 'b', 'c' ]; + + // prepare source geometry + + var geometry2; + + if ( geometry.isBufferGeometry ) { + + geometry2 = new Geometry(); + geometry2.fromBufferGeometry( geometry ); + + } else { + + geometry2 = geometry.clone(); + + } + + geometry2.mergeVertices(); + geometry2.computeFaceNormals(); + + var sourceVertices = geometry2.vertices; + var faces = geometry2.faces; + + // now create a data structure where each entry represents an edge with its adjoining faces + + for ( var i = 0, l = faces.length; i < l; i ++ ) { + + var face = faces[ i ]; + + for ( var j = 0; j < 3; j ++ ) { + + edge1 = face[ keys[ j ] ]; + edge2 = face[ keys[ ( j + 1 ) % 3 ] ]; + edge[ 0 ] = Math.min( edge1, edge2 ); + edge[ 1 ] = Math.max( edge1, edge2 ); + + key = edge[ 0 ] + ',' + edge[ 1 ]; + + if ( edges[ key ] === undefined ) { + + edges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ], face1: i, face2: undefined }; + + } else { + + edges[ key ].face2 = i; + + } + + } + + } + + // generate vertices + + for ( key in edges ) { + + var e = edges[ key ]; + + // an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree. + + if ( e.face2 === undefined || faces[ e.face1 ].normal.dot( faces[ e.face2 ].normal ) <= thresholdDot ) { + + var vertex = sourceVertices[ e.index1 ]; + vertices.push( vertex.x, vertex.y, vertex.z ); + + vertex = sourceVertices[ e.index2 ]; + vertices.push( vertex.x, vertex.y, vertex.z ); + + } + + } + + // build geometry + + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + + } + + EdgesGeometry.prototype = Object.create( BufferGeometry.prototype ); + EdgesGeometry.prototype.constructor = EdgesGeometry; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / https://github.com/Mugen87 + */ + + // CylinderGeometry + + function CylinderGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) { + + Geometry.call( this ); + + this.type = 'CylinderGeometry'; + + this.parameters = { + radiusTop: radiusTop, + radiusBottom: radiusBottom, + height: height, + radialSegments: radialSegments, + heightSegments: heightSegments, + openEnded: openEnded, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + this.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) ); + this.mergeVertices(); + + } + + CylinderGeometry.prototype = Object.create( Geometry.prototype ); + CylinderGeometry.prototype.constructor = CylinderGeometry; + + // CylinderBufferGeometry + + function CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) { + + BufferGeometry.call( this ); + + this.type = 'CylinderBufferGeometry'; + + this.parameters = { + radiusTop: radiusTop, + radiusBottom: radiusBottom, + height: height, + radialSegments: radialSegments, + heightSegments: heightSegments, + openEnded: openEnded, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + var scope = this; + + radiusTop = radiusTop !== undefined ? radiusTop : 1; + radiusBottom = radiusBottom !== undefined ? radiusBottom : 1; + height = height || 1; + + radialSegments = Math.floor( radialSegments ) || 8; + heightSegments = Math.floor( heightSegments ) || 1; + + openEnded = openEnded !== undefined ? openEnded : false; + thetaStart = thetaStart !== undefined ? thetaStart : 0.0; + thetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // helper variables + + var index = 0; + var indexArray = []; + var halfHeight = height / 2; + var groupStart = 0; + + // generate geometry + + generateTorso(); + + if ( openEnded === false ) { + + if ( radiusTop > 0 ) generateCap( true ); + if ( radiusBottom > 0 ) generateCap( false ); + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + function generateTorso() { + + var x, y; + var normal = new Vector3(); + var vertex = new Vector3(); + + var groupCount = 0; + + // this will be used to calculate the normal + var slope = ( radiusBottom - radiusTop ) / height; + + // generate vertices, normals and uvs + + for ( y = 0; y <= heightSegments; y ++ ) { + + var indexRow = []; + + var v = y / heightSegments; + + // calculate the radius of the current row + + var radius = v * ( radiusBottom - radiusTop ) + radiusTop; + + for ( x = 0; x <= radialSegments; x ++ ) { + + var u = x / radialSegments; + + var theta = u * thetaLength + thetaStart; + + var sinTheta = Math.sin( theta ); + var cosTheta = Math.cos( theta ); + + // vertex + + vertex.x = radius * sinTheta; + vertex.y = - v * height + halfHeight; + vertex.z = radius * cosTheta; + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + normal.set( sinTheta, slope, cosTheta ).normalize(); + normals.push( normal.x, normal.y, normal.z ); + + // uv + + uvs.push( u, 1 - v ); + + // save index of vertex in respective row + + indexRow.push( index ++ ); + + } + + // now save vertices of the row in our index array + + indexArray.push( indexRow ); + + } + + // generate indices + + for ( x = 0; x < radialSegments; x ++ ) { + + for ( y = 0; y < heightSegments; y ++ ) { + + // we use the index array to access the correct indices + + var a = indexArray[ y ][ x ]; + var b = indexArray[ y + 1 ][ x ]; + var c = indexArray[ y + 1 ][ x + 1 ]; + var d = indexArray[ y ][ x + 1 ]; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + // update group counter + + groupCount += 6; + + } + + } + + // add a group to the geometry. this will ensure multi material support + + scope.addGroup( groupStart, groupCount, 0 ); + + // calculate new start value for groups + + groupStart += groupCount; + + } + + function generateCap( top ) { + + var x, centerIndexStart, centerIndexEnd; + + var uv = new Vector2(); + var vertex = new Vector3(); + + var groupCount = 0; + + var radius = ( top === true ) ? radiusTop : radiusBottom; + var sign = ( top === true ) ? 1 : - 1; + + // save the index of the first center vertex + centerIndexStart = index; + + // first we generate the center vertex data of the cap. + // because the geometry needs one set of uvs per face, + // we must generate a center vertex per face/segment + + for ( x = 1; x <= radialSegments; x ++ ) { + + // vertex + + vertices.push( 0, halfHeight * sign, 0 ); + + // normal + + normals.push( 0, sign, 0 ); + + // uv + + uvs.push( 0.5, 0.5 ); + + // increase index + + index ++; + + } + + // save the index of the last center vertex + + centerIndexEnd = index; + + // now we generate the surrounding vertices, normals and uvs + + for ( x = 0; x <= radialSegments; x ++ ) { + + var u = x / radialSegments; + var theta = u * thetaLength + thetaStart; + + var cosTheta = Math.cos( theta ); + var sinTheta = Math.sin( theta ); + + // vertex + + vertex.x = radius * sinTheta; + vertex.y = halfHeight * sign; + vertex.z = radius * cosTheta; + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + normals.push( 0, sign, 0 ); + + // uv + + uv.x = ( cosTheta * 0.5 ) + 0.5; + uv.y = ( sinTheta * 0.5 * sign ) + 0.5; + uvs.push( uv.x, uv.y ); + + // increase index + + index ++; + + } + + // generate indices + + for ( x = 0; x < radialSegments; x ++ ) { + + var c = centerIndexStart + x; + var i = centerIndexEnd + x; + + if ( top === true ) { + + // face top + + indices.push( i, i + 1, c ); + + } else { + + // face bottom + + indices.push( i + 1, i, c ); + + } + + groupCount += 3; + + } + + // add a group to the geometry. this will ensure multi material support + + scope.addGroup( groupStart, groupCount, top === true ? 1 : 2 ); + + // calculate new start value for groups + + groupStart += groupCount; + + } + + } + + CylinderBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + CylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry; + + /** + * @author abelnation / http://github.com/abelnation + */ + + // ConeGeometry + + function ConeGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) { + + CylinderGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ); + + this.type = 'ConeGeometry'; + + this.parameters = { + radius: radius, + height: height, + radialSegments: radialSegments, + heightSegments: heightSegments, + openEnded: openEnded, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + } + + ConeGeometry.prototype = Object.create( CylinderGeometry.prototype ); + ConeGeometry.prototype.constructor = ConeGeometry; + + // ConeBufferGeometry + + function ConeBufferGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) { + + CylinderBufferGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ); + + this.type = 'ConeBufferGeometry'; + + this.parameters = { + radius: radius, + height: height, + radialSegments: radialSegments, + heightSegments: heightSegments, + openEnded: openEnded, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + } + + ConeBufferGeometry.prototype = Object.create( CylinderBufferGeometry.prototype ); + ConeBufferGeometry.prototype.constructor = ConeBufferGeometry; + + /** + * @author benaadams / https://twitter.com/ben_a_adams + * @author Mugen87 / https://github.com/Mugen87 + * @author hughes + */ + + // CircleGeometry + + function CircleGeometry( radius, segments, thetaStart, thetaLength ) { + + Geometry.call( this ); + + this.type = 'CircleGeometry'; + + this.parameters = { + radius: radius, + segments: segments, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + this.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) ); + this.mergeVertices(); + + } + + CircleGeometry.prototype = Object.create( Geometry.prototype ); + CircleGeometry.prototype.constructor = CircleGeometry; + + // CircleBufferGeometry + + function CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) { + + BufferGeometry.call( this ); + + this.type = 'CircleBufferGeometry'; + + this.parameters = { + radius: radius, + segments: segments, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + radius = radius || 1; + segments = segments !== undefined ? Math.max( 3, segments ) : 8; + + thetaStart = thetaStart !== undefined ? thetaStart : 0; + thetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // helper variables + + var i, s; + var vertex = new Vector3(); + var uv = new Vector2(); + + // center point + + vertices.push( 0, 0, 0 ); + normals.push( 0, 0, 1 ); + uvs.push( 0.5, 0.5 ); + + for ( s = 0, i = 3; s <= segments; s ++, i += 3 ) { + + var segment = thetaStart + s / segments * thetaLength; + + // vertex + + vertex.x = radius * Math.cos( segment ); + vertex.y = radius * Math.sin( segment ); + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + normals.push( 0, 0, 1 ); + + // uvs + + uv.x = ( vertices[ i ] / radius + 1 ) / 2; + uv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2; + + uvs.push( uv.x, uv.y ); + + } + + // indices + + for ( i = 1; i <= segments; i ++ ) { + + indices.push( i, i + 1, 0 ); + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + } + + CircleBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + CircleBufferGeometry.prototype.constructor = CircleBufferGeometry; + + + + var Geometries = /*#__PURE__*/Object.freeze({ + WireframeGeometry: WireframeGeometry, + ParametricGeometry: ParametricGeometry, + ParametricBufferGeometry: ParametricBufferGeometry, + TetrahedronGeometry: TetrahedronGeometry, + TetrahedronBufferGeometry: TetrahedronBufferGeometry, + OctahedronGeometry: OctahedronGeometry, + OctahedronBufferGeometry: OctahedronBufferGeometry, + IcosahedronGeometry: IcosahedronGeometry, + IcosahedronBufferGeometry: IcosahedronBufferGeometry, + DodecahedronGeometry: DodecahedronGeometry, + DodecahedronBufferGeometry: DodecahedronBufferGeometry, + PolyhedronGeometry: PolyhedronGeometry, + PolyhedronBufferGeometry: PolyhedronBufferGeometry, + TubeGeometry: TubeGeometry, + TubeBufferGeometry: TubeBufferGeometry, + TorusKnotGeometry: TorusKnotGeometry, + TorusKnotBufferGeometry: TorusKnotBufferGeometry, + TorusGeometry: TorusGeometry, + TorusBufferGeometry: TorusBufferGeometry, + TextGeometry: TextGeometry, + TextBufferGeometry: TextBufferGeometry, + SphereGeometry: SphereGeometry, + SphereBufferGeometry: SphereBufferGeometry, + RingGeometry: RingGeometry, + RingBufferGeometry: RingBufferGeometry, + PlaneGeometry: PlaneGeometry, + PlaneBufferGeometry: PlaneBufferGeometry, + LatheGeometry: LatheGeometry, + LatheBufferGeometry: LatheBufferGeometry, + ShapeGeometry: ShapeGeometry, + ShapeBufferGeometry: ShapeBufferGeometry, + ExtrudeGeometry: ExtrudeGeometry, + ExtrudeBufferGeometry: ExtrudeBufferGeometry, + EdgesGeometry: EdgesGeometry, + ConeGeometry: ConeGeometry, + ConeBufferGeometry: ConeBufferGeometry, + CylinderGeometry: CylinderGeometry, + CylinderBufferGeometry: CylinderBufferGeometry, + CircleGeometry: CircleGeometry, + CircleBufferGeometry: CircleBufferGeometry, + BoxGeometry: BoxGeometry, + BoxBufferGeometry: BoxBufferGeometry + }); + + /** + * @author mrdoob / http://mrdoob.com/ + * + * parameters = { + * color: + * } + */ + + function ShadowMaterial( parameters ) { + + Material.call( this ); + + this.type = 'ShadowMaterial'; + + this.color = new Color( 0x000000 ); + this.transparent = true; + + this.setValues( parameters ); + + } + + ShadowMaterial.prototype = Object.create( Material.prototype ); + ShadowMaterial.prototype.constructor = ShadowMaterial; + + ShadowMaterial.prototype.isShadowMaterial = true; + + ShadowMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + + return this; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function RawShaderMaterial( parameters ) { + + ShaderMaterial.call( this, parameters ); + + this.type = 'RawShaderMaterial'; + + } + + RawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype ); + RawShaderMaterial.prototype.constructor = RawShaderMaterial; + + RawShaderMaterial.prototype.isRawShaderMaterial = true; + + /** + * @author WestLangley / http://github.com/WestLangley + * + * parameters = { + * color: , + * roughness: , + * metalness: , + * opacity: , + * + * map: new THREE.Texture( ), + * + * lightMap: new THREE.Texture( ), + * lightMapIntensity: + * + * aoMap: new THREE.Texture( ), + * aoMapIntensity: + * + * emissive: , + * emissiveIntensity: + * emissiveMap: new THREE.Texture( ), + * + * bumpMap: new THREE.Texture( ), + * bumpScale: , + * + * normalMap: new THREE.Texture( ), + * normalMapType: THREE.TangentSpaceNormalMap, + * normalScale: , + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: , + * + * roughnessMap: new THREE.Texture( ), + * + * metalnessMap: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ), + * envMapIntensity: + * + * refractionRatio: , + * + * wireframe: , + * wireframeLinewidth: , + * + * skinning: , + * morphTargets: , + * morphNormals: + * } + */ + + function MeshStandardMaterial( parameters ) { + + Material.call( this ); + + this.defines = { 'STANDARD': '' }; + + this.type = 'MeshStandardMaterial'; + + this.color = new Color( 0xffffff ); // diffuse + this.roughness = 0.5; + this.metalness = 0.5; + + this.map = null; + + this.lightMap = null; + this.lightMapIntensity = 1.0; + + this.aoMap = null; + this.aoMapIntensity = 1.0; + + this.emissive = new Color( 0x000000 ); + this.emissiveIntensity = 1.0; + this.emissiveMap = null; + + this.bumpMap = null; + this.bumpScale = 1; + + this.normalMap = null; + this.normalMapType = TangentSpaceNormalMap; + this.normalScale = new Vector2( 1, 1 ); + + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + + this.roughnessMap = null; + + this.metalnessMap = null; + + this.alphaMap = null; + + this.envMap = null; + this.envMapIntensity = 1.0; + + this.refractionRatio = 0.98; + + this.wireframe = false; + this.wireframeLinewidth = 1; + this.wireframeLinecap = 'round'; + this.wireframeLinejoin = 'round'; + + this.skinning = false; + this.morphTargets = false; + this.morphNormals = false; + + this.setValues( parameters ); + + } + + MeshStandardMaterial.prototype = Object.create( Material.prototype ); + MeshStandardMaterial.prototype.constructor = MeshStandardMaterial; + + MeshStandardMaterial.prototype.isMeshStandardMaterial = true; + + MeshStandardMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.defines = { 'STANDARD': '' }; + + this.color.copy( source.color ); + this.roughness = source.roughness; + this.metalness = source.metalness; + + this.map = source.map; + + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + + this.emissive.copy( source.emissive ); + this.emissiveMap = source.emissiveMap; + this.emissiveIntensity = source.emissiveIntensity; + + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + + this.normalMap = source.normalMap; + this.normalMapType = source.normalMapType; + this.normalScale.copy( source.normalScale ); + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + this.roughnessMap = source.roughnessMap; + + this.metalnessMap = source.metalnessMap; + + this.alphaMap = source.alphaMap; + + this.envMap = source.envMap; + this.envMapIntensity = source.envMapIntensity; + + this.refractionRatio = source.refractionRatio; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + this.morphNormals = source.morphNormals; + + return this; + + }; + + /** + * @author WestLangley / http://github.com/WestLangley + * + * parameters = { + * reflectivity: + * clearCoat: + * clearCoatRoughness: + * } + */ + + function MeshPhysicalMaterial( parameters ) { + + MeshStandardMaterial.call( this ); + + this.defines = { 'PHYSICAL': '' }; + + this.type = 'MeshPhysicalMaterial'; + + this.reflectivity = 0.5; // maps to F0 = 0.04 + + this.clearCoat = 0.0; + this.clearCoatRoughness = 0.0; + + this.setValues( parameters ); + + } + + MeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype ); + MeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial; + + MeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true; + + MeshPhysicalMaterial.prototype.copy = function ( source ) { + + MeshStandardMaterial.prototype.copy.call( this, source ); + + this.defines = { 'PHYSICAL': '' }; + + this.reflectivity = source.reflectivity; + + this.clearCoat = source.clearCoat; + this.clearCoatRoughness = source.clearCoatRoughness; + + return this; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * color: , + * specular: , + * shininess: , + * opacity: , + * + * map: new THREE.Texture( ), + * + * lightMap: new THREE.Texture( ), + * lightMapIntensity: + * + * aoMap: new THREE.Texture( ), + * aoMapIntensity: + * + * emissive: , + * emissiveIntensity: + * emissiveMap: new THREE.Texture( ), + * + * bumpMap: new THREE.Texture( ), + * bumpScale: , + * + * normalMap: new THREE.Texture( ), + * normalMapType: THREE.TangentSpaceNormalMap, + * normalScale: , + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: , + * + * specularMap: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ), + * combine: THREE.Multiply, + * reflectivity: , + * refractionRatio: , + * + * wireframe: , + * wireframeLinewidth: , + * + * skinning: , + * morphTargets: , + * morphNormals: + * } + */ + + function MeshPhongMaterial( parameters ) { + + Material.call( this ); + + this.type = 'MeshPhongMaterial'; + + this.color = new Color( 0xffffff ); // diffuse + this.specular = new Color( 0x111111 ); + this.shininess = 30; + + this.map = null; + + this.lightMap = null; + this.lightMapIntensity = 1.0; + + this.aoMap = null; + this.aoMapIntensity = 1.0; + + this.emissive = new Color( 0x000000 ); + this.emissiveIntensity = 1.0; + this.emissiveMap = null; + + this.bumpMap = null; + this.bumpScale = 1; + + this.normalMap = null; + this.normalMapType = TangentSpaceNormalMap; + this.normalScale = new Vector2( 1, 1 ); + + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + + this.specularMap = null; + + this.alphaMap = null; + + this.envMap = null; + this.combine = MultiplyOperation; + this.reflectivity = 1; + this.refractionRatio = 0.98; + + this.wireframe = false; + this.wireframeLinewidth = 1; + this.wireframeLinecap = 'round'; + this.wireframeLinejoin = 'round'; + + this.skinning = false; + this.morphTargets = false; + this.morphNormals = false; + + this.setValues( parameters ); + + } + + MeshPhongMaterial.prototype = Object.create( Material.prototype ); + MeshPhongMaterial.prototype.constructor = MeshPhongMaterial; + + MeshPhongMaterial.prototype.isMeshPhongMaterial = true; + + MeshPhongMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + this.specular.copy( source.specular ); + this.shininess = source.shininess; + + this.map = source.map; + + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + + this.emissive.copy( source.emissive ); + this.emissiveMap = source.emissiveMap; + this.emissiveIntensity = source.emissiveIntensity; + + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + + this.normalMap = source.normalMap; + this.normalMapType = source.normalMapType; + this.normalScale.copy( source.normalScale ); + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + this.specularMap = source.specularMap; + + this.alphaMap = source.alphaMap; + + this.envMap = source.envMap; + this.combine = source.combine; + this.reflectivity = source.reflectivity; + this.refractionRatio = source.refractionRatio; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + this.morphNormals = source.morphNormals; + + return this; + + }; + + /** + * @author takahirox / http://github.com/takahirox + * + * parameters = { + * gradientMap: new THREE.Texture( ) + * } + */ + + function MeshToonMaterial( parameters ) { + + MeshPhongMaterial.call( this ); + + this.defines = { 'TOON': '' }; + + this.type = 'MeshToonMaterial'; + + this.gradientMap = null; + + this.setValues( parameters ); + + } + + MeshToonMaterial.prototype = Object.create( MeshPhongMaterial.prototype ); + MeshToonMaterial.prototype.constructor = MeshToonMaterial; + + MeshToonMaterial.prototype.isMeshToonMaterial = true; + + MeshToonMaterial.prototype.copy = function ( source ) { + + MeshPhongMaterial.prototype.copy.call( this, source ); + + this.gradientMap = source.gradientMap; + + return this; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author WestLangley / http://github.com/WestLangley + * + * parameters = { + * opacity: , + * + * bumpMap: new THREE.Texture( ), + * bumpScale: , + * + * normalMap: new THREE.Texture( ), + * normalMapType: THREE.TangentSpaceNormalMap, + * normalScale: , + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: , + * + * wireframe: , + * wireframeLinewidth: + * + * skinning: , + * morphTargets: , + * morphNormals: + * } + */ + + function MeshNormalMaterial( parameters ) { + + Material.call( this ); + + this.type = 'MeshNormalMaterial'; + + this.bumpMap = null; + this.bumpScale = 1; + + this.normalMap = null; + this.normalMapType = TangentSpaceNormalMap; + this.normalScale = new Vector2( 1, 1 ); + + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + + this.wireframe = false; + this.wireframeLinewidth = 1; + + this.fog = false; + this.lights = false; + + this.skinning = false; + this.morphTargets = false; + this.morphNormals = false; + + this.setValues( parameters ); + + } + + MeshNormalMaterial.prototype = Object.create( Material.prototype ); + MeshNormalMaterial.prototype.constructor = MeshNormalMaterial; + + MeshNormalMaterial.prototype.isMeshNormalMaterial = true; + + MeshNormalMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + + this.normalMap = source.normalMap; + this.normalMapType = source.normalMapType; + this.normalScale.copy( source.normalScale ); + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + this.morphNormals = source.morphNormals; + + return this; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * color: , + * opacity: , + * + * map: new THREE.Texture( ), + * + * lightMap: new THREE.Texture( ), + * lightMapIntensity: + * + * aoMap: new THREE.Texture( ), + * aoMapIntensity: + * + * emissive: , + * emissiveIntensity: + * emissiveMap: new THREE.Texture( ), + * + * specularMap: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ), + * combine: THREE.Multiply, + * reflectivity: , + * refractionRatio: , + * + * wireframe: , + * wireframeLinewidth: , + * + * skinning: , + * morphTargets: , + * morphNormals: + * } + */ + + function MeshLambertMaterial( parameters ) { + + Material.call( this ); + + this.type = 'MeshLambertMaterial'; + + this.color = new Color( 0xffffff ); // diffuse + + this.map = null; + + this.lightMap = null; + this.lightMapIntensity = 1.0; + + this.aoMap = null; + this.aoMapIntensity = 1.0; + + this.emissive = new Color( 0x000000 ); + this.emissiveIntensity = 1.0; + this.emissiveMap = null; + + this.specularMap = null; + + this.alphaMap = null; + + this.envMap = null; + this.combine = MultiplyOperation; + this.reflectivity = 1; + this.refractionRatio = 0.98; + + this.wireframe = false; + this.wireframeLinewidth = 1; + this.wireframeLinecap = 'round'; + this.wireframeLinejoin = 'round'; + + this.skinning = false; + this.morphTargets = false; + this.morphNormals = false; + + this.setValues( parameters ); + + } + + MeshLambertMaterial.prototype = Object.create( Material.prototype ); + MeshLambertMaterial.prototype.constructor = MeshLambertMaterial; + + MeshLambertMaterial.prototype.isMeshLambertMaterial = true; + + MeshLambertMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + + this.map = source.map; + + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + + this.emissive.copy( source.emissive ); + this.emissiveMap = source.emissiveMap; + this.emissiveIntensity = source.emissiveIntensity; + + this.specularMap = source.specularMap; + + this.alphaMap = source.alphaMap; + + this.envMap = source.envMap; + this.combine = source.combine; + this.reflectivity = source.reflectivity; + this.refractionRatio = source.refractionRatio; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + this.morphNormals = source.morphNormals; + + return this; + + }; + + /** + * @author WestLangley / http://github.com/WestLangley + * + * parameters = { + * color: , + * opacity: , + * + * matcap: new THREE.Texture( ), + * + * map: new THREE.Texture( ), + * + * bumpMap: new THREE.Texture( ), + * bumpScale: , + * + * normalMap: new THREE.Texture( ), + * normalMapType: THREE.TangentSpaceNormalMap, + * normalScale: , + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: , + * + * alphaMap: new THREE.Texture( ), + * + * skinning: , + * morphTargets: , + * morphNormals: + * } + */ + + function MeshMatcapMaterial( parameters ) { + + Material.call( this ); + + this.defines = { 'MATCAP': '' }; + + this.type = 'MeshMatcapMaterial'; + + this.color = new Color( 0xffffff ); // diffuse + + this.matcap = null; + + this.map = null; + + this.bumpMap = null; + this.bumpScale = 1; + + this.normalMap = null; + this.normalMapType = TangentSpaceNormalMap; + this.normalScale = new Vector2( 1, 1 ); + + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + + this.alphaMap = null; + + this.skinning = false; + this.morphTargets = false; + this.morphNormals = false; + + this.lights = false; + + this.setValues( parameters ); + + } + + MeshMatcapMaterial.prototype = Object.create( Material.prototype ); + MeshMatcapMaterial.prototype.constructor = MeshMatcapMaterial; + + MeshMatcapMaterial.prototype.isMeshMatcapMaterial = true; + + MeshMatcapMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.defines = { 'MATCAP': '' }; + + this.color.copy( source.color ); + + this.matcap = source.matcap; + + this.map = source.map; + + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + + this.normalMap = source.normalMap; + this.normalMapType = source.normalMapType; + this.normalScale.copy( source.normalScale ); + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + this.alphaMap = source.alphaMap; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + this.morphNormals = source.morphNormals; + + return this; + + }; + + /** + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * color: , + * opacity: , + * + * linewidth: , + * + * scale: , + * dashSize: , + * gapSize: + * } + */ + + function LineDashedMaterial( parameters ) { + + LineBasicMaterial.call( this ); + + this.type = 'LineDashedMaterial'; + + this.scale = 1; + this.dashSize = 3; + this.gapSize = 1; + + this.setValues( parameters ); + + } + + LineDashedMaterial.prototype = Object.create( LineBasicMaterial.prototype ); + LineDashedMaterial.prototype.constructor = LineDashedMaterial; + + LineDashedMaterial.prototype.isLineDashedMaterial = true; + + LineDashedMaterial.prototype.copy = function ( source ) { + + LineBasicMaterial.prototype.copy.call( this, source ); + + this.scale = source.scale; + this.dashSize = source.dashSize; + this.gapSize = source.gapSize; + + return this; + + }; + + + + var Materials = /*#__PURE__*/Object.freeze({ + ShadowMaterial: ShadowMaterial, + SpriteMaterial: SpriteMaterial, + RawShaderMaterial: RawShaderMaterial, + ShaderMaterial: ShaderMaterial, + PointsMaterial: PointsMaterial, + MeshPhysicalMaterial: MeshPhysicalMaterial, + MeshStandardMaterial: MeshStandardMaterial, + MeshPhongMaterial: MeshPhongMaterial, + MeshToonMaterial: MeshToonMaterial, + MeshNormalMaterial: MeshNormalMaterial, + MeshLambertMaterial: MeshLambertMaterial, + MeshDepthMaterial: MeshDepthMaterial, + MeshDistanceMaterial: MeshDistanceMaterial, + MeshBasicMaterial: MeshBasicMaterial, + MeshMatcapMaterial: MeshMatcapMaterial, + LineDashedMaterial: LineDashedMaterial, + LineBasicMaterial: LineBasicMaterial, + Material: Material + }); + + /** + * @author tschw + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + */ + + var AnimationUtils = { + + // same as Array.prototype.slice, but also works on typed arrays + arraySlice: function ( array, from, to ) { + + if ( AnimationUtils.isTypedArray( array ) ) { + + // in ios9 array.subarray(from, undefined) will return empty array + // but array.subarray(from) or array.subarray(from, len) is correct + return new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) ); + + } + + return array.slice( from, to ); + + }, + + // converts an array to a specific type + convertArray: function ( array, type, forceClone ) { + + if ( ! array || // let 'undefined' and 'null' pass + ! forceClone && array.constructor === type ) return array; + + if ( typeof type.BYTES_PER_ELEMENT === 'number' ) { + + return new type( array ); // create typed array + + } + + return Array.prototype.slice.call( array ); // create Array + + }, + + isTypedArray: function ( object ) { + + return ArrayBuffer.isView( object ) && + ! ( object instanceof DataView ); + + }, + + // returns an array by which times and values can be sorted + getKeyframeOrder: function ( times ) { + + function compareTime( i, j ) { + + return times[ i ] - times[ j ]; + + } + + var n = times.length; + var result = new Array( n ); + for ( var i = 0; i !== n; ++ i ) result[ i ] = i; + + result.sort( compareTime ); + + return result; + + }, + + // uses the array previously returned by 'getKeyframeOrder' to sort data + sortedArray: function ( values, stride, order ) { + + var nValues = values.length; + var result = new values.constructor( nValues ); + + for ( var i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) { + + var srcOffset = order[ i ] * stride; + + for ( var j = 0; j !== stride; ++ j ) { + + result[ dstOffset ++ ] = values[ srcOffset + j ]; + + } + + } + + return result; + + }, + + // function for parsing AOS keyframe formats + flattenJSON: function ( jsonKeys, times, values, valuePropertyName ) { + + var i = 1, key = jsonKeys[ 0 ]; + + while ( key !== undefined && key[ valuePropertyName ] === undefined ) { + + key = jsonKeys[ i ++ ]; + + } + + if ( key === undefined ) return; // no data + + var value = key[ valuePropertyName ]; + if ( value === undefined ) return; // no data + + if ( Array.isArray( value ) ) { + + do { + + value = key[ valuePropertyName ]; + + if ( value !== undefined ) { + + times.push( key.time ); + values.push.apply( values, value ); // push all elements + + } + + key = jsonKeys[ i ++ ]; + + } while ( key !== undefined ); + + } else if ( value.toArray !== undefined ) { + + // ...assume THREE.Math-ish + + do { + + value = key[ valuePropertyName ]; + + if ( value !== undefined ) { + + times.push( key.time ); + value.toArray( values, values.length ); + + } + + key = jsonKeys[ i ++ ]; + + } while ( key !== undefined ); + + } else { + + // otherwise push as-is + + do { + + value = key[ valuePropertyName ]; + + if ( value !== undefined ) { + + times.push( key.time ); + values.push( value ); + + } + + key = jsonKeys[ i ++ ]; + + } while ( key !== undefined ); + + } + + } + + }; + + /** + * Abstract base class of interpolants over parametric samples. + * + * The parameter domain is one dimensional, typically the time or a path + * along a curve defined by the data. + * + * The sample values can have any dimensionality and derived classes may + * apply special interpretations to the data. + * + * This class provides the interval seek in a Template Method, deferring + * the actual interpolation to derived classes. + * + * Time complexity is O(1) for linear access crossing at most two points + * and O(log N) for random access, where N is the number of positions. + * + * References: + * + * http://www.oodesign.com/template-method-pattern.html + * + * @author tschw + */ + + function Interpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + this.parameterPositions = parameterPositions; + this._cachedIndex = 0; + + this.resultBuffer = resultBuffer !== undefined ? + resultBuffer : new sampleValues.constructor( sampleSize ); + this.sampleValues = sampleValues; + this.valueSize = sampleSize; + + } + + Object.assign( Interpolant.prototype, { + + evaluate: function ( t ) { + + var pp = this.parameterPositions, + i1 = this._cachedIndex, + + t1 = pp[ i1 ], + t0 = pp[ i1 - 1 ]; + + validate_interval: { + + seek: { + + var right; + + linear_scan: { + + //- See http://jsperf.com/comparison-to-undefined/3 + //- slower code: + //- + //- if ( t >= t1 || t1 === undefined ) { + forward_scan: if ( ! ( t < t1 ) ) { + + for ( var giveUpAt = i1 + 2; ; ) { + + if ( t1 === undefined ) { + + if ( t < t0 ) break forward_scan; + + // after end + + i1 = pp.length; + this._cachedIndex = i1; + return this.afterEnd_( i1 - 1, t, t0 ); + + } + + if ( i1 === giveUpAt ) break; // this loop + + t0 = t1; + t1 = pp[ ++ i1 ]; + + if ( t < t1 ) { + + // we have arrived at the sought interval + break seek; + + } + + } + + // prepare binary search on the right side of the index + right = pp.length; + break linear_scan; + + } + + //- slower code: + //- if ( t < t0 || t0 === undefined ) { + if ( ! ( t >= t0 ) ) { + + // looping? + + var t1global = pp[ 1 ]; + + if ( t < t1global ) { + + i1 = 2; // + 1, using the scan for the details + t0 = t1global; + + } + + // linear reverse scan + + for ( var giveUpAt = i1 - 2; ; ) { + + if ( t0 === undefined ) { + + // before start + + this._cachedIndex = 0; + return this.beforeStart_( 0, t, t1 ); + + } + + if ( i1 === giveUpAt ) break; // this loop + + t1 = t0; + t0 = pp[ -- i1 - 1 ]; + + if ( t >= t0 ) { + + // we have arrived at the sought interval + break seek; + + } + + } + + // prepare binary search on the left side of the index + right = i1; + i1 = 0; + break linear_scan; + + } + + // the interval is valid + + break validate_interval; + + } // linear scan + + // binary search + + while ( i1 < right ) { + + var mid = ( i1 + right ) >>> 1; + + if ( t < pp[ mid ] ) { + + right = mid; + + } else { + + i1 = mid + 1; + + } + + } + + t1 = pp[ i1 ]; + t0 = pp[ i1 - 1 ]; + + // check boundary cases, again + + if ( t0 === undefined ) { + + this._cachedIndex = 0; + return this.beforeStart_( 0, t, t1 ); + + } + + if ( t1 === undefined ) { + + i1 = pp.length; + this._cachedIndex = i1; + return this.afterEnd_( i1 - 1, t0, t ); + + } + + } // seek + + this._cachedIndex = i1; + + this.intervalChanged_( i1, t0, t1 ); + + } // validate_interval + + return this.interpolate_( i1, t0, t, t1 ); + + }, + + settings: null, // optional, subclass-specific settings structure + // Note: The indirection allows central control of many interpolants. + + // --- Protected interface + + DefaultSettings_: {}, + + getSettings_: function () { + + return this.settings || this.DefaultSettings_; + + }, + + copySampleValue_: function ( index ) { + + // copies a sample value to the result buffer + + var result = this.resultBuffer, + values = this.sampleValues, + stride = this.valueSize, + offset = index * stride; + + for ( var i = 0; i !== stride; ++ i ) { + + result[ i ] = values[ offset + i ]; + + } + + return result; + + }, + + // Template methods for derived classes: + + interpolate_: function ( /* i1, t0, t, t1 */ ) { + + throw new Error( 'call to abstract method' ); + // implementations shall return this.resultBuffer + + }, + + intervalChanged_: function ( /* i1, t0, t1 */ ) { + + // empty + + } + + } ); + + //!\ DECLARE ALIAS AFTER assign prototype ! + Object.assign( Interpolant.prototype, { + + //( 0, t, t0 ), returns this.resultBuffer + beforeStart_: Interpolant.prototype.copySampleValue_, + + //( N-1, tN-1, t ), returns this.resultBuffer + afterEnd_: Interpolant.prototype.copySampleValue_, + + } ); + + /** + * Fast and simple cubic spline interpolant. + * + * It was derived from a Hermitian construction setting the first derivative + * at each sample position to the linear slope between neighboring positions + * over their parameter interval. + * + * @author tschw + */ + + function CubicInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); + + this._weightPrev = - 0; + this._offsetPrev = - 0; + this._weightNext = - 0; + this._offsetNext = - 0; + + } + + CubicInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), { + + constructor: CubicInterpolant, + + DefaultSettings_: { + + endingStart: ZeroCurvatureEnding, + endingEnd: ZeroCurvatureEnding + + }, + + intervalChanged_: function ( i1, t0, t1 ) { + + var pp = this.parameterPositions, + iPrev = i1 - 2, + iNext = i1 + 1, + + tPrev = pp[ iPrev ], + tNext = pp[ iNext ]; + + if ( tPrev === undefined ) { + + switch ( this.getSettings_().endingStart ) { + + case ZeroSlopeEnding: + + // f'(t0) = 0 + iPrev = i1; + tPrev = 2 * t0 - t1; + + break; + + case WrapAroundEnding: + + // use the other end of the curve + iPrev = pp.length - 2; + tPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ]; + + break; + + default: // ZeroCurvatureEnding + + // f''(t0) = 0 a.k.a. Natural Spline + iPrev = i1; + tPrev = t1; + + } + + } + + if ( tNext === undefined ) { + + switch ( this.getSettings_().endingEnd ) { + + case ZeroSlopeEnding: + + // f'(tN) = 0 + iNext = i1; + tNext = 2 * t1 - t0; + + break; + + case WrapAroundEnding: + + // use the other end of the curve + iNext = 1; + tNext = t1 + pp[ 1 ] - pp[ 0 ]; + + break; + + default: // ZeroCurvatureEnding + + // f''(tN) = 0, a.k.a. Natural Spline + iNext = i1 - 1; + tNext = t0; + + } + + } + + var halfDt = ( t1 - t0 ) * 0.5, + stride = this.valueSize; + + this._weightPrev = halfDt / ( t0 - tPrev ); + this._weightNext = halfDt / ( tNext - t1 ); + this._offsetPrev = iPrev * stride; + this._offsetNext = iNext * stride; + + }, + + interpolate_: function ( i1, t0, t, t1 ) { + + var result = this.resultBuffer, + values = this.sampleValues, + stride = this.valueSize, + + o1 = i1 * stride, o0 = o1 - stride, + oP = this._offsetPrev, oN = this._offsetNext, + wP = this._weightPrev, wN = this._weightNext, + + p = ( t - t0 ) / ( t1 - t0 ), + pp = p * p, + ppp = pp * p; + + // evaluate polynomials + + var sP = - wP * ppp + 2 * wP * pp - wP * p; + var s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1; + var s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p; + var sN = wN * ppp - wN * pp; + + // combine data linearly + + for ( var i = 0; i !== stride; ++ i ) { + + result[ i ] = + sP * values[ oP + i ] + + s0 * values[ o0 + i ] + + s1 * values[ o1 + i ] + + sN * values[ oN + i ]; + + } + + return result; + + } + + } ); + + /** + * @author tschw + */ + + function LinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); + + } + + LinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), { + + constructor: LinearInterpolant, + + interpolate_: function ( i1, t0, t, t1 ) { + + var result = this.resultBuffer, + values = this.sampleValues, + stride = this.valueSize, + + offset1 = i1 * stride, + offset0 = offset1 - stride, + + weight1 = ( t - t0 ) / ( t1 - t0 ), + weight0 = 1 - weight1; + + for ( var i = 0; i !== stride; ++ i ) { + + result[ i ] = + values[ offset0 + i ] * weight0 + + values[ offset1 + i ] * weight1; + + } + + return result; + + } + + } ); + + /** + * + * Interpolant that evaluates to the sample value at the position preceeding + * the parameter. + * + * @author tschw + */ + + function DiscreteInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); + + } + + DiscreteInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), { + + constructor: DiscreteInterpolant, + + interpolate_: function ( i1 /*, t0, t, t1 */ ) { + + return this.copySampleValue_( i1 - 1 ); + + } + + } ); + + /** + * + * A timed sequence of keyframes for a specific property. + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function KeyframeTrack( name, times, values, interpolation ) { + + if ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' ); + if ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name ); + + this.name = name; + + this.times = AnimationUtils.convertArray( times, this.TimeBufferType ); + this.values = AnimationUtils.convertArray( values, this.ValueBufferType ); + + this.setInterpolation( interpolation || this.DefaultInterpolation ); + + } + + // Static methods + + Object.assign( KeyframeTrack, { + + // Serialization (in static context, because of constructor invocation + // and automatic invocation of .toJSON): + + toJSON: function ( track ) { + + var trackType = track.constructor; + + var json; + + // derived classes can define a static toJSON method + if ( trackType.toJSON !== undefined ) { + + json = trackType.toJSON( track ); + + } else { + + // by default, we assume the data can be serialized as-is + json = { + + 'name': track.name, + 'times': AnimationUtils.convertArray( track.times, Array ), + 'values': AnimationUtils.convertArray( track.values, Array ) + + }; + + var interpolation = track.getInterpolation(); + + if ( interpolation !== track.DefaultInterpolation ) { + + json.interpolation = interpolation; + + } + + } + + json.type = track.ValueTypeName; // mandatory + + return json; + + } + + } ); + + Object.assign( KeyframeTrack.prototype, { + + constructor: KeyframeTrack, + + TimeBufferType: Float32Array, + + ValueBufferType: Float32Array, + + DefaultInterpolation: InterpolateLinear, + + InterpolantFactoryMethodDiscrete: function ( result ) { + + return new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result ); + + }, + + InterpolantFactoryMethodLinear: function ( result ) { + + return new LinearInterpolant( this.times, this.values, this.getValueSize(), result ); + + }, + + InterpolantFactoryMethodSmooth: function ( result ) { + + return new CubicInterpolant( this.times, this.values, this.getValueSize(), result ); + + }, + + setInterpolation: function ( interpolation ) { + + var factoryMethod; + + switch ( interpolation ) { + + case InterpolateDiscrete: + + factoryMethod = this.InterpolantFactoryMethodDiscrete; + + break; + + case InterpolateLinear: + + factoryMethod = this.InterpolantFactoryMethodLinear; + + break; + + case InterpolateSmooth: + + factoryMethod = this.InterpolantFactoryMethodSmooth; + + break; + + } + + if ( factoryMethod === undefined ) { + + var message = "unsupported interpolation for " + + this.ValueTypeName + " keyframe track named " + this.name; + + if ( this.createInterpolant === undefined ) { + + // fall back to default, unless the default itself is messed up + if ( interpolation !== this.DefaultInterpolation ) { + + this.setInterpolation( this.DefaultInterpolation ); + + } else { + + throw new Error( message ); // fatal, in this case + + } + + } + + console.warn( 'THREE.KeyframeTrack:', message ); + return this; + + } + + this.createInterpolant = factoryMethod; + + return this; + + }, + + getInterpolation: function () { + + switch ( this.createInterpolant ) { + + case this.InterpolantFactoryMethodDiscrete: + + return InterpolateDiscrete; + + case this.InterpolantFactoryMethodLinear: + + return InterpolateLinear; + + case this.InterpolantFactoryMethodSmooth: + + return InterpolateSmooth; + + } + + }, + + getValueSize: function () { + + return this.values.length / this.times.length; + + }, + + // move all keyframes either forwards or backwards in time + shift: function ( timeOffset ) { + + if ( timeOffset !== 0.0 ) { + + var times = this.times; + + for ( var i = 0, n = times.length; i !== n; ++ i ) { + + times[ i ] += timeOffset; + + } + + } + + return this; + + }, + + // scale all keyframe times by a factor (useful for frame <-> seconds conversions) + scale: function ( timeScale ) { + + if ( timeScale !== 1.0 ) { + + var times = this.times; + + for ( var i = 0, n = times.length; i !== n; ++ i ) { + + times[ i ] *= timeScale; + + } + + } + + return this; + + }, + + // removes keyframes before and after animation without changing any values within the range [startTime, endTime]. + // IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values + trim: function ( startTime, endTime ) { + + var times = this.times, + nKeys = times.length, + from = 0, + to = nKeys - 1; + + while ( from !== nKeys && times[ from ] < startTime ) { + + ++ from; + + } + + while ( to !== - 1 && times[ to ] > endTime ) { + + -- to; + + } + + ++ to; // inclusive -> exclusive bound + + if ( from !== 0 || to !== nKeys ) { + + // empty tracks are forbidden, so keep at least one keyframe + if ( from >= to ) to = Math.max( to, 1 ), from = to - 1; + + var stride = this.getValueSize(); + this.times = AnimationUtils.arraySlice( times, from, to ); + this.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride ); + + } + + return this; + + }, + + // ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable + validate: function () { + + var valid = true; + + var valueSize = this.getValueSize(); + if ( valueSize - Math.floor( valueSize ) !== 0 ) { + + console.error( 'THREE.KeyframeTrack: Invalid value size in track.', this ); + valid = false; + + } + + var times = this.times, + values = this.values, + + nKeys = times.length; + + if ( nKeys === 0 ) { + + console.error( 'THREE.KeyframeTrack: Track is empty.', this ); + valid = false; + + } + + var prevTime = null; + + for ( var i = 0; i !== nKeys; i ++ ) { + + var currTime = times[ i ]; + + if ( typeof currTime === 'number' && isNaN( currTime ) ) { + + console.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime ); + valid = false; + break; + + } + + if ( prevTime !== null && prevTime > currTime ) { + + console.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime ); + valid = false; + break; + + } + + prevTime = currTime; + + } + + if ( values !== undefined ) { + + if ( AnimationUtils.isTypedArray( values ) ) { + + for ( var i = 0, n = values.length; i !== n; ++ i ) { + + var value = values[ i ]; + + if ( isNaN( value ) ) { + + console.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value ); + valid = false; + break; + + } + + } + + } + + } + + return valid; + + }, + + // removes equivalent sequential keys as common in morph target sequences + // (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0) + optimize: function () { + + var times = this.times, + values = this.values, + stride = this.getValueSize(), + + smoothInterpolation = this.getInterpolation() === InterpolateSmooth, + + writeIndex = 1, + lastIndex = times.length - 1; + + for ( var i = 1; i < lastIndex; ++ i ) { + + var keep = false; + + var time = times[ i ]; + var timeNext = times[ i + 1 ]; + + // remove adjacent keyframes scheduled at the same time + + if ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) { + + if ( ! smoothInterpolation ) { + + // remove unnecessary keyframes same as their neighbors + + var offset = i * stride, + offsetP = offset - stride, + offsetN = offset + stride; + + for ( var j = 0; j !== stride; ++ j ) { + + var value = values[ offset + j ]; + + if ( value !== values[ offsetP + j ] || + value !== values[ offsetN + j ] ) { + + keep = true; + break; + + } + + } + + } else { + + keep = true; + + } + + } + + // in-place compaction + + if ( keep ) { + + if ( i !== writeIndex ) { + + times[ writeIndex ] = times[ i ]; + + var readOffset = i * stride, + writeOffset = writeIndex * stride; + + for ( var j = 0; j !== stride; ++ j ) { + + values[ writeOffset + j ] = values[ readOffset + j ]; + + } + + } + + ++ writeIndex; + + } + + } + + // flush last keyframe (compaction looks ahead) + + if ( lastIndex > 0 ) { + + times[ writeIndex ] = times[ lastIndex ]; + + for ( var readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) { + + values[ writeOffset + j ] = values[ readOffset + j ]; + + } + + ++ writeIndex; + + } + + if ( writeIndex !== times.length ) { + + this.times = AnimationUtils.arraySlice( times, 0, writeIndex ); + this.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride ); + + } + + return this; + + }, + + clone: function () { + + var times = AnimationUtils.arraySlice( this.times, 0 ); + var values = AnimationUtils.arraySlice( this.values, 0 ); + + var TypedKeyframeTrack = this.constructor; + var track = new TypedKeyframeTrack( this.name, times, values ); + + // Interpolant argument to constructor is not saved, so copy the factory method directly. + track.createInterpolant = this.createInterpolant; + + return track; + + } + + } ); + + /** + * + * A Track of Boolean keyframe values. + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function BooleanKeyframeTrack( name, times, values ) { + + KeyframeTrack.call( this, name, times, values ); + + } + + BooleanKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + + constructor: BooleanKeyframeTrack, + + ValueTypeName: 'bool', + ValueBufferType: Array, + + DefaultInterpolation: InterpolateDiscrete, + + InterpolantFactoryMethodLinear: undefined, + InterpolantFactoryMethodSmooth: undefined + + // Note: Actually this track could have a optimized / compressed + // representation of a single value and a custom interpolant that + // computes "firstValue ^ isOdd( index )". + + } ); + + /** + * + * A Track of keyframe values that represent color. + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function ColorKeyframeTrack( name, times, values, interpolation ) { + + KeyframeTrack.call( this, name, times, values, interpolation ); + + } + + ColorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + + constructor: ColorKeyframeTrack, + + ValueTypeName: 'color' + + // ValueBufferType is inherited + + // DefaultInterpolation is inherited + + // Note: Very basic implementation and nothing special yet. + // However, this is the place for color space parameterization. + + } ); + + /** + * + * A Track of numeric keyframe values. + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function NumberKeyframeTrack( name, times, values, interpolation ) { + + KeyframeTrack.call( this, name, times, values, interpolation ); + + } + + NumberKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + + constructor: NumberKeyframeTrack, + + ValueTypeName: 'number' + + // ValueBufferType is inherited + + // DefaultInterpolation is inherited + + } ); + + /** + * Spherical linear unit quaternion interpolant. + * + * @author tschw + */ + + function QuaternionLinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); + + } + + QuaternionLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), { + + constructor: QuaternionLinearInterpolant, + + interpolate_: function ( i1, t0, t, t1 ) { + + var result = this.resultBuffer, + values = this.sampleValues, + stride = this.valueSize, + + offset = i1 * stride, + + alpha = ( t - t0 ) / ( t1 - t0 ); + + for ( var end = offset + stride; offset !== end; offset += 4 ) { + + Quaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha ); + + } + + return result; + + } + + } ); + + /** + * + * A Track of quaternion keyframe values. + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function QuaternionKeyframeTrack( name, times, values, interpolation ) { + + KeyframeTrack.call( this, name, times, values, interpolation ); + + } + + QuaternionKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + + constructor: QuaternionKeyframeTrack, + + ValueTypeName: 'quaternion', + + // ValueBufferType is inherited + + DefaultInterpolation: InterpolateLinear, + + InterpolantFactoryMethodLinear: function ( result ) { + + return new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result ); + + }, + + InterpolantFactoryMethodSmooth: undefined // not yet implemented + + } ); + + /** + * + * A Track that interpolates Strings + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function StringKeyframeTrack( name, times, values, interpolation ) { + + KeyframeTrack.call( this, name, times, values, interpolation ); + + } + + StringKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + + constructor: StringKeyframeTrack, + + ValueTypeName: 'string', + ValueBufferType: Array, + + DefaultInterpolation: InterpolateDiscrete, + + InterpolantFactoryMethodLinear: undefined, + + InterpolantFactoryMethodSmooth: undefined + + } ); + + /** + * + * A Track of vectored keyframe values. + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function VectorKeyframeTrack( name, times, values, interpolation ) { + + KeyframeTrack.call( this, name, times, values, interpolation ); + + } + + VectorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + + constructor: VectorKeyframeTrack, + + ValueTypeName: 'vector' + + // ValueBufferType is inherited + + // DefaultInterpolation is inherited + + } ); + + /** + * + * Reusable set of Tracks that represent an animation. + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + */ + + function AnimationClip( name, duration, tracks ) { + + this.name = name; + this.tracks = tracks; + this.duration = ( duration !== undefined ) ? duration : - 1; + + this.uuid = _Math.generateUUID(); + + // this means it should figure out its duration by scanning the tracks + if ( this.duration < 0 ) { + + this.resetDuration(); + + } + + } + + function getTrackTypeForValueTypeName( typeName ) { + + switch ( typeName.toLowerCase() ) { + + case 'scalar': + case 'double': + case 'float': + case 'number': + case 'integer': + + return NumberKeyframeTrack; + + case 'vector': + case 'vector2': + case 'vector3': + case 'vector4': + + return VectorKeyframeTrack; + + case 'color': + + return ColorKeyframeTrack; + + case 'quaternion': + + return QuaternionKeyframeTrack; + + case 'bool': + case 'boolean': + + return BooleanKeyframeTrack; + + case 'string': + + return StringKeyframeTrack; + + } + + throw new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName ); + + } + + function parseKeyframeTrack( json ) { + + if ( json.type === undefined ) { + + throw new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' ); + + } + + var trackType = getTrackTypeForValueTypeName( json.type ); + + if ( json.times === undefined ) { + + var times = [], values = []; + + AnimationUtils.flattenJSON( json.keys, times, values, 'value' ); + + json.times = times; + json.values = values; + + } + + // derived classes can define a static parse method + if ( trackType.parse !== undefined ) { + + return trackType.parse( json ); + + } else { + + // by default, we assume a constructor compatible with the base + return new trackType( json.name, json.times, json.values, json.interpolation ); + + } + + } + + Object.assign( AnimationClip, { + + parse: function ( json ) { + + var tracks = [], + jsonTracks = json.tracks, + frameTime = 1.0 / ( json.fps || 1.0 ); + + for ( var i = 0, n = jsonTracks.length; i !== n; ++ i ) { + + tracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) ); + + } + + return new AnimationClip( json.name, json.duration, tracks ); + + }, + + toJSON: function ( clip ) { + + var tracks = [], + clipTracks = clip.tracks; + + var json = { + + 'name': clip.name, + 'duration': clip.duration, + 'tracks': tracks, + 'uuid': clip.uuid + + }; + + for ( var i = 0, n = clipTracks.length; i !== n; ++ i ) { + + tracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) ); + + } + + return json; + + }, + + CreateFromMorphTargetSequence: function ( name, morphTargetSequence, fps, noLoop ) { + + var numMorphTargets = morphTargetSequence.length; + var tracks = []; + + for ( var i = 0; i < numMorphTargets; i ++ ) { + + var times = []; + var values = []; + + times.push( + ( i + numMorphTargets - 1 ) % numMorphTargets, + i, + ( i + 1 ) % numMorphTargets ); + + values.push( 0, 1, 0 ); + + var order = AnimationUtils.getKeyframeOrder( times ); + times = AnimationUtils.sortedArray( times, 1, order ); + values = AnimationUtils.sortedArray( values, 1, order ); + + // if there is a key at the first frame, duplicate it as the + // last frame as well for perfect loop. + if ( ! noLoop && times[ 0 ] === 0 ) { + + times.push( numMorphTargets ); + values.push( values[ 0 ] ); + + } + + tracks.push( + new NumberKeyframeTrack( + '.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']', + times, values + ).scale( 1.0 / fps ) ); + + } + + return new AnimationClip( name, - 1, tracks ); + + }, + + findByName: function ( objectOrClipArray, name ) { + + var clipArray = objectOrClipArray; + + if ( ! Array.isArray( objectOrClipArray ) ) { + + var o = objectOrClipArray; + clipArray = o.geometry && o.geometry.animations || o.animations; + + } + + for ( var i = 0; i < clipArray.length; i ++ ) { + + if ( clipArray[ i ].name === name ) { + + return clipArray[ i ]; + + } + + } + + return null; + + }, + + CreateClipsFromMorphTargetSequences: function ( morphTargets, fps, noLoop ) { + + var animationToMorphTargets = {}; + + // tested with https://regex101.com/ on trick sequences + // such flamingo_flyA_003, flamingo_run1_003, crdeath0059 + var pattern = /^([\w-]*?)([\d]+)$/; + + // sort morph target names into animation groups based + // patterns like Walk_001, Walk_002, Run_001, Run_002 + for ( var i = 0, il = morphTargets.length; i < il; i ++ ) { + + var morphTarget = morphTargets[ i ]; + var parts = morphTarget.name.match( pattern ); + + if ( parts && parts.length > 1 ) { + + var name = parts[ 1 ]; + + var animationMorphTargets = animationToMorphTargets[ name ]; + if ( ! animationMorphTargets ) { + + animationToMorphTargets[ name ] = animationMorphTargets = []; + + } + + animationMorphTargets.push( morphTarget ); + + } + + } + + var clips = []; + + for ( var name in animationToMorphTargets ) { + + clips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) ); + + } + + return clips; + + }, + + // parse the animation.hierarchy format + parseAnimation: function ( animation, bones ) { + + if ( ! animation ) { + + console.error( 'THREE.AnimationClip: No animation in JSONLoader data.' ); + return null; + + } + + var addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) { + + // only return track if there are actually keys. + if ( animationKeys.length !== 0 ) { + + var times = []; + var values = []; + + AnimationUtils.flattenJSON( animationKeys, times, values, propertyName ); + + // empty keys are filtered out, so check again + if ( times.length !== 0 ) { + + destTracks.push( new trackType( trackName, times, values ) ); + + } + + } + + }; + + var tracks = []; + + var clipName = animation.name || 'default'; + // automatic length determination in AnimationClip. + var duration = animation.length || - 1; + var fps = animation.fps || 30; + + var hierarchyTracks = animation.hierarchy || []; + + for ( var h = 0; h < hierarchyTracks.length; h ++ ) { + + var animationKeys = hierarchyTracks[ h ].keys; + + // skip empty tracks + if ( ! animationKeys || animationKeys.length === 0 ) continue; + + // process morph targets + if ( animationKeys[ 0 ].morphTargets ) { + + // figure out all morph targets used in this track + var morphTargetNames = {}; + + for ( var k = 0; k < animationKeys.length; k ++ ) { + + if ( animationKeys[ k ].morphTargets ) { + + for ( var m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) { + + morphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1; + + } + + } + + } + + // create a track for each morph target with all zero + // morphTargetInfluences except for the keys in which + // the morphTarget is named. + for ( var morphTargetName in morphTargetNames ) { + + var times = []; + var values = []; + + for ( var m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) { + + var animationKey = animationKeys[ k ]; + + times.push( animationKey.time ); + values.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 ); + + } + + tracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) ); + + } + + duration = morphTargetNames.length * ( fps || 1.0 ); + + } else { + + // ...assume skeletal animation + + var boneName = '.bones[' + bones[ h ].name + ']'; + + addNonemptyTrack( + VectorKeyframeTrack, boneName + '.position', + animationKeys, 'pos', tracks ); + + addNonemptyTrack( + QuaternionKeyframeTrack, boneName + '.quaternion', + animationKeys, 'rot', tracks ); + + addNonemptyTrack( + VectorKeyframeTrack, boneName + '.scale', + animationKeys, 'scl', tracks ); + + } + + } + + if ( tracks.length === 0 ) { + + return null; + + } + + var clip = new AnimationClip( clipName, duration, tracks ); + + return clip; + + } + + } ); + + Object.assign( AnimationClip.prototype, { + + resetDuration: function () { + + var tracks = this.tracks, duration = 0; + + for ( var i = 0, n = tracks.length; i !== n; ++ i ) { + + var track = this.tracks[ i ]; + + duration = Math.max( duration, track.times[ track.times.length - 1 ] ); + + } + + this.duration = duration; + + return this; + + }, + + trim: function () { + + for ( var i = 0; i < this.tracks.length; i ++ ) { + + this.tracks[ i ].trim( 0, this.duration ); + + } + + return this; + + }, + + validate: function () { + + var valid = true; + + for ( var i = 0; i < this.tracks.length; i ++ ) { + + valid = valid && this.tracks[ i ].validate(); + + } + + return valid; + + }, + + optimize: function () { + + for ( var i = 0; i < this.tracks.length; i ++ ) { + + this.tracks[ i ].optimize(); + + } + + return this; + + }, + + + clone: function () { + + var tracks = []; + + for ( var i = 0; i < this.tracks.length; i ++ ) { + + tracks.push( this.tracks[ i ].clone() ); + + } + + return new AnimationClip( this.name, this.duration, tracks ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + var Cache = { + + enabled: false, + + files: {}, + + add: function ( key, file ) { + + if ( this.enabled === false ) return; + + // console.log( 'THREE.Cache', 'Adding key:', key ); + + this.files[ key ] = file; + + }, + + get: function ( key ) { + + if ( this.enabled === false ) return; + + // console.log( 'THREE.Cache', 'Checking key:', key ); + + return this.files[ key ]; + + }, + + remove: function ( key ) { + + delete this.files[ key ]; + + }, + + clear: function () { + + this.files = {}; + + } + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function LoadingManager( onLoad, onProgress, onError ) { + + var scope = this; + + var isLoading = false; + var itemsLoaded = 0; + var itemsTotal = 0; + var urlModifier = undefined; + + // Refer to #5689 for the reason why we don't set .onStart + // in the constructor + + this.onStart = undefined; + this.onLoad = onLoad; + this.onProgress = onProgress; + this.onError = onError; + + this.itemStart = function ( url ) { + + itemsTotal ++; + + if ( isLoading === false ) { + + if ( scope.onStart !== undefined ) { + + scope.onStart( url, itemsLoaded, itemsTotal ); + + } + + } + + isLoading = true; + + }; + + this.itemEnd = function ( url ) { + + itemsLoaded ++; + + if ( scope.onProgress !== undefined ) { + + scope.onProgress( url, itemsLoaded, itemsTotal ); + + } + + if ( itemsLoaded === itemsTotal ) { + + isLoading = false; + + if ( scope.onLoad !== undefined ) { + + scope.onLoad(); + + } + + } + + }; + + this.itemError = function ( url ) { + + if ( scope.onError !== undefined ) { + + scope.onError( url ); + + } + + }; + + this.resolveURL = function ( url ) { + + if ( urlModifier ) { + + return urlModifier( url ); + + } + + return url; + + }; + + this.setURLModifier = function ( transform ) { + + urlModifier = transform; + return this; + + }; + + } + + var DefaultLoadingManager = new LoadingManager(); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + var loading = {}; + + function FileLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + } + + Object.assign( FileLoader.prototype, { + + load: function ( url, onLoad, onProgress, onError ) { + + if ( url === undefined ) url = ''; + + if ( this.path !== undefined ) url = this.path + url; + + url = this.manager.resolveURL( url ); + + var scope = this; + + var cached = Cache.get( url ); + + if ( cached !== undefined ) { + + scope.manager.itemStart( url ); + + setTimeout( function () { + + if ( onLoad ) onLoad( cached ); + + scope.manager.itemEnd( url ); + + }, 0 ); + + return cached; + + } + + // Check if request is duplicate + + if ( loading[ url ] !== undefined ) { + + loading[ url ].push( { + + onLoad: onLoad, + onProgress: onProgress, + onError: onError + + } ); + + return; + + } + + // Check for data: URI + var dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/; + var dataUriRegexResult = url.match( dataUriRegex ); + + // Safari can not handle Data URIs through XMLHttpRequest so process manually + if ( dataUriRegexResult ) { + + var mimeType = dataUriRegexResult[ 1 ]; + var isBase64 = !! dataUriRegexResult[ 2 ]; + var data = dataUriRegexResult[ 3 ]; + + data = decodeURIComponent( data ); + + if ( isBase64 ) data = atob( data ); + + try { + + var response; + var responseType = ( this.responseType || '' ).toLowerCase(); + + switch ( responseType ) { + + case 'arraybuffer': + case 'blob': + + var view = new Uint8Array( data.length ); + + for ( var i = 0; i < data.length; i ++ ) { + + view[ i ] = data.charCodeAt( i ); + + } + + if ( responseType === 'blob' ) { + + response = new Blob( [ view.buffer ], { type: mimeType } ); + + } else { + + response = view.buffer; + + } + + break; + + case 'document': + + var parser = new DOMParser(); + response = parser.parseFromString( data, mimeType ); + + break; + + case 'json': + + response = JSON.parse( data ); + + break; + + default: // 'text' or other + + response = data; + + break; + + } + + // Wait for next browser tick like standard XMLHttpRequest event dispatching does + setTimeout( function () { + + if ( onLoad ) onLoad( response ); + + scope.manager.itemEnd( url ); + + }, 0 ); + + } catch ( error ) { + + // Wait for next browser tick like standard XMLHttpRequest event dispatching does + setTimeout( function () { + + if ( onError ) onError( error ); + + scope.manager.itemError( url ); + scope.manager.itemEnd( url ); + + }, 0 ); + + } + + } else { + + // Initialise array for duplicate requests + + loading[ url ] = []; + + loading[ url ].push( { + + onLoad: onLoad, + onProgress: onProgress, + onError: onError + + } ); + + var request = new XMLHttpRequest(); + + request.open( 'GET', url, true ); + + request.addEventListener( 'load', function ( event ) { + + var response = this.response; + + Cache.add( url, response ); + + var callbacks = loading[ url ]; + + delete loading[ url ]; + + if ( this.status === 200 || this.status === 0 ) { + + // Some browsers return HTTP Status 0 when using non-http protocol + // e.g. 'file://' or 'data://'. Handle as success. + + if ( this.status === 0 ) console.warn( 'THREE.FileLoader: HTTP Status 0 received.' ); + + for ( var i = 0, il = callbacks.length; i < il; i ++ ) { + + var callback = callbacks[ i ]; + if ( callback.onLoad ) callback.onLoad( response ); + + } + + scope.manager.itemEnd( url ); + + } else { + + for ( var i = 0, il = callbacks.length; i < il; i ++ ) { + + var callback = callbacks[ i ]; + if ( callback.onError ) callback.onError( event ); + + } + + scope.manager.itemError( url ); + scope.manager.itemEnd( url ); + + } + + }, false ); + + request.addEventListener( 'progress', function ( event ) { + + var callbacks = loading[ url ]; + + for ( var i = 0, il = callbacks.length; i < il; i ++ ) { + + var callback = callbacks[ i ]; + if ( callback.onProgress ) callback.onProgress( event ); + + } + + }, false ); + + request.addEventListener( 'error', function ( event ) { + + var callbacks = loading[ url ]; + + delete loading[ url ]; + + for ( var i = 0, il = callbacks.length; i < il; i ++ ) { + + var callback = callbacks[ i ]; + if ( callback.onError ) callback.onError( event ); + + } + + scope.manager.itemError( url ); + scope.manager.itemEnd( url ); + + }, false ); + + request.addEventListener( 'abort', function ( event ) { + + var callbacks = loading[ url ]; + + delete loading[ url ]; + + for ( var i = 0, il = callbacks.length; i < il; i ++ ) { + + var callback = callbacks[ i ]; + if ( callback.onError ) callback.onError( event ); + + } + + scope.manager.itemError( url ); + scope.manager.itemEnd( url ); + + }, false ); + + if ( this.responseType !== undefined ) request.responseType = this.responseType; + if ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials; + + if ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' ); + + for ( var header in this.requestHeader ) { + + request.setRequestHeader( header, this.requestHeader[ header ] ); + + } + + request.send( null ); + + } + + scope.manager.itemStart( url ); + + return request; + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + }, + + setResponseType: function ( value ) { + + this.responseType = value; + return this; + + }, + + setWithCredentials: function ( value ) { + + this.withCredentials = value; + return this; + + }, + + setMimeType: function ( value ) { + + this.mimeType = value; + return this; + + }, + + setRequestHeader: function ( value ) { + + this.requestHeader = value; + return this; + + } + + } ); + + /** + * @author bhouston / http://clara.io/ + */ + + function AnimationLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + } + + Object.assign( AnimationLoader.prototype, { + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var loader = new FileLoader( scope.manager ); + loader.setPath( scope.path ); + loader.load( url, function ( text ) { + + onLoad( scope.parse( JSON.parse( text ) ) ); + + }, onProgress, onError ); + + }, + + parse: function ( json ) { + + var animations = []; + + for ( var i = 0; i < json.length; i ++ ) { + + var clip = AnimationClip.parse( json[ i ] ); + + animations.push( clip ); + + } + + return animations; + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * + * Abstract Base class to block based textures loader (dds, pvr, ...) + */ + + function CompressedTextureLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + // override in sub classes + this._parser = null; + + } + + Object.assign( CompressedTextureLoader.prototype, { + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var images = []; + + var texture = new CompressedTexture(); + texture.image = images; + + var loader = new FileLoader( this.manager ); + loader.setPath( this.path ); + loader.setResponseType( 'arraybuffer' ); + + function loadTexture( i ) { + + loader.load( url[ i ], function ( buffer ) { + + var texDatas = scope._parser( buffer, true ); + + images[ i ] = { + width: texDatas.width, + height: texDatas.height, + format: texDatas.format, + mipmaps: texDatas.mipmaps + }; + + loaded += 1; + + if ( loaded === 6 ) { + + if ( texDatas.mipmapCount === 1 ) + texture.minFilter = LinearFilter; + + texture.format = texDatas.format; + texture.needsUpdate = true; + + if ( onLoad ) onLoad( texture ); + + } + + }, onProgress, onError ); + + } + + if ( Array.isArray( url ) ) { + + var loaded = 0; + + for ( var i = 0, il = url.length; i < il; ++ i ) { + + loadTexture( i ); + + } + + } else { + + // compressed cubemap texture stored in a single DDS file + + loader.load( url, function ( buffer ) { + + var texDatas = scope._parser( buffer, true ); + + if ( texDatas.isCubemap ) { + + var faces = texDatas.mipmaps.length / texDatas.mipmapCount; + + for ( var f = 0; f < faces; f ++ ) { + + images[ f ] = { mipmaps: [] }; + + for ( var i = 0; i < texDatas.mipmapCount; i ++ ) { + + images[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] ); + images[ f ].format = texDatas.format; + images[ f ].width = texDatas.width; + images[ f ].height = texDatas.height; + + } + + } + + } else { + + texture.image.width = texDatas.width; + texture.image.height = texDatas.height; + texture.mipmaps = texDatas.mipmaps; + + } + + if ( texDatas.mipmapCount === 1 ) { + + texture.minFilter = LinearFilter; + + } + + texture.format = texDatas.format; + texture.needsUpdate = true; + + if ( onLoad ) onLoad( texture ); + + }, onProgress, onError ); + + } + + return texture; + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + } + + } ); + + /** + * @author Nikos M. / https://github.com/foo123/ + * + * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...) + */ + + function DataTextureLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + // override in sub classes + this._parser = null; + + } + + Object.assign( DataTextureLoader.prototype, { + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var texture = new DataTexture(); + + var loader = new FileLoader( this.manager ); + loader.setResponseType( 'arraybuffer' ); + loader.setPath( this.path ); + loader.load( url, function ( buffer ) { + + var texData = scope._parser( buffer ); + + if ( ! texData ) return; + + if ( texData.image !== undefined ) { + + texture.image = texData.image; + + } else if ( texData.data !== undefined ) { + + texture.image.width = texData.width; + texture.image.height = texData.height; + texture.image.data = texData.data; + + } + + texture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping; + texture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping; + + texture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter; + texture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearMipMapLinearFilter; + + texture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1; + + if ( texData.format !== undefined ) { + + texture.format = texData.format; + + } + if ( texData.type !== undefined ) { + + texture.type = texData.type; + + } + + if ( texData.mipmaps !== undefined ) { + + texture.mipmaps = texData.mipmaps; + + } + + if ( texData.mipmapCount === 1 ) { + + texture.minFilter = LinearFilter; + + } + + texture.needsUpdate = true; + + if ( onLoad ) onLoad( texture, texData ); + + }, onProgress, onError ); + + + return texture; + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + + function ImageLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + } + + Object.assign( ImageLoader.prototype, { + + crossOrigin: 'anonymous', + + load: function ( url, onLoad, onProgress, onError ) { + + if ( url === undefined ) url = ''; + + if ( this.path !== undefined ) url = this.path + url; + + url = this.manager.resolveURL( url ); + + var scope = this; + + var cached = Cache.get( url ); + + if ( cached !== undefined ) { + + scope.manager.itemStart( url ); + + setTimeout( function () { + + if ( onLoad ) onLoad( cached ); + + scope.manager.itemEnd( url ); + + }, 0 ); + + return cached; + + } + + var image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' ); + + function onImageLoad() { + + image.removeEventListener( 'load', onImageLoad, false ); + image.removeEventListener( 'error', onImageError, false ); + + Cache.add( url, this ); + + if ( onLoad ) onLoad( this ); + + scope.manager.itemEnd( url ); + + } + + function onImageError( event ) { + + image.removeEventListener( 'load', onImageLoad, false ); + image.removeEventListener( 'error', onImageError, false ); + + if ( onError ) onError( event ); + + scope.manager.itemError( url ); + scope.manager.itemEnd( url ); + + } + + image.addEventListener( 'load', onImageLoad, false ); + image.addEventListener( 'error', onImageError, false ); + + if ( url.substr( 0, 5 ) !== 'data:' ) { + + if ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin; + + } + + scope.manager.itemStart( url ); + + image.src = url; + + return image; + + }, + + setCrossOrigin: function ( value ) { + + this.crossOrigin = value; + return this; + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + + function CubeTextureLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + } + + Object.assign( CubeTextureLoader.prototype, { + + crossOrigin: 'anonymous', + + load: function ( urls, onLoad, onProgress, onError ) { + + var texture = new CubeTexture(); + + var loader = new ImageLoader( this.manager ); + loader.setCrossOrigin( this.crossOrigin ); + loader.setPath( this.path ); + + var loaded = 0; + + function loadTexture( i ) { + + loader.load( urls[ i ], function ( image ) { + + texture.images[ i ] = image; + + loaded ++; + + if ( loaded === 6 ) { + + texture.needsUpdate = true; + + if ( onLoad ) onLoad( texture ); + + } + + }, undefined, onError ); + + } + + for ( var i = 0; i < urls.length; ++ i ) { + + loadTexture( i ); + + } + + return texture; + + }, + + setCrossOrigin: function ( value ) { + + this.crossOrigin = value; + return this; + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + + function TextureLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + } + + Object.assign( TextureLoader.prototype, { + + crossOrigin: 'anonymous', + + load: function ( url, onLoad, onProgress, onError ) { + + var texture = new Texture(); + + var loader = new ImageLoader( this.manager ); + loader.setCrossOrigin( this.crossOrigin ); + loader.setPath( this.path ); + + loader.load( url, function ( image ) { + + texture.image = image; + + // JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB. + var isJPEG = url.search( /\.jpe?g($|\?)/i ) > 0 || url.search( /^data\:image\/jpeg/ ) === 0; + + texture.format = isJPEG ? RGBFormat : RGBAFormat; + texture.needsUpdate = true; + + if ( onLoad !== undefined ) { + + onLoad( texture ); + + } + + }, onProgress, onError ); + + return texture; + + }, + + setCrossOrigin: function ( value ) { + + this.crossOrigin = value; + return this; + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + } + + } ); + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * Extensible curve object + * + * Some common of curve methods: + * .getPoint( t, optionalTarget ), .getTangent( t ) + * .getPointAt( u, optionalTarget ), .getTangentAt( u ) + * .getPoints(), .getSpacedPoints() + * .getLength() + * .updateArcLengths() + * + * This following curves inherit from THREE.Curve: + * + * -- 2D curves -- + * THREE.ArcCurve + * THREE.CubicBezierCurve + * THREE.EllipseCurve + * THREE.LineCurve + * THREE.QuadraticBezierCurve + * THREE.SplineCurve + * + * -- 3D curves -- + * THREE.CatmullRomCurve3 + * THREE.CubicBezierCurve3 + * THREE.LineCurve3 + * THREE.QuadraticBezierCurve3 + * + * A series of curves can be represented as a THREE.CurvePath. + * + **/ + + /************************************************************** + * Abstract Curve base class + **************************************************************/ + + function Curve() { + + this.type = 'Curve'; + + this.arcLengthDivisions = 200; + + } + + Object.assign( Curve.prototype, { + + // Virtual base class method to overwrite and implement in subclasses + // - t [0 .. 1] + + getPoint: function ( /* t, optionalTarget */ ) { + + console.warn( 'THREE.Curve: .getPoint() not implemented.' ); + return null; + + }, + + // Get point at relative position in curve according to arc length + // - u [0 .. 1] + + getPointAt: function ( u, optionalTarget ) { + + var t = this.getUtoTmapping( u ); + return this.getPoint( t, optionalTarget ); + + }, + + // Get sequence of points using getPoint( t ) + + getPoints: function ( divisions ) { + + if ( divisions === undefined ) divisions = 5; + + var points = []; + + for ( var d = 0; d <= divisions; d ++ ) { + + points.push( this.getPoint( d / divisions ) ); + + } + + return points; + + }, + + // Get sequence of points using getPointAt( u ) + + getSpacedPoints: function ( divisions ) { + + if ( divisions === undefined ) divisions = 5; + + var points = []; + + for ( var d = 0; d <= divisions; d ++ ) { + + points.push( this.getPointAt( d / divisions ) ); + + } + + return points; + + }, + + // Get total curve arc length + + getLength: function () { + + var lengths = this.getLengths(); + return lengths[ lengths.length - 1 ]; + + }, + + // Get list of cumulative segment lengths + + getLengths: function ( divisions ) { + + if ( divisions === undefined ) divisions = this.arcLengthDivisions; + + if ( this.cacheArcLengths && + ( this.cacheArcLengths.length === divisions + 1 ) && + ! this.needsUpdate ) { + + return this.cacheArcLengths; + + } + + this.needsUpdate = false; + + var cache = []; + var current, last = this.getPoint( 0 ); + var p, sum = 0; + + cache.push( 0 ); + + for ( p = 1; p <= divisions; p ++ ) { + + current = this.getPoint( p / divisions ); + sum += current.distanceTo( last ); + cache.push( sum ); + last = current; + + } + + this.cacheArcLengths = cache; + + return cache; // { sums: cache, sum: sum }; Sum is in the last element. + + }, + + updateArcLengths: function () { + + this.needsUpdate = true; + this.getLengths(); + + }, + + // Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant + + getUtoTmapping: function ( u, distance ) { + + var arcLengths = this.getLengths(); + + var i = 0, il = arcLengths.length; + + var targetArcLength; // The targeted u distance value to get + + if ( distance ) { + + targetArcLength = distance; + + } else { + + targetArcLength = u * arcLengths[ il - 1 ]; + + } + + // binary search for the index with largest value smaller than target u distance + + var low = 0, high = il - 1, comparison; + + while ( low <= high ) { + + i = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats + + comparison = arcLengths[ i ] - targetArcLength; + + if ( comparison < 0 ) { + + low = i + 1; + + } else if ( comparison > 0 ) { + + high = i - 1; + + } else { + + high = i; + break; + + // DONE + + } + + } + + i = high; + + if ( arcLengths[ i ] === targetArcLength ) { + + return i / ( il - 1 ); + + } + + // we could get finer grain at lengths, or use simple interpolation between two points + + var lengthBefore = arcLengths[ i ]; + var lengthAfter = arcLengths[ i + 1 ]; + + var segmentLength = lengthAfter - lengthBefore; + + // determine where we are between the 'before' and 'after' points + + var segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength; + + // add that fractional amount to t + + var t = ( i + segmentFraction ) / ( il - 1 ); + + return t; + + }, + + // Returns a unit vector tangent at t + // In case any sub curve does not implement its tangent derivation, + // 2 points a small delta apart will be used to find its gradient + // which seems to give a reasonable approximation + + getTangent: function ( t ) { + + var delta = 0.0001; + var t1 = t - delta; + var t2 = t + delta; + + // Capping in case of danger + + if ( t1 < 0 ) t1 = 0; + if ( t2 > 1 ) t2 = 1; + + var pt1 = this.getPoint( t1 ); + var pt2 = this.getPoint( t2 ); + + var vec = pt2.clone().sub( pt1 ); + return vec.normalize(); + + }, + + getTangentAt: function ( u ) { + + var t = this.getUtoTmapping( u ); + return this.getTangent( t ); + + }, + + computeFrenetFrames: function ( segments, closed ) { + + // see http://www.cs.indiana.edu/pub/techreports/TR425.pdf + + var normal = new Vector3(); + + var tangents = []; + var normals = []; + var binormals = []; + + var vec = new Vector3(); + var mat = new Matrix4(); + + var i, u, theta; + + // compute the tangent vectors for each segment on the curve + + for ( i = 0; i <= segments; i ++ ) { + + u = i / segments; + + tangents[ i ] = this.getTangentAt( u ); + tangents[ i ].normalize(); + + } + + // select an initial normal vector perpendicular to the first tangent vector, + // and in the direction of the minimum tangent xyz component + + normals[ 0 ] = new Vector3(); + binormals[ 0 ] = new Vector3(); + var min = Number.MAX_VALUE; + var tx = Math.abs( tangents[ 0 ].x ); + var ty = Math.abs( tangents[ 0 ].y ); + var tz = Math.abs( tangents[ 0 ].z ); + + if ( tx <= min ) { + + min = tx; + normal.set( 1, 0, 0 ); + + } + + if ( ty <= min ) { + + min = ty; + normal.set( 0, 1, 0 ); + + } + + if ( tz <= min ) { + + normal.set( 0, 0, 1 ); + + } + + vec.crossVectors( tangents[ 0 ], normal ).normalize(); + + normals[ 0 ].crossVectors( tangents[ 0 ], vec ); + binormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] ); + + + // compute the slowly-varying normal and binormal vectors for each segment on the curve + + for ( i = 1; i <= segments; i ++ ) { + + normals[ i ] = normals[ i - 1 ].clone(); + + binormals[ i ] = binormals[ i - 1 ].clone(); + + vec.crossVectors( tangents[ i - 1 ], tangents[ i ] ); + + if ( vec.length() > Number.EPSILON ) { + + vec.normalize(); + + theta = Math.acos( _Math.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors + + normals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) ); + + } + + binormals[ i ].crossVectors( tangents[ i ], normals[ i ] ); + + } + + // if the curve is closed, postprocess the vectors so the first and last normal vectors are the same + + if ( closed === true ) { + + theta = Math.acos( _Math.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) ); + theta /= segments; + + if ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) { + + theta = - theta; + + } + + for ( i = 1; i <= segments; i ++ ) { + + // twist a little... + normals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) ); + binormals[ i ].crossVectors( tangents[ i ], normals[ i ] ); + + } + + } + + return { + tangents: tangents, + normals: normals, + binormals: binormals + }; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( source ) { + + this.arcLengthDivisions = source.arcLengthDivisions; + + return this; + + }, + + toJSON: function () { + + var data = { + metadata: { + version: 4.5, + type: 'Curve', + generator: 'Curve.toJSON' + } + }; + + data.arcLengthDivisions = this.arcLengthDivisions; + data.type = this.type; + + return data; + + }, + + fromJSON: function ( json ) { + + this.arcLengthDivisions = json.arcLengthDivisions; + + return this; + + } + + } ); + + function EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) { + + Curve.call( this ); + + this.type = 'EllipseCurve'; + + this.aX = aX || 0; + this.aY = aY || 0; + + this.xRadius = xRadius || 1; + this.yRadius = yRadius || 1; + + this.aStartAngle = aStartAngle || 0; + this.aEndAngle = aEndAngle || 2 * Math.PI; + + this.aClockwise = aClockwise || false; + + this.aRotation = aRotation || 0; + + } + + EllipseCurve.prototype = Object.create( Curve.prototype ); + EllipseCurve.prototype.constructor = EllipseCurve; + + EllipseCurve.prototype.isEllipseCurve = true; + + EllipseCurve.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector2(); + + var twoPi = Math.PI * 2; + var deltaAngle = this.aEndAngle - this.aStartAngle; + var samePoints = Math.abs( deltaAngle ) < Number.EPSILON; + + // ensures that deltaAngle is 0 .. 2 PI + while ( deltaAngle < 0 ) deltaAngle += twoPi; + while ( deltaAngle > twoPi ) deltaAngle -= twoPi; + + if ( deltaAngle < Number.EPSILON ) { + + if ( samePoints ) { + + deltaAngle = 0; + + } else { + + deltaAngle = twoPi; + + } + + } + + if ( this.aClockwise === true && ! samePoints ) { + + if ( deltaAngle === twoPi ) { + + deltaAngle = - twoPi; + + } else { + + deltaAngle = deltaAngle - twoPi; + + } + + } + + var angle = this.aStartAngle + t * deltaAngle; + var x = this.aX + this.xRadius * Math.cos( angle ); + var y = this.aY + this.yRadius * Math.sin( angle ); + + if ( this.aRotation !== 0 ) { + + var cos = Math.cos( this.aRotation ); + var sin = Math.sin( this.aRotation ); + + var tx = x - this.aX; + var ty = y - this.aY; + + // Rotate the point about the center of the ellipse. + x = tx * cos - ty * sin + this.aX; + y = tx * sin + ty * cos + this.aY; + + } + + return point.set( x, y ); + + }; + + EllipseCurve.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.aX = source.aX; + this.aY = source.aY; + + this.xRadius = source.xRadius; + this.yRadius = source.yRadius; + + this.aStartAngle = source.aStartAngle; + this.aEndAngle = source.aEndAngle; + + this.aClockwise = source.aClockwise; + + this.aRotation = source.aRotation; + + return this; + + }; + + + EllipseCurve.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.aX = this.aX; + data.aY = this.aY; + + data.xRadius = this.xRadius; + data.yRadius = this.yRadius; + + data.aStartAngle = this.aStartAngle; + data.aEndAngle = this.aEndAngle; + + data.aClockwise = this.aClockwise; + + data.aRotation = this.aRotation; + + return data; + + }; + + EllipseCurve.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.aX = json.aX; + this.aY = json.aY; + + this.xRadius = json.xRadius; + this.yRadius = json.yRadius; + + this.aStartAngle = json.aStartAngle; + this.aEndAngle = json.aEndAngle; + + this.aClockwise = json.aClockwise; + + this.aRotation = json.aRotation; + + return this; + + }; + + function ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) { + + EllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise ); + + this.type = 'ArcCurve'; + + } + + ArcCurve.prototype = Object.create( EllipseCurve.prototype ); + ArcCurve.prototype.constructor = ArcCurve; + + ArcCurve.prototype.isArcCurve = true; + + /** + * @author zz85 https://github.com/zz85 + * + * Centripetal CatmullRom Curve - which is useful for avoiding + * cusps and self-intersections in non-uniform catmull rom curves. + * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf + * + * curve.type accepts centripetal(default), chordal and catmullrom + * curve.tension is used for catmullrom which defaults to 0.5 + */ + + + /* + Based on an optimized c++ solution in + - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/ + - http://ideone.com/NoEbVM + + This CubicPoly class could be used for reusing some variables and calculations, + but for three.js curve use, it could be possible inlined and flatten into a single function call + which can be placed in CurveUtils. + */ + + function CubicPoly() { + + var c0 = 0, c1 = 0, c2 = 0, c3 = 0; + + /* + * Compute coefficients for a cubic polynomial + * p(s) = c0 + c1*s + c2*s^2 + c3*s^3 + * such that + * p(0) = x0, p(1) = x1 + * and + * p'(0) = t0, p'(1) = t1. + */ + function init( x0, x1, t0, t1 ) { + + c0 = x0; + c1 = t0; + c2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1; + c3 = 2 * x0 - 2 * x1 + t0 + t1; + + } + + return { + + initCatmullRom: function ( x0, x1, x2, x3, tension ) { + + init( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) ); + + }, + + initNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) { + + // compute tangents when parameterized in [t1,t2] + var t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1; + var t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2; + + // rescale tangents for parametrization in [0,1] + t1 *= dt1; + t2 *= dt1; + + init( x1, x2, t1, t2 ); + + }, + + calc: function ( t ) { + + var t2 = t * t; + var t3 = t2 * t; + return c0 + c1 * t + c2 * t2 + c3 * t3; + + } + + }; + + } + + // + + var tmp = new Vector3(); + var px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly(); + + function CatmullRomCurve3( points, closed, curveType, tension ) { + + Curve.call( this ); + + this.type = 'CatmullRomCurve3'; + + this.points = points || []; + this.closed = closed || false; + this.curveType = curveType || 'centripetal'; + this.tension = tension || 0.5; + + } + + CatmullRomCurve3.prototype = Object.create( Curve.prototype ); + CatmullRomCurve3.prototype.constructor = CatmullRomCurve3; + + CatmullRomCurve3.prototype.isCatmullRomCurve3 = true; + + CatmullRomCurve3.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector3(); + + var points = this.points; + var l = points.length; + + var p = ( l - ( this.closed ? 0 : 1 ) ) * t; + var intPoint = Math.floor( p ); + var weight = p - intPoint; + + if ( this.closed ) { + + intPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l; + + } else if ( weight === 0 && intPoint === l - 1 ) { + + intPoint = l - 2; + weight = 1; + + } + + var p0, p1, p2, p3; // 4 points + + if ( this.closed || intPoint > 0 ) { + + p0 = points[ ( intPoint - 1 ) % l ]; + + } else { + + // extrapolate first point + tmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] ); + p0 = tmp; + + } + + p1 = points[ intPoint % l ]; + p2 = points[ ( intPoint + 1 ) % l ]; + + if ( this.closed || intPoint + 2 < l ) { + + p3 = points[ ( intPoint + 2 ) % l ]; + + } else { + + // extrapolate last point + tmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] ); + p3 = tmp; + + } + + if ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) { + + // init Centripetal / Chordal Catmull-Rom + var pow = this.curveType === 'chordal' ? 0.5 : 0.25; + var dt0 = Math.pow( p0.distanceToSquared( p1 ), pow ); + var dt1 = Math.pow( p1.distanceToSquared( p2 ), pow ); + var dt2 = Math.pow( p2.distanceToSquared( p3 ), pow ); + + // safety check for repeated points + if ( dt1 < 1e-4 ) dt1 = 1.0; + if ( dt0 < 1e-4 ) dt0 = dt1; + if ( dt2 < 1e-4 ) dt2 = dt1; + + px.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 ); + py.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 ); + pz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 ); + + } else if ( this.curveType === 'catmullrom' ) { + + px.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension ); + py.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension ); + pz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension ); + + } + + point.set( + px.calc( weight ), + py.calc( weight ), + pz.calc( weight ) + ); + + return point; + + }; + + CatmullRomCurve3.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.points = []; + + for ( var i = 0, l = source.points.length; i < l; i ++ ) { + + var point = source.points[ i ]; + + this.points.push( point.clone() ); + + } + + this.closed = source.closed; + this.curveType = source.curveType; + this.tension = source.tension; + + return this; + + }; + + CatmullRomCurve3.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.points = []; + + for ( var i = 0, l = this.points.length; i < l; i ++ ) { + + var point = this.points[ i ]; + data.points.push( point.toArray() ); + + } + + data.closed = this.closed; + data.curveType = this.curveType; + data.tension = this.tension; + + return data; + + }; + + CatmullRomCurve3.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.points = []; + + for ( var i = 0, l = json.points.length; i < l; i ++ ) { + + var point = json.points[ i ]; + this.points.push( new Vector3().fromArray( point ) ); + + } + + this.closed = json.closed; + this.curveType = json.curveType; + this.tension = json.tension; + + return this; + + }; + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * + * Bezier Curves formulas obtained from + * http://en.wikipedia.org/wiki/Bézier_curve + */ + + function CatmullRom( t, p0, p1, p2, p3 ) { + + var v0 = ( p2 - p0 ) * 0.5; + var v1 = ( p3 - p1 ) * 0.5; + var t2 = t * t; + var t3 = t * t2; + return ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1; + + } + + // + + function QuadraticBezierP0( t, p ) { + + var k = 1 - t; + return k * k * p; + + } + + function QuadraticBezierP1( t, p ) { + + return 2 * ( 1 - t ) * t * p; + + } + + function QuadraticBezierP2( t, p ) { + + return t * t * p; + + } + + function QuadraticBezier( t, p0, p1, p2 ) { + + return QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) + + QuadraticBezierP2( t, p2 ); + + } + + // + + function CubicBezierP0( t, p ) { + + var k = 1 - t; + return k * k * k * p; + + } + + function CubicBezierP1( t, p ) { + + var k = 1 - t; + return 3 * k * k * t * p; + + } + + function CubicBezierP2( t, p ) { + + return 3 * ( 1 - t ) * t * t * p; + + } + + function CubicBezierP3( t, p ) { + + return t * t * t * p; + + } + + function CubicBezier( t, p0, p1, p2, p3 ) { + + return CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) + + CubicBezierP3( t, p3 ); + + } + + function CubicBezierCurve( v0, v1, v2, v3 ) { + + Curve.call( this ); + + this.type = 'CubicBezierCurve'; + + this.v0 = v0 || new Vector2(); + this.v1 = v1 || new Vector2(); + this.v2 = v2 || new Vector2(); + this.v3 = v3 || new Vector2(); + + } + + CubicBezierCurve.prototype = Object.create( Curve.prototype ); + CubicBezierCurve.prototype.constructor = CubicBezierCurve; + + CubicBezierCurve.prototype.isCubicBezierCurve = true; + + CubicBezierCurve.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector2(); + + var v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3; + + point.set( + CubicBezier( t, v0.x, v1.x, v2.x, v3.x ), + CubicBezier( t, v0.y, v1.y, v2.y, v3.y ) + ); + + return point; + + }; + + CubicBezierCurve.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.v0.copy( source.v0 ); + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + this.v3.copy( source.v3 ); + + return this; + + }; + + CubicBezierCurve.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.v0 = this.v0.toArray(); + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + data.v3 = this.v3.toArray(); + + return data; + + }; + + CubicBezierCurve.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.v0.fromArray( json.v0 ); + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + this.v3.fromArray( json.v3 ); + + return this; + + }; + + function CubicBezierCurve3( v0, v1, v2, v3 ) { + + Curve.call( this ); + + this.type = 'CubicBezierCurve3'; + + this.v0 = v0 || new Vector3(); + this.v1 = v1 || new Vector3(); + this.v2 = v2 || new Vector3(); + this.v3 = v3 || new Vector3(); + + } + + CubicBezierCurve3.prototype = Object.create( Curve.prototype ); + CubicBezierCurve3.prototype.constructor = CubicBezierCurve3; + + CubicBezierCurve3.prototype.isCubicBezierCurve3 = true; + + CubicBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector3(); + + var v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3; + + point.set( + CubicBezier( t, v0.x, v1.x, v2.x, v3.x ), + CubicBezier( t, v0.y, v1.y, v2.y, v3.y ), + CubicBezier( t, v0.z, v1.z, v2.z, v3.z ) + ); + + return point; + + }; + + CubicBezierCurve3.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.v0.copy( source.v0 ); + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + this.v3.copy( source.v3 ); + + return this; + + }; + + CubicBezierCurve3.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.v0 = this.v0.toArray(); + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + data.v3 = this.v3.toArray(); + + return data; + + }; + + CubicBezierCurve3.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.v0.fromArray( json.v0 ); + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + this.v3.fromArray( json.v3 ); + + return this; + + }; + + function LineCurve( v1, v2 ) { + + Curve.call( this ); + + this.type = 'LineCurve'; + + this.v1 = v1 || new Vector2(); + this.v2 = v2 || new Vector2(); + + } + + LineCurve.prototype = Object.create( Curve.prototype ); + LineCurve.prototype.constructor = LineCurve; + + LineCurve.prototype.isLineCurve = true; + + LineCurve.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector2(); + + if ( t === 1 ) { + + point.copy( this.v2 ); + + } else { + + point.copy( this.v2 ).sub( this.v1 ); + point.multiplyScalar( t ).add( this.v1 ); + + } + + return point; + + }; + + // Line curve is linear, so we can overwrite default getPointAt + + LineCurve.prototype.getPointAt = function ( u, optionalTarget ) { + + return this.getPoint( u, optionalTarget ); + + }; + + LineCurve.prototype.getTangent = function ( /* t */ ) { + + var tangent = this.v2.clone().sub( this.v1 ); + + return tangent.normalize(); + + }; + + LineCurve.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + + return this; + + }; + + LineCurve.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + + return data; + + }; + + LineCurve.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + + return this; + + }; + + function LineCurve3( v1, v2 ) { + + Curve.call( this ); + + this.type = 'LineCurve3'; + + this.v1 = v1 || new Vector3(); + this.v2 = v2 || new Vector3(); + + } + + LineCurve3.prototype = Object.create( Curve.prototype ); + LineCurve3.prototype.constructor = LineCurve3; + + LineCurve3.prototype.isLineCurve3 = true; + + LineCurve3.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector3(); + + if ( t === 1 ) { + + point.copy( this.v2 ); + + } else { + + point.copy( this.v2 ).sub( this.v1 ); + point.multiplyScalar( t ).add( this.v1 ); + + } + + return point; + + }; + + // Line curve is linear, so we can overwrite default getPointAt + + LineCurve3.prototype.getPointAt = function ( u, optionalTarget ) { + + return this.getPoint( u, optionalTarget ); + + }; + + LineCurve3.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + + return this; + + }; + + LineCurve3.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + + return data; + + }; + + LineCurve3.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + + return this; + + }; + + function QuadraticBezierCurve( v0, v1, v2 ) { + + Curve.call( this ); + + this.type = 'QuadraticBezierCurve'; + + this.v0 = v0 || new Vector2(); + this.v1 = v1 || new Vector2(); + this.v2 = v2 || new Vector2(); + + } + + QuadraticBezierCurve.prototype = Object.create( Curve.prototype ); + QuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve; + + QuadraticBezierCurve.prototype.isQuadraticBezierCurve = true; + + QuadraticBezierCurve.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector2(); + + var v0 = this.v0, v1 = this.v1, v2 = this.v2; + + point.set( + QuadraticBezier( t, v0.x, v1.x, v2.x ), + QuadraticBezier( t, v0.y, v1.y, v2.y ) + ); + + return point; + + }; + + QuadraticBezierCurve.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.v0.copy( source.v0 ); + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + + return this; + + }; + + QuadraticBezierCurve.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.v0 = this.v0.toArray(); + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + + return data; + + }; + + QuadraticBezierCurve.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.v0.fromArray( json.v0 ); + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + + return this; + + }; + + function QuadraticBezierCurve3( v0, v1, v2 ) { + + Curve.call( this ); + + this.type = 'QuadraticBezierCurve3'; + + this.v0 = v0 || new Vector3(); + this.v1 = v1 || new Vector3(); + this.v2 = v2 || new Vector3(); + + } + + QuadraticBezierCurve3.prototype = Object.create( Curve.prototype ); + QuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3; + + QuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true; + + QuadraticBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector3(); + + var v0 = this.v0, v1 = this.v1, v2 = this.v2; + + point.set( + QuadraticBezier( t, v0.x, v1.x, v2.x ), + QuadraticBezier( t, v0.y, v1.y, v2.y ), + QuadraticBezier( t, v0.z, v1.z, v2.z ) + ); + + return point; + + }; + + QuadraticBezierCurve3.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.v0.copy( source.v0 ); + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + + return this; + + }; + + QuadraticBezierCurve3.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.v0 = this.v0.toArray(); + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + + return data; + + }; + + QuadraticBezierCurve3.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.v0.fromArray( json.v0 ); + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + + return this; + + }; + + function SplineCurve( points /* array of Vector2 */ ) { + + Curve.call( this ); + + this.type = 'SplineCurve'; + + this.points = points || []; + + } + + SplineCurve.prototype = Object.create( Curve.prototype ); + SplineCurve.prototype.constructor = SplineCurve; + + SplineCurve.prototype.isSplineCurve = true; + + SplineCurve.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector2(); + + var points = this.points; + var p = ( points.length - 1 ) * t; + + var intPoint = Math.floor( p ); + var weight = p - intPoint; + + var p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ]; + var p1 = points[ intPoint ]; + var p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ]; + var p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ]; + + point.set( + CatmullRom( weight, p0.x, p1.x, p2.x, p3.x ), + CatmullRom( weight, p0.y, p1.y, p2.y, p3.y ) + ); + + return point; + + }; + + SplineCurve.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.points = []; + + for ( var i = 0, l = source.points.length; i < l; i ++ ) { + + var point = source.points[ i ]; + + this.points.push( point.clone() ); + + } + + return this; + + }; + + SplineCurve.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.points = []; + + for ( var i = 0, l = this.points.length; i < l; i ++ ) { + + var point = this.points[ i ]; + data.points.push( point.toArray() ); + + } + + return data; + + }; + + SplineCurve.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.points = []; + + for ( var i = 0, l = json.points.length; i < l; i ++ ) { + + var point = json.points[ i ]; + this.points.push( new Vector2().fromArray( point ) ); + + } + + return this; + + }; + + + + var Curves = /*#__PURE__*/Object.freeze({ + ArcCurve: ArcCurve, + CatmullRomCurve3: CatmullRomCurve3, + CubicBezierCurve: CubicBezierCurve, + CubicBezierCurve3: CubicBezierCurve3, + EllipseCurve: EllipseCurve, + LineCurve: LineCurve, + LineCurve3: LineCurve3, + QuadraticBezierCurve: QuadraticBezierCurve, + QuadraticBezierCurve3: QuadraticBezierCurve3, + SplineCurve: SplineCurve + }); + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * + **/ + + /************************************************************** + * Curved Path - a curve path is simply a array of connected + * curves, but retains the api of a curve + **************************************************************/ + + function CurvePath() { + + Curve.call( this ); + + this.type = 'CurvePath'; + + this.curves = []; + this.autoClose = false; // Automatically closes the path + + } + + CurvePath.prototype = Object.assign( Object.create( Curve.prototype ), { + + constructor: CurvePath, + + add: function ( curve ) { + + this.curves.push( curve ); + + }, + + closePath: function () { + + // Add a line curve if start and end of lines are not connected + var startPoint = this.curves[ 0 ].getPoint( 0 ); + var endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 ); + + if ( ! startPoint.equals( endPoint ) ) { + + this.curves.push( new LineCurve( endPoint, startPoint ) ); + + } + + }, + + // To get accurate point with reference to + // entire path distance at time t, + // following has to be done: + + // 1. Length of each sub path have to be known + // 2. Locate and identify type of curve + // 3. Get t for the curve + // 4. Return curve.getPointAt(t') + + getPoint: function ( t ) { + + var d = t * this.getLength(); + var curveLengths = this.getCurveLengths(); + var i = 0; + + // To think about boundaries points. + + while ( i < curveLengths.length ) { + + if ( curveLengths[ i ] >= d ) { + + var diff = curveLengths[ i ] - d; + var curve = this.curves[ i ]; + + var segmentLength = curve.getLength(); + var u = segmentLength === 0 ? 0 : 1 - diff / segmentLength; + + return curve.getPointAt( u ); + + } + + i ++; + + } + + return null; + + // loop where sum != 0, sum > d , sum+1 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) { + + points.push( points[ 0 ] ); + + } + + return points; + + }, + + copy: function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.curves = []; + + for ( var i = 0, l = source.curves.length; i < l; i ++ ) { + + var curve = source.curves[ i ]; + + this.curves.push( curve.clone() ); + + } + + this.autoClose = source.autoClose; + + return this; + + }, + + toJSON: function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.autoClose = this.autoClose; + data.curves = []; + + for ( var i = 0, l = this.curves.length; i < l; i ++ ) { + + var curve = this.curves[ i ]; + data.curves.push( curve.toJSON() ); + + } + + return data; + + }, + + fromJSON: function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.autoClose = json.autoClose; + this.curves = []; + + for ( var i = 0, l = json.curves.length; i < l; i ++ ) { + + var curve = json.curves[ i ]; + this.curves.push( new Curves[ curve.type ]().fromJSON( curve ) ); + + } + + return this; + + } + + } ); + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * Creates free form 2d path using series of points, lines or curves. + **/ + + function Path( points ) { + + CurvePath.call( this ); + + this.type = 'Path'; + + this.currentPoint = new Vector2(); + + if ( points ) { + + this.setFromPoints( points ); + + } + + } + + Path.prototype = Object.assign( Object.create( CurvePath.prototype ), { + + constructor: Path, + + setFromPoints: function ( points ) { + + this.moveTo( points[ 0 ].x, points[ 0 ].y ); + + for ( var i = 1, l = points.length; i < l; i ++ ) { + + this.lineTo( points[ i ].x, points[ i ].y ); + + } + + }, + + moveTo: function ( x, y ) { + + this.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying? + + }, + + lineTo: function ( x, y ) { + + var curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) ); + this.curves.push( curve ); + + this.currentPoint.set( x, y ); + + }, + + quadraticCurveTo: function ( aCPx, aCPy, aX, aY ) { + + var curve = new QuadraticBezierCurve( + this.currentPoint.clone(), + new Vector2( aCPx, aCPy ), + new Vector2( aX, aY ) + ); + + this.curves.push( curve ); + + this.currentPoint.set( aX, aY ); + + }, + + bezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) { + + var curve = new CubicBezierCurve( + this.currentPoint.clone(), + new Vector2( aCP1x, aCP1y ), + new Vector2( aCP2x, aCP2y ), + new Vector2( aX, aY ) + ); + + this.curves.push( curve ); + + this.currentPoint.set( aX, aY ); + + }, + + splineThru: function ( pts /*Array of Vector*/ ) { + + var npts = [ this.currentPoint.clone() ].concat( pts ); + + var curve = new SplineCurve( npts ); + this.curves.push( curve ); + + this.currentPoint.copy( pts[ pts.length - 1 ] ); + + }, + + arc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) { + + var x0 = this.currentPoint.x; + var y0 = this.currentPoint.y; + + this.absarc( aX + x0, aY + y0, aRadius, + aStartAngle, aEndAngle, aClockwise ); + + }, + + absarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) { + + this.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise ); + + }, + + ellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) { + + var x0 = this.currentPoint.x; + var y0 = this.currentPoint.y; + + this.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ); + + }, + + absellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) { + + var curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ); + + if ( this.curves.length > 0 ) { + + // if a previous curve is present, attempt to join + var firstPoint = curve.getPoint( 0 ); + + if ( ! firstPoint.equals( this.currentPoint ) ) { + + this.lineTo( firstPoint.x, firstPoint.y ); + + } + + } + + this.curves.push( curve ); + + var lastPoint = curve.getPoint( 1 ); + this.currentPoint.copy( lastPoint ); + + }, + + copy: function ( source ) { + + CurvePath.prototype.copy.call( this, source ); + + this.currentPoint.copy( source.currentPoint ); + + return this; + + }, + + toJSON: function () { + + var data = CurvePath.prototype.toJSON.call( this ); + + data.currentPoint = this.currentPoint.toArray(); + + return data; + + }, + + fromJSON: function ( json ) { + + CurvePath.prototype.fromJSON.call( this, json ); + + this.currentPoint.fromArray( json.currentPoint ); + + return this; + + } + + } ); + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * Defines a 2d shape plane using paths. + **/ + + // STEP 1 Create a path. + // STEP 2 Turn path into shape. + // STEP 3 ExtrudeGeometry takes in Shape/Shapes + // STEP 3a - Extract points from each shape, turn to vertices + // STEP 3b - Triangulate each shape, add faces. + + function Shape( points ) { + + Path.call( this, points ); + + this.uuid = _Math.generateUUID(); + + this.type = 'Shape'; + + this.holes = []; + + } + + Shape.prototype = Object.assign( Object.create( Path.prototype ), { + + constructor: Shape, + + getPointsHoles: function ( divisions ) { + + var holesPts = []; + + for ( var i = 0, l = this.holes.length; i < l; i ++ ) { + + holesPts[ i ] = this.holes[ i ].getPoints( divisions ); + + } + + return holesPts; + + }, + + // get points of shape and holes (keypoints based on segments parameter) + + extractPoints: function ( divisions ) { + + return { + + shape: this.getPoints( divisions ), + holes: this.getPointsHoles( divisions ) + + }; + + }, + + copy: function ( source ) { + + Path.prototype.copy.call( this, source ); + + this.holes = []; + + for ( var i = 0, l = source.holes.length; i < l; i ++ ) { + + var hole = source.holes[ i ]; + + this.holes.push( hole.clone() ); + + } + + return this; + + }, + + toJSON: function () { + + var data = Path.prototype.toJSON.call( this ); + + data.uuid = this.uuid; + data.holes = []; + + for ( var i = 0, l = this.holes.length; i < l; i ++ ) { + + var hole = this.holes[ i ]; + data.holes.push( hole.toJSON() ); + + } + + return data; + + }, + + fromJSON: function ( json ) { + + Path.prototype.fromJSON.call( this, json ); + + this.uuid = json.uuid; + this.holes = []; + + for ( var i = 0, l = json.holes.length; i < l; i ++ ) { + + var hole = json.holes[ i ]; + this.holes.push( new Path().fromJSON( hole ) ); + + } + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + */ + + function Light( color, intensity ) { + + Object3D.call( this ); + + this.type = 'Light'; + + this.color = new Color( color ); + this.intensity = intensity !== undefined ? intensity : 1; + + this.receiveShadow = undefined; + + } + + Light.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Light, + + isLight: true, + + copy: function ( source ) { + + Object3D.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + this.intensity = source.intensity; + + return this; + + }, + + toJSON: function ( meta ) { + + var data = Object3D.prototype.toJSON.call( this, meta ); + + data.object.color = this.color.getHex(); + data.object.intensity = this.intensity; + + if ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex(); + + if ( this.distance !== undefined ) data.object.distance = this.distance; + if ( this.angle !== undefined ) data.object.angle = this.angle; + if ( this.decay !== undefined ) data.object.decay = this.decay; + if ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra; + + if ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON(); + + return data; + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function HemisphereLight( skyColor, groundColor, intensity ) { + + Light.call( this, skyColor, intensity ); + + this.type = 'HemisphereLight'; + + this.castShadow = undefined; + + this.position.copy( Object3D.DefaultUp ); + this.updateMatrix(); + + this.groundColor = new Color( groundColor ); + + } + + HemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), { + + constructor: HemisphereLight, + + isHemisphereLight: true, + + copy: function ( source ) { + + Light.prototype.copy.call( this, source ); + + this.groundColor.copy( source.groundColor ); + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function LightShadow( camera ) { + + this.camera = camera; + + this.bias = 0; + this.radius = 1; + + this.mapSize = new Vector2( 512, 512 ); + + this.map = null; + this.matrix = new Matrix4(); + + } + + Object.assign( LightShadow.prototype, { + + copy: function ( source ) { + + this.camera = source.camera.clone(); + + this.bias = source.bias; + this.radius = source.radius; + + this.mapSize.copy( source.mapSize ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + toJSON: function () { + + var object = {}; + + if ( this.bias !== 0 ) object.bias = this.bias; + if ( this.radius !== 1 ) object.radius = this.radius; + if ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray(); + + object.camera = this.camera.toJSON( false ).object; + delete object.camera.matrix; + + return object; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function SpotLightShadow() { + + LightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) ); + + } + + SpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), { + + constructor: SpotLightShadow, + + isSpotLightShadow: true, + + update: function ( light ) { + + var camera = this.camera; + + var fov = _Math.RAD2DEG * 2 * light.angle; + var aspect = this.mapSize.width / this.mapSize.height; + var far = light.distance || camera.far; + + if ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) { + + camera.fov = fov; + camera.aspect = aspect; + camera.far = far; + camera.updateProjectionMatrix(); + + } + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function SpotLight( color, intensity, distance, angle, penumbra, decay ) { + + Light.call( this, color, intensity ); + + this.type = 'SpotLight'; + + this.position.copy( Object3D.DefaultUp ); + this.updateMatrix(); + + this.target = new Object3D(); + + Object.defineProperty( this, 'power', { + get: function () { + + // intensity = power per solid angle. + // ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf + return this.intensity * Math.PI; + + }, + set: function ( power ) { + + // intensity = power per solid angle. + // ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf + this.intensity = power / Math.PI; + + } + } ); + + this.distance = ( distance !== undefined ) ? distance : 0; + this.angle = ( angle !== undefined ) ? angle : Math.PI / 3; + this.penumbra = ( penumbra !== undefined ) ? penumbra : 0; + this.decay = ( decay !== undefined ) ? decay : 1; // for physically correct lights, should be 2. + + this.shadow = new SpotLightShadow(); + + } + + SpotLight.prototype = Object.assign( Object.create( Light.prototype ), { + + constructor: SpotLight, + + isSpotLight: true, + + copy: function ( source ) { + + Light.prototype.copy.call( this, source ); + + this.distance = source.distance; + this.angle = source.angle; + this.penumbra = source.penumbra; + this.decay = source.decay; + + this.target = source.target.clone(); + + this.shadow = source.shadow.clone(); + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + + function PointLight( color, intensity, distance, decay ) { + + Light.call( this, color, intensity ); + + this.type = 'PointLight'; + + Object.defineProperty( this, 'power', { + get: function () { + + // intensity = power per solid angle. + // ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf + return this.intensity * 4 * Math.PI; + + }, + set: function ( power ) { + + // intensity = power per solid angle. + // ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf + this.intensity = power / ( 4 * Math.PI ); + + } + } ); + + this.distance = ( distance !== undefined ) ? distance : 0; + this.decay = ( decay !== undefined ) ? decay : 1; // for physically correct lights, should be 2. + + this.shadow = new LightShadow( new PerspectiveCamera( 90, 1, 0.5, 500 ) ); + + } + + PointLight.prototype = Object.assign( Object.create( Light.prototype ), { + + constructor: PointLight, + + isPointLight: true, + + copy: function ( source ) { + + Light.prototype.copy.call( this, source ); + + this.distance = source.distance; + this.decay = source.decay; + + this.shadow = source.shadow.clone(); + + return this; + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + * @author arose / http://github.com/arose + */ + + function OrthographicCamera( left, right, top, bottom, near, far ) { + + Camera.call( this ); + + this.type = 'OrthographicCamera'; + + this.zoom = 1; + this.view = null; + + this.left = ( left !== undefined ) ? left : - 1; + this.right = ( right !== undefined ) ? right : 1; + this.top = ( top !== undefined ) ? top : 1; + this.bottom = ( bottom !== undefined ) ? bottom : - 1; + + this.near = ( near !== undefined ) ? near : 0.1; + this.far = ( far !== undefined ) ? far : 2000; + + this.updateProjectionMatrix(); + + } + + OrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), { + + constructor: OrthographicCamera, + + isOrthographicCamera: true, + + copy: function ( source, recursive ) { + + Camera.prototype.copy.call( this, source, recursive ); + + this.left = source.left; + this.right = source.right; + this.top = source.top; + this.bottom = source.bottom; + this.near = source.near; + this.far = source.far; + + this.zoom = source.zoom; + this.view = source.view === null ? null : Object.assign( {}, source.view ); + + return this; + + }, + + setViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) { + + if ( this.view === null ) { + + this.view = { + enabled: true, + fullWidth: 1, + fullHeight: 1, + offsetX: 0, + offsetY: 0, + width: 1, + height: 1 + }; + + } + + this.view.enabled = true; + this.view.fullWidth = fullWidth; + this.view.fullHeight = fullHeight; + this.view.offsetX = x; + this.view.offsetY = y; + this.view.width = width; + this.view.height = height; + + this.updateProjectionMatrix(); + + }, + + clearViewOffset: function () { + + if ( this.view !== null ) { + + this.view.enabled = false; + + } + + this.updateProjectionMatrix(); + + }, + + updateProjectionMatrix: function () { + + var dx = ( this.right - this.left ) / ( 2 * this.zoom ); + var dy = ( this.top - this.bottom ) / ( 2 * this.zoom ); + var cx = ( this.right + this.left ) / 2; + var cy = ( this.top + this.bottom ) / 2; + + var left = cx - dx; + var right = cx + dx; + var top = cy + dy; + var bottom = cy - dy; + + if ( this.view !== null && this.view.enabled ) { + + var zoomW = this.zoom / ( this.view.width / this.view.fullWidth ); + var zoomH = this.zoom / ( this.view.height / this.view.fullHeight ); + var scaleW = ( this.right - this.left ) / this.view.width; + var scaleH = ( this.top - this.bottom ) / this.view.height; + + left += scaleW * ( this.view.offsetX / zoomW ); + right = left + scaleW * ( this.view.width / zoomW ); + top -= scaleH * ( this.view.offsetY / zoomH ); + bottom = top - scaleH * ( this.view.height / zoomH ); + + } + + this.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far ); + + this.projectionMatrixInverse.getInverse( this.projectionMatrix ); + + }, + + toJSON: function ( meta ) { + + var data = Object3D.prototype.toJSON.call( this, meta ); + + data.object.zoom = this.zoom; + data.object.left = this.left; + data.object.right = this.right; + data.object.top = this.top; + data.object.bottom = this.bottom; + data.object.near = this.near; + data.object.far = this.far; + + if ( this.view !== null ) data.object.view = Object.assign( {}, this.view ); + + return data; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function DirectionalLightShadow( ) { + + LightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) ); + + } + + DirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), { + + constructor: DirectionalLightShadow + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + */ + + function DirectionalLight( color, intensity ) { + + Light.call( this, color, intensity ); + + this.type = 'DirectionalLight'; + + this.position.copy( Object3D.DefaultUp ); + this.updateMatrix(); + + this.target = new Object3D(); + + this.shadow = new DirectionalLightShadow(); + + } + + DirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), { + + constructor: DirectionalLight, + + isDirectionalLight: true, + + copy: function ( source ) { + + Light.prototype.copy.call( this, source ); + + this.target = source.target.clone(); + + this.shadow = source.shadow.clone(); + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function AmbientLight( color, intensity ) { + + Light.call( this, color, intensity ); + + this.type = 'AmbientLight'; + + this.castShadow = undefined; + + } + + AmbientLight.prototype = Object.assign( Object.create( Light.prototype ), { + + constructor: AmbientLight, + + isAmbientLight: true + + } ); + + /** + * @author abelnation / http://github.com/abelnation + */ + + function RectAreaLight( color, intensity, width, height ) { + + Light.call( this, color, intensity ); + + this.type = 'RectAreaLight'; + + this.width = ( width !== undefined ) ? width : 10; + this.height = ( height !== undefined ) ? height : 10; + + } + + RectAreaLight.prototype = Object.assign( Object.create( Light.prototype ), { + + constructor: RectAreaLight, + + isRectAreaLight: true, + + copy: function ( source ) { + + Light.prototype.copy.call( this, source ); + + this.width = source.width; + this.height = source.height; + + return this; + + }, + + toJSON: function ( meta ) { + + var data = Light.prototype.toJSON.call( this, meta ); + + data.object.width = this.width; + data.object.height = this.height; + + return data; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function MaterialLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + this.textures = {}; + + } + + Object.assign( MaterialLoader.prototype, { + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var loader = new FileLoader( scope.manager ); + loader.setPath( scope.path ); + loader.load( url, function ( text ) { + + onLoad( scope.parse( JSON.parse( text ) ) ); + + }, onProgress, onError ); + + }, + + parse: function ( json ) { + + var textures = this.textures; + + function getTexture( name ) { + + if ( textures[ name ] === undefined ) { + + console.warn( 'THREE.MaterialLoader: Undefined texture', name ); + + } + + return textures[ name ]; + + } + + var material = new Materials[ json.type ](); + + if ( json.uuid !== undefined ) material.uuid = json.uuid; + if ( json.name !== undefined ) material.name = json.name; + if ( json.color !== undefined ) material.color.setHex( json.color ); + if ( json.roughness !== undefined ) material.roughness = json.roughness; + if ( json.metalness !== undefined ) material.metalness = json.metalness; + if ( json.emissive !== undefined ) material.emissive.setHex( json.emissive ); + if ( json.specular !== undefined ) material.specular.setHex( json.specular ); + if ( json.shininess !== undefined ) material.shininess = json.shininess; + if ( json.clearCoat !== undefined ) material.clearCoat = json.clearCoat; + if ( json.clearCoatRoughness !== undefined ) material.clearCoatRoughness = json.clearCoatRoughness; + if ( json.vertexColors !== undefined ) material.vertexColors = json.vertexColors; + if ( json.fog !== undefined ) material.fog = json.fog; + if ( json.flatShading !== undefined ) material.flatShading = json.flatShading; + if ( json.blending !== undefined ) material.blending = json.blending; + if ( json.combine !== undefined ) material.combine = json.combine; + if ( json.side !== undefined ) material.side = json.side; + if ( json.opacity !== undefined ) material.opacity = json.opacity; + if ( json.transparent !== undefined ) material.transparent = json.transparent; + if ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest; + if ( json.depthTest !== undefined ) material.depthTest = json.depthTest; + if ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite; + if ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite; + if ( json.wireframe !== undefined ) material.wireframe = json.wireframe; + if ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth; + if ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap; + if ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin; + + if ( json.rotation !== undefined ) material.rotation = json.rotation; + + if ( json.linewidth !== 1 ) material.linewidth = json.linewidth; + if ( json.dashSize !== undefined ) material.dashSize = json.dashSize; + if ( json.gapSize !== undefined ) material.gapSize = json.gapSize; + if ( json.scale !== undefined ) material.scale = json.scale; + + if ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset; + if ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor; + if ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits; + + if ( json.skinning !== undefined ) material.skinning = json.skinning; + if ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets; + if ( json.dithering !== undefined ) material.dithering = json.dithering; + + if ( json.visible !== undefined ) material.visible = json.visible; + if ( json.userData !== undefined ) material.userData = json.userData; + + // Shader Material + + if ( json.uniforms !== undefined ) { + + for ( var name in json.uniforms ) { + + var uniform = json.uniforms[ name ]; + + material.uniforms[ name ] = {}; + + switch ( uniform.type ) { + + case 't': + material.uniforms[ name ].value = getTexture( uniform.value ); + break; + + case 'c': + material.uniforms[ name ].value = new Color().setHex( uniform.value ); + break; + + case 'v2': + material.uniforms[ name ].value = new Vector2().fromArray( uniform.value ); + break; + + case 'v3': + material.uniforms[ name ].value = new Vector3().fromArray( uniform.value ); + break; + + case 'v4': + material.uniforms[ name ].value = new Vector4().fromArray( uniform.value ); + break; + + case 'm3': + material.uniforms[ name ].value = new Matrix3().fromArray( uniform.value ); + + case 'm4': + material.uniforms[ name ].value = new Matrix4().fromArray( uniform.value ); + break; + + default: + material.uniforms[ name ].value = uniform.value; + + } + + } + + } + + if ( json.defines !== undefined ) material.defines = json.defines; + if ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader; + if ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader; + + if ( json.extensions !== undefined ) { + + for ( var key in json.extensions ) { + + material.extensions[ key ] = json.extensions[ key ]; + + } + + } + + // Deprecated + + if ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading + + // for PointsMaterial + + if ( json.size !== undefined ) material.size = json.size; + if ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation; + + // maps + + if ( json.map !== undefined ) material.map = getTexture( json.map ); + if ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap ); + + if ( json.alphaMap !== undefined ) { + + material.alphaMap = getTexture( json.alphaMap ); + material.transparent = true; + + } + + if ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap ); + if ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale; + + if ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap ); + if ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType; + if ( json.normalScale !== undefined ) { + + var normalScale = json.normalScale; + + if ( Array.isArray( normalScale ) === false ) { + + // Blender exporter used to export a scalar. See #7459 + + normalScale = [ normalScale, normalScale ]; + + } + + material.normalScale = new Vector2().fromArray( normalScale ); + + } + + if ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap ); + if ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale; + if ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias; + + if ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap ); + if ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap ); + + if ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap ); + if ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity; + + if ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap ); + + if ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap ); + if ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity; + + if ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity; + + if ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap ); + if ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity; + + if ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap ); + if ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity; + + if ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap ); + + return material; + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + }, + + setTextures: function ( value ) { + + this.textures = value; + return this; + + } + + } ); + + /** + * @author Don McCurdy / https://www.donmccurdy.com + */ + + var LoaderUtils = { + + decodeText: function ( array ) { + + if ( typeof TextDecoder !== 'undefined' ) { + + return new TextDecoder().decode( array ); + + } + + // Avoid the String.fromCharCode.apply(null, array) shortcut, which + // throws a "maximum call stack size exceeded" error for large arrays. + + var s = ''; + + for ( var i = 0, il = array.length; i < il; i ++ ) { + + // Implicitly assumes little-endian. + s += String.fromCharCode( array[ i ] ); + + } + + try { + + // merges multi-byte utf-8 characters. + + return decodeURIComponent( escape( s ) ); + + } catch ( e ) { // see #16358 + + return s; + + } + + }, + + extractUrlBase: function ( url ) { + + var index = url.lastIndexOf( '/' ); + + if ( index === - 1 ) return './'; + + return url.substr( 0, index + 1 ); + + } + + }; + + /** + * @author benaadams / https://twitter.com/ben_a_adams + */ + + function InstancedBufferGeometry() { + + BufferGeometry.call( this ); + + this.type = 'InstancedBufferGeometry'; + this.maxInstancedCount = undefined; + + } + + InstancedBufferGeometry.prototype = Object.assign( Object.create( BufferGeometry.prototype ), { + + constructor: InstancedBufferGeometry, + + isInstancedBufferGeometry: true, + + copy: function ( source ) { + + BufferGeometry.prototype.copy.call( this, source ); + + this.maxInstancedCount = source.maxInstancedCount; + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + toJSON: function () { + + var data = BufferGeometry.prototype.toJSON.call( this ); + + data.maxInstancedCount = this.maxInstancedCount; + + data.isInstancedBufferGeometry = true; + + return data; + + } + + } ); + + /** + * @author benaadams / https://twitter.com/ben_a_adams + */ + + function InstancedBufferAttribute( array, itemSize, normalized, meshPerAttribute ) { + + if ( typeof ( normalized ) === 'number' ) { + + meshPerAttribute = normalized; + + normalized = false; + + console.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' ); + + } + + BufferAttribute.call( this, array, itemSize, normalized ); + + this.meshPerAttribute = meshPerAttribute || 1; + + } + + InstancedBufferAttribute.prototype = Object.assign( Object.create( BufferAttribute.prototype ), { + + constructor: InstancedBufferAttribute, + + isInstancedBufferAttribute: true, + + copy: function ( source ) { + + BufferAttribute.prototype.copy.call( this, source ); + + this.meshPerAttribute = source.meshPerAttribute; + + return this; + + }, + + toJSON: function () { + + var data = BufferAttribute.prototype.toJSON.call( this ); + + data.meshPerAttribute = this.meshPerAttribute; + + data.isInstancedBufferAttribute = true; + + return data; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function BufferGeometryLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + } + + Object.assign( BufferGeometryLoader.prototype, { + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var loader = new FileLoader( scope.manager ); + loader.setPath( scope.path ); + loader.load( url, function ( text ) { + + onLoad( scope.parse( JSON.parse( text ) ) ); + + }, onProgress, onError ); + + }, + + parse: function ( json ) { + + var geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry(); + + var index = json.data.index; + + if ( index !== undefined ) { + + var typedArray = new TYPED_ARRAYS[ index.type ]( index.array ); + geometry.setIndex( new BufferAttribute( typedArray, 1 ) ); + + } + + var attributes = json.data.attributes; + + for ( var key in attributes ) { + + var attribute = attributes[ key ]; + var typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array ); + var bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute; + var bufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized ); + if ( attribute.name !== undefined ) bufferAttribute.name = attribute.name; + geometry.addAttribute( key, bufferAttribute ); + + } + + var morphAttributes = json.data.morphAttributes; + + if ( morphAttributes ) { + + for ( var key in morphAttributes ) { + + var attributeArray = morphAttributes[ key ]; + + var array = []; + + for ( var i = 0, il = attributeArray.length; i < il; i ++ ) { + + var attribute = attributeArray[ i ]; + var typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array ); + + var bufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized ); + if ( attribute.name !== undefined ) bufferAttribute.name = attribute.name; + array.push( bufferAttribute ); + + } + + geometry.morphAttributes[ key ] = array; + + } + + } + + var groups = json.data.groups || json.data.drawcalls || json.data.offsets; + + if ( groups !== undefined ) { + + for ( var i = 0, n = groups.length; i !== n; ++ i ) { + + var group = groups[ i ]; + + geometry.addGroup( group.start, group.count, group.materialIndex ); + + } + + } + + var boundingSphere = json.data.boundingSphere; + + if ( boundingSphere !== undefined ) { + + var center = new Vector3(); + + if ( boundingSphere.center !== undefined ) { + + center.fromArray( boundingSphere.center ); + + } + + geometry.boundingSphere = new Sphere( center, boundingSphere.radius ); + + } + + if ( json.name ) geometry.name = json.name; + if ( json.userData ) geometry.userData = json.userData; + + return geometry; + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + } + + } ); + + var TYPED_ARRAYS = { + Int8Array: Int8Array, + Uint8Array: Uint8Array, + // Workaround for IE11 pre KB2929437. See #11440 + Uint8ClampedArray: typeof Uint8ClampedArray !== 'undefined' ? Uint8ClampedArray : Uint8Array, + Int16Array: Int16Array, + Uint16Array: Uint16Array, + Int32Array: Int32Array, + Uint32Array: Uint32Array, + Float32Array: Float32Array, + Float64Array: Float64Array + }; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function ObjectLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + this.resourcePath = ''; + + } + + Object.assign( ObjectLoader.prototype, { + + crossOrigin: 'anonymous', + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var path = ( this.path === undefined ) ? LoaderUtils.extractUrlBase( url ) : this.path; + this.resourcePath = this.resourcePath || path; + + var loader = new FileLoader( scope.manager ); + loader.setPath( this.path ); + loader.load( url, function ( text ) { + + var json = null; + + try { + + json = JSON.parse( text ); + + } catch ( error ) { + + if ( onError !== undefined ) onError( error ); + + console.error( 'THREE:ObjectLoader: Can\'t parse ' + url + '.', error.message ); + + return; + + } + + var metadata = json.metadata; + + if ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) { + + console.error( 'THREE.ObjectLoader: Can\'t load ' + url ); + return; + + } + + scope.parse( json, onLoad ); + + }, onProgress, onError ); + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + }, + + setResourcePath: function ( value ) { + + this.resourcePath = value; + return this; + + }, + + setCrossOrigin: function ( value ) { + + this.crossOrigin = value; + return this; + + }, + + parse: function ( json, onLoad ) { + + var shapes = this.parseShape( json.shapes ); + var geometries = this.parseGeometries( json.geometries, shapes ); + + var images = this.parseImages( json.images, function () { + + if ( onLoad !== undefined ) onLoad( object ); + + } ); + + var textures = this.parseTextures( json.textures, images ); + var materials = this.parseMaterials( json.materials, textures ); + + var object = this.parseObject( json.object, geometries, materials ); + + if ( json.animations ) { + + object.animations = this.parseAnimations( json.animations ); + + } + + if ( json.images === undefined || json.images.length === 0 ) { + + if ( onLoad !== undefined ) onLoad( object ); + + } + + return object; + + }, + + parseShape: function ( json ) { + + var shapes = {}; + + if ( json !== undefined ) { + + for ( var i = 0, l = json.length; i < l; i ++ ) { + + var shape = new Shape().fromJSON( json[ i ] ); + + shapes[ shape.uuid ] = shape; + + } + + } + + return shapes; + + }, + + parseGeometries: function ( json, shapes ) { + + var geometries = {}; + + if ( json !== undefined ) { + + var bufferGeometryLoader = new BufferGeometryLoader(); + + for ( var i = 0, l = json.length; i < l; i ++ ) { + + var geometry; + var data = json[ i ]; + + switch ( data.type ) { + + case 'PlaneGeometry': + case 'PlaneBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.width, + data.height, + data.widthSegments, + data.heightSegments + ); + + break; + + case 'BoxGeometry': + case 'BoxBufferGeometry': + case 'CubeGeometry': // backwards compatible + + geometry = new Geometries[ data.type ]( + data.width, + data.height, + data.depth, + data.widthSegments, + data.heightSegments, + data.depthSegments + ); + + break; + + case 'CircleGeometry': + case 'CircleBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.radius, + data.segments, + data.thetaStart, + data.thetaLength + ); + + break; + + case 'CylinderGeometry': + case 'CylinderBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.radiusTop, + data.radiusBottom, + data.height, + data.radialSegments, + data.heightSegments, + data.openEnded, + data.thetaStart, + data.thetaLength + ); + + break; + + case 'ConeGeometry': + case 'ConeBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.radius, + data.height, + data.radialSegments, + data.heightSegments, + data.openEnded, + data.thetaStart, + data.thetaLength + ); + + break; + + case 'SphereGeometry': + case 'SphereBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.radius, + data.widthSegments, + data.heightSegments, + data.phiStart, + data.phiLength, + data.thetaStart, + data.thetaLength + ); + + break; + + case 'DodecahedronGeometry': + case 'DodecahedronBufferGeometry': + case 'IcosahedronGeometry': + case 'IcosahedronBufferGeometry': + case 'OctahedronGeometry': + case 'OctahedronBufferGeometry': + case 'TetrahedronGeometry': + case 'TetrahedronBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.radius, + data.detail + ); + + break; + + case 'RingGeometry': + case 'RingBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.innerRadius, + data.outerRadius, + data.thetaSegments, + data.phiSegments, + data.thetaStart, + data.thetaLength + ); + + break; + + case 'TorusGeometry': + case 'TorusBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.radius, + data.tube, + data.radialSegments, + data.tubularSegments, + data.arc + ); + + break; + + case 'TorusKnotGeometry': + case 'TorusKnotBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.radius, + data.tube, + data.tubularSegments, + data.radialSegments, + data.p, + data.q + ); + + break; + + case 'TubeGeometry': + case 'TubeBufferGeometry': + + // This only works for built-in curves (e.g. CatmullRomCurve3). + // User defined curves or instances of CurvePath will not be deserialized. + geometry = new Geometries[ data.type ]( + new Curves[ data.path.type ]().fromJSON( data.path ), + data.tubularSegments, + data.radius, + data.radialSegments, + data.closed + ); + + break; + + case 'LatheGeometry': + case 'LatheBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.points, + data.segments, + data.phiStart, + data.phiLength + ); + + break; + + case 'PolyhedronGeometry': + case 'PolyhedronBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.vertices, + data.indices, + data.radius, + data.details + ); + + break; + + case 'ShapeGeometry': + case 'ShapeBufferGeometry': + + var geometryShapes = []; + + for ( var j = 0, jl = data.shapes.length; j < jl; j ++ ) { + + var shape = shapes[ data.shapes[ j ] ]; + + geometryShapes.push( shape ); + + } + + geometry = new Geometries[ data.type ]( + geometryShapes, + data.curveSegments + ); + + break; + + + case 'ExtrudeGeometry': + case 'ExtrudeBufferGeometry': + + var geometryShapes = []; + + for ( var j = 0, jl = data.shapes.length; j < jl; j ++ ) { + + var shape = shapes[ data.shapes[ j ] ]; + + geometryShapes.push( shape ); + + } + + var extrudePath = data.options.extrudePath; + + if ( extrudePath !== undefined ) { + + data.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath ); + + } + + geometry = new Geometries[ data.type ]( + geometryShapes, + data.options + ); + + break; + + case 'BufferGeometry': + case 'InstancedBufferGeometry': + + geometry = bufferGeometryLoader.parse( data ); + + break; + + case 'Geometry': + + if ( 'THREE' in window && 'LegacyJSONLoader' in THREE ) { + + var geometryLoader = new THREE.LegacyJSONLoader(); + geometry = geometryLoader.parse( data, this.resourcePath ).geometry; + + + } else { + + console.error( 'THREE.ObjectLoader: You have to import LegacyJSONLoader in order load geometry data of type "Geometry".' ); + + } + + break; + + default: + + console.warn( 'THREE.ObjectLoader: Unsupported geometry type "' + data.type + '"' ); + + continue; + + } + + geometry.uuid = data.uuid; + + if ( data.name !== undefined ) geometry.name = data.name; + if ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData; + + geometries[ data.uuid ] = geometry; + + } + + } + + return geometries; + + }, + + parseMaterials: function ( json, textures ) { + + var cache = {}; // MultiMaterial + var materials = {}; + + if ( json !== undefined ) { + + var loader = new MaterialLoader(); + loader.setTextures( textures ); + + for ( var i = 0, l = json.length; i < l; i ++ ) { + + var data = json[ i ]; + + if ( data.type === 'MultiMaterial' ) { + + // Deprecated + + var array = []; + + for ( var j = 0; j < data.materials.length; j ++ ) { + + var material = data.materials[ j ]; + + if ( cache[ material.uuid ] === undefined ) { + + cache[ material.uuid ] = loader.parse( material ); + + } + + array.push( cache[ material.uuid ] ); + + } + + materials[ data.uuid ] = array; + + } else { + + if ( cache[ data.uuid ] === undefined ) { + + cache[ data.uuid ] = loader.parse( data ); + + } + + materials[ data.uuid ] = cache[ data.uuid ]; + + } + + } + + } + + return materials; + + }, + + parseAnimations: function ( json ) { + + var animations = []; + + for ( var i = 0; i < json.length; i ++ ) { + + var data = json[ i ]; + + var clip = AnimationClip.parse( data ); + + if ( data.uuid !== undefined ) clip.uuid = data.uuid; + + animations.push( clip ); + + } + + return animations; + + }, + + parseImages: function ( json, onLoad ) { + + var scope = this; + var images = {}; + + function loadImage( url ) { + + scope.manager.itemStart( url ); + + return loader.load( url, function () { + + scope.manager.itemEnd( url ); + + }, undefined, function () { + + scope.manager.itemError( url ); + scope.manager.itemEnd( url ); + + } ); + + } + + if ( json !== undefined && json.length > 0 ) { + + var manager = new LoadingManager( onLoad ); + + var loader = new ImageLoader( manager ); + loader.setCrossOrigin( this.crossOrigin ); + + for ( var i = 0, il = json.length; i < il; i ++ ) { + + var image = json[ i ]; + var url = image.url; + + if ( Array.isArray( url ) ) { + + // load array of images e.g CubeTexture + + images[ image.uuid ] = []; + + for ( var j = 0, jl = url.length; j < jl; j ++ ) { + + var currentUrl = url[ j ]; + + var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( currentUrl ) ? currentUrl : scope.resourcePath + currentUrl; + + images[ image.uuid ].push( loadImage( path ) ); + + } + + } else { + + // load single image + + var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( image.url ) ? image.url : scope.resourcePath + image.url; + + images[ image.uuid ] = loadImage( path ); + + } + + } + + } + + return images; + + }, + + parseTextures: function ( json, images ) { + + function parseConstant( value, type ) { + + if ( typeof value === 'number' ) return value; + + console.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value ); + + return type[ value ]; + + } + + var textures = {}; + + if ( json !== undefined ) { + + for ( var i = 0, l = json.length; i < l; i ++ ) { + + var data = json[ i ]; + + if ( data.image === undefined ) { + + console.warn( 'THREE.ObjectLoader: No "image" specified for', data.uuid ); + + } + + if ( images[ data.image ] === undefined ) { + + console.warn( 'THREE.ObjectLoader: Undefined image', data.image ); + + } + + var texture; + + if ( Array.isArray( images[ data.image ] ) ) { + + texture = new CubeTexture( images[ data.image ] ); + + } else { + + texture = new Texture( images[ data.image ] ); + + } + + texture.needsUpdate = true; + + texture.uuid = data.uuid; + + if ( data.name !== undefined ) texture.name = data.name; + + if ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING ); + + if ( data.offset !== undefined ) texture.offset.fromArray( data.offset ); + if ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat ); + if ( data.center !== undefined ) texture.center.fromArray( data.center ); + if ( data.rotation !== undefined ) texture.rotation = data.rotation; + + if ( data.wrap !== undefined ) { + + texture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING ); + texture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING ); + + } + + if ( data.format !== undefined ) texture.format = data.format; + if ( data.type !== undefined ) texture.type = data.type; + if ( data.encoding !== undefined ) texture.encoding = data.encoding; + + if ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER ); + if ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER ); + if ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy; + + if ( data.flipY !== undefined ) texture.flipY = data.flipY; + + if ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha; + if ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment; + + textures[ data.uuid ] = texture; + + } + + } + + return textures; + + }, + + parseObject: function ( data, geometries, materials ) { + + var object; + + function getGeometry( name ) { + + if ( geometries[ name ] === undefined ) { + + console.warn( 'THREE.ObjectLoader: Undefined geometry', name ); + + } + + return geometries[ name ]; + + } + + function getMaterial( name ) { + + if ( name === undefined ) return undefined; + + if ( Array.isArray( name ) ) { + + var array = []; + + for ( var i = 0, l = name.length; i < l; i ++ ) { + + var uuid = name[ i ]; + + if ( materials[ uuid ] === undefined ) { + + console.warn( 'THREE.ObjectLoader: Undefined material', uuid ); + + } + + array.push( materials[ uuid ] ); + + } + + return array; + + } + + if ( materials[ name ] === undefined ) { + + console.warn( 'THREE.ObjectLoader: Undefined material', name ); + + } + + return materials[ name ]; + + } + + switch ( data.type ) { + + case 'Scene': + + object = new Scene(); + + if ( data.background !== undefined ) { + + if ( Number.isInteger( data.background ) ) { + + object.background = new Color( data.background ); + + } + + } + + if ( data.fog !== undefined ) { + + if ( data.fog.type === 'Fog' ) { + + object.fog = new Fog( data.fog.color, data.fog.near, data.fog.far ); + + } else if ( data.fog.type === 'FogExp2' ) { + + object.fog = new FogExp2( data.fog.color, data.fog.density ); + + } + + } + + break; + + case 'PerspectiveCamera': + + object = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far ); + + if ( data.focus !== undefined ) object.focus = data.focus; + if ( data.zoom !== undefined ) object.zoom = data.zoom; + if ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge; + if ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset; + if ( data.view !== undefined ) object.view = Object.assign( {}, data.view ); + + break; + + case 'OrthographicCamera': + + object = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far ); + + if ( data.zoom !== undefined ) object.zoom = data.zoom; + if ( data.view !== undefined ) object.view = Object.assign( {}, data.view ); + + break; + + case 'AmbientLight': + + object = new AmbientLight( data.color, data.intensity ); + + break; + + case 'DirectionalLight': + + object = new DirectionalLight( data.color, data.intensity ); + + break; + + case 'PointLight': + + object = new PointLight( data.color, data.intensity, data.distance, data.decay ); + + break; + + case 'RectAreaLight': + + object = new RectAreaLight( data.color, data.intensity, data.width, data.height ); + + break; + + case 'SpotLight': + + object = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay ); + + break; + + case 'HemisphereLight': + + object = new HemisphereLight( data.color, data.groundColor, data.intensity ); + + break; + + case 'SkinnedMesh': + + console.warn( 'THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.' ); + + case 'Mesh': + + var geometry = getGeometry( data.geometry ); + var material = getMaterial( data.material ); + + if ( geometry.bones && geometry.bones.length > 0 ) { + + object = new SkinnedMesh( geometry, material ); + + } else { + + object = new Mesh( geometry, material ); + + } + + if ( data.drawMode !== undefined ) object.setDrawMode( data.drawMode ); + + break; + + case 'LOD': + + object = new LOD(); + + break; + + case 'Line': + + object = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode ); + + break; + + case 'LineLoop': + + object = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) ); + + break; + + case 'LineSegments': + + object = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) ); + + break; + + case 'PointCloud': + case 'Points': + + object = new Points( getGeometry( data.geometry ), getMaterial( data.material ) ); + + break; + + case 'Sprite': + + object = new Sprite( getMaterial( data.material ) ); + + break; + + case 'Group': + + object = new Group(); + + break; + + default: + + object = new Object3D(); + + } + + object.uuid = data.uuid; + + if ( data.name !== undefined ) object.name = data.name; + + if ( data.matrix !== undefined ) { + + object.matrix.fromArray( data.matrix ); + + if ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate; + if ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale ); + + } else { + + if ( data.position !== undefined ) object.position.fromArray( data.position ); + if ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation ); + if ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion ); + if ( data.scale !== undefined ) object.scale.fromArray( data.scale ); + + } + + if ( data.castShadow !== undefined ) object.castShadow = data.castShadow; + if ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow; + + if ( data.shadow ) { + + if ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias; + if ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius; + if ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize ); + if ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera ); + + } + + if ( data.visible !== undefined ) object.visible = data.visible; + if ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled; + if ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder; + if ( data.userData !== undefined ) object.userData = data.userData; + if ( data.layers !== undefined ) object.layers.mask = data.layers; + + if ( data.children !== undefined ) { + + var children = data.children; + + for ( var i = 0; i < children.length; i ++ ) { + + object.add( this.parseObject( children[ i ], geometries, materials ) ); + + } + + } + + if ( data.type === 'LOD' ) { + + var levels = data.levels; + + for ( var l = 0; l < levels.length; l ++ ) { + + var level = levels[ l ]; + var child = object.getObjectByProperty( 'uuid', level.object ); + + if ( child !== undefined ) { + + object.addLevel( child, level.distance ); + + } + + } + + } + + return object; + + } + + } ); + + var TEXTURE_MAPPING = { + UVMapping: UVMapping, + CubeReflectionMapping: CubeReflectionMapping, + CubeRefractionMapping: CubeRefractionMapping, + EquirectangularReflectionMapping: EquirectangularReflectionMapping, + EquirectangularRefractionMapping: EquirectangularRefractionMapping, + SphericalReflectionMapping: SphericalReflectionMapping, + CubeUVReflectionMapping: CubeUVReflectionMapping, + CubeUVRefractionMapping: CubeUVRefractionMapping + }; + + var TEXTURE_WRAPPING = { + RepeatWrapping: RepeatWrapping, + ClampToEdgeWrapping: ClampToEdgeWrapping, + MirroredRepeatWrapping: MirroredRepeatWrapping + }; + + var TEXTURE_FILTER = { + NearestFilter: NearestFilter, + NearestMipMapNearestFilter: NearestMipMapNearestFilter, + NearestMipMapLinearFilter: NearestMipMapLinearFilter, + LinearFilter: LinearFilter, + LinearMipMapNearestFilter: LinearMipMapNearestFilter, + LinearMipMapLinearFilter: LinearMipMapLinearFilter + }; + + /** + * @author thespite / http://clicktorelease.com/ + */ + + + function ImageBitmapLoader( manager ) { + + if ( typeof createImageBitmap === 'undefined' ) { + + console.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' ); + + } + + if ( typeof fetch === 'undefined' ) { + + console.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' ); + + } + + this.manager = manager !== undefined ? manager : DefaultLoadingManager; + this.options = undefined; + + } + + ImageBitmapLoader.prototype = { + + constructor: ImageBitmapLoader, + + setOptions: function setOptions( options ) { + + this.options = options; + + return this; + + }, + + load: function ( url, onLoad, onProgress, onError ) { + + if ( url === undefined ) url = ''; + + if ( this.path !== undefined ) url = this.path + url; + + url = this.manager.resolveURL( url ); + + var scope = this; + + var cached = Cache.get( url ); + + if ( cached !== undefined ) { + + scope.manager.itemStart( url ); + + setTimeout( function () { + + if ( onLoad ) onLoad( cached ); + + scope.manager.itemEnd( url ); + + }, 0 ); + + return cached; + + } + + fetch( url ).then( function ( res ) { + + return res.blob(); + + } ).then( function ( blob ) { + + if ( scope.options === undefined ) { + + // Workaround for FireFox. It causes an error if you pass options. + return createImageBitmap( blob ); + + } else { + + return createImageBitmap( blob, scope.options ); + + } + + } ).then( function ( imageBitmap ) { + + Cache.add( url, imageBitmap ); + + if ( onLoad ) onLoad( imageBitmap ); + + scope.manager.itemEnd( url ); + + } ).catch( function ( e ) { + + if ( onError ) onError( e ); + + scope.manager.itemError( url ); + scope.manager.itemEnd( url ); + + } ); + + scope.manager.itemStart( url ); + + }, + + setCrossOrigin: function ( /* value */ ) { + + return this; + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + } + + }; + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * minimal class for proxing functions to Path. Replaces old "extractSubpaths()" + **/ + + function ShapePath() { + + this.type = 'ShapePath'; + + this.color = new Color(); + + this.subPaths = []; + this.currentPath = null; + + } + + Object.assign( ShapePath.prototype, { + + moveTo: function ( x, y ) { + + this.currentPath = new Path(); + this.subPaths.push( this.currentPath ); + this.currentPath.moveTo( x, y ); + + }, + + lineTo: function ( x, y ) { + + this.currentPath.lineTo( x, y ); + + }, + + quadraticCurveTo: function ( aCPx, aCPy, aX, aY ) { + + this.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY ); + + }, + + bezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) { + + this.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ); + + }, + + splineThru: function ( pts ) { + + this.currentPath.splineThru( pts ); + + }, + + toShapes: function ( isCCW, noHoles ) { + + function toShapesNoHoles( inSubpaths ) { + + var shapes = []; + + for ( var i = 0, l = inSubpaths.length; i < l; i ++ ) { + + var tmpPath = inSubpaths[ i ]; + + var tmpShape = new Shape(); + tmpShape.curves = tmpPath.curves; + + shapes.push( tmpShape ); + + } + + return shapes; + + } + + function isPointInsidePolygon( inPt, inPolygon ) { + + var polyLen = inPolygon.length; + + // inPt on polygon contour => immediate success or + // toggling of inside/outside at every single! intersection point of an edge + // with the horizontal line through inPt, left of inPt + // not counting lowerY endpoints of edges and whole edges on that line + var inside = false; + for ( var p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) { + + var edgeLowPt = inPolygon[ p ]; + var edgeHighPt = inPolygon[ q ]; + + var edgeDx = edgeHighPt.x - edgeLowPt.x; + var edgeDy = edgeHighPt.y - edgeLowPt.y; + + if ( Math.abs( edgeDy ) > Number.EPSILON ) { + + // not parallel + if ( edgeDy < 0 ) { + + edgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx; + edgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy; + + } + if ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) continue; + + if ( inPt.y === edgeLowPt.y ) { + + if ( inPt.x === edgeLowPt.x ) return true; // inPt is on contour ? + // continue; // no intersection or edgeLowPt => doesn't count !!! + + } else { + + var perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y ); + if ( perpEdge === 0 ) return true; // inPt is on contour ? + if ( perpEdge < 0 ) continue; + inside = ! inside; // true intersection left of inPt + + } + + } else { + + // parallel or collinear + if ( inPt.y !== edgeLowPt.y ) continue; // parallel + // edge lies on the same horizontal line as inPt + if ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) || + ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) ) return true; // inPt: Point on contour ! + // continue; + + } + + } + + return inside; + + } + + var isClockWise = ShapeUtils.isClockWise; + + var subPaths = this.subPaths; + if ( subPaths.length === 0 ) return []; + + if ( noHoles === true ) return toShapesNoHoles( subPaths ); + + + var solid, tmpPath, tmpShape, shapes = []; + + if ( subPaths.length === 1 ) { + + tmpPath = subPaths[ 0 ]; + tmpShape = new Shape(); + tmpShape.curves = tmpPath.curves; + shapes.push( tmpShape ); + return shapes; + + } + + var holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() ); + holesFirst = isCCW ? ! holesFirst : holesFirst; + + // console.log("Holes first", holesFirst); + + var betterShapeHoles = []; + var newShapes = []; + var newShapeHoles = []; + var mainIdx = 0; + var tmpPoints; + + newShapes[ mainIdx ] = undefined; + newShapeHoles[ mainIdx ] = []; + + for ( var i = 0, l = subPaths.length; i < l; i ++ ) { + + tmpPath = subPaths[ i ]; + tmpPoints = tmpPath.getPoints(); + solid = isClockWise( tmpPoints ); + solid = isCCW ? ! solid : solid; + + if ( solid ) { + + if ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) ) mainIdx ++; + + newShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints }; + newShapes[ mainIdx ].s.curves = tmpPath.curves; + + if ( holesFirst ) mainIdx ++; + newShapeHoles[ mainIdx ] = []; + + //console.log('cw', i); + + } else { + + newShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } ); + + //console.log('ccw', i); + + } + + } + + // only Holes? -> probably all Shapes with wrong orientation + if ( ! newShapes[ 0 ] ) return toShapesNoHoles( subPaths ); + + + if ( newShapes.length > 1 ) { + + var ambiguous = false; + var toChange = []; + + for ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) { + + betterShapeHoles[ sIdx ] = []; + + } + + for ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) { + + var sho = newShapeHoles[ sIdx ]; + + for ( var hIdx = 0; hIdx < sho.length; hIdx ++ ) { + + var ho = sho[ hIdx ]; + var hole_unassigned = true; + + for ( var s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) { + + if ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) { + + if ( sIdx !== s2Idx ) toChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } ); + if ( hole_unassigned ) { + + hole_unassigned = false; + betterShapeHoles[ s2Idx ].push( ho ); + + } else { + + ambiguous = true; + + } + + } + + } + if ( hole_unassigned ) { + + betterShapeHoles[ sIdx ].push( ho ); + + } + + } + + } + // console.log("ambiguous: ", ambiguous); + if ( toChange.length > 0 ) { + + // console.log("to change: ", toChange); + if ( ! ambiguous ) newShapeHoles = betterShapeHoles; + + } + + } + + var tmpHoles; + + for ( var i = 0, il = newShapes.length; i < il; i ++ ) { + + tmpShape = newShapes[ i ].s; + shapes.push( tmpShape ); + tmpHoles = newShapeHoles[ i ]; + + for ( var j = 0, jl = tmpHoles.length; j < jl; j ++ ) { + + tmpShape.holes.push( tmpHoles[ j ].h ); + + } + + } + + //console.log("shape", shapes); + + return shapes; + + } + + } ); + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * @author mrdoob / http://mrdoob.com/ + */ + + + function Font( data ) { + + this.type = 'Font'; + + this.data = data; + + } + + Object.assign( Font.prototype, { + + isFont: true, + + generateShapes: function ( text, size ) { + + if ( size === undefined ) size = 100; + + var shapes = []; + var paths = createPaths( text, size, this.data ); + + for ( var p = 0, pl = paths.length; p < pl; p ++ ) { + + Array.prototype.push.apply( shapes, paths[ p ].toShapes() ); + + } + + return shapes; + + } + + } ); + + function createPaths( text, size, data ) { + + var chars = Array.from ? Array.from( text ) : String( text ).split( '' ); // see #13988 + var scale = size / data.resolution; + var line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale; + + var paths = []; + + var offsetX = 0, offsetY = 0; + + for ( var i = 0; i < chars.length; i ++ ) { + + var char = chars[ i ]; + + if ( char === '\n' ) { + + offsetX = 0; + offsetY -= line_height; + + } else { + + var ret = createPath( char, scale, offsetX, offsetY, data ); + offsetX += ret.offsetX; + paths.push( ret.path ); + + } + + } + + return paths; + + } + + function createPath( char, scale, offsetX, offsetY, data ) { + + var glyph = data.glyphs[ char ] || data.glyphs[ '?' ]; + + if ( ! glyph ) return; + + var path = new ShapePath(); + + var x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2; + + if ( glyph.o ) { + + var outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) ); + + for ( var i = 0, l = outline.length; i < l; ) { + + var action = outline[ i ++ ]; + + switch ( action ) { + + case 'm': // moveTo + + x = outline[ i ++ ] * scale + offsetX; + y = outline[ i ++ ] * scale + offsetY; + + path.moveTo( x, y ); + + break; + + case 'l': // lineTo + + x = outline[ i ++ ] * scale + offsetX; + y = outline[ i ++ ] * scale + offsetY; + + path.lineTo( x, y ); + + break; + + case 'q': // quadraticCurveTo + + cpx = outline[ i ++ ] * scale + offsetX; + cpy = outline[ i ++ ] * scale + offsetY; + cpx1 = outline[ i ++ ] * scale + offsetX; + cpy1 = outline[ i ++ ] * scale + offsetY; + + path.quadraticCurveTo( cpx1, cpy1, cpx, cpy ); + + break; + + case 'b': // bezierCurveTo + + cpx = outline[ i ++ ] * scale + offsetX; + cpy = outline[ i ++ ] * scale + offsetY; + cpx1 = outline[ i ++ ] * scale + offsetX; + cpy1 = outline[ i ++ ] * scale + offsetY; + cpx2 = outline[ i ++ ] * scale + offsetX; + cpy2 = outline[ i ++ ] * scale + offsetY; + + path.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy ); + + break; + + } + + } + + } + + return { offsetX: glyph.ha * scale, path: path }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function FontLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + } + + Object.assign( FontLoader.prototype, { + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var loader = new FileLoader( this.manager ); + loader.setPath( this.path ); + loader.load( url, function ( text ) { + + var json; + + try { + + json = JSON.parse( text ); + + } catch ( e ) { + + console.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' ); + json = JSON.parse( text.substring( 65, text.length - 2 ) ); + + } + + var font = scope.parse( json ); + + if ( onLoad ) onLoad( font ); + + }, onProgress, onError ); + + }, + + parse: function ( json ) { + + return new Font( json ); + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function Loader() {} + + Loader.Handlers = { + + handlers: [], + + add: function ( regex, loader ) { + + this.handlers.push( regex, loader ); + + }, + + get: function ( file ) { + + var handlers = this.handlers; + + for ( var i = 0, l = handlers.length; i < l; i += 2 ) { + + var regex = handlers[ i ]; + var loader = handlers[ i + 1 ]; + + if ( regex.test( file ) ) { + + return loader; + + } + + } + + return null; + + } + + }; + + Object.assign( Loader.prototype, { + + crossOrigin: 'anonymous', + + onLoadStart: function () {}, + + onLoadProgress: function () {}, + + onLoadComplete: function () {}, + + initMaterials: function ( materials, texturePath, crossOrigin ) { + + var array = []; + + for ( var i = 0; i < materials.length; ++ i ) { + + array[ i ] = this.createMaterial( materials[ i ], texturePath, crossOrigin ); + + } + + return array; + + }, + + createMaterial: ( function () { + + var BlendingMode = { + NoBlending: NoBlending, + NormalBlending: NormalBlending, + AdditiveBlending: AdditiveBlending, + SubtractiveBlending: SubtractiveBlending, + MultiplyBlending: MultiplyBlending, + CustomBlending: CustomBlending + }; + + var color = new Color(); + var textureLoader = new TextureLoader(); + var materialLoader = new MaterialLoader(); + + return function createMaterial( m, texturePath, crossOrigin ) { + + // convert from old material format + + var textures = {}; + + function loadTexture( path, repeat, offset, wrap, anisotropy ) { + + var fullPath = texturePath + path; + var loader = Loader.Handlers.get( fullPath ); + + var texture; + + if ( loader !== null ) { + + texture = loader.load( fullPath ); + + } else { + + textureLoader.setCrossOrigin( crossOrigin ); + texture = textureLoader.load( fullPath ); + + } + + if ( repeat !== undefined ) { + + texture.repeat.fromArray( repeat ); + + if ( repeat[ 0 ] !== 1 ) texture.wrapS = RepeatWrapping; + if ( repeat[ 1 ] !== 1 ) texture.wrapT = RepeatWrapping; + + } + + if ( offset !== undefined ) { + + texture.offset.fromArray( offset ); + + } + + if ( wrap !== undefined ) { + + if ( wrap[ 0 ] === 'repeat' ) texture.wrapS = RepeatWrapping; + if ( wrap[ 0 ] === 'mirror' ) texture.wrapS = MirroredRepeatWrapping; + + if ( wrap[ 1 ] === 'repeat' ) texture.wrapT = RepeatWrapping; + if ( wrap[ 1 ] === 'mirror' ) texture.wrapT = MirroredRepeatWrapping; + + } + + if ( anisotropy !== undefined ) { + + texture.anisotropy = anisotropy; + + } + + var uuid = _Math.generateUUID(); + + textures[ uuid ] = texture; + + return uuid; + + } + + // + + var json = { + uuid: _Math.generateUUID(), + type: 'MeshLambertMaterial' + }; + + for ( var name in m ) { + + var value = m[ name ]; + + switch ( name ) { + + case 'DbgColor': + case 'DbgIndex': + case 'opticalDensity': + case 'illumination': + break; + case 'DbgName': + json.name = value; + break; + case 'blending': + json.blending = BlendingMode[ value ]; + break; + case 'colorAmbient': + case 'mapAmbient': + console.warn( 'THREE.Loader.createMaterial:', name, 'is no longer supported.' ); + break; + case 'colorDiffuse': + json.color = color.fromArray( value ).getHex(); + break; + case 'colorSpecular': + json.specular = color.fromArray( value ).getHex(); + break; + case 'colorEmissive': + json.emissive = color.fromArray( value ).getHex(); + break; + case 'specularCoef': + json.shininess = value; + break; + case 'shading': + if ( value.toLowerCase() === 'basic' ) json.type = 'MeshBasicMaterial'; + if ( value.toLowerCase() === 'phong' ) json.type = 'MeshPhongMaterial'; + if ( value.toLowerCase() === 'standard' ) json.type = 'MeshStandardMaterial'; + break; + case 'mapDiffuse': + json.map = loadTexture( value, m.mapDiffuseRepeat, m.mapDiffuseOffset, m.mapDiffuseWrap, m.mapDiffuseAnisotropy ); + break; + case 'mapDiffuseRepeat': + case 'mapDiffuseOffset': + case 'mapDiffuseWrap': + case 'mapDiffuseAnisotropy': + break; + case 'mapEmissive': + json.emissiveMap = loadTexture( value, m.mapEmissiveRepeat, m.mapEmissiveOffset, m.mapEmissiveWrap, m.mapEmissiveAnisotropy ); + break; + case 'mapEmissiveRepeat': + case 'mapEmissiveOffset': + case 'mapEmissiveWrap': + case 'mapEmissiveAnisotropy': + break; + case 'mapLight': + json.lightMap = loadTexture( value, m.mapLightRepeat, m.mapLightOffset, m.mapLightWrap, m.mapLightAnisotropy ); + break; + case 'mapLightRepeat': + case 'mapLightOffset': + case 'mapLightWrap': + case 'mapLightAnisotropy': + break; + case 'mapAO': + json.aoMap = loadTexture( value, m.mapAORepeat, m.mapAOOffset, m.mapAOWrap, m.mapAOAnisotropy ); + break; + case 'mapAORepeat': + case 'mapAOOffset': + case 'mapAOWrap': + case 'mapAOAnisotropy': + break; + case 'mapBump': + json.bumpMap = loadTexture( value, m.mapBumpRepeat, m.mapBumpOffset, m.mapBumpWrap, m.mapBumpAnisotropy ); + break; + case 'mapBumpScale': + json.bumpScale = value; + break; + case 'mapBumpRepeat': + case 'mapBumpOffset': + case 'mapBumpWrap': + case 'mapBumpAnisotropy': + break; + case 'mapNormal': + json.normalMap = loadTexture( value, m.mapNormalRepeat, m.mapNormalOffset, m.mapNormalWrap, m.mapNormalAnisotropy ); + break; + case 'mapNormalFactor': + json.normalScale = value; + break; + case 'mapNormalRepeat': + case 'mapNormalOffset': + case 'mapNormalWrap': + case 'mapNormalAnisotropy': + break; + case 'mapSpecular': + json.specularMap = loadTexture( value, m.mapSpecularRepeat, m.mapSpecularOffset, m.mapSpecularWrap, m.mapSpecularAnisotropy ); + break; + case 'mapSpecularRepeat': + case 'mapSpecularOffset': + case 'mapSpecularWrap': + case 'mapSpecularAnisotropy': + break; + case 'mapMetalness': + json.metalnessMap = loadTexture( value, m.mapMetalnessRepeat, m.mapMetalnessOffset, m.mapMetalnessWrap, m.mapMetalnessAnisotropy ); + break; + case 'mapMetalnessRepeat': + case 'mapMetalnessOffset': + case 'mapMetalnessWrap': + case 'mapMetalnessAnisotropy': + break; + case 'mapRoughness': + json.roughnessMap = loadTexture( value, m.mapRoughnessRepeat, m.mapRoughnessOffset, m.mapRoughnessWrap, m.mapRoughnessAnisotropy ); + break; + case 'mapRoughnessRepeat': + case 'mapRoughnessOffset': + case 'mapRoughnessWrap': + case 'mapRoughnessAnisotropy': + break; + case 'mapAlpha': + json.alphaMap = loadTexture( value, m.mapAlphaRepeat, m.mapAlphaOffset, m.mapAlphaWrap, m.mapAlphaAnisotropy ); + break; + case 'mapAlphaRepeat': + case 'mapAlphaOffset': + case 'mapAlphaWrap': + case 'mapAlphaAnisotropy': + break; + case 'flipSided': + json.side = BackSide; + break; + case 'doubleSided': + json.side = DoubleSide; + break; + case 'transparency': + console.warn( 'THREE.Loader.createMaterial: transparency has been renamed to opacity' ); + json.opacity = value; + break; + case 'depthTest': + case 'depthWrite': + case 'colorWrite': + case 'opacity': + case 'reflectivity': + case 'transparent': + case 'visible': + case 'wireframe': + json[ name ] = value; + break; + case 'vertexColors': + if ( value === true ) json.vertexColors = VertexColors; + if ( value === 'face' ) json.vertexColors = FaceColors; + break; + default: + console.error( 'THREE.Loader.createMaterial: Unsupported', name, value ); + break; + + } + + } + + if ( json.type === 'MeshBasicMaterial' ) delete json.emissive; + if ( json.type !== 'MeshPhongMaterial' ) delete json.specular; + + if ( json.opacity < 1 ) json.transparent = true; + + materialLoader.setTextures( textures ); + + return materialLoader.parse( json ); + + }; + + } )() + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + var context; + + var AudioContext = { + + getContext: function () { + + if ( context === undefined ) { + + context = new ( window.AudioContext || window.webkitAudioContext )(); + + } + + return context; + + }, + + setContext: function ( value ) { + + context = value; + + } + + }; + + /** + * @author Reece Aaron Lecrivain / http://reecenotes.com/ + */ + + function AudioLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + } + + Object.assign( AudioLoader.prototype, { + + load: function ( url, onLoad, onProgress, onError ) { + + var loader = new FileLoader( this.manager ); + loader.setResponseType( 'arraybuffer' ); + loader.setPath( this.path ); + loader.load( url, function ( buffer ) { + + // Create a copy of the buffer. The `decodeAudioData` method + // detaches the buffer when complete, preventing reuse. + var bufferCopy = buffer.slice( 0 ); + + var context = AudioContext.getContext(); + context.decodeAudioData( bufferCopy, function ( audioBuffer ) { + + onLoad( audioBuffer ); + + } ); + + }, onProgress, onError ); + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + } + + } ); + + /** + * @author bhouston / http://clara.io + * @author WestLangley / http://github.com/WestLangley + * + * Primary reference: + * https://graphics.stanford.edu/papers/envmap/envmap.pdf + * + * Secondary reference: + * https://www.ppsloan.org/publications/StupidSH36.pdf + */ + + // 3-band SH defined by 9 coefficients + + function SphericalHarmonics3() { + + this.coefficients = []; + + for ( var i = 0; i < 9; i ++ ) { + + this.coefficients.push( new Vector3() ); + + } + + } + + Object.assign( SphericalHarmonics3.prototype, { + + isSphericalHarmonics3: true, + + set: function ( coefficients ) { + + for ( var i = 0; i < 9; i ++ ) { + + this.coefficients[ i ].copy( coefficients[ i ] ); + + } + + return this; + + }, + + zero: function () { + + for ( var i = 0; i < 9; i ++ ) { + + this.coefficients[ i ].set( 0, 0, 0 ); + + } + + return this; + + }, + + // get the radiance in the direction of the normal + // target is a Vector3 + getAt: function ( normal, target ) { + + // normal is assumed to be unit length + + var x = normal.x, y = normal.y, z = normal.z; + + var coeff = this.coefficients; + + // band 0 + target = coeff[ 0 ] * 0.282095; + + // band 1 + target += coeff[ 1 ] * 0.488603 * y; + target += coeff[ 2 ] * 0.488603 * z; + target += coeff[ 3 ] * 0.488603 * x; + + // band 2 + target += coeff[ 4 ] * 1.092548 * ( x * y ); + target += coeff[ 5 ] * 1.092548 * ( y * z ); + target += coeff[ 6 ] * 0.315392 * ( 3.0 * z * z - 1.0 ); + target += coeff[ 7 ] * 1.092548 * ( x * z ); + target += coeff[ 8 ] * 0.546274 * ( x * x - y * y ); + + return target; + + }, + + // get the irradiance (radiance convolved with cosine lobe) in the direction of the normal + // target is a Vector3 + // https://graphics.stanford.edu/papers/envmap/envmap.pdf + getIrradianceAt: function ( normal, target ) { + + // normal is assumed to be unit length + + var x = normal.x, y = normal.y, z = normal.z; + + var coeff = this.coefficients; + + // band 0 + target = coeff[ 0 ] * 0.886227; // π * 0.282095 + + // band 1 + target += coeff[ 1 ] * 2.0 * 0.511664 * y; // ( 2 * π / 3 ) * 0.488603 + target += coeff[ 2 ] * 2.0 * 0.511664 * z; + target += coeff[ 3 ] * 2.0 * 0.511664 * x; + + // band 2 + target += coeff[ 4 ] * 2.0 * 0.429043 * x * y; // ( π / 4 ) * 1.092548 + target += coeff[ 5 ] * 2.0 * 0.429043 * y * z; + target += coeff[ 6 ] * ( 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3 + target += coeff[ 7 ] * 2.0 * 0.429043 * x * z; + target += coeff[ 8 ] * 0.429043 * ( x * x - y * y ); // ( π / 4 ) * 0.546274 + + return target; + + }, + + add: function ( sh ) { + + for ( var i = 0; i < 9; i ++ ) { + + this.coefficients[ i ].add( sh.coefficients[ i ] ); + + } + + return this; + + }, + + + scale: function ( s ) { + + for ( var i = 0; i < 9; i ++ ) { + + this.coefficients[ i ].multiplyScalar( s ); + + } + + return this; + + }, + + lerp: function ( sh, alpha ) { + + for ( var i = 0; i < 9; i ++ ) { + + this.coefficients[ i ].lerp( sh.coefficients[ i ], alpha ); + + } + + return this; + + }, + + equals: function ( sh ) { + + for ( var i = 0; i < 9; i ++ ) { + + if ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) { + + return false; + + } + + } + + return true; + + }, + + copy: function ( sh ) { + + return this.set( sh.coefficients ); + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + fromArray: function ( array ) { + + var coefficients = this.coefficients; + + for ( var i = 0; i < 9; i ++ ) { + + coefficients[ i ].fromArray( array, i * 3 ); + + } + + return this; + + }, + + toArray: function () { + + var array = []; + var coefficients = this.coefficients; + + for ( var i = 0; i < 9; i ++ ) { + + coefficients[ i ].toArray( array, i * 3 ); + + } + + return array; + + } + + } ); + + Object.assign( SphericalHarmonics3, { + + // evaluate the basis functions + // shBasis is an Array[ 9 ] + getBasisAt: function ( normal, shBasis ) { + + // normal is assumed to be unit length + + var x = normal.x, y = normal.y, z = normal.z; + + // band 0 + shBasis[ 0 ] = 0.282095; + + // band 1 + shBasis[ 1 ] = 0.488603 * y; + shBasis[ 2 ] = 0.488603 * z; + shBasis[ 3 ] = 0.488603 * x; + + // band 2 + shBasis[ 4 ] = 1.092548 * x * y; + shBasis[ 5 ] = 1.092548 * y * z; + shBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 ); + shBasis[ 7 ] = 1.092548 * x * z; + shBasis[ 8 ] = 0.546274 * ( x * x - y * y ); + + } + + } ); + + /** + * @author WestLangley / http://github.com/WestLangley + * + * A LightProbe is a source of indirect-diffuse light + */ + + function LightProbe( sh, intensity ) { + + Light.call( this, undefined, intensity ); + + this.sh = ( sh !== undefined ) ? sh : new SphericalHarmonics3(); + + } + + LightProbe.prototype = Object.assign( Object.create( Light.prototype ), { + + constructor: LightProbe, + + isLightProbe: true, + + copy: function ( source ) { + + Light.prototype.copy.call( this, source ); + + this.sh.copy( source.sh ); + this.intensity = source.intensity; + + return this; + + }, + + toJSON: function ( meta ) { + + var data = Light.prototype.toJSON.call( this, meta ); + + // data.sh = this.sh.toArray(); // todo + + return data; + + } + + } ); + + /** + * @author WestLangley / http://github.com/WestLangley + */ + + function HemisphereLightProbe( skyColor, groundColor, intensity ) { + + LightProbe.call( this, undefined, intensity ); + + var color1 = new Color().set( skyColor ); + var color2 = new Color().set( groundColor ); + + var sky = new Vector3( color1.r, color1.g, color1.b ); + var ground = new Vector3( color2.r, color2.g, color2.b ); + + // without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI ); + var c0 = Math.sqrt( Math.PI ); + var c1 = c0 * Math.sqrt( 0.75 ); + + this.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 ); + this.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 ); + + } + + HemisphereLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), { + + constructor: HemisphereLightProbe, + + isHemisphereLightProbe: true, + + copy: function ( source ) { // modifying colors not currently supported + + LightProbe.prototype.copy.call( this, source ); + + return this; + + }, + + toJSON: function ( meta ) { + + var data = LightProbe.prototype.toJSON.call( this, meta ); + + // data.sh = this.sh.toArray(); // todo + + return data; + + } + + } ); + + /** + * @author WestLangley / http://github.com/WestLangley + */ + + function AmbientLightProbe( color, intensity ) { + + LightProbe.call( this, undefined, intensity ); + + var color1 = new Color().set( color ); + + // without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI ); + this.sh.coefficients[ 0 ].set( color1.r, color1.g, color1.b ).multiplyScalar( 2 * Math.sqrt( Math.PI ) ); + + } + + AmbientLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), { + + constructor: AmbientLightProbe, + + isAmbientLightProbe: true, + + copy: function ( source ) { // modifying color not currently supported + + LightProbe.prototype.copy.call( this, source ); + + return this; + + }, + + toJSON: function ( meta ) { + + var data = LightProbe.prototype.toJSON.call( this, meta ); + + // data.sh = this.sh.toArray(); // todo + + return data; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function StereoCamera() { + + this.type = 'StereoCamera'; + + this.aspect = 1; + + this.eyeSep = 0.064; + + this.cameraL = new PerspectiveCamera(); + this.cameraL.layers.enable( 1 ); + this.cameraL.matrixAutoUpdate = false; + + this.cameraR = new PerspectiveCamera(); + this.cameraR.layers.enable( 2 ); + this.cameraR.matrixAutoUpdate = false; + + } + + Object.assign( StereoCamera.prototype, { + + update: ( function () { + + var instance, focus, fov, aspect, near, far, zoom, eyeSep; + + var eyeRight = new Matrix4(); + var eyeLeft = new Matrix4(); + + return function update( camera ) { + + var needsUpdate = instance !== this || focus !== camera.focus || fov !== camera.fov || + aspect !== camera.aspect * this.aspect || near !== camera.near || + far !== camera.far || zoom !== camera.zoom || eyeSep !== this.eyeSep; + + if ( needsUpdate ) { + + instance = this; + focus = camera.focus; + fov = camera.fov; + aspect = camera.aspect * this.aspect; + near = camera.near; + far = camera.far; + zoom = camera.zoom; + + // Off-axis stereoscopic effect based on + // http://paulbourke.net/stereographics/stereorender/ + + var projectionMatrix = camera.projectionMatrix.clone(); + eyeSep = this.eyeSep / 2; + var eyeSepOnProjection = eyeSep * near / focus; + var ymax = ( near * Math.tan( _Math.DEG2RAD * fov * 0.5 ) ) / zoom; + var xmin, xmax; + + // translate xOffset + + eyeLeft.elements[ 12 ] = - eyeSep; + eyeRight.elements[ 12 ] = eyeSep; + + // for left eye + + xmin = - ymax * aspect + eyeSepOnProjection; + xmax = ymax * aspect + eyeSepOnProjection; + + projectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin ); + projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin ); + + this.cameraL.projectionMatrix.copy( projectionMatrix ); + + // for right eye + + xmin = - ymax * aspect - eyeSepOnProjection; + xmax = ymax * aspect - eyeSepOnProjection; + + projectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin ); + projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin ); + + this.cameraR.projectionMatrix.copy( projectionMatrix ); + + } + + this.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( eyeLeft ); + this.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( eyeRight ); + + }; + + } )() + + } ); + + /** + * Camera for rendering cube maps + * - renders scene into axis-aligned cube + * + * @author alteredq / http://alteredqualia.com/ + */ + + var fov = 90, aspect = 1; + + function CubeCamera( near, far, cubeResolution, options ) { + + Object3D.call( this ); + + this.type = 'CubeCamera'; + + var cameraPX = new PerspectiveCamera( fov, aspect, near, far ); + cameraPX.up.set( 0, - 1, 0 ); + cameraPX.lookAt( new Vector3( 1, 0, 0 ) ); + this.add( cameraPX ); + + var cameraNX = new PerspectiveCamera( fov, aspect, near, far ); + cameraNX.up.set( 0, - 1, 0 ); + cameraNX.lookAt( new Vector3( - 1, 0, 0 ) ); + this.add( cameraNX ); + + var cameraPY = new PerspectiveCamera( fov, aspect, near, far ); + cameraPY.up.set( 0, 0, 1 ); + cameraPY.lookAt( new Vector3( 0, 1, 0 ) ); + this.add( cameraPY ); + + var cameraNY = new PerspectiveCamera( fov, aspect, near, far ); + cameraNY.up.set( 0, 0, - 1 ); + cameraNY.lookAt( new Vector3( 0, - 1, 0 ) ); + this.add( cameraNY ); + + var cameraPZ = new PerspectiveCamera( fov, aspect, near, far ); + cameraPZ.up.set( 0, - 1, 0 ); + cameraPZ.lookAt( new Vector3( 0, 0, 1 ) ); + this.add( cameraPZ ); + + var cameraNZ = new PerspectiveCamera( fov, aspect, near, far ); + cameraNZ.up.set( 0, - 1, 0 ); + cameraNZ.lookAt( new Vector3( 0, 0, - 1 ) ); + this.add( cameraNZ ); + + options = options || { format: RGBFormat, magFilter: LinearFilter, minFilter: LinearFilter }; + + this.renderTarget = new WebGLRenderTargetCube( cubeResolution, cubeResolution, options ); + this.renderTarget.texture.name = "CubeCamera"; + + this.update = function ( renderer, scene ) { + + if ( this.parent === null ) this.updateMatrixWorld(); + + var currentRenderTarget = renderer.getRenderTarget(); + + var renderTarget = this.renderTarget; + var generateMipmaps = renderTarget.texture.generateMipmaps; + + renderTarget.texture.generateMipmaps = false; + + renderer.setRenderTarget( renderTarget, 0 ); + renderer.render( scene, cameraPX ); + + renderer.setRenderTarget( renderTarget, 1 ); + renderer.render( scene, cameraNX ); + + renderer.setRenderTarget( renderTarget, 2 ); + renderer.render( scene, cameraPY ); + + renderer.setRenderTarget( renderTarget, 3 ); + renderer.render( scene, cameraNY ); + + renderer.setRenderTarget( renderTarget, 4 ); + renderer.render( scene, cameraPZ ); + + renderTarget.texture.generateMipmaps = generateMipmaps; + + renderer.setRenderTarget( renderTarget, 5 ); + renderer.render( scene, cameraNZ ); + + renderer.setRenderTarget( currentRenderTarget ); + + }; + + this.clear = function ( renderer, color, depth, stencil ) { + + var currentRenderTarget = renderer.getRenderTarget(); + + var renderTarget = this.renderTarget; + + for ( var i = 0; i < 6; i ++ ) { + + renderer.setRenderTarget( renderTarget, i ); + + renderer.clear( color, depth, stencil ); + + } + + renderer.setRenderTarget( currentRenderTarget ); + + }; + + } + + CubeCamera.prototype = Object.create( Object3D.prototype ); + CubeCamera.prototype.constructor = CubeCamera; + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function Clock( autoStart ) { + + this.autoStart = ( autoStart !== undefined ) ? autoStart : true; + + this.startTime = 0; + this.oldTime = 0; + this.elapsedTime = 0; + + this.running = false; + + } + + Object.assign( Clock.prototype, { + + start: function () { + + this.startTime = ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732 + + this.oldTime = this.startTime; + this.elapsedTime = 0; + this.running = true; + + }, + + stop: function () { + + this.getElapsedTime(); + this.running = false; + this.autoStart = false; + + }, + + getElapsedTime: function () { + + this.getDelta(); + return this.elapsedTime; + + }, + + getDelta: function () { + + var diff = 0; + + if ( this.autoStart && ! this.running ) { + + this.start(); + return 0; + + } + + if ( this.running ) { + + var newTime = ( typeof performance === 'undefined' ? Date : performance ).now(); + + diff = ( newTime - this.oldTime ) / 1000; + this.oldTime = newTime; + + this.elapsedTime += diff; + + } + + return diff; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function AudioListener() { + + Object3D.call( this ); + + this.type = 'AudioListener'; + + this.context = AudioContext.getContext(); + + this.gain = this.context.createGain(); + this.gain.connect( this.context.destination ); + + this.filter = null; + + this.timeDelta = 0; + + } + + AudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: AudioListener, + + getInput: function () { + + return this.gain; + + }, + + removeFilter: function ( ) { + + if ( this.filter !== null ) { + + this.gain.disconnect( this.filter ); + this.filter.disconnect( this.context.destination ); + this.gain.connect( this.context.destination ); + this.filter = null; + + } + + return this; + + }, + + getFilter: function () { + + return this.filter; + + }, + + setFilter: function ( value ) { + + if ( this.filter !== null ) { + + this.gain.disconnect( this.filter ); + this.filter.disconnect( this.context.destination ); + + } else { + + this.gain.disconnect( this.context.destination ); + + } + + this.filter = value; + this.gain.connect( this.filter ); + this.filter.connect( this.context.destination ); + + return this; + + }, + + getMasterVolume: function () { + + return this.gain.gain.value; + + }, + + setMasterVolume: function ( value ) { + + this.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 ); + + return this; + + }, + + updateMatrixWorld: ( function () { + + var position = new Vector3(); + var quaternion = new Quaternion(); + var scale = new Vector3(); + + var orientation = new Vector3(); + var clock = new Clock(); + + return function updateMatrixWorld( force ) { + + Object3D.prototype.updateMatrixWorld.call( this, force ); + + var listener = this.context.listener; + var up = this.up; + + this.timeDelta = clock.getDelta(); + + this.matrixWorld.decompose( position, quaternion, scale ); + + orientation.set( 0, 0, - 1 ).applyQuaternion( quaternion ); + + if ( listener.positionX ) { + + // code path for Chrome (see #14393) + + var endTime = this.context.currentTime + this.timeDelta; + + listener.positionX.linearRampToValueAtTime( position.x, endTime ); + listener.positionY.linearRampToValueAtTime( position.y, endTime ); + listener.positionZ.linearRampToValueAtTime( position.z, endTime ); + listener.forwardX.linearRampToValueAtTime( orientation.x, endTime ); + listener.forwardY.linearRampToValueAtTime( orientation.y, endTime ); + listener.forwardZ.linearRampToValueAtTime( orientation.z, endTime ); + listener.upX.linearRampToValueAtTime( up.x, endTime ); + listener.upY.linearRampToValueAtTime( up.y, endTime ); + listener.upZ.linearRampToValueAtTime( up.z, endTime ); + + } else { + + listener.setPosition( position.x, position.y, position.z ); + listener.setOrientation( orientation.x, orientation.y, orientation.z, up.x, up.y, up.z ); + + } + + }; + + } )() + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author Reece Aaron Lecrivain / http://reecenotes.com/ + */ + + function Audio( listener ) { + + Object3D.call( this ); + + this.type = 'Audio'; + + this.listener = listener; + this.context = listener.context; + + this.gain = this.context.createGain(); + this.gain.connect( listener.getInput() ); + + this.autoplay = false; + + this.buffer = null; + this.detune = 0; + this.loop = false; + this.startTime = 0; + this.offset = 0; + this.playbackRate = 1; + this.isPlaying = false; + this.hasPlaybackControl = true; + this.sourceType = 'empty'; + + this.filters = []; + + } + + Audio.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Audio, + + getOutput: function () { + + return this.gain; + + }, + + setNodeSource: function ( audioNode ) { + + this.hasPlaybackControl = false; + this.sourceType = 'audioNode'; + this.source = audioNode; + this.connect(); + + return this; + + }, + + setMediaElementSource: function ( mediaElement ) { + + this.hasPlaybackControl = false; + this.sourceType = 'mediaNode'; + this.source = this.context.createMediaElementSource( mediaElement ); + this.connect(); + + return this; + + }, + + setBuffer: function ( audioBuffer ) { + + this.buffer = audioBuffer; + this.sourceType = 'buffer'; + + if ( this.autoplay ) this.play(); + + return this; + + }, + + play: function () { + + if ( this.isPlaying === true ) { + + console.warn( 'THREE.Audio: Audio is already playing.' ); + return; + + } + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return; + + } + + var source = this.context.createBufferSource(); + + source.buffer = this.buffer; + source.loop = this.loop; + source.onended = this.onEnded.bind( this ); + this.startTime = this.context.currentTime; + source.start( this.startTime, this.offset ); + + this.isPlaying = true; + + this.source = source; + + this.setDetune( this.detune ); + this.setPlaybackRate( this.playbackRate ); + + return this.connect(); + + }, + + pause: function () { + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return; + + } + + if ( this.isPlaying === true ) { + + this.source.stop(); + this.source.onended = null; + this.offset += ( this.context.currentTime - this.startTime ) * this.playbackRate; + this.isPlaying = false; + + } + + return this; + + }, + + stop: function () { + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return; + + } + + this.source.stop(); + this.source.onended = null; + this.offset = 0; + this.isPlaying = false; + + return this; + + }, + + connect: function () { + + if ( this.filters.length > 0 ) { + + this.source.connect( this.filters[ 0 ] ); + + for ( var i = 1, l = this.filters.length; i < l; i ++ ) { + + this.filters[ i - 1 ].connect( this.filters[ i ] ); + + } + + this.filters[ this.filters.length - 1 ].connect( this.getOutput() ); + + } else { + + this.source.connect( this.getOutput() ); + + } + + return this; + + }, + + disconnect: function () { + + if ( this.filters.length > 0 ) { + + this.source.disconnect( this.filters[ 0 ] ); + + for ( var i = 1, l = this.filters.length; i < l; i ++ ) { + + this.filters[ i - 1 ].disconnect( this.filters[ i ] ); + + } + + this.filters[ this.filters.length - 1 ].disconnect( this.getOutput() ); + + } else { + + this.source.disconnect( this.getOutput() ); + + } + + return this; + + }, + + getFilters: function () { + + return this.filters; + + }, + + setFilters: function ( value ) { + + if ( ! value ) value = []; + + if ( this.isPlaying === true ) { + + this.disconnect(); + this.filters = value; + this.connect(); + + } else { + + this.filters = value; + + } + + return this; + + }, + + setDetune: function ( value ) { + + this.detune = value; + + if ( this.source.detune === undefined ) return; // only set detune when available + + if ( this.isPlaying === true ) { + + this.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 ); + + } + + return this; + + }, + + getDetune: function () { + + return this.detune; + + }, + + getFilter: function () { + + return this.getFilters()[ 0 ]; + + }, + + setFilter: function ( filter ) { + + return this.setFilters( filter ? [ filter ] : [] ); + + }, + + setPlaybackRate: function ( value ) { + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return; + + } + + this.playbackRate = value; + + if ( this.isPlaying === true ) { + + this.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 ); + + } + + return this; + + }, + + getPlaybackRate: function () { + + return this.playbackRate; + + }, + + onEnded: function () { + + this.isPlaying = false; + + }, + + getLoop: function () { + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return false; + + } + + return this.loop; + + }, + + setLoop: function ( value ) { + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return; + + } + + this.loop = value; + + if ( this.isPlaying === true ) { + + this.source.loop = this.loop; + + } + + return this; + + }, + + getVolume: function () { + + return this.gain.gain.value; + + }, + + setVolume: function ( value ) { + + this.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 ); + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function PositionalAudio( listener ) { + + Audio.call( this, listener ); + + this.panner = this.context.createPanner(); + this.panner.panningModel = 'HRTF'; + this.panner.connect( this.gain ); + + } + + PositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), { + + constructor: PositionalAudio, + + getOutput: function () { + + return this.panner; + + }, + + getRefDistance: function () { + + return this.panner.refDistance; + + }, + + setRefDistance: function ( value ) { + + this.panner.refDistance = value; + + return this; + + }, + + getRolloffFactor: function () { + + return this.panner.rolloffFactor; + + }, + + setRolloffFactor: function ( value ) { + + this.panner.rolloffFactor = value; + + return this; + + }, + + getDistanceModel: function () { + + return this.panner.distanceModel; + + }, + + setDistanceModel: function ( value ) { + + this.panner.distanceModel = value; + + return this; + + }, + + getMaxDistance: function () { + + return this.panner.maxDistance; + + }, + + setMaxDistance: function ( value ) { + + this.panner.maxDistance = value; + + return this; + + }, + + setDirectionalCone: function ( coneInnerAngle, coneOuterAngle, coneOuterGain ) { + + this.panner.coneInnerAngle = coneInnerAngle; + this.panner.coneOuterAngle = coneOuterAngle; + this.panner.coneOuterGain = coneOuterGain; + + return this; + + }, + + updateMatrixWorld: ( function () { + + var position = new Vector3(); + var quaternion = new Quaternion(); + var scale = new Vector3(); + + var orientation = new Vector3(); + + return function updateMatrixWorld( force ) { + + Object3D.prototype.updateMatrixWorld.call( this, force ); + + if ( this.hasPlaybackControl === true && this.isPlaying === false ) return; + + this.matrixWorld.decompose( position, quaternion, scale ); + + orientation.set( 0, 0, 1 ).applyQuaternion( quaternion ); + + var panner = this.panner; + + if ( panner.positionX ) { + + // code path for Chrome and Firefox (see #14393) + + var endTime = this.context.currentTime + this.listener.timeDelta; + + panner.positionX.linearRampToValueAtTime( position.x, endTime ); + panner.positionY.linearRampToValueAtTime( position.y, endTime ); + panner.positionZ.linearRampToValueAtTime( position.z, endTime ); + panner.orientationX.linearRampToValueAtTime( orientation.x, endTime ); + panner.orientationY.linearRampToValueAtTime( orientation.y, endTime ); + panner.orientationZ.linearRampToValueAtTime( orientation.z, endTime ); + + } else { + + panner.setPosition( position.x, position.y, position.z ); + panner.setOrientation( orientation.x, orientation.y, orientation.z ); + + } + + }; + + } )() + + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function AudioAnalyser( audio, fftSize ) { + + this.analyser = audio.context.createAnalyser(); + this.analyser.fftSize = fftSize !== undefined ? fftSize : 2048; + + this.data = new Uint8Array( this.analyser.frequencyBinCount ); + + audio.getOutput().connect( this.analyser ); + + } + + Object.assign( AudioAnalyser.prototype, { + + getFrequencyData: function () { + + this.analyser.getByteFrequencyData( this.data ); + + return this.data; + + }, + + getAverageFrequency: function () { + + var value = 0, data = this.getFrequencyData(); + + for ( var i = 0; i < data.length; i ++ ) { + + value += data[ i ]; + + } + + return value / data.length; + + } + + } ); + + /** + * + * Buffered scene graph property that allows weighted accumulation. + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function PropertyMixer( binding, typeName, valueSize ) { + + this.binding = binding; + this.valueSize = valueSize; + + var bufferType = Float64Array, + mixFunction; + + switch ( typeName ) { + + case 'quaternion': + mixFunction = this._slerp; + break; + + case 'string': + case 'bool': + bufferType = Array; + mixFunction = this._select; + break; + + default: + mixFunction = this._lerp; + + } + + this.buffer = new bufferType( valueSize * 4 ); + // layout: [ incoming | accu0 | accu1 | orig ] + // + // interpolators can use .buffer as their .result + // the data then goes to 'incoming' + // + // 'accu0' and 'accu1' are used frame-interleaved for + // the cumulative result and are compared to detect + // changes + // + // 'orig' stores the original state of the property + + this._mixBufferRegion = mixFunction; + + this.cumulativeWeight = 0; + + this.useCount = 0; + this.referenceCount = 0; + + } + + Object.assign( PropertyMixer.prototype, { + + // accumulate data in the 'incoming' region into 'accu' + accumulate: function ( accuIndex, weight ) { + + // note: happily accumulating nothing when weight = 0, the caller knows + // the weight and shouldn't have made the call in the first place + + var buffer = this.buffer, + stride = this.valueSize, + offset = accuIndex * stride + stride, + + currentWeight = this.cumulativeWeight; + + if ( currentWeight === 0 ) { + + // accuN := incoming * weight + + for ( var i = 0; i !== stride; ++ i ) { + + buffer[ offset + i ] = buffer[ i ]; + + } + + currentWeight = weight; + + } else { + + // accuN := accuN + incoming * weight + + currentWeight += weight; + var mix = weight / currentWeight; + this._mixBufferRegion( buffer, offset, 0, mix, stride ); + + } + + this.cumulativeWeight = currentWeight; + + }, + + // apply the state of 'accu' to the binding when accus differ + apply: function ( accuIndex ) { + + var stride = this.valueSize, + buffer = this.buffer, + offset = accuIndex * stride + stride, + + weight = this.cumulativeWeight, + + binding = this.binding; + + this.cumulativeWeight = 0; + + if ( weight < 1 ) { + + // accuN := accuN + original * ( 1 - cumulativeWeight ) + + var originalValueOffset = stride * 3; + + this._mixBufferRegion( + buffer, offset, originalValueOffset, 1 - weight, stride ); + + } + + for ( var i = stride, e = stride + stride; i !== e; ++ i ) { + + if ( buffer[ i ] !== buffer[ i + stride ] ) { + + // value has changed -> update scene graph + + binding.setValue( buffer, offset ); + break; + + } + + } + + }, + + // remember the state of the bound property and copy it to both accus + saveOriginalState: function () { + + var binding = this.binding; + + var buffer = this.buffer, + stride = this.valueSize, + + originalValueOffset = stride * 3; + + binding.getValue( buffer, originalValueOffset ); + + // accu[0..1] := orig -- initially detect changes against the original + for ( var i = stride, e = originalValueOffset; i !== e; ++ i ) { + + buffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ]; + + } + + this.cumulativeWeight = 0; + + }, + + // apply the state previously taken via 'saveOriginalState' to the binding + restoreOriginalState: function () { + + var originalValueOffset = this.valueSize * 3; + this.binding.setValue( this.buffer, originalValueOffset ); + + }, + + + // mix functions + + _select: function ( buffer, dstOffset, srcOffset, t, stride ) { + + if ( t >= 0.5 ) { + + for ( var i = 0; i !== stride; ++ i ) { + + buffer[ dstOffset + i ] = buffer[ srcOffset + i ]; + + } + + } + + }, + + _slerp: function ( buffer, dstOffset, srcOffset, t ) { + + Quaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t ); + + }, + + _lerp: function ( buffer, dstOffset, srcOffset, t, stride ) { + + var s = 1 - t; + + for ( var i = 0; i !== stride; ++ i ) { + + var j = dstOffset + i; + + buffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t; + + } + + } + + } ); + + /** + * + * A reference to a real property in the scene graph. + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + // Characters [].:/ are reserved for track binding syntax. + var RESERVED_CHARS_RE = '\\[\\]\\.:\\/'; + + function Composite( targetGroup, path, optionalParsedPath ) { + + var parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path ); + + this._targetGroup = targetGroup; + this._bindings = targetGroup.subscribe_( path, parsedPath ); + + } + + Object.assign( Composite.prototype, { + + getValue: function ( array, offset ) { + + this.bind(); // bind all binding + + var firstValidIndex = this._targetGroup.nCachedObjects_, + binding = this._bindings[ firstValidIndex ]; + + // and only call .getValue on the first + if ( binding !== undefined ) binding.getValue( array, offset ); + + }, + + setValue: function ( array, offset ) { + + var bindings = this._bindings; + + for ( var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) { + + bindings[ i ].setValue( array, offset ); + + } + + }, + + bind: function () { + + var bindings = this._bindings; + + for ( var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) { + + bindings[ i ].bind(); + + } + + }, + + unbind: function () { + + var bindings = this._bindings; + + for ( var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) { + + bindings[ i ].unbind(); + + } + + } + + } ); + + + function PropertyBinding( rootNode, path, parsedPath ) { + + this.path = path; + this.parsedPath = parsedPath || PropertyBinding.parseTrackName( path ); + + this.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode; + + this.rootNode = rootNode; + + } + + Object.assign( PropertyBinding, { + + Composite: Composite, + + create: function ( root, path, parsedPath ) { + + if ( ! ( root && root.isAnimationObjectGroup ) ) { + + return new PropertyBinding( root, path, parsedPath ); + + } else { + + return new PropertyBinding.Composite( root, path, parsedPath ); + + } + + }, + + /** + * Replaces spaces with underscores and removes unsupported characters from + * node names, to ensure compatibility with parseTrackName(). + * + * @param {string} name Node name to be sanitized. + * @return {string} + */ + sanitizeNodeName: ( function () { + + var reservedRe = new RegExp( '[' + RESERVED_CHARS_RE + ']', 'g' ); + + return function sanitizeNodeName( name ) { + + return name.replace( /\s/g, '_' ).replace( reservedRe, '' ); + + }; + + }() ), + + parseTrackName: function () { + + // Attempts to allow node names from any language. ES5's `\w` regexp matches + // only latin characters, and the unicode \p{L} is not yet supported. So + // instead, we exclude reserved characters and match everything else. + var wordChar = '[^' + RESERVED_CHARS_RE + ']'; + var wordCharOrDot = '[^' + RESERVED_CHARS_RE.replace( '\\.', '' ) + ']'; + + // Parent directories, delimited by '/' or ':'. Currently unused, but must + // be matched to parse the rest of the track name. + var directoryRe = /((?:WC+[\/:])*)/.source.replace( 'WC', wordChar ); + + // Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'. + var nodeRe = /(WCOD+)?/.source.replace( 'WCOD', wordCharOrDot ); + + // Object on target node, and accessor. May not contain reserved + // characters. Accessor may contain any character except closing bracket. + var objectRe = /(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace( 'WC', wordChar ); + + // Property and accessor. May not contain reserved characters. Accessor may + // contain any non-bracket characters. + var propertyRe = /\.(WC+)(?:\[(.+)\])?/.source.replace( 'WC', wordChar ); + + var trackRe = new RegExp( '' + + '^' + + directoryRe + + nodeRe + + objectRe + + propertyRe + + '$' + ); + + var supportedObjectNames = [ 'material', 'materials', 'bones' ]; + + return function parseTrackName( trackName ) { + + var matches = trackRe.exec( trackName ); + + if ( ! matches ) { + + throw new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName ); + + } + + var results = { + // directoryName: matches[ 1 ], // (tschw) currently unused + nodeName: matches[ 2 ], + objectName: matches[ 3 ], + objectIndex: matches[ 4 ], + propertyName: matches[ 5 ], // required + propertyIndex: matches[ 6 ] + }; + + var lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' ); + + if ( lastDot !== undefined && lastDot !== - 1 ) { + + var objectName = results.nodeName.substring( lastDot + 1 ); + + // Object names must be checked against a whitelist. Otherwise, there + // is no way to parse 'foo.bar.baz': 'baz' must be a property, but + // 'bar' could be the objectName, or part of a nodeName (which can + // include '.' characters). + if ( supportedObjectNames.indexOf( objectName ) !== - 1 ) { + + results.nodeName = results.nodeName.substring( 0, lastDot ); + results.objectName = objectName; + + } + + } + + if ( results.propertyName === null || results.propertyName.length === 0 ) { + + throw new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName ); + + } + + return results; + + }; + + }(), + + findNode: function ( root, nodeName ) { + + if ( ! nodeName || nodeName === "" || nodeName === "root" || nodeName === "." || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) { + + return root; + + } + + // search into skeleton bones. + if ( root.skeleton ) { + + var bone = root.skeleton.getBoneByName( nodeName ); + + if ( bone !== undefined ) { + + return bone; + + } + + } + + // search into node subtree. + if ( root.children ) { + + var searchNodeSubtree = function ( children ) { + + for ( var i = 0; i < children.length; i ++ ) { + + var childNode = children[ i ]; + + if ( childNode.name === nodeName || childNode.uuid === nodeName ) { + + return childNode; + + } + + var result = searchNodeSubtree( childNode.children ); + + if ( result ) return result; + + } + + return null; + + }; + + var subTreeNode = searchNodeSubtree( root.children ); + + if ( subTreeNode ) { + + return subTreeNode; + + } + + } + + return null; + + } + + } ); + + Object.assign( PropertyBinding.prototype, { // prototype, continued + + // these are used to "bind" a nonexistent property + _getValue_unavailable: function () {}, + _setValue_unavailable: function () {}, + + BindingType: { + Direct: 0, + EntireArray: 1, + ArrayElement: 2, + HasFromToArray: 3 + }, + + Versioning: { + None: 0, + NeedsUpdate: 1, + MatrixWorldNeedsUpdate: 2 + }, + + GetterByBindingType: [ + + function getValue_direct( buffer, offset ) { + + buffer[ offset ] = this.node[ this.propertyName ]; + + }, + + function getValue_array( buffer, offset ) { + + var source = this.resolvedProperty; + + for ( var i = 0, n = source.length; i !== n; ++ i ) { + + buffer[ offset ++ ] = source[ i ]; + + } + + }, + + function getValue_arrayElement( buffer, offset ) { + + buffer[ offset ] = this.resolvedProperty[ this.propertyIndex ]; + + }, + + function getValue_toArray( buffer, offset ) { + + this.resolvedProperty.toArray( buffer, offset ); + + } + + ], + + SetterByBindingTypeAndVersioning: [ + + [ + // Direct + + function setValue_direct( buffer, offset ) { + + this.targetObject[ this.propertyName ] = buffer[ offset ]; + + }, + + function setValue_direct_setNeedsUpdate( buffer, offset ) { + + this.targetObject[ this.propertyName ] = buffer[ offset ]; + this.targetObject.needsUpdate = true; + + }, + + function setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) { + + this.targetObject[ this.propertyName ] = buffer[ offset ]; + this.targetObject.matrixWorldNeedsUpdate = true; + + } + + ], [ + + // EntireArray + + function setValue_array( buffer, offset ) { + + var dest = this.resolvedProperty; + + for ( var i = 0, n = dest.length; i !== n; ++ i ) { + + dest[ i ] = buffer[ offset ++ ]; + + } + + }, + + function setValue_array_setNeedsUpdate( buffer, offset ) { + + var dest = this.resolvedProperty; + + for ( var i = 0, n = dest.length; i !== n; ++ i ) { + + dest[ i ] = buffer[ offset ++ ]; + + } + + this.targetObject.needsUpdate = true; + + }, + + function setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) { + + var dest = this.resolvedProperty; + + for ( var i = 0, n = dest.length; i !== n; ++ i ) { + + dest[ i ] = buffer[ offset ++ ]; + + } + + this.targetObject.matrixWorldNeedsUpdate = true; + + } + + ], [ + + // ArrayElement + + function setValue_arrayElement( buffer, offset ) { + + this.resolvedProperty[ this.propertyIndex ] = buffer[ offset ]; + + }, + + function setValue_arrayElement_setNeedsUpdate( buffer, offset ) { + + this.resolvedProperty[ this.propertyIndex ] = buffer[ offset ]; + this.targetObject.needsUpdate = true; + + }, + + function setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) { + + this.resolvedProperty[ this.propertyIndex ] = buffer[ offset ]; + this.targetObject.matrixWorldNeedsUpdate = true; + + } + + ], [ + + // HasToFromArray + + function setValue_fromArray( buffer, offset ) { + + this.resolvedProperty.fromArray( buffer, offset ); + + }, + + function setValue_fromArray_setNeedsUpdate( buffer, offset ) { + + this.resolvedProperty.fromArray( buffer, offset ); + this.targetObject.needsUpdate = true; + + }, + + function setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) { + + this.resolvedProperty.fromArray( buffer, offset ); + this.targetObject.matrixWorldNeedsUpdate = true; + + } + + ] + + ], + + getValue: function getValue_unbound( targetArray, offset ) { + + this.bind(); + this.getValue( targetArray, offset ); + + // Note: This class uses a State pattern on a per-method basis: + // 'bind' sets 'this.getValue' / 'setValue' and shadows the + // prototype version of these methods with one that represents + // the bound state. When the property is not found, the methods + // become no-ops. + + }, + + setValue: function getValue_unbound( sourceArray, offset ) { + + this.bind(); + this.setValue( sourceArray, offset ); + + }, + + // create getter / setter pair for a property in the scene graph + bind: function () { + + var targetObject = this.node, + parsedPath = this.parsedPath, + + objectName = parsedPath.objectName, + propertyName = parsedPath.propertyName, + propertyIndex = parsedPath.propertyIndex; + + if ( ! targetObject ) { + + targetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode; + + this.node = targetObject; + + } + + // set fail state so we can just 'return' on error + this.getValue = this._getValue_unavailable; + this.setValue = this._setValue_unavailable; + + // ensure there is a value node + if ( ! targetObject ) { + + console.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\'t found.' ); + return; + + } + + if ( objectName ) { + + var objectIndex = parsedPath.objectIndex; + + // special cases were we need to reach deeper into the hierarchy to get the face materials.... + switch ( objectName ) { + + case 'materials': + + if ( ! targetObject.material ) { + + console.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this ); + return; + + } + + if ( ! targetObject.material.materials ) { + + console.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this ); + return; + + } + + targetObject = targetObject.material.materials; + + break; + + case 'bones': + + if ( ! targetObject.skeleton ) { + + console.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this ); + return; + + } + + // potential future optimization: skip this if propertyIndex is already an integer + // and convert the integer string to a true integer. + + targetObject = targetObject.skeleton.bones; + + // support resolving morphTarget names into indices. + for ( var i = 0; i < targetObject.length; i ++ ) { + + if ( targetObject[ i ].name === objectIndex ) { + + objectIndex = i; + break; + + } + + } + + break; + + default: + + if ( targetObject[ objectName ] === undefined ) { + + console.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this ); + return; + + } + + targetObject = targetObject[ objectName ]; + + } + + + if ( objectIndex !== undefined ) { + + if ( targetObject[ objectIndex ] === undefined ) { + + console.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject ); + return; + + } + + targetObject = targetObject[ objectIndex ]; + + } + + } + + // resolve property + var nodeProperty = targetObject[ propertyName ]; + + if ( nodeProperty === undefined ) { + + var nodeName = parsedPath.nodeName; + + console.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName + + '.' + propertyName + ' but it wasn\'t found.', targetObject ); + return; + + } + + // determine versioning scheme + var versioning = this.Versioning.None; + + this.targetObject = targetObject; + + if ( targetObject.needsUpdate !== undefined ) { // material + + versioning = this.Versioning.NeedsUpdate; + + } else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform + + versioning = this.Versioning.MatrixWorldNeedsUpdate; + + } + + // determine how the property gets bound + var bindingType = this.BindingType.Direct; + + if ( propertyIndex !== undefined ) { + + // access a sub element of the property array (only primitives are supported right now) + + if ( propertyName === "morphTargetInfluences" ) { + + // potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer. + + // support resolving morphTarget names into indices. + if ( ! targetObject.geometry ) { + + console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this ); + return; + + } + + if ( targetObject.geometry.isBufferGeometry ) { + + if ( ! targetObject.geometry.morphAttributes ) { + + console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this ); + return; + + } + + for ( var i = 0; i < this.node.geometry.morphAttributes.position.length; i ++ ) { + + if ( targetObject.geometry.morphAttributes.position[ i ].name === propertyIndex ) { + + propertyIndex = i; + break; + + } + + } + + + } else { + + if ( ! targetObject.geometry.morphTargets ) { + + console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphTargets.', this ); + return; + + } + + for ( var i = 0; i < this.node.geometry.morphTargets.length; i ++ ) { + + if ( targetObject.geometry.morphTargets[ i ].name === propertyIndex ) { + + propertyIndex = i; + break; + + } + + } + + } + + } + + bindingType = this.BindingType.ArrayElement; + + this.resolvedProperty = nodeProperty; + this.propertyIndex = propertyIndex; + + } else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) { + + // must use copy for Object3D.Euler/Quaternion + + bindingType = this.BindingType.HasFromToArray; + + this.resolvedProperty = nodeProperty; + + } else if ( Array.isArray( nodeProperty ) ) { + + bindingType = this.BindingType.EntireArray; + + this.resolvedProperty = nodeProperty; + + } else { + + this.propertyName = propertyName; + + } + + // select getter / setter + this.getValue = this.GetterByBindingType[ bindingType ]; + this.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ]; + + }, + + unbind: function () { + + this.node = null; + + // back to the prototype version of getValue / setValue + // note: avoiding to mutate the shape of 'this' via 'delete' + this.getValue = this._getValue_unbound; + this.setValue = this._setValue_unbound; + + } + + } ); + + //!\ DECLARE ALIAS AFTER assign prototype ! + Object.assign( PropertyBinding.prototype, { + + // initial state of these methods that calls 'bind' + _getValue_unbound: PropertyBinding.prototype.getValue, + _setValue_unbound: PropertyBinding.prototype.setValue, + + } ); + + /** + * + * A group of objects that receives a shared animation state. + * + * Usage: + * + * - Add objects you would otherwise pass as 'root' to the + * constructor or the .clipAction method of AnimationMixer. + * + * - Instead pass this object as 'root'. + * + * - You can also add and remove objects later when the mixer + * is running. + * + * Note: + * + * Objects of this class appear as one object to the mixer, + * so cache control of the individual objects must be done + * on the group. + * + * Limitation: + * + * - The animated properties must be compatible among the + * all objects in the group. + * + * - A single property can either be controlled through a + * target group or directly, but not both. + * + * @author tschw + */ + + function AnimationObjectGroup() { + + this.uuid = _Math.generateUUID(); + + // cached objects followed by the active ones + this._objects = Array.prototype.slice.call( arguments ); + + this.nCachedObjects_ = 0; // threshold + // note: read by PropertyBinding.Composite + + var indices = {}; + this._indicesByUUID = indices; // for bookkeeping + + for ( var i = 0, n = arguments.length; i !== n; ++ i ) { + + indices[ arguments[ i ].uuid ] = i; + + } + + this._paths = []; // inside: string + this._parsedPaths = []; // inside: { we don't care, here } + this._bindings = []; // inside: Array< PropertyBinding > + this._bindingsIndicesByPath = {}; // inside: indices in these arrays + + var scope = this; + + this.stats = { + + objects: { + get total() { + + return scope._objects.length; + + }, + get inUse() { + + return this.total - scope.nCachedObjects_; + + } + }, + get bindingsPerObject() { + + return scope._bindings.length; + + } + + }; + + } + + Object.assign( AnimationObjectGroup.prototype, { + + isAnimationObjectGroup: true, + + add: function () { + + var objects = this._objects, + nObjects = objects.length, + nCachedObjects = this.nCachedObjects_, + indicesByUUID = this._indicesByUUID, + paths = this._paths, + parsedPaths = this._parsedPaths, + bindings = this._bindings, + nBindings = bindings.length, + knownObject = undefined; + + for ( var i = 0, n = arguments.length; i !== n; ++ i ) { + + var object = arguments[ i ], + uuid = object.uuid, + index = indicesByUUID[ uuid ]; + + if ( index === undefined ) { + + // unknown object -> add it to the ACTIVE region + + index = nObjects ++; + indicesByUUID[ uuid ] = index; + objects.push( object ); + + // accounting is done, now do the same for all bindings + + for ( var j = 0, m = nBindings; j !== m; ++ j ) { + + bindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) ); + + } + + } else if ( index < nCachedObjects ) { + + knownObject = objects[ index ]; + + // move existing object to the ACTIVE region + + var firstActiveIndex = -- nCachedObjects, + lastCachedObject = objects[ firstActiveIndex ]; + + indicesByUUID[ lastCachedObject.uuid ] = index; + objects[ index ] = lastCachedObject; + + indicesByUUID[ uuid ] = firstActiveIndex; + objects[ firstActiveIndex ] = object; + + // accounting is done, now do the same for all bindings + + for ( var j = 0, m = nBindings; j !== m; ++ j ) { + + var bindingsForPath = bindings[ j ], + lastCached = bindingsForPath[ firstActiveIndex ], + binding = bindingsForPath[ index ]; + + bindingsForPath[ index ] = lastCached; + + if ( binding === undefined ) { + + // since we do not bother to create new bindings + // for objects that are cached, the binding may + // or may not exist + + binding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ); + + } + + bindingsForPath[ firstActiveIndex ] = binding; + + } + + } else if ( objects[ index ] !== knownObject ) { + + console.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' + + 'detected. Clean the caches or recreate your infrastructure when reloading scenes.' ); + + } // else the object is already where we want it to be + + } // for arguments + + this.nCachedObjects_ = nCachedObjects; + + }, + + remove: function () { + + var objects = this._objects, + nCachedObjects = this.nCachedObjects_, + indicesByUUID = this._indicesByUUID, + bindings = this._bindings, + nBindings = bindings.length; + + for ( var i = 0, n = arguments.length; i !== n; ++ i ) { + + var object = arguments[ i ], + uuid = object.uuid, + index = indicesByUUID[ uuid ]; + + if ( index !== undefined && index >= nCachedObjects ) { + + // move existing object into the CACHED region + + var lastCachedIndex = nCachedObjects ++, + firstActiveObject = objects[ lastCachedIndex ]; + + indicesByUUID[ firstActiveObject.uuid ] = index; + objects[ index ] = firstActiveObject; + + indicesByUUID[ uuid ] = lastCachedIndex; + objects[ lastCachedIndex ] = object; + + // accounting is done, now do the same for all bindings + + for ( var j = 0, m = nBindings; j !== m; ++ j ) { + + var bindingsForPath = bindings[ j ], + firstActive = bindingsForPath[ lastCachedIndex ], + binding = bindingsForPath[ index ]; + + bindingsForPath[ index ] = firstActive; + bindingsForPath[ lastCachedIndex ] = binding; + + } + + } + + } // for arguments + + this.nCachedObjects_ = nCachedObjects; + + }, + + // remove & forget + uncache: function () { + + var objects = this._objects, + nObjects = objects.length, + nCachedObjects = this.nCachedObjects_, + indicesByUUID = this._indicesByUUID, + bindings = this._bindings, + nBindings = bindings.length; + + for ( var i = 0, n = arguments.length; i !== n; ++ i ) { + + var object = arguments[ i ], + uuid = object.uuid, + index = indicesByUUID[ uuid ]; + + if ( index !== undefined ) { + + delete indicesByUUID[ uuid ]; + + if ( index < nCachedObjects ) { + + // object is cached, shrink the CACHED region + + var firstActiveIndex = -- nCachedObjects, + lastCachedObject = objects[ firstActiveIndex ], + lastIndex = -- nObjects, + lastObject = objects[ lastIndex ]; + + // last cached object takes this object's place + indicesByUUID[ lastCachedObject.uuid ] = index; + objects[ index ] = lastCachedObject; + + // last object goes to the activated slot and pop + indicesByUUID[ lastObject.uuid ] = firstActiveIndex; + objects[ firstActiveIndex ] = lastObject; + objects.pop(); + + // accounting is done, now do the same for all bindings + + for ( var j = 0, m = nBindings; j !== m; ++ j ) { + + var bindingsForPath = bindings[ j ], + lastCached = bindingsForPath[ firstActiveIndex ], + last = bindingsForPath[ lastIndex ]; + + bindingsForPath[ index ] = lastCached; + bindingsForPath[ firstActiveIndex ] = last; + bindingsForPath.pop(); + + } + + } else { + + // object is active, just swap with the last and pop + + var lastIndex = -- nObjects, + lastObject = objects[ lastIndex ]; + + indicesByUUID[ lastObject.uuid ] = index; + objects[ index ] = lastObject; + objects.pop(); + + // accounting is done, now do the same for all bindings + + for ( var j = 0, m = nBindings; j !== m; ++ j ) { + + var bindingsForPath = bindings[ j ]; + + bindingsForPath[ index ] = bindingsForPath[ lastIndex ]; + bindingsForPath.pop(); + + } + + } // cached or active + + } // if object is known + + } // for arguments + + this.nCachedObjects_ = nCachedObjects; + + }, + + // Internal interface used by befriended PropertyBinding.Composite: + + subscribe_: function ( path, parsedPath ) { + + // returns an array of bindings for the given path that is changed + // according to the contained objects in the group + + var indicesByPath = this._bindingsIndicesByPath, + index = indicesByPath[ path ], + bindings = this._bindings; + + if ( index !== undefined ) return bindings[ index ]; + + var paths = this._paths, + parsedPaths = this._parsedPaths, + objects = this._objects, + nObjects = objects.length, + nCachedObjects = this.nCachedObjects_, + bindingsForPath = new Array( nObjects ); + + index = bindings.length; + + indicesByPath[ path ] = index; + + paths.push( path ); + parsedPaths.push( parsedPath ); + bindings.push( bindingsForPath ); + + for ( var i = nCachedObjects, n = objects.length; i !== n; ++ i ) { + + var object = objects[ i ]; + bindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath ); + + } + + return bindingsForPath; + + }, + + unsubscribe_: function ( path ) { + + // tells the group to forget about a property path and no longer + // update the array previously obtained with 'subscribe_' + + var indicesByPath = this._bindingsIndicesByPath, + index = indicesByPath[ path ]; + + if ( index !== undefined ) { + + var paths = this._paths, + parsedPaths = this._parsedPaths, + bindings = this._bindings, + lastBindingsIndex = bindings.length - 1, + lastBindings = bindings[ lastBindingsIndex ], + lastBindingsPath = path[ lastBindingsIndex ]; + + indicesByPath[ lastBindingsPath ] = index; + + bindings[ index ] = lastBindings; + bindings.pop(); + + parsedPaths[ index ] = parsedPaths[ lastBindingsIndex ]; + parsedPaths.pop(); + + paths[ index ] = paths[ lastBindingsIndex ]; + paths.pop(); + + } + + } + + } ); + + /** + * + * Action provided by AnimationMixer for scheduling clip playback on specific + * objects. + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + * + */ + + function AnimationAction( mixer, clip, localRoot ) { + + this._mixer = mixer; + this._clip = clip; + this._localRoot = localRoot || null; + + var tracks = clip.tracks, + nTracks = tracks.length, + interpolants = new Array( nTracks ); + + var interpolantSettings = { + endingStart: ZeroCurvatureEnding, + endingEnd: ZeroCurvatureEnding + }; + + for ( var i = 0; i !== nTracks; ++ i ) { + + var interpolant = tracks[ i ].createInterpolant( null ); + interpolants[ i ] = interpolant; + interpolant.settings = interpolantSettings; + + } + + this._interpolantSettings = interpolantSettings; + + this._interpolants = interpolants; // bound by the mixer + + // inside: PropertyMixer (managed by the mixer) + this._propertyBindings = new Array( nTracks ); + + this._cacheIndex = null; // for the memory manager + this._byClipCacheIndex = null; // for the memory manager + + this._timeScaleInterpolant = null; + this._weightInterpolant = null; + + this.loop = LoopRepeat; + this._loopCount = - 1; + + // global mixer time when the action is to be started + // it's set back to 'null' upon start of the action + this._startTime = null; + + // scaled local time of the action + // gets clamped or wrapped to 0..clip.duration according to loop + this.time = 0; + + this.timeScale = 1; + this._effectiveTimeScale = 1; + + this.weight = 1; + this._effectiveWeight = 1; + + this.repetitions = Infinity; // no. of repetitions when looping + + this.paused = false; // true -> zero effective time scale + this.enabled = true; // false -> zero effective weight + + this.clampWhenFinished = false;// keep feeding the last frame? + + this.zeroSlopeAtStart = true;// for smooth interpolation w/o separate + this.zeroSlopeAtEnd = true;// clips for start, loop and end + + } + + Object.assign( AnimationAction.prototype, { + + // State & Scheduling + + play: function () { + + this._mixer._activateAction( this ); + + return this; + + }, + + stop: function () { + + this._mixer._deactivateAction( this ); + + return this.reset(); + + }, + + reset: function () { + + this.paused = false; + this.enabled = true; + + this.time = 0; // restart clip + this._loopCount = - 1;// forget previous loops + this._startTime = null;// forget scheduling + + return this.stopFading().stopWarping(); + + }, + + isRunning: function () { + + return this.enabled && ! this.paused && this.timeScale !== 0 && + this._startTime === null && this._mixer._isActiveAction( this ); + + }, + + // return true when play has been called + isScheduled: function () { + + return this._mixer._isActiveAction( this ); + + }, + + startAt: function ( time ) { + + this._startTime = time; + + return this; + + }, + + setLoop: function ( mode, repetitions ) { + + this.loop = mode; + this.repetitions = repetitions; + + return this; + + }, + + // Weight + + // set the weight stopping any scheduled fading + // although .enabled = false yields an effective weight of zero, this + // method does *not* change .enabled, because it would be confusing + setEffectiveWeight: function ( weight ) { + + this.weight = weight; + + // note: same logic as when updated at runtime + this._effectiveWeight = this.enabled ? weight : 0; + + return this.stopFading(); + + }, + + // return the weight considering fading and .enabled + getEffectiveWeight: function () { + + return this._effectiveWeight; + + }, + + fadeIn: function ( duration ) { + + return this._scheduleFading( duration, 0, 1 ); + + }, + + fadeOut: function ( duration ) { + + return this._scheduleFading( duration, 1, 0 ); + + }, + + crossFadeFrom: function ( fadeOutAction, duration, warp ) { + + fadeOutAction.fadeOut( duration ); + this.fadeIn( duration ); + + if ( warp ) { + + var fadeInDuration = this._clip.duration, + fadeOutDuration = fadeOutAction._clip.duration, + + startEndRatio = fadeOutDuration / fadeInDuration, + endStartRatio = fadeInDuration / fadeOutDuration; + + fadeOutAction.warp( 1.0, startEndRatio, duration ); + this.warp( endStartRatio, 1.0, duration ); + + } + + return this; + + }, + + crossFadeTo: function ( fadeInAction, duration, warp ) { + + return fadeInAction.crossFadeFrom( this, duration, warp ); + + }, + + stopFading: function () { + + var weightInterpolant = this._weightInterpolant; + + if ( weightInterpolant !== null ) { + + this._weightInterpolant = null; + this._mixer._takeBackControlInterpolant( weightInterpolant ); + + } + + return this; + + }, + + // Time Scale Control + + // set the time scale stopping any scheduled warping + // although .paused = true yields an effective time scale of zero, this + // method does *not* change .paused, because it would be confusing + setEffectiveTimeScale: function ( timeScale ) { + + this.timeScale = timeScale; + this._effectiveTimeScale = this.paused ? 0 : timeScale; + + return this.stopWarping(); + + }, + + // return the time scale considering warping and .paused + getEffectiveTimeScale: function () { + + return this._effectiveTimeScale; + + }, + + setDuration: function ( duration ) { + + this.timeScale = this._clip.duration / duration; + + return this.stopWarping(); + + }, + + syncWith: function ( action ) { + + this.time = action.time; + this.timeScale = action.timeScale; + + return this.stopWarping(); + + }, + + halt: function ( duration ) { + + return this.warp( this._effectiveTimeScale, 0, duration ); + + }, + + warp: function ( startTimeScale, endTimeScale, duration ) { + + var mixer = this._mixer, now = mixer.time, + interpolant = this._timeScaleInterpolant, + + timeScale = this.timeScale; + + if ( interpolant === null ) { + + interpolant = mixer._lendControlInterpolant(); + this._timeScaleInterpolant = interpolant; + + } + + var times = interpolant.parameterPositions, + values = interpolant.sampleValues; + + times[ 0 ] = now; + times[ 1 ] = now + duration; + + values[ 0 ] = startTimeScale / timeScale; + values[ 1 ] = endTimeScale / timeScale; + + return this; + + }, + + stopWarping: function () { + + var timeScaleInterpolant = this._timeScaleInterpolant; + + if ( timeScaleInterpolant !== null ) { + + this._timeScaleInterpolant = null; + this._mixer._takeBackControlInterpolant( timeScaleInterpolant ); + + } + + return this; + + }, + + // Object Accessors + + getMixer: function () { + + return this._mixer; + + }, + + getClip: function () { + + return this._clip; + + }, + + getRoot: function () { + + return this._localRoot || this._mixer._root; + + }, + + // Interna + + _update: function ( time, deltaTime, timeDirection, accuIndex ) { + + // called by the mixer + + if ( ! this.enabled ) { + + // call ._updateWeight() to update ._effectiveWeight + + this._updateWeight( time ); + return; + + } + + var startTime = this._startTime; + + if ( startTime !== null ) { + + // check for scheduled start of action + + var timeRunning = ( time - startTime ) * timeDirection; + if ( timeRunning < 0 || timeDirection === 0 ) { + + return; // yet to come / don't decide when delta = 0 + + } + + // start + + this._startTime = null; // unschedule + deltaTime = timeDirection * timeRunning; + + } + + // apply time scale and advance time + + deltaTime *= this._updateTimeScale( time ); + var clipTime = this._updateTime( deltaTime ); + + // note: _updateTime may disable the action resulting in + // an effective weight of 0 + + var weight = this._updateWeight( time ); + + if ( weight > 0 ) { + + var interpolants = this._interpolants; + var propertyMixers = this._propertyBindings; + + for ( var j = 0, m = interpolants.length; j !== m; ++ j ) { + + interpolants[ j ].evaluate( clipTime ); + propertyMixers[ j ].accumulate( accuIndex, weight ); + + } + + } + + }, + + _updateWeight: function ( time ) { + + var weight = 0; + + if ( this.enabled ) { + + weight = this.weight; + var interpolant = this._weightInterpolant; + + if ( interpolant !== null ) { + + var interpolantValue = interpolant.evaluate( time )[ 0 ]; + + weight *= interpolantValue; + + if ( time > interpolant.parameterPositions[ 1 ] ) { + + this.stopFading(); + + if ( interpolantValue === 0 ) { + + // faded out, disable + this.enabled = false; + + } + + } + + } + + } + + this._effectiveWeight = weight; + return weight; + + }, + + _updateTimeScale: function ( time ) { + + var timeScale = 0; + + if ( ! this.paused ) { + + timeScale = this.timeScale; + + var interpolant = this._timeScaleInterpolant; + + if ( interpolant !== null ) { + + var interpolantValue = interpolant.evaluate( time )[ 0 ]; + + timeScale *= interpolantValue; + + if ( time > interpolant.parameterPositions[ 1 ] ) { + + this.stopWarping(); + + if ( timeScale === 0 ) { + + // motion has halted, pause + this.paused = true; + + } else { + + // warp done - apply final time scale + this.timeScale = timeScale; + + } + + } + + } + + } + + this._effectiveTimeScale = timeScale; + return timeScale; + + }, + + _updateTime: function ( deltaTime ) { + + var time = this.time + deltaTime; + var duration = this._clip.duration; + var loop = this.loop; + var loopCount = this._loopCount; + + var pingPong = ( loop === LoopPingPong ); + + if ( deltaTime === 0 ) { + + if ( loopCount === - 1 ) return time; + + return ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time; + + } + + if ( loop === LoopOnce ) { + + if ( loopCount === - 1 ) { + + // just started + + this._loopCount = 0; + this._setEndings( true, true, false ); + + } + + handle_stop: { + + if ( time >= duration ) { + + time = duration; + + } else if ( time < 0 ) { + + time = 0; + + } else { + + this.time = time; + + break handle_stop; + + } + + if ( this.clampWhenFinished ) this.paused = true; + else this.enabled = false; + + this.time = time; + + this._mixer.dispatchEvent( { + type: 'finished', action: this, + direction: deltaTime < 0 ? - 1 : 1 + } ); + + } + + } else { // repetitive Repeat or PingPong + + if ( loopCount === - 1 ) { + + // just started + + if ( deltaTime >= 0 ) { + + loopCount = 0; + + this._setEndings( true, this.repetitions === 0, pingPong ); + + } else { + + // when looping in reverse direction, the initial + // transition through zero counts as a repetition, + // so leave loopCount at -1 + + this._setEndings( this.repetitions === 0, true, pingPong ); + + } + + } + + if ( time >= duration || time < 0 ) { + + // wrap around + + var loopDelta = Math.floor( time / duration ); // signed + time -= duration * loopDelta; + + loopCount += Math.abs( loopDelta ); + + var pending = this.repetitions - loopCount; + + if ( pending <= 0 ) { + + // have to stop (switch state, clamp time, fire event) + + if ( this.clampWhenFinished ) this.paused = true; + else this.enabled = false; + + time = deltaTime > 0 ? duration : 0; + + this.time = time; + + this._mixer.dispatchEvent( { + type: 'finished', action: this, + direction: deltaTime > 0 ? 1 : - 1 + } ); + + } else { + + // keep running + + if ( pending === 1 ) { + + // entering the last round + + var atStart = deltaTime < 0; + this._setEndings( atStart, ! atStart, pingPong ); + + } else { + + this._setEndings( false, false, pingPong ); + + } + + this._loopCount = loopCount; + + this.time = time; + + this._mixer.dispatchEvent( { + type: 'loop', action: this, loopDelta: loopDelta + } ); + + } + + } else { + + this.time = time; + + } + + if ( pingPong && ( loopCount & 1 ) === 1 ) { + + // invert time for the "pong round" + + return duration - time; + + } + + } + + return time; + + }, + + _setEndings: function ( atStart, atEnd, pingPong ) { + + var settings = this._interpolantSettings; + + if ( pingPong ) { + + settings.endingStart = ZeroSlopeEnding; + settings.endingEnd = ZeroSlopeEnding; + + } else { + + // assuming for LoopOnce atStart == atEnd == true + + if ( atStart ) { + + settings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding; + + } else { + + settings.endingStart = WrapAroundEnding; + + } + + if ( atEnd ) { + + settings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding; + + } else { + + settings.endingEnd = WrapAroundEnding; + + } + + } + + }, + + _scheduleFading: function ( duration, weightNow, weightThen ) { + + var mixer = this._mixer, now = mixer.time, + interpolant = this._weightInterpolant; + + if ( interpolant === null ) { + + interpolant = mixer._lendControlInterpolant(); + this._weightInterpolant = interpolant; + + } + + var times = interpolant.parameterPositions, + values = interpolant.sampleValues; + + times[ 0 ] = now; + values[ 0 ] = weightNow; + times[ 1 ] = now + duration; + values[ 1 ] = weightThen; + + return this; + + } + + } ); + + /** + * + * Player for AnimationClips. + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function AnimationMixer( root ) { + + this._root = root; + this._initMemoryManager(); + this._accuIndex = 0; + + this.time = 0; + + this.timeScale = 1.0; + + } + + AnimationMixer.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + + constructor: AnimationMixer, + + _bindAction: function ( action, prototypeAction ) { + + var root = action._localRoot || this._root, + tracks = action._clip.tracks, + nTracks = tracks.length, + bindings = action._propertyBindings, + interpolants = action._interpolants, + rootUuid = root.uuid, + bindingsByRoot = this._bindingsByRootAndName, + bindingsByName = bindingsByRoot[ rootUuid ]; + + if ( bindingsByName === undefined ) { + + bindingsByName = {}; + bindingsByRoot[ rootUuid ] = bindingsByName; + + } + + for ( var i = 0; i !== nTracks; ++ i ) { + + var track = tracks[ i ], + trackName = track.name, + binding = bindingsByName[ trackName ]; + + if ( binding !== undefined ) { + + bindings[ i ] = binding; + + } else { + + binding = bindings[ i ]; + + if ( binding !== undefined ) { + + // existing binding, make sure the cache knows + + if ( binding._cacheIndex === null ) { + + ++ binding.referenceCount; + this._addInactiveBinding( binding, rootUuid, trackName ); + + } + + continue; + + } + + var path = prototypeAction && prototypeAction. + _propertyBindings[ i ].binding.parsedPath; + + binding = new PropertyMixer( + PropertyBinding.create( root, trackName, path ), + track.ValueTypeName, track.getValueSize() ); + + ++ binding.referenceCount; + this._addInactiveBinding( binding, rootUuid, trackName ); + + bindings[ i ] = binding; + + } + + interpolants[ i ].resultBuffer = binding.buffer; + + } + + }, + + _activateAction: function ( action ) { + + if ( ! this._isActiveAction( action ) ) { + + if ( action._cacheIndex === null ) { + + // this action has been forgotten by the cache, but the user + // appears to be still using it -> rebind + + var rootUuid = ( action._localRoot || this._root ).uuid, + clipUuid = action._clip.uuid, + actionsForClip = this._actionsByClip[ clipUuid ]; + + this._bindAction( action, + actionsForClip && actionsForClip.knownActions[ 0 ] ); + + this._addInactiveAction( action, clipUuid, rootUuid ); + + } + + var bindings = action._propertyBindings; + + // increment reference counts / sort out state + for ( var i = 0, n = bindings.length; i !== n; ++ i ) { + + var binding = bindings[ i ]; + + if ( binding.useCount ++ === 0 ) { + + this._lendBinding( binding ); + binding.saveOriginalState(); + + } + + } + + this._lendAction( action ); + + } + + }, + + _deactivateAction: function ( action ) { + + if ( this._isActiveAction( action ) ) { + + var bindings = action._propertyBindings; + + // decrement reference counts / sort out state + for ( var i = 0, n = bindings.length; i !== n; ++ i ) { + + var binding = bindings[ i ]; + + if ( -- binding.useCount === 0 ) { + + binding.restoreOriginalState(); + this._takeBackBinding( binding ); + + } + + } + + this._takeBackAction( action ); + + } + + }, + + // Memory manager + + _initMemoryManager: function () { + + this._actions = []; // 'nActiveActions' followed by inactive ones + this._nActiveActions = 0; + + this._actionsByClip = {}; + // inside: + // { + // knownActions: Array< AnimationAction > - used as prototypes + // actionByRoot: AnimationAction - lookup + // } + + + this._bindings = []; // 'nActiveBindings' followed by inactive ones + this._nActiveBindings = 0; + + this._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer > + + + this._controlInterpolants = []; // same game as above + this._nActiveControlInterpolants = 0; + + var scope = this; + + this.stats = { + + actions: { + get total() { + + return scope._actions.length; + + }, + get inUse() { + + return scope._nActiveActions; + + } + }, + bindings: { + get total() { + + return scope._bindings.length; + + }, + get inUse() { + + return scope._nActiveBindings; + + } + }, + controlInterpolants: { + get total() { + + return scope._controlInterpolants.length; + + }, + get inUse() { + + return scope._nActiveControlInterpolants; + + } + } + + }; + + }, + + // Memory management for AnimationAction objects + + _isActiveAction: function ( action ) { + + var index = action._cacheIndex; + return index !== null && index < this._nActiveActions; + + }, + + _addInactiveAction: function ( action, clipUuid, rootUuid ) { + + var actions = this._actions, + actionsByClip = this._actionsByClip, + actionsForClip = actionsByClip[ clipUuid ]; + + if ( actionsForClip === undefined ) { + + actionsForClip = { + + knownActions: [ action ], + actionByRoot: {} + + }; + + action._byClipCacheIndex = 0; + + actionsByClip[ clipUuid ] = actionsForClip; + + } else { + + var knownActions = actionsForClip.knownActions; + + action._byClipCacheIndex = knownActions.length; + knownActions.push( action ); + + } + + action._cacheIndex = actions.length; + actions.push( action ); + + actionsForClip.actionByRoot[ rootUuid ] = action; + + }, + + _removeInactiveAction: function ( action ) { + + var actions = this._actions, + lastInactiveAction = actions[ actions.length - 1 ], + cacheIndex = action._cacheIndex; + + lastInactiveAction._cacheIndex = cacheIndex; + actions[ cacheIndex ] = lastInactiveAction; + actions.pop(); + + action._cacheIndex = null; + + + var clipUuid = action._clip.uuid, + actionsByClip = this._actionsByClip, + actionsForClip = actionsByClip[ clipUuid ], + knownActionsForClip = actionsForClip.knownActions, + + lastKnownAction = + knownActionsForClip[ knownActionsForClip.length - 1 ], + + byClipCacheIndex = action._byClipCacheIndex; + + lastKnownAction._byClipCacheIndex = byClipCacheIndex; + knownActionsForClip[ byClipCacheIndex ] = lastKnownAction; + knownActionsForClip.pop(); + + action._byClipCacheIndex = null; + + + var actionByRoot = actionsForClip.actionByRoot, + rootUuid = ( action._localRoot || this._root ).uuid; + + delete actionByRoot[ rootUuid ]; + + if ( knownActionsForClip.length === 0 ) { + + delete actionsByClip[ clipUuid ]; + + } + + this._removeInactiveBindingsForAction( action ); + + }, + + _removeInactiveBindingsForAction: function ( action ) { + + var bindings = action._propertyBindings; + for ( var i = 0, n = bindings.length; i !== n; ++ i ) { + + var binding = bindings[ i ]; + + if ( -- binding.referenceCount === 0 ) { + + this._removeInactiveBinding( binding ); + + } + + } + + }, + + _lendAction: function ( action ) { + + // [ active actions | inactive actions ] + // [ active actions >| inactive actions ] + // s a + // <-swap-> + // a s + + var actions = this._actions, + prevIndex = action._cacheIndex, + + lastActiveIndex = this._nActiveActions ++, + + firstInactiveAction = actions[ lastActiveIndex ]; + + action._cacheIndex = lastActiveIndex; + actions[ lastActiveIndex ] = action; + + firstInactiveAction._cacheIndex = prevIndex; + actions[ prevIndex ] = firstInactiveAction; + + }, + + _takeBackAction: function ( action ) { + + // [ active actions | inactive actions ] + // [ active actions |< inactive actions ] + // a s + // <-swap-> + // s a + + var actions = this._actions, + prevIndex = action._cacheIndex, + + firstInactiveIndex = -- this._nActiveActions, + + lastActiveAction = actions[ firstInactiveIndex ]; + + action._cacheIndex = firstInactiveIndex; + actions[ firstInactiveIndex ] = action; + + lastActiveAction._cacheIndex = prevIndex; + actions[ prevIndex ] = lastActiveAction; + + }, + + // Memory management for PropertyMixer objects + + _addInactiveBinding: function ( binding, rootUuid, trackName ) { + + var bindingsByRoot = this._bindingsByRootAndName, + bindingByName = bindingsByRoot[ rootUuid ], + + bindings = this._bindings; + + if ( bindingByName === undefined ) { + + bindingByName = {}; + bindingsByRoot[ rootUuid ] = bindingByName; + + } + + bindingByName[ trackName ] = binding; + + binding._cacheIndex = bindings.length; + bindings.push( binding ); + + }, + + _removeInactiveBinding: function ( binding ) { + + var bindings = this._bindings, + propBinding = binding.binding, + rootUuid = propBinding.rootNode.uuid, + trackName = propBinding.path, + bindingsByRoot = this._bindingsByRootAndName, + bindingByName = bindingsByRoot[ rootUuid ], + + lastInactiveBinding = bindings[ bindings.length - 1 ], + cacheIndex = binding._cacheIndex; + + lastInactiveBinding._cacheIndex = cacheIndex; + bindings[ cacheIndex ] = lastInactiveBinding; + bindings.pop(); + + delete bindingByName[ trackName ]; + + remove_empty_map: { + + for ( var _ in bindingByName ) break remove_empty_map; // eslint-disable-line no-unused-vars + + delete bindingsByRoot[ rootUuid ]; + + } + + }, + + _lendBinding: function ( binding ) { + + var bindings = this._bindings, + prevIndex = binding._cacheIndex, + + lastActiveIndex = this._nActiveBindings ++, + + firstInactiveBinding = bindings[ lastActiveIndex ]; + + binding._cacheIndex = lastActiveIndex; + bindings[ lastActiveIndex ] = binding; + + firstInactiveBinding._cacheIndex = prevIndex; + bindings[ prevIndex ] = firstInactiveBinding; + + }, + + _takeBackBinding: function ( binding ) { + + var bindings = this._bindings, + prevIndex = binding._cacheIndex, + + firstInactiveIndex = -- this._nActiveBindings, + + lastActiveBinding = bindings[ firstInactiveIndex ]; + + binding._cacheIndex = firstInactiveIndex; + bindings[ firstInactiveIndex ] = binding; + + lastActiveBinding._cacheIndex = prevIndex; + bindings[ prevIndex ] = lastActiveBinding; + + }, + + + // Memory management of Interpolants for weight and time scale + + _lendControlInterpolant: function () { + + var interpolants = this._controlInterpolants, + lastActiveIndex = this._nActiveControlInterpolants ++, + interpolant = interpolants[ lastActiveIndex ]; + + if ( interpolant === undefined ) { + + interpolant = new LinearInterpolant( + new Float32Array( 2 ), new Float32Array( 2 ), + 1, this._controlInterpolantsResultBuffer ); + + interpolant.__cacheIndex = lastActiveIndex; + interpolants[ lastActiveIndex ] = interpolant; + + } + + return interpolant; + + }, + + _takeBackControlInterpolant: function ( interpolant ) { + + var interpolants = this._controlInterpolants, + prevIndex = interpolant.__cacheIndex, + + firstInactiveIndex = -- this._nActiveControlInterpolants, + + lastActiveInterpolant = interpolants[ firstInactiveIndex ]; + + interpolant.__cacheIndex = firstInactiveIndex; + interpolants[ firstInactiveIndex ] = interpolant; + + lastActiveInterpolant.__cacheIndex = prevIndex; + interpolants[ prevIndex ] = lastActiveInterpolant; + + }, + + _controlInterpolantsResultBuffer: new Float32Array( 1 ), + + // return an action for a clip optionally using a custom root target + // object (this method allocates a lot of dynamic memory in case a + // previously unknown clip/root combination is specified) + clipAction: function ( clip, optionalRoot ) { + + var root = optionalRoot || this._root, + rootUuid = root.uuid, + + clipObject = typeof clip === 'string' ? + AnimationClip.findByName( root, clip ) : clip, + + clipUuid = clipObject !== null ? clipObject.uuid : clip, + + actionsForClip = this._actionsByClip[ clipUuid ], + prototypeAction = null; + + if ( actionsForClip !== undefined ) { + + var existingAction = + actionsForClip.actionByRoot[ rootUuid ]; + + if ( existingAction !== undefined ) { + + return existingAction; + + } + + // we know the clip, so we don't have to parse all + // the bindings again but can just copy + prototypeAction = actionsForClip.knownActions[ 0 ]; + + // also, take the clip from the prototype action + if ( clipObject === null ) + clipObject = prototypeAction._clip; + + } + + // clip must be known when specified via string + if ( clipObject === null ) return null; + + // allocate all resources required to run it + var newAction = new AnimationAction( this, clipObject, optionalRoot ); + + this._bindAction( newAction, prototypeAction ); + + // and make the action known to the memory manager + this._addInactiveAction( newAction, clipUuid, rootUuid ); + + return newAction; + + }, + + // get an existing action + existingAction: function ( clip, optionalRoot ) { + + var root = optionalRoot || this._root, + rootUuid = root.uuid, + + clipObject = typeof clip === 'string' ? + AnimationClip.findByName( root, clip ) : clip, + + clipUuid = clipObject ? clipObject.uuid : clip, + + actionsForClip = this._actionsByClip[ clipUuid ]; + + if ( actionsForClip !== undefined ) { + + return actionsForClip.actionByRoot[ rootUuid ] || null; + + } + + return null; + + }, + + // deactivates all previously scheduled actions + stopAllAction: function () { + + var actions = this._actions, + nActions = this._nActiveActions, + bindings = this._bindings, + nBindings = this._nActiveBindings; + + this._nActiveActions = 0; + this._nActiveBindings = 0; + + for ( var i = 0; i !== nActions; ++ i ) { + + actions[ i ].reset(); + + } + + for ( var i = 0; i !== nBindings; ++ i ) { + + bindings[ i ].useCount = 0; + + } + + return this; + + }, + + // advance the time and update apply the animation + update: function ( deltaTime ) { + + deltaTime *= this.timeScale; + + var actions = this._actions, + nActions = this._nActiveActions, + + time = this.time += deltaTime, + timeDirection = Math.sign( deltaTime ), + + accuIndex = this._accuIndex ^= 1; + + // run active actions + + for ( var i = 0; i !== nActions; ++ i ) { + + var action = actions[ i ]; + + action._update( time, deltaTime, timeDirection, accuIndex ); + + } + + // update scene graph + + var bindings = this._bindings, + nBindings = this._nActiveBindings; + + for ( var i = 0; i !== nBindings; ++ i ) { + + bindings[ i ].apply( accuIndex ); + + } + + return this; + + }, + + // return this mixer's root target object + getRoot: function () { + + return this._root; + + }, + + // free all resources specific to a particular clip + uncacheClip: function ( clip ) { + + var actions = this._actions, + clipUuid = clip.uuid, + actionsByClip = this._actionsByClip, + actionsForClip = actionsByClip[ clipUuid ]; + + if ( actionsForClip !== undefined ) { + + // note: just calling _removeInactiveAction would mess up the + // iteration state and also require updating the state we can + // just throw away + + var actionsToRemove = actionsForClip.knownActions; + + for ( var i = 0, n = actionsToRemove.length; i !== n; ++ i ) { + + var action = actionsToRemove[ i ]; + + this._deactivateAction( action ); + + var cacheIndex = action._cacheIndex, + lastInactiveAction = actions[ actions.length - 1 ]; + + action._cacheIndex = null; + action._byClipCacheIndex = null; + + lastInactiveAction._cacheIndex = cacheIndex; + actions[ cacheIndex ] = lastInactiveAction; + actions.pop(); + + this._removeInactiveBindingsForAction( action ); + + } + + delete actionsByClip[ clipUuid ]; + + } + + }, + + // free all resources specific to a particular root target object + uncacheRoot: function ( root ) { + + var rootUuid = root.uuid, + actionsByClip = this._actionsByClip; + + for ( var clipUuid in actionsByClip ) { + + var actionByRoot = actionsByClip[ clipUuid ].actionByRoot, + action = actionByRoot[ rootUuid ]; + + if ( action !== undefined ) { + + this._deactivateAction( action ); + this._removeInactiveAction( action ); + + } + + } + + var bindingsByRoot = this._bindingsByRootAndName, + bindingByName = bindingsByRoot[ rootUuid ]; + + if ( bindingByName !== undefined ) { + + for ( var trackName in bindingByName ) { + + var binding = bindingByName[ trackName ]; + binding.restoreOriginalState(); + this._removeInactiveBinding( binding ); + + } + + } + + }, + + // remove a targeted clip from the cache + uncacheAction: function ( clip, optionalRoot ) { + + var action = this.existingAction( clip, optionalRoot ); + + if ( action !== null ) { + + this._deactivateAction( action ); + this._removeInactiveAction( action ); + + } + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function Uniform( value ) { + + if ( typeof value === 'string' ) { + + console.warn( 'THREE.Uniform: Type parameter is no longer needed.' ); + value = arguments[ 1 ]; + + } + + this.value = value; + + } + + Uniform.prototype.clone = function () { + + return new Uniform( this.value.clone === undefined ? this.value : this.value.clone() ); + + }; + + /** + * @author benaadams / https://twitter.com/ben_a_adams + */ + + function InstancedInterleavedBuffer( array, stride, meshPerAttribute ) { + + InterleavedBuffer.call( this, array, stride ); + + this.meshPerAttribute = meshPerAttribute || 1; + + } + + InstancedInterleavedBuffer.prototype = Object.assign( Object.create( InterleavedBuffer.prototype ), { + + constructor: InstancedInterleavedBuffer, + + isInstancedInterleavedBuffer: true, + + copy: function ( source ) { + + InterleavedBuffer.prototype.copy.call( this, source ); + + this.meshPerAttribute = source.meshPerAttribute; + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author bhouston / http://clara.io/ + * @author stephomi / http://stephaneginier.com/ + */ + + function Raycaster( origin, direction, near, far ) { + + this.ray = new Ray( origin, direction ); + // direction is assumed to be normalized (for accurate distance calculations) + + this.near = near || 0; + this.far = far || Infinity; + + this.params = { + Mesh: {}, + Line: {}, + LOD: {}, + Points: { threshold: 1 }, + Sprite: {} + }; + + Object.defineProperties( this.params, { + PointCloud: { + get: function () { + + console.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' ); + return this.Points; + + } + } + } ); + + } + + function ascSort( a, b ) { + + return a.distance - b.distance; + + } + + function intersectObject( object, raycaster, intersects, recursive ) { + + if ( object.visible === false ) return; + + object.raycast( raycaster, intersects ); + + if ( recursive === true ) { + + var children = object.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + intersectObject( children[ i ], raycaster, intersects, true ); + + } + + } + + } + + Object.assign( Raycaster.prototype, { + + linePrecision: 1, + + set: function ( origin, direction ) { + + // direction is assumed to be normalized (for accurate distance calculations) + + this.ray.set( origin, direction ); + + }, + + setFromCamera: function ( coords, camera ) { + + if ( ( camera && camera.isPerspectiveCamera ) ) { + + this.ray.origin.setFromMatrixPosition( camera.matrixWorld ); + this.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize(); + + } else if ( ( camera && camera.isOrthographicCamera ) ) { + + this.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera + this.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld ); + + } else { + + console.error( 'THREE.Raycaster: Unsupported camera type.' ); + + } + + }, + + intersectObject: function ( object, recursive, optionalTarget ) { + + var intersects = optionalTarget || []; + + intersectObject( object, this, intersects, recursive ); + + intersects.sort( ascSort ); + + return intersects; + + }, + + intersectObjects: function ( objects, recursive, optionalTarget ) { + + var intersects = optionalTarget || []; + + if ( Array.isArray( objects ) === false ) { + + console.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' ); + return intersects; + + } + + for ( var i = 0, l = objects.length; i < l; i ++ ) { + + intersectObject( objects[ i ], this, intersects, recursive ); + + } + + intersects.sort( ascSort ); + + return intersects; + + } + + } ); + + /** + * @author bhouston / http://clara.io + * @author WestLangley / http://github.com/WestLangley + * + * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system + * + * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up. + * The azimuthal angle (theta) is measured from the positive z-axiz. + */ + + function Spherical( radius, phi, theta ) { + + this.radius = ( radius !== undefined ) ? radius : 1.0; + this.phi = ( phi !== undefined ) ? phi : 0; // polar angle + this.theta = ( theta !== undefined ) ? theta : 0; // azimuthal angle + + return this; + + } + + Object.assign( Spherical.prototype, { + + set: function ( radius, phi, theta ) { + + this.radius = radius; + this.phi = phi; + this.theta = theta; + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( other ) { + + this.radius = other.radius; + this.phi = other.phi; + this.theta = other.theta; + + return this; + + }, + + // restrict phi to be betwee EPS and PI-EPS + makeSafe: function () { + + var EPS = 0.000001; + this.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) ); + + return this; + + }, + + setFromVector3: function ( v ) { + + return this.setFromCartesianCoords( v.x, v.y, v.z ); + + }, + + setFromCartesianCoords: function ( x, y, z ) { + + this.radius = Math.sqrt( x * x + y * y + z * z ); + + if ( this.radius === 0 ) { + + this.theta = 0; + this.phi = 0; + + } else { + + this.theta = Math.atan2( x, z ); + this.phi = Math.acos( _Math.clamp( y / this.radius, - 1, 1 ) ); + + } + + return this; + + } + + } ); + + /** + * @author Mugen87 / https://github.com/Mugen87 + * + * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system + * + */ + + function Cylindrical( radius, theta, y ) { + + this.radius = ( radius !== undefined ) ? radius : 1.0; // distance from the origin to a point in the x-z plane + this.theta = ( theta !== undefined ) ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis + this.y = ( y !== undefined ) ? y : 0; // height above the x-z plane + + return this; + + } + + Object.assign( Cylindrical.prototype, { + + set: function ( radius, theta, y ) { + + this.radius = radius; + this.theta = theta; + this.y = y; + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( other ) { + + this.radius = other.radius; + this.theta = other.theta; + this.y = other.y; + + return this; + + }, + + setFromVector3: function ( v ) { + + return this.setFromCartesianCoords( v.x, v.y, v.z ); + + }, + + setFromCartesianCoords: function ( x, y, z ) { + + this.radius = Math.sqrt( x * x + z * z ); + this.theta = Math.atan2( x, z ); + this.y = y; + + return this; + + } + + } ); + + /** + * @author bhouston / http://clara.io + */ + + function Box2( min, max ) { + + this.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity ); + this.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity ); + + } + + Object.assign( Box2.prototype, { + + set: function ( min, max ) { + + this.min.copy( min ); + this.max.copy( max ); + + return this; + + }, + + setFromPoints: function ( points ) { + + this.makeEmpty(); + + for ( var i = 0, il = points.length; i < il; i ++ ) { + + this.expandByPoint( points[ i ] ); + + } + + return this; + + }, + + setFromCenterAndSize: function () { + + var v1 = new Vector2(); + + return function setFromCenterAndSize( center, size ) { + + var halfSize = v1.copy( size ).multiplyScalar( 0.5 ); + this.min.copy( center ).sub( halfSize ); + this.max.copy( center ).add( halfSize ); + + return this; + + }; + + }(), + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( box ) { + + this.min.copy( box.min ); + this.max.copy( box.max ); + + return this; + + }, + + makeEmpty: function () { + + this.min.x = this.min.y = + Infinity; + this.max.x = this.max.y = - Infinity; + + return this; + + }, + + isEmpty: function () { + + // this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes + + return ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ); + + }, + + getCenter: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Box2: .getCenter() target is now required' ); + target = new Vector2(); + + } + + return this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 ); + + }, + + getSize: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Box2: .getSize() target is now required' ); + target = new Vector2(); + + } + + return this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min ); + + }, + + expandByPoint: function ( point ) { + + this.min.min( point ); + this.max.max( point ); + + return this; + + }, + + expandByVector: function ( vector ) { + + this.min.sub( vector ); + this.max.add( vector ); + + return this; + + }, + + expandByScalar: function ( scalar ) { + + this.min.addScalar( - scalar ); + this.max.addScalar( scalar ); + + return this; + + }, + + containsPoint: function ( point ) { + + return point.x < this.min.x || point.x > this.max.x || + point.y < this.min.y || point.y > this.max.y ? false : true; + + }, + + containsBox: function ( box ) { + + return this.min.x <= box.min.x && box.max.x <= this.max.x && + this.min.y <= box.min.y && box.max.y <= this.max.y; + + }, + + getParameter: function ( point, target ) { + + // This can potentially have a divide by zero if the box + // has a size dimension of 0. + + if ( target === undefined ) { + + console.warn( 'THREE.Box2: .getParameter() target is now required' ); + target = new Vector2(); + + } + + return target.set( + ( point.x - this.min.x ) / ( this.max.x - this.min.x ), + ( point.y - this.min.y ) / ( this.max.y - this.min.y ) + ); + + }, + + intersectsBox: function ( box ) { + + // using 4 splitting planes to rule out intersections + + return box.max.x < this.min.x || box.min.x > this.max.x || + box.max.y < this.min.y || box.min.y > this.max.y ? false : true; + + }, + + clampPoint: function ( point, target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Box2: .clampPoint() target is now required' ); + target = new Vector2(); + + } + + return target.copy( point ).clamp( this.min, this.max ); + + }, + + distanceToPoint: function () { + + var v1 = new Vector2(); + + return function distanceToPoint( point ) { + + var clampedPoint = v1.copy( point ).clamp( this.min, this.max ); + return clampedPoint.sub( point ).length(); + + }; + + }(), + + intersect: function ( box ) { + + this.min.max( box.min ); + this.max.min( box.max ); + + return this; + + }, + + union: function ( box ) { + + this.min.min( box.min ); + this.max.max( box.max ); + + return this; + + }, + + translate: function ( offset ) { + + this.min.add( offset ); + this.max.add( offset ); + + return this; + + }, + + equals: function ( box ) { + + return box.min.equals( this.min ) && box.max.equals( this.max ); + + } + + } ); + + /** + * @author bhouston / http://clara.io + */ + + function Line3( start, end ) { + + this.start = ( start !== undefined ) ? start : new Vector3(); + this.end = ( end !== undefined ) ? end : new Vector3(); + + } + + Object.assign( Line3.prototype, { + + set: function ( start, end ) { + + this.start.copy( start ); + this.end.copy( end ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( line ) { + + this.start.copy( line.start ); + this.end.copy( line.end ); + + return this; + + }, + + getCenter: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Line3: .getCenter() target is now required' ); + target = new Vector3(); + + } + + return target.addVectors( this.start, this.end ).multiplyScalar( 0.5 ); + + }, + + delta: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Line3: .delta() target is now required' ); + target = new Vector3(); + + } + + return target.subVectors( this.end, this.start ); + + }, + + distanceSq: function () { + + return this.start.distanceToSquared( this.end ); + + }, + + distance: function () { + + return this.start.distanceTo( this.end ); + + }, + + at: function ( t, target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Line3: .at() target is now required' ); + target = new Vector3(); + + } + + return this.delta( target ).multiplyScalar( t ).add( this.start ); + + }, + + closestPointToPointParameter: function () { + + var startP = new Vector3(); + var startEnd = new Vector3(); + + return function closestPointToPointParameter( point, clampToLine ) { + + startP.subVectors( point, this.start ); + startEnd.subVectors( this.end, this.start ); + + var startEnd2 = startEnd.dot( startEnd ); + var startEnd_startP = startEnd.dot( startP ); + + var t = startEnd_startP / startEnd2; + + if ( clampToLine ) { + + t = _Math.clamp( t, 0, 1 ); + + } + + return t; + + }; + + }(), + + closestPointToPoint: function ( point, clampToLine, target ) { + + var t = this.closestPointToPointParameter( point, clampToLine ); + + if ( target === undefined ) { + + console.warn( 'THREE.Line3: .closestPointToPoint() target is now required' ); + target = new Vector3(); + + } + + return this.delta( target ).multiplyScalar( t ).add( this.start ); + + }, + + applyMatrix4: function ( matrix ) { + + this.start.applyMatrix4( matrix ); + this.end.applyMatrix4( matrix ); + + return this; + + }, + + equals: function ( line ) { + + return line.start.equals( this.start ) && line.end.equals( this.end ); + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function ImmediateRenderObject( material ) { + + Object3D.call( this ); + + this.material = material; + this.render = function ( /* renderCallback */ ) {}; + + } + + ImmediateRenderObject.prototype = Object.create( Object3D.prototype ); + ImmediateRenderObject.prototype.constructor = ImmediateRenderObject; + + ImmediateRenderObject.prototype.isImmediateRenderObject = true; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author WestLangley / http://github.com/WestLangley + */ + + function VertexNormalsHelper( object, size, hex, linewidth ) { + + this.object = object; + + this.size = ( size !== undefined ) ? size : 1; + + var color = ( hex !== undefined ) ? hex : 0xff0000; + + var width = ( linewidth !== undefined ) ? linewidth : 1; + + // + + var nNormals = 0; + + var objGeometry = this.object.geometry; + + if ( objGeometry && objGeometry.isGeometry ) { + + nNormals = objGeometry.faces.length * 3; + + } else if ( objGeometry && objGeometry.isBufferGeometry ) { + + nNormals = objGeometry.attributes.normal.count; + + } + + // + + var geometry = new BufferGeometry(); + + var positions = new Float32BufferAttribute( nNormals * 2 * 3, 3 ); + + geometry.addAttribute( 'position', positions ); + + LineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) ); + + // + + this.matrixAutoUpdate = false; + + this.update(); + + } + + VertexNormalsHelper.prototype = Object.create( LineSegments.prototype ); + VertexNormalsHelper.prototype.constructor = VertexNormalsHelper; + + VertexNormalsHelper.prototype.update = ( function () { + + var v1 = new Vector3(); + var v2 = new Vector3(); + var normalMatrix = new Matrix3(); + + return function update() { + + var keys = [ 'a', 'b', 'c' ]; + + this.object.updateMatrixWorld( true ); + + normalMatrix.getNormalMatrix( this.object.matrixWorld ); + + var matrixWorld = this.object.matrixWorld; + + var position = this.geometry.attributes.position; + + // + + var objGeometry = this.object.geometry; + + if ( objGeometry && objGeometry.isGeometry ) { + + var vertices = objGeometry.vertices; + + var faces = objGeometry.faces; + + var idx = 0; + + for ( var i = 0, l = faces.length; i < l; i ++ ) { + + var face = faces[ i ]; + + for ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) { + + var vertex = vertices[ face[ keys[ j ] ] ]; + + var normal = face.vertexNormals[ j ]; + + v1.copy( vertex ).applyMatrix4( matrixWorld ); + + v2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 ); + + position.setXYZ( idx, v1.x, v1.y, v1.z ); + + idx = idx + 1; + + position.setXYZ( idx, v2.x, v2.y, v2.z ); + + idx = idx + 1; + + } + + } + + } else if ( objGeometry && objGeometry.isBufferGeometry ) { + + var objPos = objGeometry.attributes.position; + + var objNorm = objGeometry.attributes.normal; + + var idx = 0; + + // for simplicity, ignore index and drawcalls, and render every normal + + for ( var j = 0, jl = objPos.count; j < jl; j ++ ) { + + v1.set( objPos.getX( j ), objPos.getY( j ), objPos.getZ( j ) ).applyMatrix4( matrixWorld ); + + v2.set( objNorm.getX( j ), objNorm.getY( j ), objNorm.getZ( j ) ); + + v2.applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 ); + + position.setXYZ( idx, v1.x, v1.y, v1.z ); + + idx = idx + 1; + + position.setXYZ( idx, v2.x, v2.y, v2.z ); + + idx = idx + 1; + + } + + } + + position.needsUpdate = true; + + }; + + }() ); + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + * @author WestLangley / http://github.com/WestLangley + */ + + function SpotLightHelper( light, color ) { + + Object3D.call( this ); + + this.light = light; + this.light.updateMatrixWorld(); + + this.matrix = light.matrixWorld; + this.matrixAutoUpdate = false; + + this.color = color; + + var geometry = new BufferGeometry(); + + var positions = [ + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 1, 0, 1, + 0, 0, 0, - 1, 0, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, - 1, 1 + ]; + + for ( var i = 0, j = 1, l = 32; i < l; i ++, j ++ ) { + + var p1 = ( i / l ) * Math.PI * 2; + var p2 = ( j / l ) * Math.PI * 2; + + positions.push( + Math.cos( p1 ), Math.sin( p1 ), 1, + Math.cos( p2 ), Math.sin( p2 ), 1 + ); + + } + + geometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); + + var material = new LineBasicMaterial( { fog: false } ); + + this.cone = new LineSegments( geometry, material ); + this.add( this.cone ); + + this.update(); + + } + + SpotLightHelper.prototype = Object.create( Object3D.prototype ); + SpotLightHelper.prototype.constructor = SpotLightHelper; + + SpotLightHelper.prototype.dispose = function () { + + this.cone.geometry.dispose(); + this.cone.material.dispose(); + + }; + + SpotLightHelper.prototype.update = function () { + + var vector = new Vector3(); + + return function update() { + + this.light.updateMatrixWorld(); + + var coneLength = this.light.distance ? this.light.distance : 1000; + var coneWidth = coneLength * Math.tan( this.light.angle ); + + this.cone.scale.set( coneWidth, coneWidth, coneLength ); + + vector.setFromMatrixPosition( this.light.target.matrixWorld ); + + this.cone.lookAt( vector ); + + if ( this.color !== undefined ) { + + this.cone.material.color.set( this.color ); + + } else { + + this.cone.material.color.copy( this.light.color ); + + } + + }; + + }(); + + /** + * @author Sean Griffin / http://twitter.com/sgrif + * @author Michael Guerrero / http://realitymeltdown.com + * @author mrdoob / http://mrdoob.com/ + * @author ikerr / http://verold.com + * @author Mugen87 / https://github.com/Mugen87 + */ + + function getBoneList( object ) { + + var boneList = []; + + if ( object && object.isBone ) { + + boneList.push( object ); + + } + + for ( var i = 0; i < object.children.length; i ++ ) { + + boneList.push.apply( boneList, getBoneList( object.children[ i ] ) ); + + } + + return boneList; + + } + + function SkeletonHelper( object ) { + + var bones = getBoneList( object ); + + var geometry = new BufferGeometry(); + + var vertices = []; + var colors = []; + + var color1 = new Color( 0, 0, 1 ); + var color2 = new Color( 0, 1, 0 ); + + for ( var i = 0; i < bones.length; i ++ ) { + + var bone = bones[ i ]; + + if ( bone.parent && bone.parent.isBone ) { + + vertices.push( 0, 0, 0 ); + vertices.push( 0, 0, 0 ); + colors.push( color1.r, color1.g, color1.b ); + colors.push( color2.r, color2.g, color2.b ); + + } + + } + + geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + + var material = new LineBasicMaterial( { vertexColors: VertexColors, depthTest: false, depthWrite: false, transparent: true } ); + + LineSegments.call( this, geometry, material ); + + this.root = object; + this.bones = bones; + + this.matrix = object.matrixWorld; + this.matrixAutoUpdate = false; + + } + + SkeletonHelper.prototype = Object.create( LineSegments.prototype ); + SkeletonHelper.prototype.constructor = SkeletonHelper; + + SkeletonHelper.prototype.updateMatrixWorld = function () { + + var vector = new Vector3(); + + var boneMatrix = new Matrix4(); + var matrixWorldInv = new Matrix4(); + + return function updateMatrixWorld( force ) { + + var bones = this.bones; + + var geometry = this.geometry; + var position = geometry.getAttribute( 'position' ); + + matrixWorldInv.getInverse( this.root.matrixWorld ); + + for ( var i = 0, j = 0; i < bones.length; i ++ ) { + + var bone = bones[ i ]; + + if ( bone.parent && bone.parent.isBone ) { + + boneMatrix.multiplyMatrices( matrixWorldInv, bone.matrixWorld ); + vector.setFromMatrixPosition( boneMatrix ); + position.setXYZ( j, vector.x, vector.y, vector.z ); + + boneMatrix.multiplyMatrices( matrixWorldInv, bone.parent.matrixWorld ); + vector.setFromMatrixPosition( boneMatrix ); + position.setXYZ( j + 1, vector.x, vector.y, vector.z ); + + j += 2; + + } + + } + + geometry.getAttribute( 'position' ).needsUpdate = true; + + Object3D.prototype.updateMatrixWorld.call( this, force ); + + }; + + }(); + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + */ + + function PointLightHelper( light, sphereSize, color ) { + + this.light = light; + this.light.updateMatrixWorld(); + + this.color = color; + + var geometry = new SphereBufferGeometry( sphereSize, 4, 2 ); + var material = new MeshBasicMaterial( { wireframe: true, fog: false } ); + + Mesh.call( this, geometry, material ); + + this.matrix = this.light.matrixWorld; + this.matrixAutoUpdate = false; + + this.update(); + + + /* + var distanceGeometry = new THREE.IcosahedronBufferGeometry( 1, 2 ); + var distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } ); + + this.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial ); + this.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial ); + + var d = light.distance; + + if ( d === 0.0 ) { + + this.lightDistance.visible = false; + + } else { + + this.lightDistance.scale.set( d, d, d ); + + } + + this.add( this.lightDistance ); + */ + + } + + PointLightHelper.prototype = Object.create( Mesh.prototype ); + PointLightHelper.prototype.constructor = PointLightHelper; + + PointLightHelper.prototype.dispose = function () { + + this.geometry.dispose(); + this.material.dispose(); + + }; + + PointLightHelper.prototype.update = function () { + + if ( this.color !== undefined ) { + + this.material.color.set( this.color ); + + } else { + + this.material.color.copy( this.light.color ); + + } + + /* + var d = this.light.distance; + + if ( d === 0.0 ) { + + this.lightDistance.visible = false; + + } else { + + this.lightDistance.visible = true; + this.lightDistance.scale.set( d, d, d ); + + } + */ + + }; + + /** + * @author abelnation / http://github.com/abelnation + * @author Mugen87 / http://github.com/Mugen87 + * @author WestLangley / http://github.com/WestLangley + * + * This helper must be added as a child of the light + */ + + function RectAreaLightHelper( light, color ) { + + this.type = 'RectAreaLightHelper'; + + this.light = light; + + this.color = color; // optional hardwired color for the helper + + var positions = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, - 1, 0, 1, 1, 0 ]; + + var geometry = new BufferGeometry(); + geometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); + geometry.computeBoundingSphere(); + + var material = new LineBasicMaterial( { fog: false } ); + + Line.call( this, geometry, material ); + + // + + var positions2 = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, - 1, 0, 1, - 1, 0 ]; + + var geometry2 = new BufferGeometry(); + geometry2.addAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) ); + geometry2.computeBoundingSphere(); + + this.add( new Mesh( geometry2, new MeshBasicMaterial( { side: BackSide, fog: false } ) ) ); + + this.update(); + + } + + RectAreaLightHelper.prototype = Object.create( Line.prototype ); + RectAreaLightHelper.prototype.constructor = RectAreaLightHelper; + + RectAreaLightHelper.prototype.update = function () { + + this.scale.set( 0.5 * this.light.width, 0.5 * this.light.height, 1 ); + + if ( this.color !== undefined ) { + + this.material.color.set( this.color ); + this.children[ 0 ].material.color.set( this.color ); + + } else { + + this.material.color.copy( this.light.color ).multiplyScalar( this.light.intensity ); + + // prevent hue shift + var c = this.material.color; + var max = Math.max( c.r, c.g, c.b ); + if ( max > 1 ) c.multiplyScalar( 1 / max ); + + this.children[ 0 ].material.color.copy( this.material.color ); + + } + + }; + + RectAreaLightHelper.prototype.dispose = function () { + + this.geometry.dispose(); + this.material.dispose(); + this.children[ 0 ].geometry.dispose(); + this.children[ 0 ].material.dispose(); + + }; + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / https://github.com/Mugen87 + */ + + function HemisphereLightHelper( light, size, color ) { + + Object3D.call( this ); + + this.light = light; + this.light.updateMatrixWorld(); + + this.matrix = light.matrixWorld; + this.matrixAutoUpdate = false; + + this.color = color; + + var geometry = new OctahedronBufferGeometry( size ); + geometry.rotateY( Math.PI * 0.5 ); + + this.material = new MeshBasicMaterial( { wireframe: true, fog: false } ); + if ( this.color === undefined ) this.material.vertexColors = VertexColors; + + var position = geometry.getAttribute( 'position' ); + var colors = new Float32Array( position.count * 3 ); + + geometry.addAttribute( 'color', new BufferAttribute( colors, 3 ) ); + + this.add( new Mesh( geometry, this.material ) ); + + this.update(); + + } + + HemisphereLightHelper.prototype = Object.create( Object3D.prototype ); + HemisphereLightHelper.prototype.constructor = HemisphereLightHelper; + + HemisphereLightHelper.prototype.dispose = function () { + + this.children[ 0 ].geometry.dispose(); + this.children[ 0 ].material.dispose(); + + }; + + HemisphereLightHelper.prototype.update = function () { + + var vector = new Vector3(); + + var color1 = new Color(); + var color2 = new Color(); + + return function update() { + + var mesh = this.children[ 0 ]; + + if ( this.color !== undefined ) { + + this.material.color.set( this.color ); + + } else { + + var colors = mesh.geometry.getAttribute( 'color' ); + + color1.copy( this.light.color ); + color2.copy( this.light.groundColor ); + + for ( var i = 0, l = colors.count; i < l; i ++ ) { + + var color = ( i < ( l / 2 ) ) ? color1 : color2; + + colors.setXYZ( i, color.r, color.g, color.b ); + + } + + colors.needsUpdate = true; + + } + + mesh.lookAt( vector.setFromMatrixPosition( this.light.matrixWorld ).negate() ); + + }; + + }(); + + /** + * @author WestLangley / http://github.com/WestLangley + */ + + function LightProbeHelper( lightProbe, size ) { + + this.lightProbe = lightProbe; + + this.size = size; + + var defines = {}; + defines[ 'GAMMA_OUTPUT' ] = ""; + + // material + var material = new ShaderMaterial( { + + defines: defines, + + uniforms: { + + sh: { value: this.lightProbe.sh.coefficients }, // by reference + + intensity: { value: this.lightProbe.intensity } + + }, + + vertexShader: [ + + 'varying vec3 vNormal;', + + 'void main() {', + + ' vNormal = normalize( normalMatrix * normal );', + + ' gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );', + + '}', + + ].join( '\n' ), + + fragmentShader: [ + + '#define RECIPROCAL_PI 0.318309886', + + 'vec3 inverseTransformDirection( in vec3 normal, in mat4 matrix ) {', + + ' // matrix is assumed to be orthogonal', + + ' return normalize( ( vec4( normal, 0.0 ) * matrix ).xyz );', + + '}', + + 'vec3 linearToOutput( in vec3 a ) {', + + ' #ifdef GAMMA_OUTPUT', + + ' return pow( a, vec3( 1.0 / float( GAMMA_FACTOR ) ) );', + + ' #else', + + ' return a;', + + ' #endif', + + '}', + + '// source: https://graphics.stanford.edu/papers/envmap/envmap.pdf', + 'vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {', + + ' // normal is assumed to have unit length', + + ' float x = normal.x, y = normal.y, z = normal.z;', + + ' // band 0', + ' vec3 result = shCoefficients[ 0 ] * 0.886227;', + + ' // band 1', + ' result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;', + ' result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;', + ' result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;', + + ' // band 2', + ' result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;', + ' result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;', + ' result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );', + ' result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;', + ' result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );', + + ' return result;', + + '}', + + 'uniform vec3 sh[ 9 ]; // sh coefficients', + + 'uniform float intensity; // light probe intensity', + + 'varying vec3 vNormal;', + + 'void main() {', + + ' vec3 normal = normalize( vNormal );', + + ' vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );', + + ' vec3 irradiance = shGetIrradianceAt( worldNormal, sh );', + + ' vec3 outgoingLight = RECIPROCAL_PI * irradiance * intensity;', + + ' outgoingLight = linearToOutput( outgoingLight );', + + ' gl_FragColor = vec4( outgoingLight, 1.0 );', + + '}' + + ].join( '\n' ) + + } ); + + var geometry = new SphereBufferGeometry( 1, 32, 16 ); + + Mesh.call( this, geometry, material ); + + this.onBeforeRender(); + + } + + LightProbeHelper.prototype = Object.create( Mesh.prototype ); + LightProbeHelper.prototype.constructor = LightProbeHelper; + + LightProbeHelper.prototype.dispose = function () { + + this.geometry.dispose(); + this.material.dispose(); + + }; + + LightProbeHelper.prototype.onBeforeRender = function () { + + return function update() { + + this.position.copy( this.lightProbe.position ); + + this.scale.set( 1, 1, 1 ).multiplyScalar( this.size ); + + this.material.uniforms.intensity.value = this.lightProbe.intensity; + + }; + + }(); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function GridHelper( size, divisions, color1, color2 ) { + + size = size || 10; + divisions = divisions || 10; + color1 = new Color( color1 !== undefined ? color1 : 0x444444 ); + color2 = new Color( color2 !== undefined ? color2 : 0x888888 ); + + var center = divisions / 2; + var step = size / divisions; + var halfSize = size / 2; + + var vertices = [], colors = []; + + for ( var i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) { + + vertices.push( - halfSize, 0, k, halfSize, 0, k ); + vertices.push( k, 0, - halfSize, k, 0, halfSize ); + + var color = i === center ? color1 : color2; + + color.toArray( colors, j ); j += 3; + color.toArray( colors, j ); j += 3; + color.toArray( colors, j ); j += 3; + color.toArray( colors, j ); j += 3; + + } + + var geometry = new BufferGeometry(); + geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + + var material = new LineBasicMaterial( { vertexColors: VertexColors } ); + + LineSegments.call( this, geometry, material ); + + } + + GridHelper.prototype = Object.assign( Object.create( LineSegments.prototype ), { + + constructor: GridHelper, + + copy: function ( source ) { + + LineSegments.prototype.copy.call( this, source ); + + this.geometry.copy( source.geometry ); + this.material.copy( source.material ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / http://github.com/Mugen87 + * @author Hectate / http://www.github.com/Hectate + */ + + function PolarGridHelper( radius, radials, circles, divisions, color1, color2 ) { + + radius = radius || 10; + radials = radials || 16; + circles = circles || 8; + divisions = divisions || 64; + color1 = new Color( color1 !== undefined ? color1 : 0x444444 ); + color2 = new Color( color2 !== undefined ? color2 : 0x888888 ); + + var vertices = []; + var colors = []; + + var x, z; + var v, i, j, r, color; + + // create the radials + + for ( i = 0; i <= radials; i ++ ) { + + v = ( i / radials ) * ( Math.PI * 2 ); + + x = Math.sin( v ) * radius; + z = Math.cos( v ) * radius; + + vertices.push( 0, 0, 0 ); + vertices.push( x, 0, z ); + + color = ( i & 1 ) ? color1 : color2; + + colors.push( color.r, color.g, color.b ); + colors.push( color.r, color.g, color.b ); + + } + + // create the circles + + for ( i = 0; i <= circles; i ++ ) { + + color = ( i & 1 ) ? color1 : color2; + + r = radius - ( radius / circles * i ); + + for ( j = 0; j < divisions; j ++ ) { + + // first vertex + + v = ( j / divisions ) * ( Math.PI * 2 ); + + x = Math.sin( v ) * r; + z = Math.cos( v ) * r; + + vertices.push( x, 0, z ); + colors.push( color.r, color.g, color.b ); + + // second vertex + + v = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 ); + + x = Math.sin( v ) * r; + z = Math.cos( v ) * r; + + vertices.push( x, 0, z ); + colors.push( color.r, color.g, color.b ); + + } + + } + + var geometry = new BufferGeometry(); + geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + + var material = new LineBasicMaterial( { vertexColors: VertexColors } ); + + LineSegments.call( this, geometry, material ); + + } + + PolarGridHelper.prototype = Object.create( LineSegments.prototype ); + PolarGridHelper.prototype.constructor = PolarGridHelper; + + /** + * @author Mugen87 / http://github.com/Mugen87 + */ + + function PositionalAudioHelper( audio, range, divisionsInnerAngle, divisionsOuterAngle ) { + + this.audio = audio; + this.range = range || 1; + this.divisionsInnerAngle = divisionsInnerAngle || 16; + this.divisionsOuterAngle = divisionsOuterAngle || 2; + + var geometry = new BufferGeometry(); + var divisions = this.divisionsInnerAngle + this.divisionsOuterAngle * 2; + var positions = new Float32Array( ( divisions * 3 + 3 ) * 3 ); + geometry.addAttribute( 'position', new BufferAttribute( positions, 3 ) ); + + var materialInnerAngle = new LineBasicMaterial( { color: 0x00ff00 } ); + var materialOuterAngle = new LineBasicMaterial( { color: 0xffff00 } ); + + Line.call( this, geometry, [ materialOuterAngle, materialInnerAngle ] ); + + this.update(); + + } + + PositionalAudioHelper.prototype = Object.create( Line.prototype ); + PositionalAudioHelper.prototype.constructor = PositionalAudioHelper; + + PositionalAudioHelper.prototype.update = function () { + + var audio = this.audio; + var range = this.range; + var divisionsInnerAngle = this.divisionsInnerAngle; + var divisionsOuterAngle = this.divisionsOuterAngle; + + var coneInnerAngle = _Math.degToRad( audio.panner.coneInnerAngle ); + var coneOuterAngle = _Math.degToRad( audio.panner.coneOuterAngle ); + + var halfConeInnerAngle = coneInnerAngle / 2; + var halfConeOuterAngle = coneOuterAngle / 2; + + var start = 0; + var count = 0; + var i, stride; + + var geometry = this.geometry; + var positionAttribute = geometry.attributes.position; + + geometry.clearGroups(); + + // + + function generateSegment( from, to, divisions, materialIndex ) { + + var step = ( to - from ) / divisions; + + positionAttribute.setXYZ( start, 0, 0, 0 ); + count ++; + + for ( i = from; i < to; i += step ) { + + stride = start + count; + + positionAttribute.setXYZ( stride, Math.sin( i ) * range, 0, Math.cos( i ) * range ); + positionAttribute.setXYZ( stride + 1, Math.sin( Math.min( i + step, to ) ) * range, 0, Math.cos( Math.min( i + step, to ) ) * range ); + positionAttribute.setXYZ( stride + 2, 0, 0, 0 ); + + count += 3; + + } + + geometry.addGroup( start, count, materialIndex ); + + start += count; + count = 0; + + } + + // + + generateSegment( - halfConeOuterAngle, - halfConeInnerAngle, divisionsOuterAngle, 0 ); + generateSegment( - halfConeInnerAngle, halfConeInnerAngle, divisionsInnerAngle, 1 ); + generateSegment( halfConeInnerAngle, halfConeOuterAngle, divisionsOuterAngle, 0 ); + + // + + positionAttribute.needsUpdate = true; + + if ( coneInnerAngle === coneOuterAngle ) this.material[ 0 ].visible = false; + + }; + + PositionalAudioHelper.prototype.dispose = function () { + + this.geometry.dispose(); + this.material[ 0 ].dispose(); + this.material[ 1 ].dispose(); + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author WestLangley / http://github.com/WestLangley + */ + + function FaceNormalsHelper( object, size, hex, linewidth ) { + + // FaceNormalsHelper only supports THREE.Geometry + + this.object = object; + + this.size = ( size !== undefined ) ? size : 1; + + var color = ( hex !== undefined ) ? hex : 0xffff00; + + var width = ( linewidth !== undefined ) ? linewidth : 1; + + // + + var nNormals = 0; + + var objGeometry = this.object.geometry; + + if ( objGeometry && objGeometry.isGeometry ) { + + nNormals = objGeometry.faces.length; + + } else { + + console.warn( 'THREE.FaceNormalsHelper: only THREE.Geometry is supported. Use THREE.VertexNormalsHelper, instead.' ); + + } + + // + + var geometry = new BufferGeometry(); + + var positions = new Float32BufferAttribute( nNormals * 2 * 3, 3 ); + + geometry.addAttribute( 'position', positions ); + + LineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) ); + + // + + this.matrixAutoUpdate = false; + this.update(); + + } + + FaceNormalsHelper.prototype = Object.create( LineSegments.prototype ); + FaceNormalsHelper.prototype.constructor = FaceNormalsHelper; + + FaceNormalsHelper.prototype.update = ( function () { + + var v1 = new Vector3(); + var v2 = new Vector3(); + var normalMatrix = new Matrix3(); + + return function update() { + + this.object.updateMatrixWorld( true ); + + normalMatrix.getNormalMatrix( this.object.matrixWorld ); + + var matrixWorld = this.object.matrixWorld; + + var position = this.geometry.attributes.position; + + // + + var objGeometry = this.object.geometry; + + var vertices = objGeometry.vertices; + + var faces = objGeometry.faces; + + var idx = 0; + + for ( var i = 0, l = faces.length; i < l; i ++ ) { + + var face = faces[ i ]; + + var normal = face.normal; + + v1.copy( vertices[ face.a ] ) + .add( vertices[ face.b ] ) + .add( vertices[ face.c ] ) + .divideScalar( 3 ) + .applyMatrix4( matrixWorld ); + + v2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 ); + + position.setXYZ( idx, v1.x, v1.y, v1.z ); + + idx = idx + 1; + + position.setXYZ( idx, v2.x, v2.y, v2.z ); + + idx = idx + 1; + + } + + position.needsUpdate = true; + + }; + + }() ); + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + * @author WestLangley / http://github.com/WestLangley + */ + + function DirectionalLightHelper( light, size, color ) { + + Object3D.call( this ); + + this.light = light; + this.light.updateMatrixWorld(); + + this.matrix = light.matrixWorld; + this.matrixAutoUpdate = false; + + this.color = color; + + if ( size === undefined ) size = 1; + + var geometry = new BufferGeometry(); + geometry.addAttribute( 'position', new Float32BufferAttribute( [ + - size, size, 0, + size, size, 0, + size, - size, 0, + - size, - size, 0, + - size, size, 0 + ], 3 ) ); + + var material = new LineBasicMaterial( { fog: false } ); + + this.lightPlane = new Line( geometry, material ); + this.add( this.lightPlane ); + + geometry = new BufferGeometry(); + geometry.addAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) ); + + this.targetLine = new Line( geometry, material ); + this.add( this.targetLine ); + + this.update(); + + } + + DirectionalLightHelper.prototype = Object.create( Object3D.prototype ); + DirectionalLightHelper.prototype.constructor = DirectionalLightHelper; + + DirectionalLightHelper.prototype.dispose = function () { + + this.lightPlane.geometry.dispose(); + this.lightPlane.material.dispose(); + this.targetLine.geometry.dispose(); + this.targetLine.material.dispose(); + + }; + + DirectionalLightHelper.prototype.update = function () { + + var v1 = new Vector3(); + var v2 = new Vector3(); + var v3 = new Vector3(); + + return function update() { + + v1.setFromMatrixPosition( this.light.matrixWorld ); + v2.setFromMatrixPosition( this.light.target.matrixWorld ); + v3.subVectors( v2, v1 ); + + this.lightPlane.lookAt( v2 ); + + if ( this.color !== undefined ) { + + this.lightPlane.material.color.set( this.color ); + this.targetLine.material.color.set( this.color ); + + } else { + + this.lightPlane.material.color.copy( this.light.color ); + this.targetLine.material.color.copy( this.light.color ); + + } + + this.targetLine.lookAt( v2 ); + this.targetLine.scale.z = v3.length(); + + }; + + }(); + + /** + * @author alteredq / http://alteredqualia.com/ + * @author Mugen87 / https://github.com/Mugen87 + * + * - shows frustum, line of sight and up of the camera + * - suitable for fast updates + * - based on frustum visualization in lightgl.js shadowmap example + * http://evanw.github.com/lightgl.js/tests/shadowmap.html + */ + + function CameraHelper( camera ) { + + var geometry = new BufferGeometry(); + var material = new LineBasicMaterial( { color: 0xffffff, vertexColors: FaceColors } ); + + var vertices = []; + var colors = []; + + var pointMap = {}; + + // colors + + var colorFrustum = new Color( 0xffaa00 ); + var colorCone = new Color( 0xff0000 ); + var colorUp = new Color( 0x00aaff ); + var colorTarget = new Color( 0xffffff ); + var colorCross = new Color( 0x333333 ); + + // near + + addLine( 'n1', 'n2', colorFrustum ); + addLine( 'n2', 'n4', colorFrustum ); + addLine( 'n4', 'n3', colorFrustum ); + addLine( 'n3', 'n1', colorFrustum ); + + // far + + addLine( 'f1', 'f2', colorFrustum ); + addLine( 'f2', 'f4', colorFrustum ); + addLine( 'f4', 'f3', colorFrustum ); + addLine( 'f3', 'f1', colorFrustum ); + + // sides + + addLine( 'n1', 'f1', colorFrustum ); + addLine( 'n2', 'f2', colorFrustum ); + addLine( 'n3', 'f3', colorFrustum ); + addLine( 'n4', 'f4', colorFrustum ); + + // cone + + addLine( 'p', 'n1', colorCone ); + addLine( 'p', 'n2', colorCone ); + addLine( 'p', 'n3', colorCone ); + addLine( 'p', 'n4', colorCone ); + + // up + + addLine( 'u1', 'u2', colorUp ); + addLine( 'u2', 'u3', colorUp ); + addLine( 'u3', 'u1', colorUp ); + + // target + + addLine( 'c', 't', colorTarget ); + addLine( 'p', 'c', colorCross ); + + // cross + + addLine( 'cn1', 'cn2', colorCross ); + addLine( 'cn3', 'cn4', colorCross ); + + addLine( 'cf1', 'cf2', colorCross ); + addLine( 'cf3', 'cf4', colorCross ); + + function addLine( a, b, color ) { + + addPoint( a, color ); + addPoint( b, color ); + + } + + function addPoint( id, color ) { + + vertices.push( 0, 0, 0 ); + colors.push( color.r, color.g, color.b ); + + if ( pointMap[ id ] === undefined ) { + + pointMap[ id ] = []; + + } + + pointMap[ id ].push( ( vertices.length / 3 ) - 1 ); + + } + + geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + + LineSegments.call( this, geometry, material ); + + this.camera = camera; + if ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix(); + + this.matrix = camera.matrixWorld; + this.matrixAutoUpdate = false; + + this.pointMap = pointMap; + + this.update(); + + } + + CameraHelper.prototype = Object.create( LineSegments.prototype ); + CameraHelper.prototype.constructor = CameraHelper; + + CameraHelper.prototype.update = function () { + + var geometry, pointMap; + + var vector = new Vector3(); + var camera = new Camera(); + + function setPoint( point, x, y, z ) { + + vector.set( x, y, z ).unproject( camera ); + + var points = pointMap[ point ]; + + if ( points !== undefined ) { + + var position = geometry.getAttribute( 'position' ); + + for ( var i = 0, l = points.length; i < l; i ++ ) { + + position.setXYZ( points[ i ], vector.x, vector.y, vector.z ); + + } + + } + + } + + return function update() { + + geometry = this.geometry; + pointMap = this.pointMap; + + var w = 1, h = 1; + + // we need just camera projection matrix inverse + // world matrix must be identity + + camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse ); + + // center / target + + setPoint( 'c', 0, 0, - 1 ); + setPoint( 't', 0, 0, 1 ); + + // near + + setPoint( 'n1', - w, - h, - 1 ); + setPoint( 'n2', w, - h, - 1 ); + setPoint( 'n3', - w, h, - 1 ); + setPoint( 'n4', w, h, - 1 ); + + // far + + setPoint( 'f1', - w, - h, 1 ); + setPoint( 'f2', w, - h, 1 ); + setPoint( 'f3', - w, h, 1 ); + setPoint( 'f4', w, h, 1 ); + + // up + + setPoint( 'u1', w * 0.7, h * 1.1, - 1 ); + setPoint( 'u2', - w * 0.7, h * 1.1, - 1 ); + setPoint( 'u3', 0, h * 2, - 1 ); + + // cross + + setPoint( 'cf1', - w, 0, 1 ); + setPoint( 'cf2', w, 0, 1 ); + setPoint( 'cf3', 0, - h, 1 ); + setPoint( 'cf4', 0, h, 1 ); + + setPoint( 'cn1', - w, 0, - 1 ); + setPoint( 'cn2', w, 0, - 1 ); + setPoint( 'cn3', 0, - h, - 1 ); + setPoint( 'cn4', 0, h, - 1 ); + + geometry.getAttribute( 'position' ).needsUpdate = true; + + }; + + }(); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / http://github.com/Mugen87 + */ + + function BoxHelper( object, color ) { + + this.object = object; + + if ( color === undefined ) color = 0xffff00; + + var indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] ); + var positions = new Float32Array( 8 * 3 ); + + var geometry = new BufferGeometry(); + geometry.setIndex( new BufferAttribute( indices, 1 ) ); + geometry.addAttribute( 'position', new BufferAttribute( positions, 3 ) ); + + LineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) ); + + this.matrixAutoUpdate = false; + + this.update(); + + } + + BoxHelper.prototype = Object.create( LineSegments.prototype ); + BoxHelper.prototype.constructor = BoxHelper; + + BoxHelper.prototype.update = ( function () { + + var box = new Box3(); + + return function update( object ) { + + if ( object !== undefined ) { + + console.warn( 'THREE.BoxHelper: .update() has no longer arguments.' ); + + } + + if ( this.object !== undefined ) { + + box.setFromObject( this.object ); + + } + + if ( box.isEmpty() ) return; + + var min = box.min; + var max = box.max; + + /* + 5____4 + 1/___0/| + | 6__|_7 + 2/___3/ + + 0: max.x, max.y, max.z + 1: min.x, max.y, max.z + 2: min.x, min.y, max.z + 3: max.x, min.y, max.z + 4: max.x, max.y, min.z + 5: min.x, max.y, min.z + 6: min.x, min.y, min.z + 7: max.x, min.y, min.z + */ + + var position = this.geometry.attributes.position; + var array = position.array; + + array[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z; + array[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z; + array[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z; + array[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z; + array[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z; + array[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z; + array[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z; + array[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z; + + position.needsUpdate = true; + + this.geometry.computeBoundingSphere(); + + }; + + } )(); + + BoxHelper.prototype.setFromObject = function ( object ) { + + this.object = object; + this.update(); + + return this; + + }; + + BoxHelper.prototype.copy = function ( source ) { + + LineSegments.prototype.copy.call( this, source ); + + this.object = source.object; + + return this; + + }; + + BoxHelper.prototype.clone = function () { + + return new this.constructor().copy( this ); + + }; + + /** + * @author WestLangley / http://github.com/WestLangley + */ + + function Box3Helper( box, hex ) { + + this.type = 'Box3Helper'; + + this.box = box; + + var color = ( hex !== undefined ) ? hex : 0xffff00; + + var indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] ); + + var positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ]; + + var geometry = new BufferGeometry(); + + geometry.setIndex( new BufferAttribute( indices, 1 ) ); + + geometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); + + LineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) ); + + this.geometry.computeBoundingSphere(); + + } + + Box3Helper.prototype = Object.create( LineSegments.prototype ); + Box3Helper.prototype.constructor = Box3Helper; + + Box3Helper.prototype.updateMatrixWorld = function ( force ) { + + var box = this.box; + + if ( box.isEmpty() ) return; + + box.getCenter( this.position ); + + box.getSize( this.scale ); + + this.scale.multiplyScalar( 0.5 ); + + Object3D.prototype.updateMatrixWorld.call( this, force ); + + }; + + /** + * @author WestLangley / http://github.com/WestLangley + */ + + function PlaneHelper( plane, size, hex ) { + + this.type = 'PlaneHelper'; + + this.plane = plane; + + this.size = ( size === undefined ) ? 1 : size; + + var color = ( hex !== undefined ) ? hex : 0xffff00; + + var positions = [ 1, - 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0 ]; + + var geometry = new BufferGeometry(); + geometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); + geometry.computeBoundingSphere(); + + Line.call( this, geometry, new LineBasicMaterial( { color: color } ) ); + + // + + var positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ]; + + var geometry2 = new BufferGeometry(); + geometry2.addAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) ); + geometry2.computeBoundingSphere(); + + this.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false } ) ) ); + + } + + PlaneHelper.prototype = Object.create( Line.prototype ); + PlaneHelper.prototype.constructor = PlaneHelper; + + PlaneHelper.prototype.updateMatrixWorld = function ( force ) { + + var scale = - this.plane.constant; + + if ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter + + this.scale.set( 0.5 * this.size, 0.5 * this.size, scale ); + + this.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here + + this.lookAt( this.plane.normal ); + + Object3D.prototype.updateMatrixWorld.call( this, force ); + + }; + + /** + * @author WestLangley / http://github.com/WestLangley + * @author zz85 / http://github.com/zz85 + * @author bhouston / http://clara.io + * + * Creates an arrow for visualizing directions + * + * Parameters: + * dir - Vector3 + * origin - Vector3 + * length - Number + * color - color in hex value + * headLength - Number + * headWidth - Number + */ + + var lineGeometry, coneGeometry; + + function ArrowHelper( dir, origin, length, color, headLength, headWidth ) { + + // dir is assumed to be normalized + + Object3D.call( this ); + + if ( dir === undefined ) dir = new Vector3( 0, 0, 1 ); + if ( origin === undefined ) origin = new Vector3( 0, 0, 0 ); + if ( length === undefined ) length = 1; + if ( color === undefined ) color = 0xffff00; + if ( headLength === undefined ) headLength = 0.2 * length; + if ( headWidth === undefined ) headWidth = 0.2 * headLength; + + if ( lineGeometry === undefined ) { + + lineGeometry = new BufferGeometry(); + lineGeometry.addAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) ); + + coneGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 ); + coneGeometry.translate( 0, - 0.5, 0 ); + + } + + this.position.copy( origin ); + + this.line = new Line( lineGeometry, new LineBasicMaterial( { color: color } ) ); + this.line.matrixAutoUpdate = false; + this.add( this.line ); + + this.cone = new Mesh( coneGeometry, new MeshBasicMaterial( { color: color } ) ); + this.cone.matrixAutoUpdate = false; + this.add( this.cone ); + + this.setDirection( dir ); + this.setLength( length, headLength, headWidth ); + + } + + ArrowHelper.prototype = Object.create( Object3D.prototype ); + ArrowHelper.prototype.constructor = ArrowHelper; + + ArrowHelper.prototype.setDirection = ( function () { + + var axis = new Vector3(); + var radians; + + return function setDirection( dir ) { + + // dir is assumed to be normalized + + if ( dir.y > 0.99999 ) { + + this.quaternion.set( 0, 0, 0, 1 ); + + } else if ( dir.y < - 0.99999 ) { + + this.quaternion.set( 1, 0, 0, 0 ); + + } else { + + axis.set( dir.z, 0, - dir.x ).normalize(); + + radians = Math.acos( dir.y ); + + this.quaternion.setFromAxisAngle( axis, radians ); + + } + + }; + + }() ); + + ArrowHelper.prototype.setLength = function ( length, headLength, headWidth ) { + + if ( headLength === undefined ) headLength = 0.2 * length; + if ( headWidth === undefined ) headWidth = 0.2 * headLength; + + this.line.scale.set( 1, Math.max( 0, length - headLength ), 1 ); + this.line.updateMatrix(); + + this.cone.scale.set( headWidth, headLength, headWidth ); + this.cone.position.y = length; + this.cone.updateMatrix(); + + }; + + ArrowHelper.prototype.setColor = function ( color ) { + + this.line.material.color.copy( color ); + this.cone.material.color.copy( color ); + + }; + + ArrowHelper.prototype.copy = function ( source ) { + + Object3D.prototype.copy.call( this, source, false ); + + this.line.copy( source.line ); + this.cone.copy( source.cone ); + + return this; + + }; + + ArrowHelper.prototype.clone = function () { + + return new this.constructor().copy( this ); + + }; + + /** + * @author sroucheray / http://sroucheray.org/ + * @author mrdoob / http://mrdoob.com/ + */ + + function AxesHelper( size ) { + + size = size || 1; + + var vertices = [ + 0, 0, 0, size, 0, 0, + 0, 0, 0, 0, size, 0, + 0, 0, 0, 0, 0, size + ]; + + var colors = [ + 1, 0, 0, 1, 0.6, 0, + 0, 1, 0, 0.6, 1, 0, + 0, 0, 1, 0, 0.6, 1 + ]; + + var geometry = new BufferGeometry(); + geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + + var material = new LineBasicMaterial( { vertexColors: VertexColors } ); + + LineSegments.call( this, geometry, material ); + + } + + AxesHelper.prototype = Object.create( LineSegments.prototype ); + AxesHelper.prototype.constructor = AxesHelper; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function Face4( a, b, c, d, normal, color, materialIndex ) { + + console.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' ); + return new Face3( a, b, c, normal, color, materialIndex ); + + } + + var LineStrip = 0; + + var LinePieces = 1; + + function MeshFaceMaterial( materials ) { + + console.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' ); + return materials; + + } + + function MultiMaterial( materials ) { + + if ( materials === undefined ) materials = []; + + console.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' ); + materials.isMultiMaterial = true; + materials.materials = materials; + materials.clone = function () { + + return materials.slice(); + + }; + return materials; + + } + + function PointCloud( geometry, material ) { + + console.warn( 'THREE.PointCloud has been renamed to THREE.Points.' ); + return new Points( geometry, material ); + + } + + function Particle( material ) { + + console.warn( 'THREE.Particle has been renamed to THREE.Sprite.' ); + return new Sprite( material ); + + } + + function ParticleSystem( geometry, material ) { + + console.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' ); + return new Points( geometry, material ); + + } + + function PointCloudMaterial( parameters ) { + + console.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' ); + return new PointsMaterial( parameters ); + + } + + function ParticleBasicMaterial( parameters ) { + + console.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' ); + return new PointsMaterial( parameters ); + + } + + function ParticleSystemMaterial( parameters ) { + + console.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' ); + return new PointsMaterial( parameters ); + + } + + function Vertex( x, y, z ) { + + console.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' ); + return new Vector3( x, y, z ); + + } + + // + + function DynamicBufferAttribute( array, itemSize ) { + + console.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setDynamic( true ) instead.' ); + return new BufferAttribute( array, itemSize ).setDynamic( true ); + + } + + function Int8Attribute( array, itemSize ) { + + console.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' ); + return new Int8BufferAttribute( array, itemSize ); + + } + + function Uint8Attribute( array, itemSize ) { + + console.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' ); + return new Uint8BufferAttribute( array, itemSize ); + + } + + function Uint8ClampedAttribute( array, itemSize ) { + + console.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' ); + return new Uint8ClampedBufferAttribute( array, itemSize ); + + } + + function Int16Attribute( array, itemSize ) { + + console.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' ); + return new Int16BufferAttribute( array, itemSize ); + + } + + function Uint16Attribute( array, itemSize ) { + + console.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' ); + return new Uint16BufferAttribute( array, itemSize ); + + } + + function Int32Attribute( array, itemSize ) { + + console.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' ); + return new Int32BufferAttribute( array, itemSize ); + + } + + function Uint32Attribute( array, itemSize ) { + + console.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' ); + return new Uint32BufferAttribute( array, itemSize ); + + } + + function Float32Attribute( array, itemSize ) { + + console.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' ); + return new Float32BufferAttribute( array, itemSize ); + + } + + function Float64Attribute( array, itemSize ) { + + console.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' ); + return new Float64BufferAttribute( array, itemSize ); + + } + + // + + Curve.create = function ( construct, getPoint ) { + + console.log( 'THREE.Curve.create() has been deprecated' ); + + construct.prototype = Object.create( Curve.prototype ); + construct.prototype.constructor = construct; + construct.prototype.getPoint = getPoint; + + return construct; + + }; + + // + + Object.assign( CurvePath.prototype, { + + createPointsGeometry: function ( divisions ) { + + console.warn( 'THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' ); + + // generate geometry from path points (for Line or Points objects) + + var pts = this.getPoints( divisions ); + return this.createGeometry( pts ); + + }, + + createSpacedPointsGeometry: function ( divisions ) { + + console.warn( 'THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' ); + + // generate geometry from equidistant sampling along the path + + var pts = this.getSpacedPoints( divisions ); + return this.createGeometry( pts ); + + }, + + createGeometry: function ( points ) { + + console.warn( 'THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' ); + + var geometry = new Geometry(); + + for ( var i = 0, l = points.length; i < l; i ++ ) { + + var point = points[ i ]; + geometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) ); + + } + + return geometry; + + } + + } ); + + // + + Object.assign( Path.prototype, { + + fromPoints: function ( points ) { + + console.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' ); + this.setFromPoints( points ); + + } + + } ); + + // + + function ClosedSplineCurve3( points ) { + + console.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' ); + + CatmullRomCurve3.call( this, points ); + this.type = 'catmullrom'; + this.closed = true; + + } + + ClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype ); + + // + + function SplineCurve3( points ) { + + console.warn( 'THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' ); + + CatmullRomCurve3.call( this, points ); + this.type = 'catmullrom'; + + } + + SplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype ); + + // + + function Spline( points ) { + + console.warn( 'THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.' ); + + CatmullRomCurve3.call( this, points ); + this.type = 'catmullrom'; + + } + + Spline.prototype = Object.create( CatmullRomCurve3.prototype ); + + Object.assign( Spline.prototype, { + + initFromArray: function ( /* a */ ) { + + console.error( 'THREE.Spline: .initFromArray() has been removed.' ); + + }, + getControlPointsArray: function ( /* optionalTarget */ ) { + + console.error( 'THREE.Spline: .getControlPointsArray() has been removed.' ); + + }, + reparametrizeByArcLength: function ( /* samplingCoef */ ) { + + console.error( 'THREE.Spline: .reparametrizeByArcLength() has been removed.' ); + + } + + } ); + + // + + function AxisHelper( size ) { + + console.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' ); + return new AxesHelper( size ); + + } + + function BoundingBoxHelper( object, color ) { + + console.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' ); + return new BoxHelper( object, color ); + + } + + function EdgesHelper( object, hex ) { + + console.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' ); + return new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) ); + + } + + GridHelper.prototype.setColors = function () { + + console.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' ); + + }; + + SkeletonHelper.prototype.update = function () { + + console.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' ); + + }; + + function WireframeHelper( object, hex ) { + + console.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' ); + return new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) ); + + } + + // + + Object.assign( Loader.prototype, { + + extractUrlBase: function ( url ) { + + console.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' ); + return LoaderUtils.extractUrlBase( url ); + + } + + } ); + + function XHRLoader( manager ) { + + console.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' ); + return new FileLoader( manager ); + + } + + function BinaryTextureLoader( manager ) { + + console.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' ); + return new DataTextureLoader( manager ); + + } + + Object.assign( ObjectLoader.prototype, { + + setTexturePath: function ( value ) { + + console.warn( 'THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().' ); + return this.setResourcePath( value ); + + } + + } ); + + // + + Object.assign( Box2.prototype, { + + center: function ( optionalTarget ) { + + console.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' ); + return this.getCenter( optionalTarget ); + + }, + empty: function () { + + console.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' ); + return this.isEmpty(); + + }, + isIntersectionBox: function ( box ) { + + console.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' ); + return this.intersectsBox( box ); + + }, + size: function ( optionalTarget ) { + + console.warn( 'THREE.Box2: .size() has been renamed to .getSize().' ); + return this.getSize( optionalTarget ); + + } + } ); + + Object.assign( Box3.prototype, { + + center: function ( optionalTarget ) { + + console.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' ); + return this.getCenter( optionalTarget ); + + }, + empty: function () { + + console.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' ); + return this.isEmpty(); + + }, + isIntersectionBox: function ( box ) { + + console.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' ); + return this.intersectsBox( box ); + + }, + isIntersectionSphere: function ( sphere ) { + + console.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' ); + return this.intersectsSphere( sphere ); + + }, + size: function ( optionalTarget ) { + + console.warn( 'THREE.Box3: .size() has been renamed to .getSize().' ); + return this.getSize( optionalTarget ); + + } + } ); + + Line3.prototype.center = function ( optionalTarget ) { + + console.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' ); + return this.getCenter( optionalTarget ); + + }; + + Object.assign( _Math, { + + random16: function () { + + console.warn( 'THREE.Math: .random16() has been deprecated. Use Math.random() instead.' ); + return Math.random(); + + }, + + nearestPowerOfTwo: function ( value ) { + + console.warn( 'THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().' ); + return _Math.floorPowerOfTwo( value ); + + }, + + nextPowerOfTwo: function ( value ) { + + console.warn( 'THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().' ); + return _Math.ceilPowerOfTwo( value ); + + } + + } ); + + Object.assign( Matrix3.prototype, { + + flattenToArrayOffset: function ( array, offset ) { + + console.warn( "THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead." ); + return this.toArray( array, offset ); + + }, + multiplyVector3: function ( vector ) { + + console.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' ); + return vector.applyMatrix3( this ); + + }, + multiplyVector3Array: function ( /* a */ ) { + + console.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' ); + + }, + applyToBuffer: function ( buffer /*, offset, length */ ) { + + console.warn( 'THREE.Matrix3: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.' ); + return this.applyToBufferAttribute( buffer ); + + }, + applyToVector3Array: function ( /* array, offset, length */ ) { + + console.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' ); + + } + + } ); + + Object.assign( Matrix4.prototype, { + + extractPosition: function ( m ) { + + console.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' ); + return this.copyPosition( m ); + + }, + flattenToArrayOffset: function ( array, offset ) { + + console.warn( "THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead." ); + return this.toArray( array, offset ); + + }, + getPosition: function () { + + var v1; + + return function getPosition() { + + if ( v1 === undefined ) v1 = new Vector3(); + console.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' ); + return v1.setFromMatrixColumn( this, 3 ); + + }; + + }(), + setRotationFromQuaternion: function ( q ) { + + console.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' ); + return this.makeRotationFromQuaternion( q ); + + }, + multiplyToArray: function () { + + console.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' ); + + }, + multiplyVector3: function ( vector ) { + + console.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' ); + return vector.applyMatrix4( this ); + + }, + multiplyVector4: function ( vector ) { + + console.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' ); + return vector.applyMatrix4( this ); + + }, + multiplyVector3Array: function ( /* a */ ) { + + console.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' ); + + }, + rotateAxis: function ( v ) { + + console.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' ); + v.transformDirection( this ); + + }, + crossVector: function ( vector ) { + + console.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' ); + return vector.applyMatrix4( this ); + + }, + translate: function () { + + console.error( 'THREE.Matrix4: .translate() has been removed.' ); + + }, + rotateX: function () { + + console.error( 'THREE.Matrix4: .rotateX() has been removed.' ); + + }, + rotateY: function () { + + console.error( 'THREE.Matrix4: .rotateY() has been removed.' ); + + }, + rotateZ: function () { + + console.error( 'THREE.Matrix4: .rotateZ() has been removed.' ); + + }, + rotateByAxis: function () { + + console.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' ); + + }, + applyToBuffer: function ( buffer /*, offset, length */ ) { + + console.warn( 'THREE.Matrix4: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.' ); + return this.applyToBufferAttribute( buffer ); + + }, + applyToVector3Array: function ( /* array, offset, length */ ) { + + console.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' ); + + }, + makeFrustum: function ( left, right, bottom, top, near, far ) { + + console.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' ); + return this.makePerspective( left, right, top, bottom, near, far ); + + } + + } ); + + Plane.prototype.isIntersectionLine = function ( line ) { + + console.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' ); + return this.intersectsLine( line ); + + }; + + Quaternion.prototype.multiplyVector3 = function ( vector ) { + + console.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' ); + return vector.applyQuaternion( this ); + + }; + + Object.assign( Ray.prototype, { + + isIntersectionBox: function ( box ) { + + console.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' ); + return this.intersectsBox( box ); + + }, + isIntersectionPlane: function ( plane ) { + + console.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' ); + return this.intersectsPlane( plane ); + + }, + isIntersectionSphere: function ( sphere ) { + + console.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' ); + return this.intersectsSphere( sphere ); + + } + + } ); + + Object.assign( Triangle.prototype, { + + area: function () { + + console.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' ); + return this.getArea(); + + }, + barycoordFromPoint: function ( point, target ) { + + console.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' ); + return this.getBarycoord( point, target ); + + }, + midpoint: function ( target ) { + + console.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' ); + return this.getMidpoint( target ); + + }, + normal: function ( target ) { + + console.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' ); + return this.getNormal( target ); + + }, + plane: function ( target ) { + + console.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' ); + return this.getPlane( target ); + + } + + } ); + + Object.assign( Triangle, { + + barycoordFromPoint: function ( point, a, b, c, target ) { + + console.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' ); + return Triangle.getBarycoord( point, a, b, c, target ); + + }, + normal: function ( a, b, c, target ) { + + console.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' ); + return Triangle.getNormal( a, b, c, target ); + + } + + } ); + + Object.assign( Shape.prototype, { + + extractAllPoints: function ( divisions ) { + + console.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' ); + return this.extractPoints( divisions ); + + }, + extrude: function ( options ) { + + console.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' ); + return new ExtrudeGeometry( this, options ); + + }, + makeGeometry: function ( options ) { + + console.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' ); + return new ShapeGeometry( this, options ); + + } + + } ); + + Object.assign( Vector2.prototype, { + + fromAttribute: function ( attribute, index, offset ) { + + console.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' ); + return this.fromBufferAttribute( attribute, index, offset ); + + }, + distanceToManhattan: function ( v ) { + + console.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' ); + return this.manhattanDistanceTo( v ); + + }, + lengthManhattan: function () { + + console.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' ); + return this.manhattanLength(); + + } + + } ); + + Object.assign( Vector3.prototype, { + + setEulerFromRotationMatrix: function () { + + console.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' ); + + }, + setEulerFromQuaternion: function () { + + console.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' ); + + }, + getPositionFromMatrix: function ( m ) { + + console.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' ); + return this.setFromMatrixPosition( m ); + + }, + getScaleFromMatrix: function ( m ) { + + console.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' ); + return this.setFromMatrixScale( m ); + + }, + getColumnFromMatrix: function ( index, matrix ) { + + console.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' ); + return this.setFromMatrixColumn( matrix, index ); + + }, + applyProjection: function ( m ) { + + console.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' ); + return this.applyMatrix4( m ); + + }, + fromAttribute: function ( attribute, index, offset ) { + + console.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' ); + return this.fromBufferAttribute( attribute, index, offset ); + + }, + distanceToManhattan: function ( v ) { + + console.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' ); + return this.manhattanDistanceTo( v ); + + }, + lengthManhattan: function () { + + console.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' ); + return this.manhattanLength(); + + } + + } ); + + Object.assign( Vector4.prototype, { + + fromAttribute: function ( attribute, index, offset ) { + + console.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' ); + return this.fromBufferAttribute( attribute, index, offset ); + + }, + lengthManhattan: function () { + + console.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' ); + return this.manhattanLength(); + + } + + } ); + + // + + Object.assign( Geometry.prototype, { + + computeTangents: function () { + + console.error( 'THREE.Geometry: .computeTangents() has been removed.' ); + + }, + computeLineDistances: function () { + + console.error( 'THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.' ); + + } + + } ); + + Object.assign( Object3D.prototype, { + + getChildByName: function ( name ) { + + console.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' ); + return this.getObjectByName( name ); + + }, + renderDepth: function () { + + console.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' ); + + }, + translate: function ( distance, axis ) { + + console.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' ); + return this.translateOnAxis( axis, distance ); + + }, + getWorldRotation: function () { + + console.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' ); + + } + + } ); + + Object.defineProperties( Object3D.prototype, { + + eulerOrder: { + get: function () { + + console.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' ); + return this.rotation.order; + + }, + set: function ( value ) { + + console.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' ); + this.rotation.order = value; + + } + }, + useQuaternion: { + get: function () { + + console.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' ); + + }, + set: function () { + + console.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' ); + + } + } + + } ); + + Object.defineProperties( LOD.prototype, { + + objects: { + get: function () { + + console.warn( 'THREE.LOD: .objects has been renamed to .levels.' ); + return this.levels; + + } + } + + } ); + + Object.defineProperty( Skeleton.prototype, 'useVertexTexture', { + + get: function () { + + console.warn( 'THREE.Skeleton: useVertexTexture has been removed.' ); + + }, + set: function () { + + console.warn( 'THREE.Skeleton: useVertexTexture has been removed.' ); + + } + + } ); + + SkinnedMesh.prototype.initBones = function () { + + console.error( 'THREE.SkinnedMesh: initBones() has been removed.' ); + + }; + + Object.defineProperty( Curve.prototype, '__arcLengthDivisions', { + + get: function () { + + console.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' ); + return this.arcLengthDivisions; + + }, + set: function ( value ) { + + console.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' ); + this.arcLengthDivisions = value; + + } + + } ); + + // + + PerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) { + + console.warn( "THREE.PerspectiveCamera.setLens is deprecated. " + + "Use .setFocalLength and .filmGauge for a photographic setup." ); + + if ( filmGauge !== undefined ) this.filmGauge = filmGauge; + this.setFocalLength( focalLength ); + + }; + + // + + Object.defineProperties( Light.prototype, { + onlyShadow: { + set: function () { + + console.warn( 'THREE.Light: .onlyShadow has been removed.' ); + + } + }, + shadowCameraFov: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' ); + this.shadow.camera.fov = value; + + } + }, + shadowCameraLeft: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' ); + this.shadow.camera.left = value; + + } + }, + shadowCameraRight: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' ); + this.shadow.camera.right = value; + + } + }, + shadowCameraTop: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' ); + this.shadow.camera.top = value; + + } + }, + shadowCameraBottom: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' ); + this.shadow.camera.bottom = value; + + } + }, + shadowCameraNear: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' ); + this.shadow.camera.near = value; + + } + }, + shadowCameraFar: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' ); + this.shadow.camera.far = value; + + } + }, + shadowCameraVisible: { + set: function () { + + console.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' ); + + } + }, + shadowBias: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' ); + this.shadow.bias = value; + + } + }, + shadowDarkness: { + set: function () { + + console.warn( 'THREE.Light: .shadowDarkness has been removed.' ); + + } + }, + shadowMapWidth: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' ); + this.shadow.mapSize.width = value; + + } + }, + shadowMapHeight: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' ); + this.shadow.mapSize.height = value; + + } + } + } ); + + // + + Object.defineProperties( BufferAttribute.prototype, { + + length: { + get: function () { + + console.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' ); + return this.array.length; + + } + }, + copyIndicesArray: function ( /* indices */ ) { + + console.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' ); + + } + + } ); + + Object.assign( BufferGeometry.prototype, { + + addIndex: function ( index ) { + + console.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' ); + this.setIndex( index ); + + }, + addDrawCall: function ( start, count, indexOffset ) { + + if ( indexOffset !== undefined ) { + + console.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' ); + + } + console.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' ); + this.addGroup( start, count ); + + }, + clearDrawCalls: function () { + + console.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' ); + this.clearGroups(); + + }, + computeTangents: function () { + + console.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' ); + + }, + computeOffsets: function () { + + console.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' ); + + } + + } ); + + Object.defineProperties( BufferGeometry.prototype, { + + drawcalls: { + get: function () { + + console.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' ); + return this.groups; + + } + }, + offsets: { + get: function () { + + console.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' ); + return this.groups; + + } + } + + } ); + + // + + Object.assign( ExtrudeBufferGeometry.prototype, { + + getArrays: function () { + + console.error( 'THREE.ExtrudeBufferGeometry: .getArrays() has been removed.' ); + + }, + + addShapeList: function () { + + console.error( 'THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.' ); + + }, + + addShape: function () { + + console.error( 'THREE.ExtrudeBufferGeometry: .addShape() has been removed.' ); + + } + + } ); + + // + + Object.defineProperties( Uniform.prototype, { + + dynamic: { + set: function () { + + console.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' ); + + } + }, + onUpdate: { + value: function () { + + console.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' ); + return this; + + } + } + + } ); + + // + + Object.defineProperties( Material.prototype, { + + wrapAround: { + get: function () { + + console.warn( 'THREE.Material: .wrapAround has been removed.' ); + + }, + set: function () { + + console.warn( 'THREE.Material: .wrapAround has been removed.' ); + + } + }, + + overdraw: { + get: function () { + + console.warn( 'THREE.Material: .overdraw has been removed.' ); + + }, + set: function () { + + console.warn( 'THREE.Material: .overdraw has been removed.' ); + + } + }, + + wrapRGB: { + get: function () { + + console.warn( 'THREE.Material: .wrapRGB has been removed.' ); + return new Color(); + + } + }, + + shading: { + get: function () { + + console.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' ); + + }, + set: function ( value ) { + + console.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' ); + this.flatShading = ( value === FlatShading ); + + } + } + + } ); + + Object.defineProperties( MeshPhongMaterial.prototype, { + + metal: { + get: function () { + + console.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' ); + return false; + + }, + set: function () { + + console.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' ); + + } + } + + } ); + + Object.defineProperties( ShaderMaterial.prototype, { + + derivatives: { + get: function () { + + console.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' ); + return this.extensions.derivatives; + + }, + set: function ( value ) { + + console.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' ); + this.extensions.derivatives = value; + + } + } + + } ); + + // + + Object.assign( WebGLRenderer.prototype, { + + clearTarget: function ( renderTarget, color, depth, stencil ) { + + console.warn( 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.' ); + this.setRenderTarget( renderTarget ); + this.clear( color, depth, stencil ); + + }, + animate: function ( callback ) { + + console.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' ); + this.setAnimationLoop( callback ); + + }, + getCurrentRenderTarget: function () { + + console.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' ); + return this.getRenderTarget(); + + }, + getMaxAnisotropy: function () { + + console.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' ); + return this.capabilities.getMaxAnisotropy(); + + }, + getPrecision: function () { + + console.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' ); + return this.capabilities.precision; + + }, + resetGLState: function () { + + console.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' ); + return this.state.reset(); + + }, + supportsFloatTextures: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \'OES_texture_float\' ).' ); + return this.extensions.get( 'OES_texture_float' ); + + }, + supportsHalfFloatTextures: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \'OES_texture_half_float\' ).' ); + return this.extensions.get( 'OES_texture_half_float' ); + + }, + supportsStandardDerivatives: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \'OES_standard_derivatives\' ).' ); + return this.extensions.get( 'OES_standard_derivatives' ); + + }, + supportsCompressedTextureS3TC: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \'WEBGL_compressed_texture_s3tc\' ).' ); + return this.extensions.get( 'WEBGL_compressed_texture_s3tc' ); + + }, + supportsCompressedTexturePVRTC: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \'WEBGL_compressed_texture_pvrtc\' ).' ); + return this.extensions.get( 'WEBGL_compressed_texture_pvrtc' ); + + }, + supportsBlendMinMax: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \'EXT_blend_minmax\' ).' ); + return this.extensions.get( 'EXT_blend_minmax' ); + + }, + supportsVertexTextures: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' ); + return this.capabilities.vertexTextures; + + }, + supportsInstancedArrays: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \'ANGLE_instanced_arrays\' ).' ); + return this.extensions.get( 'ANGLE_instanced_arrays' ); + + }, + enableScissorTest: function ( boolean ) { + + console.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' ); + this.setScissorTest( boolean ); + + }, + initMaterial: function () { + + console.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' ); + + }, + addPrePlugin: function () { + + console.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' ); + + }, + addPostPlugin: function () { + + console.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' ); + + }, + updateShadowMap: function () { + + console.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' ); + + }, + setFaceCulling: function () { + + console.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' ); + + }, + allocTextureUnit: function () { + + console.warn( 'THREE.WebGLRenderer: .allocTextureUnit() has been removed.' ); + + }, + setTexture: function () { + + console.warn( 'THREE.WebGLRenderer: .setTexture() has been removed.' ); + + }, + setTexture2D: function () { + + console.warn( 'THREE.WebGLRenderer: .setTexture2D() has been removed.' ); + + }, + setTextureCube: function () { + + console.warn( 'THREE.WebGLRenderer: .setTextureCube() has been removed.' ); + + } + + } ); + + Object.defineProperties( WebGLRenderer.prototype, { + + shadowMapEnabled: { + get: function () { + + return this.shadowMap.enabled; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' ); + this.shadowMap.enabled = value; + + } + }, + shadowMapType: { + get: function () { + + return this.shadowMap.type; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' ); + this.shadowMap.type = value; + + } + }, + shadowMapCullFace: { + get: function () { + + console.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' ); + return undefined; + + }, + set: function ( /* value */ ) { + + console.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' ); + + } + } + } ); + + Object.defineProperties( WebGLShadowMap.prototype, { + + cullFace: { + get: function () { + + console.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' ); + return undefined; + + }, + set: function ( /* cullFace */ ) { + + console.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' ); + + } + }, + renderReverseSided: { + get: function () { + + console.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' ); + return undefined; + + }, + set: function () { + + console.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' ); + + } + }, + renderSingleSided: { + get: function () { + + console.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' ); + return undefined; + + }, + set: function () { + + console.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' ); + + } + } + + } ); + + // + + Object.defineProperties( WebGLRenderTargetCube.prototype, { + + activeCubeFace: { + set: function ( /* value */ ) { + + console.warn( 'THREE.WebGLRenderTargetCube: .activeCubeFace has been removed. It is now the second parameter of WebGLRenderer.setRenderTarget().' ); + + } + }, + activeMipMapLevel: { + set: function ( /* value */ ) { + + console.warn( 'THREE.WebGLRenderTargetCube: .activeMipMapLevel has been removed. It is now the third parameter of WebGLRenderer.setRenderTarget().' ); + + } + } + + } ); + + // + + Object.defineProperties( WebGLRenderTarget.prototype, { + + wrapS: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' ); + return this.texture.wrapS; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' ); + this.texture.wrapS = value; + + } + }, + wrapT: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' ); + return this.texture.wrapT; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' ); + this.texture.wrapT = value; + + } + }, + magFilter: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' ); + return this.texture.magFilter; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' ); + this.texture.magFilter = value; + + } + }, + minFilter: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' ); + return this.texture.minFilter; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' ); + this.texture.minFilter = value; + + } + }, + anisotropy: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' ); + return this.texture.anisotropy; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' ); + this.texture.anisotropy = value; + + } + }, + offset: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' ); + return this.texture.offset; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' ); + this.texture.offset = value; + + } + }, + repeat: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' ); + return this.texture.repeat; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' ); + this.texture.repeat = value; + + } + }, + format: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' ); + return this.texture.format; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' ); + this.texture.format = value; + + } + }, + type: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' ); + return this.texture.type; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' ); + this.texture.type = value; + + } + }, + generateMipmaps: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' ); + return this.texture.generateMipmaps; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' ); + this.texture.generateMipmaps = value; + + } + } + + } ); + + // + + Object.defineProperties( WebVRManager.prototype, { + + standing: { + set: function ( /* value */ ) { + + console.warn( 'THREE.WebVRManager: .standing has been removed.' ); + + } + }, + userHeight: { + set: function ( /* value */ ) { + + console.warn( 'THREE.WebVRManager: .userHeight has been removed.' ); + + } + } + + } ); + + // + + Audio.prototype.load = function ( file ) { + + console.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' ); + var scope = this; + var audioLoader = new AudioLoader(); + audioLoader.load( file, function ( buffer ) { + + scope.setBuffer( buffer ); + + } ); + return this; + + }; + + AudioAnalyser.prototype.getData = function () { + + console.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' ); + return this.getFrequencyData(); + + }; + + // + + CubeCamera.prototype.updateCubeMap = function ( renderer, scene ) { + + console.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' ); + return this.update( renderer, scene ); + + }; + + // + + var GeometryUtils = { + + merge: function ( geometry1, geometry2, materialIndexOffset ) { + + console.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' ); + var matrix; + + if ( geometry2.isMesh ) { + + geometry2.matrixAutoUpdate && geometry2.updateMatrix(); + + matrix = geometry2.matrix; + geometry2 = geometry2.geometry; + + } + + geometry1.merge( geometry2, matrix, materialIndexOffset ); + + }, + + center: function ( geometry ) { + + console.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' ); + return geometry.center(); + + } + + }; + + ImageUtils.crossOrigin = undefined; + + ImageUtils.loadTexture = function ( url, mapping, onLoad, onError ) { + + console.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' ); + + var loader = new TextureLoader(); + loader.setCrossOrigin( this.crossOrigin ); + + var texture = loader.load( url, onLoad, undefined, onError ); + + if ( mapping ) texture.mapping = mapping; + + return texture; + + }; + + ImageUtils.loadTextureCube = function ( urls, mapping, onLoad, onError ) { + + console.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' ); + + var loader = new CubeTextureLoader(); + loader.setCrossOrigin( this.crossOrigin ); + + var texture = loader.load( urls, onLoad, undefined, onError ); + + if ( mapping ) texture.mapping = mapping; + + return texture; + + }; + + ImageUtils.loadCompressedTexture = function () { + + console.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' ); + + }; + + ImageUtils.loadCompressedTextureCube = function () { + + console.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' ); + + }; + + // + + function CanvasRenderer() { + + console.error( 'THREE.CanvasRenderer has been removed' ); + + } + + // + + function JSONLoader() { + + console.error( 'THREE.JSONLoader has been removed.' ); + + } + + // + + var SceneUtils = { + + createMultiMaterialObject: function ( /* geometry, materials */ ) { + + console.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' ); + + }, + + detach: function ( /* child, parent, scene */ ) { + + console.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' ); + + }, + + attach: function ( /* child, scene, parent */ ) { + + console.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' ); + + } + + }; + + // + + function LensFlare() { + + console.error( 'THREE.LensFlare has been moved to /examples/js/objects/Lensflare.js' ); + + } + + exports.ACESFilmicToneMapping = ACESFilmicToneMapping; + exports.AddEquation = AddEquation; + exports.AddOperation = AddOperation; + exports.AdditiveBlending = AdditiveBlending; + exports.AlphaFormat = AlphaFormat; + exports.AlwaysDepth = AlwaysDepth; + exports.AmbientLight = AmbientLight; + exports.AmbientLightProbe = AmbientLightProbe; + exports.AnimationClip = AnimationClip; + exports.AnimationLoader = AnimationLoader; + exports.AnimationMixer = AnimationMixer; + exports.AnimationObjectGroup = AnimationObjectGroup; + exports.AnimationUtils = AnimationUtils; + exports.ArcCurve = ArcCurve; + exports.ArrayCamera = ArrayCamera; + exports.ArrowHelper = ArrowHelper; + exports.Audio = Audio; + exports.AudioAnalyser = AudioAnalyser; + exports.AudioContext = AudioContext; + exports.AudioListener = AudioListener; + exports.AudioLoader = AudioLoader; + exports.AxesHelper = AxesHelper; + exports.AxisHelper = AxisHelper; + exports.BackSide = BackSide; + exports.BasicDepthPacking = BasicDepthPacking; + exports.BasicShadowMap = BasicShadowMap; + exports.BinaryTextureLoader = BinaryTextureLoader; + exports.Bone = Bone; + exports.BooleanKeyframeTrack = BooleanKeyframeTrack; + exports.BoundingBoxHelper = BoundingBoxHelper; + exports.Box2 = Box2; + exports.Box3 = Box3; + exports.Box3Helper = Box3Helper; + exports.BoxBufferGeometry = BoxBufferGeometry; + exports.BoxGeometry = BoxGeometry; + exports.BoxHelper = BoxHelper; + exports.BufferAttribute = BufferAttribute; + exports.BufferGeometry = BufferGeometry; + exports.BufferGeometryLoader = BufferGeometryLoader; + exports.ByteType = ByteType; + exports.Cache = Cache; + exports.Camera = Camera; + exports.CameraHelper = CameraHelper; + exports.CanvasRenderer = CanvasRenderer; + exports.CanvasTexture = CanvasTexture; + exports.CatmullRomCurve3 = CatmullRomCurve3; + exports.CineonToneMapping = CineonToneMapping; + exports.CircleBufferGeometry = CircleBufferGeometry; + exports.CircleGeometry = CircleGeometry; + exports.ClampToEdgeWrapping = ClampToEdgeWrapping; + exports.Clock = Clock; + exports.ClosedSplineCurve3 = ClosedSplineCurve3; + exports.Color = Color; + exports.ColorKeyframeTrack = ColorKeyframeTrack; + exports.CompressedTexture = CompressedTexture; + exports.CompressedTextureLoader = CompressedTextureLoader; + exports.ConeBufferGeometry = ConeBufferGeometry; + exports.ConeGeometry = ConeGeometry; + exports.CubeCamera = CubeCamera; + exports.CubeGeometry = BoxGeometry; + exports.CubeReflectionMapping = CubeReflectionMapping; + exports.CubeRefractionMapping = CubeRefractionMapping; + exports.CubeTexture = CubeTexture; + exports.CubeTextureLoader = CubeTextureLoader; + exports.CubeUVReflectionMapping = CubeUVReflectionMapping; + exports.CubeUVRefractionMapping = CubeUVRefractionMapping; + exports.CubicBezierCurve = CubicBezierCurve; + exports.CubicBezierCurve3 = CubicBezierCurve3; + exports.CubicInterpolant = CubicInterpolant; + exports.CullFaceBack = CullFaceBack; + exports.CullFaceFront = CullFaceFront; + exports.CullFaceFrontBack = CullFaceFrontBack; + exports.CullFaceNone = CullFaceNone; + exports.Curve = Curve; + exports.CurvePath = CurvePath; + exports.CustomBlending = CustomBlending; + exports.CylinderBufferGeometry = CylinderBufferGeometry; + exports.CylinderGeometry = CylinderGeometry; + exports.Cylindrical = Cylindrical; + exports.DataTexture = DataTexture; + exports.DataTexture2DArray = DataTexture2DArray; + exports.DataTexture3D = DataTexture3D; + exports.DataTextureLoader = DataTextureLoader; + exports.DefaultLoadingManager = DefaultLoadingManager; + exports.DepthFormat = DepthFormat; + exports.DepthStencilFormat = DepthStencilFormat; + exports.DepthTexture = DepthTexture; + exports.DirectionalLight = DirectionalLight; + exports.DirectionalLightHelper = DirectionalLightHelper; + exports.DirectionalLightShadow = DirectionalLightShadow; + exports.DiscreteInterpolant = DiscreteInterpolant; + exports.DodecahedronBufferGeometry = DodecahedronBufferGeometry; + exports.DodecahedronGeometry = DodecahedronGeometry; + exports.DoubleSide = DoubleSide; + exports.DstAlphaFactor = DstAlphaFactor; + exports.DstColorFactor = DstColorFactor; + exports.DynamicBufferAttribute = DynamicBufferAttribute; + exports.EdgesGeometry = EdgesGeometry; + exports.EdgesHelper = EdgesHelper; + exports.EllipseCurve = EllipseCurve; + exports.EqualDepth = EqualDepth; + exports.EquirectangularReflectionMapping = EquirectangularReflectionMapping; + exports.EquirectangularRefractionMapping = EquirectangularRefractionMapping; + exports.Euler = Euler; + exports.EventDispatcher = EventDispatcher; + exports.ExtrudeBufferGeometry = ExtrudeBufferGeometry; + exports.ExtrudeGeometry = ExtrudeGeometry; + exports.Face3 = Face3; + exports.Face4 = Face4; + exports.FaceColors = FaceColors; + exports.FaceNormalsHelper = FaceNormalsHelper; + exports.FileLoader = FileLoader; + exports.FlatShading = FlatShading; + exports.Float32Attribute = Float32Attribute; + exports.Float32BufferAttribute = Float32BufferAttribute; + exports.Float64Attribute = Float64Attribute; + exports.Float64BufferAttribute = Float64BufferAttribute; + exports.FloatType = FloatType; + exports.Fog = Fog; + exports.FogExp2 = FogExp2; + exports.Font = Font; + exports.FontLoader = FontLoader; + exports.FrontFaceDirectionCCW = FrontFaceDirectionCCW; + exports.FrontFaceDirectionCW = FrontFaceDirectionCW; + exports.FrontSide = FrontSide; + exports.Frustum = Frustum; + exports.GammaEncoding = GammaEncoding; + exports.Geometry = Geometry; + exports.GeometryUtils = GeometryUtils; + exports.GreaterDepth = GreaterDepth; + exports.GreaterEqualDepth = GreaterEqualDepth; + exports.GridHelper = GridHelper; + exports.Group = Group; + exports.HalfFloatType = HalfFloatType; + exports.HemisphereLight = HemisphereLight; + exports.HemisphereLightHelper = HemisphereLightHelper; + exports.HemisphereLightProbe = HemisphereLightProbe; + exports.IcosahedronBufferGeometry = IcosahedronBufferGeometry; + exports.IcosahedronGeometry = IcosahedronGeometry; + exports.ImageBitmapLoader = ImageBitmapLoader; + exports.ImageLoader = ImageLoader; + exports.ImageUtils = ImageUtils; + exports.ImmediateRenderObject = ImmediateRenderObject; + exports.InstancedBufferAttribute = InstancedBufferAttribute; + exports.InstancedBufferGeometry = InstancedBufferGeometry; + exports.InstancedInterleavedBuffer = InstancedInterleavedBuffer; + exports.Int16Attribute = Int16Attribute; + exports.Int16BufferAttribute = Int16BufferAttribute; + exports.Int32Attribute = Int32Attribute; + exports.Int32BufferAttribute = Int32BufferAttribute; + exports.Int8Attribute = Int8Attribute; + exports.Int8BufferAttribute = Int8BufferAttribute; + exports.IntType = IntType; + exports.InterleavedBuffer = InterleavedBuffer; + exports.InterleavedBufferAttribute = InterleavedBufferAttribute; + exports.Interpolant = Interpolant; + exports.InterpolateDiscrete = InterpolateDiscrete; + exports.InterpolateLinear = InterpolateLinear; + exports.InterpolateSmooth = InterpolateSmooth; + exports.JSONLoader = JSONLoader; + exports.KeyframeTrack = KeyframeTrack; + exports.LOD = LOD; + exports.LatheBufferGeometry = LatheBufferGeometry; + exports.LatheGeometry = LatheGeometry; + exports.Layers = Layers; + exports.LensFlare = LensFlare; + exports.LessDepth = LessDepth; + exports.LessEqualDepth = LessEqualDepth; + exports.Light = Light; + exports.LightProbe = LightProbe; + exports.LightProbeHelper = LightProbeHelper; + exports.LightShadow = LightShadow; + exports.Line = Line; + exports.Line3 = Line3; + exports.LineBasicMaterial = LineBasicMaterial; + exports.LineCurve = LineCurve; + exports.LineCurve3 = LineCurve3; + exports.LineDashedMaterial = LineDashedMaterial; + exports.LineLoop = LineLoop; + exports.LinePieces = LinePieces; + exports.LineSegments = LineSegments; + exports.LineStrip = LineStrip; + exports.LinearEncoding = LinearEncoding; + exports.LinearFilter = LinearFilter; + exports.LinearInterpolant = LinearInterpolant; + exports.LinearMipMapLinearFilter = LinearMipMapLinearFilter; + exports.LinearMipMapNearestFilter = LinearMipMapNearestFilter; + exports.LinearToneMapping = LinearToneMapping; + exports.Loader = Loader; + exports.LoaderUtils = LoaderUtils; + exports.LoadingManager = LoadingManager; + exports.LogLuvEncoding = LogLuvEncoding; + exports.LoopOnce = LoopOnce; + exports.LoopPingPong = LoopPingPong; + exports.LoopRepeat = LoopRepeat; + exports.LuminanceAlphaFormat = LuminanceAlphaFormat; + exports.LuminanceFormat = LuminanceFormat; + exports.MOUSE = MOUSE; + exports.Material = Material; + exports.MaterialLoader = MaterialLoader; + exports.Math = _Math; + exports.Matrix3 = Matrix3; + exports.Matrix4 = Matrix4; + exports.MaxEquation = MaxEquation; + exports.Mesh = Mesh; + exports.MeshBasicMaterial = MeshBasicMaterial; + exports.MeshDepthMaterial = MeshDepthMaterial; + exports.MeshDistanceMaterial = MeshDistanceMaterial; + exports.MeshFaceMaterial = MeshFaceMaterial; + exports.MeshLambertMaterial = MeshLambertMaterial; + exports.MeshMatcapMaterial = MeshMatcapMaterial; + exports.MeshNormalMaterial = MeshNormalMaterial; + exports.MeshPhongMaterial = MeshPhongMaterial; + exports.MeshPhysicalMaterial = MeshPhysicalMaterial; + exports.MeshStandardMaterial = MeshStandardMaterial; + exports.MeshToonMaterial = MeshToonMaterial; + exports.MinEquation = MinEquation; + exports.MirroredRepeatWrapping = MirroredRepeatWrapping; + exports.MixOperation = MixOperation; + exports.MultiMaterial = MultiMaterial; + exports.MultiplyBlending = MultiplyBlending; + exports.MultiplyOperation = MultiplyOperation; + exports.NearestFilter = NearestFilter; + exports.NearestMipMapLinearFilter = NearestMipMapLinearFilter; + exports.NearestMipMapNearestFilter = NearestMipMapNearestFilter; + exports.NeverDepth = NeverDepth; + exports.NoBlending = NoBlending; + exports.NoColors = NoColors; + exports.NoToneMapping = NoToneMapping; + exports.NormalBlending = NormalBlending; + exports.NotEqualDepth = NotEqualDepth; + exports.NumberKeyframeTrack = NumberKeyframeTrack; + exports.Object3D = Object3D; + exports.ObjectLoader = ObjectLoader; + exports.ObjectSpaceNormalMap = ObjectSpaceNormalMap; + exports.OctahedronBufferGeometry = OctahedronBufferGeometry; + exports.OctahedronGeometry = OctahedronGeometry; + exports.OneFactor = OneFactor; + exports.OneMinusDstAlphaFactor = OneMinusDstAlphaFactor; + exports.OneMinusDstColorFactor = OneMinusDstColorFactor; + exports.OneMinusSrcAlphaFactor = OneMinusSrcAlphaFactor; + exports.OneMinusSrcColorFactor = OneMinusSrcColorFactor; + exports.OrthographicCamera = OrthographicCamera; + exports.PCFShadowMap = PCFShadowMap; + exports.PCFSoftShadowMap = PCFSoftShadowMap; + exports.ParametricBufferGeometry = ParametricBufferGeometry; + exports.ParametricGeometry = ParametricGeometry; + exports.Particle = Particle; + exports.ParticleBasicMaterial = ParticleBasicMaterial; + exports.ParticleSystem = ParticleSystem; + exports.ParticleSystemMaterial = ParticleSystemMaterial; + exports.Path = Path; + exports.PerspectiveCamera = PerspectiveCamera; + exports.Plane = Plane; + exports.PlaneBufferGeometry = PlaneBufferGeometry; + exports.PlaneGeometry = PlaneGeometry; + exports.PlaneHelper = PlaneHelper; + exports.PointCloud = PointCloud; + exports.PointCloudMaterial = PointCloudMaterial; + exports.PointLight = PointLight; + exports.PointLightHelper = PointLightHelper; + exports.Points = Points; + exports.PointsMaterial = PointsMaterial; + exports.PolarGridHelper = PolarGridHelper; + exports.PolyhedronBufferGeometry = PolyhedronBufferGeometry; + exports.PolyhedronGeometry = PolyhedronGeometry; + exports.PositionalAudio = PositionalAudio; + exports.PositionalAudioHelper = PositionalAudioHelper; + exports.PropertyBinding = PropertyBinding; + exports.PropertyMixer = PropertyMixer; + exports.QuadraticBezierCurve = QuadraticBezierCurve; + exports.QuadraticBezierCurve3 = QuadraticBezierCurve3; + exports.Quaternion = Quaternion; + exports.QuaternionKeyframeTrack = QuaternionKeyframeTrack; + exports.QuaternionLinearInterpolant = QuaternionLinearInterpolant; + exports.REVISION = REVISION; + exports.RGBADepthPacking = RGBADepthPacking; + exports.RGBAFormat = RGBAFormat; + exports.RGBA_ASTC_10x10_Format = RGBA_ASTC_10x10_Format; + exports.RGBA_ASTC_10x5_Format = RGBA_ASTC_10x5_Format; + exports.RGBA_ASTC_10x6_Format = RGBA_ASTC_10x6_Format; + exports.RGBA_ASTC_10x8_Format = RGBA_ASTC_10x8_Format; + exports.RGBA_ASTC_12x10_Format = RGBA_ASTC_12x10_Format; + exports.RGBA_ASTC_12x12_Format = RGBA_ASTC_12x12_Format; + exports.RGBA_ASTC_4x4_Format = RGBA_ASTC_4x4_Format; + exports.RGBA_ASTC_5x4_Format = RGBA_ASTC_5x4_Format; + exports.RGBA_ASTC_5x5_Format = RGBA_ASTC_5x5_Format; + exports.RGBA_ASTC_6x5_Format = RGBA_ASTC_6x5_Format; + exports.RGBA_ASTC_6x6_Format = RGBA_ASTC_6x6_Format; + exports.RGBA_ASTC_8x5_Format = RGBA_ASTC_8x5_Format; + exports.RGBA_ASTC_8x6_Format = RGBA_ASTC_8x6_Format; + exports.RGBA_ASTC_8x8_Format = RGBA_ASTC_8x8_Format; + exports.RGBA_PVRTC_2BPPV1_Format = RGBA_PVRTC_2BPPV1_Format; + exports.RGBA_PVRTC_4BPPV1_Format = RGBA_PVRTC_4BPPV1_Format; + exports.RGBA_S3TC_DXT1_Format = RGBA_S3TC_DXT1_Format; + exports.RGBA_S3TC_DXT3_Format = RGBA_S3TC_DXT3_Format; + exports.RGBA_S3TC_DXT5_Format = RGBA_S3TC_DXT5_Format; + exports.RGBDEncoding = RGBDEncoding; + exports.RGBEEncoding = RGBEEncoding; + exports.RGBEFormat = RGBEFormat; + exports.RGBFormat = RGBFormat; + exports.RGBM16Encoding = RGBM16Encoding; + exports.RGBM7Encoding = RGBM7Encoding; + exports.RGB_ETC1_Format = RGB_ETC1_Format; + exports.RGB_PVRTC_2BPPV1_Format = RGB_PVRTC_2BPPV1_Format; + exports.RGB_PVRTC_4BPPV1_Format = RGB_PVRTC_4BPPV1_Format; + exports.RGB_S3TC_DXT1_Format = RGB_S3TC_DXT1_Format; + exports.RawShaderMaterial = RawShaderMaterial; + exports.Ray = Ray; + exports.Raycaster = Raycaster; + exports.RectAreaLight = RectAreaLight; + exports.RectAreaLightHelper = RectAreaLightHelper; + exports.RedFormat = RedFormat; + exports.ReinhardToneMapping = ReinhardToneMapping; + exports.RepeatWrapping = RepeatWrapping; + exports.ReverseSubtractEquation = ReverseSubtractEquation; + exports.RingBufferGeometry = RingBufferGeometry; + exports.RingGeometry = RingGeometry; + exports.Scene = Scene; + exports.SceneUtils = SceneUtils; + exports.ShaderChunk = ShaderChunk; + exports.ShaderLib = ShaderLib; + exports.ShaderMaterial = ShaderMaterial; + exports.ShadowMaterial = ShadowMaterial; + exports.Shape = Shape; + exports.ShapeBufferGeometry = ShapeBufferGeometry; + exports.ShapeGeometry = ShapeGeometry; + exports.ShapePath = ShapePath; + exports.ShapeUtils = ShapeUtils; + exports.ShortType = ShortType; + exports.Skeleton = Skeleton; + exports.SkeletonHelper = SkeletonHelper; + exports.SkinnedMesh = SkinnedMesh; + exports.SmoothShading = SmoothShading; + exports.Sphere = Sphere; + exports.SphereBufferGeometry = SphereBufferGeometry; + exports.SphereGeometry = SphereGeometry; + exports.Spherical = Spherical; + exports.SphericalHarmonics3 = SphericalHarmonics3; + exports.SphericalReflectionMapping = SphericalReflectionMapping; + exports.Spline = Spline; + exports.SplineCurve = SplineCurve; + exports.SplineCurve3 = SplineCurve3; + exports.SpotLight = SpotLight; + exports.SpotLightHelper = SpotLightHelper; + exports.SpotLightShadow = SpotLightShadow; + exports.Sprite = Sprite; + exports.SpriteMaterial = SpriteMaterial; + exports.SrcAlphaFactor = SrcAlphaFactor; + exports.SrcAlphaSaturateFactor = SrcAlphaSaturateFactor; + exports.SrcColorFactor = SrcColorFactor; + exports.StereoCamera = StereoCamera; + exports.StringKeyframeTrack = StringKeyframeTrack; + exports.SubtractEquation = SubtractEquation; + exports.SubtractiveBlending = SubtractiveBlending; + exports.TangentSpaceNormalMap = TangentSpaceNormalMap; + exports.TetrahedronBufferGeometry = TetrahedronBufferGeometry; + exports.TetrahedronGeometry = TetrahedronGeometry; + exports.TextBufferGeometry = TextBufferGeometry; + exports.TextGeometry = TextGeometry; + exports.Texture = Texture; + exports.TextureLoader = TextureLoader; + exports.TorusBufferGeometry = TorusBufferGeometry; + exports.TorusGeometry = TorusGeometry; + exports.TorusKnotBufferGeometry = TorusKnotBufferGeometry; + exports.TorusKnotGeometry = TorusKnotGeometry; + exports.Triangle = Triangle; + exports.TriangleFanDrawMode = TriangleFanDrawMode; + exports.TriangleStripDrawMode = TriangleStripDrawMode; + exports.TrianglesDrawMode = TrianglesDrawMode; + exports.TubeBufferGeometry = TubeBufferGeometry; + exports.TubeGeometry = TubeGeometry; + exports.UVMapping = UVMapping; + exports.Uint16Attribute = Uint16Attribute; + exports.Uint16BufferAttribute = Uint16BufferAttribute; + exports.Uint32Attribute = Uint32Attribute; + exports.Uint32BufferAttribute = Uint32BufferAttribute; + exports.Uint8Attribute = Uint8Attribute; + exports.Uint8BufferAttribute = Uint8BufferAttribute; + exports.Uint8ClampedAttribute = Uint8ClampedAttribute; + exports.Uint8ClampedBufferAttribute = Uint8ClampedBufferAttribute; + exports.Uncharted2ToneMapping = Uncharted2ToneMapping; + exports.Uniform = Uniform; + exports.UniformsLib = UniformsLib; + exports.UniformsUtils = UniformsUtils; + exports.UnsignedByteType = UnsignedByteType; + exports.UnsignedInt248Type = UnsignedInt248Type; + exports.UnsignedIntType = UnsignedIntType; + exports.UnsignedShort4444Type = UnsignedShort4444Type; + exports.UnsignedShort5551Type = UnsignedShort5551Type; + exports.UnsignedShort565Type = UnsignedShort565Type; + exports.UnsignedShortType = UnsignedShortType; + exports.Vector2 = Vector2; + exports.Vector3 = Vector3; + exports.Vector4 = Vector4; + exports.VectorKeyframeTrack = VectorKeyframeTrack; + exports.Vertex = Vertex; + exports.VertexColors = VertexColors; + exports.VertexNormalsHelper = VertexNormalsHelper; + exports.VideoTexture = VideoTexture; + exports.WebGLMultisampleRenderTarget = WebGLMultisampleRenderTarget; + exports.WebGLRenderTarget = WebGLRenderTarget; + exports.WebGLRenderTargetCube = WebGLRenderTargetCube; + exports.WebGLRenderer = WebGLRenderer; + exports.WebGLUtils = WebGLUtils; + exports.WireframeGeometry = WireframeGeometry; + exports.WireframeHelper = WireframeHelper; + exports.WrapAroundEnding = WrapAroundEnding; + exports.XHRLoader = XHRLoader; + exports.ZeroCurvatureEnding = ZeroCurvatureEnding; + exports.ZeroFactor = ZeroFactor; + exports.ZeroSlopeEnding = ZeroSlopeEnding; + exports.sRGBEncoding = sRGBEncoding; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); diff --git a/Elements/src/Geometry/Solids/Sweep.cs b/Elements/src/Geometry/Solids/Sweep.cs index 1c3a9c1be..76aea1729 100644 --- a/Elements/src/Geometry/Solids/Sweep.cs +++ b/Elements/src/Geometry/Solids/Sweep.cs @@ -1,3 +1,4 @@ +using System; using Elements.Serialization.JSON; namespace Elements.Geometry.Solids diff --git a/Elements/src/Serialization/JSON/ElementConverter.cs b/Elements/src/Serialization/JSON/ElementConverter.cs index 25845b1af..a4024494d 100644 --- a/Elements/src/Serialization/JSON/ElementConverter.cs +++ b/Elements/src/Serialization/JSON/ElementConverter.cs @@ -26,8 +26,8 @@ internal class ElementConverter : JsonConverter { public override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { - var sw = new Stopwatch(); - sw.Start(); + // var sw = new Stopwatch(); + // sw.Start(); var resolver = options.ReferenceHandler.CreateResolver() as ElementReferenceResolver; @@ -57,7 +57,7 @@ public override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerial { resolver.AddReference(((Element)(object)e).Id.ToString(), e); } - Console.WriteLine($"{sw.ElapsedMilliseconds}ms for deserializing type."); + // Console.WriteLine($"{sw.ElapsedMilliseconds}ms for deserializing type."); return e; } } From 1b846a5555639153cf75b0d1c44181f3225fa9b7 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Tue, 22 Feb 2022 01:37:57 -0800 Subject: [PATCH 019/150] Little cleanups. --- Elements.Wasm/ElementsWrapper.cs | 2 +- Elements/src/Model.cs | 8 +------- Elements/src/Serialization/JSON/ElementConverter.cs | 5 +---- 3 files changed, 3 insertions(+), 12 deletions(-) diff --git a/Elements.Wasm/ElementsWrapper.cs b/Elements.Wasm/ElementsWrapper.cs index ca38190da..3d7693f9d 100644 --- a/Elements.Wasm/ElementsWrapper.cs +++ b/Elements.Wasm/ElementsWrapper.cs @@ -38,7 +38,7 @@ public static Task Test() var model = new Model(); var r = new Random(); var size = 10; - var profile = Polygon.L(0.1, 0.1, 0.05); + var profile = new Profile(Polygon.L(0.1, 0.1, 0.05)); for (var i = 0; i < 100; i++) { var start = new Vector3(r.NextDouble() * size, r.NextDouble() * size, r.NextDouble() * size); diff --git a/Elements/src/Model.cs b/Elements/src/Model.cs index 70da8dd99..125be2276 100644 --- a/Elements/src/Model.cs +++ b/Elements/src/Model.cs @@ -297,11 +297,7 @@ public static Model FromJson(string json, bool forceTypeReload = false) /// public string ToJsonNew() { - var serializerOptions = new JsonSerializerOptions() - { - WriteIndented = true - }; - + var serializerOptions = new JsonSerializerOptions(); serializerOptions.Converters.Add(new ElementConverterFactory()); return System.Text.Json.JsonSerializer.Serialize(this, serializerOptions); } @@ -317,12 +313,10 @@ public static Model FromJsonNew(string json) using (var document = JsonDocument.Parse(json)) { JsonElement root = document.RootElement; - JsonElement transformElement = root.GetProperty("Transform"); JsonElement elementsElement = root.GetProperty("Elements"); var options = new JsonSerializerOptions() { - WriteIndented = true, PropertyNameCaseInsensitive = true }; diff --git a/Elements/src/Serialization/JSON/ElementConverter.cs b/Elements/src/Serialization/JSON/ElementConverter.cs index a4024494d..60a3d8977 100644 --- a/Elements/src/Serialization/JSON/ElementConverter.cs +++ b/Elements/src/Serialization/JSON/ElementConverter.cs @@ -26,9 +26,6 @@ internal class ElementConverter : JsonConverter { public override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { - // var sw = new Stopwatch(); - // sw.Start(); - var resolver = options.ReferenceHandler.CreateResolver() as ElementReferenceResolver; if (reader.TokenType == JsonTokenType.String) @@ -37,6 +34,7 @@ public override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerial return (T)resolver.ResolveReference(id.ToString()); } + using (var doc = JsonDocument.ParseValue(ref reader)) { var root = doc.RootElement; @@ -57,7 +55,6 @@ public override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerial { resolver.AddReference(((Element)(object)e).Id.ToString(), e); } - // Console.WriteLine($"{sw.ElapsedMilliseconds}ms for deserializing type."); return e; } } From 828efed5bd1c67873c99564e5d6d971717f919c7 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Fri, 25 Feb 2022 12:03:37 -0800 Subject: [PATCH 020/150] Cleanup. --- Elements/src/Serialization/JSON/ElementConverter.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/Elements/src/Serialization/JSON/ElementConverter.cs b/Elements/src/Serialization/JSON/ElementConverter.cs index 60a3d8977..3b4fb1a70 100644 --- a/Elements/src/Serialization/JSON/ElementConverter.cs +++ b/Elements/src/Serialization/JSON/ElementConverter.cs @@ -1,5 +1,4 @@ using System; -using System.Diagnostics; using System.Text.Json; using System.Text.Json.Serialization; @@ -34,7 +33,6 @@ public override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerial return (T)resolver.ResolveReference(id.ToString()); } - using (var doc = JsonDocument.ParseValue(ref reader)) { var root = doc.RootElement; From d9adf81af429b16bcf834d6cf386019e0a15ef82 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Fri, 25 Feb 2022 12:03:51 -0800 Subject: [PATCH 021/150] Multi-colored test. --- Elements.Wasm/ElementsWrapper.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Elements.Wasm/ElementsWrapper.cs b/Elements.Wasm/ElementsWrapper.cs index 3d7693f9d..25e71c6e9 100644 --- a/Elements.Wasm/ElementsWrapper.cs +++ b/Elements.Wasm/ElementsWrapper.cs @@ -44,7 +44,9 @@ public static Task Test() var start = new Vector3(r.NextDouble() * size, r.NextDouble() * size, r.NextDouble() * size); var end = new Vector3(r.NextDouble() * size, r.NextDouble() * size, r.NextDouble() * size); var line = new Line(start, end); - var beam = new Beam(line, profile); + var c = new Color(r.NextDouble(), r.NextDouble(), r.NextDouble(), 1.0); + var m = new Material(Guid.NewGuid().ToString(), c); + var beam = new Beam(line, profile, m); model.AddElement(beam); } sb.AppendLine($"{sw.ElapsedMilliseconds}ms for creating test beams."); @@ -69,8 +71,8 @@ public static Task Test() public class TestResult { - public byte[] Glb { get; set; } - public string Results { get; set; } + public byte[]? Glb { get; set; } + public string? Results { get; set; } } [JSInvokable] From 196690ee5078678d1c2306e97c4fb30d40a76ddb Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Fri, 25 Feb 2022 12:05:24 -0800 Subject: [PATCH 022/150] Cleanup. --- Elements.Wasm/Elements.Wasm.csproj | 1 - 1 file changed, 1 deletion(-) diff --git a/Elements.Wasm/Elements.Wasm.csproj b/Elements.Wasm/Elements.Wasm.csproj index 2eb96ea09..3d87e5ee5 100644 --- a/Elements.Wasm/Elements.Wasm.csproj +++ b/Elements.Wasm/Elements.Wasm.csproj @@ -4,7 +4,6 @@ net6.0 enable enable - en From faf48ddceeb8b817e1a61661eec2b8ee2f01dd5f Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Fri, 25 Feb 2022 12:05:34 -0800 Subject: [PATCH 023/150] Rename the wrapper. --- Elements.Wasm/{ElementsWrapper.cs => ElementsAPI.cs} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Elements.Wasm/{ElementsWrapper.cs => ElementsAPI.cs} (100%) diff --git a/Elements.Wasm/ElementsWrapper.cs b/Elements.Wasm/ElementsAPI.cs similarity index 100% rename from Elements.Wasm/ElementsWrapper.cs rename to Elements.Wasm/ElementsAPI.cs From 2abe2b86a14a1ebc27fd3e1422b08e126aa6d787 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sat, 16 Apr 2022 13:58:41 -0700 Subject: [PATCH 024/150] Replace all newtonsoft usings with system.text.json.serialization. --- .../src/Templates/Catalog.liquid | 2 +- .../src/Templates/File.liquid | 2 +- Elements.CodeGeneration/src/TypeGenerator.cs | 2 +- .../src/ComponentDefinition.cs | 2 +- .../src/ContentCatalogRetrieval.cs | 2 +- .../src/Rules/SizeBasedPlacementRule.cs | 2 +- Elements/src/Analysis/AnalysisMesh.cs | 2 +- Elements/src/Analysis/ColorScale.cs | 4 +- Elements/src/BaseCeiling.cs | 2 +- Elements/src/ContentCatalog.cs | 2 +- Elements/src/ContentElement.cs | 2 +- Elements/src/Element.cs | 2 +- Elements/src/ElementInstance.cs | 2 +- Elements/src/ElementProxy.cs | 2 +- Elements/src/Floor.cs | 2 +- Elements/src/GeoJSON/Feature.cs | 17 +++--- Elements/src/GeoJSON/FeatureCollection.cs | 9 +-- Elements/src/GeoJSON/Geometry.cs | 2 +- Elements/src/GeoJSON/Position.cs | 2 +- Elements/src/GeometricElement.cs | 2 +- Elements/src/Geometry/Arc.cs | 2 +- Elements/src/Geometry/BBox3.cs | 2 +- Elements/src/Geometry/Box.cs | 2 +- Elements/src/Geometry/Circle.cs | 2 +- Elements/src/Geometry/Color.cs | 2 +- Elements/src/Geometry/Curve.cs | 2 +- Elements/src/Geometry/Line.cs | 2 +- Elements/src/Geometry/Matrix.cs | 2 +- Elements/src/Geometry/Mesh.cs | 2 +- Elements/src/Geometry/Plane.cs | 2 +- Elements/src/Geometry/Polygon.cs | 2 +- Elements/src/Geometry/Polyline.cs | 2 +- Elements/src/Geometry/Profile.cs | 2 +- Elements/src/Geometry/Profiles/CProfile.cs | 2 +- .../src/Geometry/Profiles/HSSPipeProfile.cs | 2 +- Elements/src/Geometry/Profiles/HSSProfile.cs | 2 +- Elements/src/Geometry/Profiles/LProfile.cs | 2 +- Elements/src/Geometry/Profiles/MCProfile.cs | 2 +- .../Geometry/Profiles/ParametricProfile.cs | 2 +- Elements/src/Geometry/Profiles/RHSProfile.cs | 2 +- Elements/src/Geometry/Profiles/SHSProfile.cs | 2 +- Elements/src/Geometry/Profiles/STProfile.cs | 2 +- .../src/Geometry/Profiles/VectorExpression.cs | 2 +- Elements/src/Geometry/Profiles/WProfile.cs | 2 +- Elements/src/Geometry/Profiles/WTProfile.cs | 2 +- .../Geometry/Profiles/WideFlangeProfile.cs | 2 +- Elements/src/Geometry/Representation.cs | 2 +- .../src/Geometry/Solids/ConstructedSolid.cs | 2 +- Elements/src/Geometry/Solids/Extrude.cs | 2 +- Elements/src/Geometry/Solids/Lamina.cs | 2 +- .../src/Geometry/Solids/SolidOperation.cs | 2 +- Elements/src/Geometry/Solids/Sweep.cs | 2 +- Elements/src/Geometry/Transform.cs | 2 +- Elements/src/Geometry/Triangle.cs | 2 +- Elements/src/Geometry/UV.cs | 2 +- Elements/src/Geometry/Vector3.cs | 2 +- Elements/src/Geometry/Vertex.cs | 2 +- Elements/src/GeometryReference.cs | 2 +- Elements/src/Joist.cs | 2 +- Elements/src/Mass.cs | 2 +- Elements/src/Material.cs | 2 +- Elements/src/Math/Domain1d.cs | 2 +- Elements/src/MeshElement.cs | 2 +- Elements/src/Model.cs | 2 +- Elements/src/ModelArrows.cs | 2 +- Elements/src/ModelLines.cs | 2 +- Elements/src/ModelPoints.cs | 2 +- Elements/src/OpenCeiling.cs | 2 +- Elements/src/Opening.cs | 2 +- .../JSON/JsonInheritanceConverter.cs | 2 +- .../src/Serialization/JSON/MeshConverter.cs | 2 +- .../src/Serialization/JSON/SolidConverter.cs | 2 +- Elements/src/SolidCeiling.cs | 2 +- Elements/src/Space.cs | 2 +- .../src/Spatial/AdaptiveGrid/AdaptiveGrid.cs | 2 +- Elements/src/Spatial/AdaptiveGrid/Vertex.cs | 2 +- Elements/src/Spatial/CellComplex/Cell.cs | 2 +- .../src/Spatial/CellComplex/CellComplex.cs | 2 +- Elements/src/Spatial/CellComplex/ChildBase.cs | 2 +- .../src/Spatial/CellComplex/DirectedEdge.cs | 2 +- Elements/src/Spatial/CellComplex/Edge.cs | 2 +- Elements/src/Spatial/CellComplex/Face.cs | 2 +- .../CellComplex/Interfaces/IDistanceTo.cs | 2 +- .../CellComplex/Interfaces/IHasNeighbors.cs | 2 +- Elements/src/Spatial/CellComplex/Vertex.cs | 2 +- .../src/Spatial/CellComplex/VertexBase.cs | 2 +- Elements/src/Spatial/Grid1d.cs | 2 +- Elements/src/Spatial/Grid2d.cs | 2 +- Elements/src/Symbol.cs | 2 +- Elements/src/TiledCeiling.cs | 2 +- Elements/src/Topography.cs | 2 +- Elements/src/Wall.cs | 2 +- Elements/src/WallByProfile.cs | 2 +- Elements/test/BBox3Tests.cs | 2 +- Elements/test/BoxTests.cs | 2 +- Elements/test/ColorScaleTests.cs | 2 +- Elements/test/ColorTests.cs | 2 +- Elements/test/CsgTests.cs | 2 +- Elements/test/ElementProxyTests.cs | 2 +- Elements/test/GeoJSONTests.cs | 55 ++++++++++--------- Elements/test/GltfTests.cs | 2 +- Elements/test/Grid1dTests.cs | 2 +- Elements/test/Grid2dElement.cs | 2 +- Elements/test/Grid2dTests.cs | 2 +- Elements/test/HalfEdgeGraph2dTests.cs | 2 +- Elements/test/LineTests.cs | 2 +- Elements/test/MeshTests.cs | 2 +- Elements/test/ModelTests.cs | 2 +- Elements/test/PolygonTests.cs | 2 +- Elements/test/ProfileTests.cs | 4 +- Elements/test/SolidTests.cs | 2 +- Elements/test/TopographyTests.cs | 2 +- 112 files changed, 153 insertions(+), 150 deletions(-) diff --git a/Elements.CodeGeneration/src/Templates/Catalog.liquid b/Elements.CodeGeneration/src/Templates/Catalog.liquid index e69bc6dad..982f3024e 100644 --- a/Elements.CodeGeneration/src/Templates/Catalog.liquid +++ b/Elements.CodeGeneration/src/Templates/Catalog.liquid @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; using Elements.Geometry; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements { public static class {{ catalog.name | safeidentifierupper }} { diff --git a/Elements.CodeGeneration/src/Templates/File.liquid b/Elements.CodeGeneration/src/Templates/File.liquid index 24beb3fd8..f1ae25003 100644 --- a/Elements.CodeGeneration/src/Templates/File.liquid +++ b/Elements.CodeGeneration/src/Templates/File.liquid @@ -10,7 +10,7 @@ using Elements.Geometry.Solids; using Elements.Spatial; using Elements.Validators; using Elements.Serialization.JSON; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using System; using System.Collections.Generic; using System.Linq; diff --git a/Elements.CodeGeneration/src/TypeGenerator.cs b/Elements.CodeGeneration/src/TypeGenerator.cs index c91de9b81..001a9c085 100644 --- a/Elements.CodeGeneration/src/TypeGenerator.cs +++ b/Elements.CodeGeneration/src/TypeGenerator.cs @@ -6,7 +6,7 @@ using System.Threading.Tasks; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using NJsonSchema; using NJsonSchema.CodeGeneration.CSharp; using Elements.Generate.StringUtils; diff --git a/Elements.Components/src/ComponentDefinition.cs b/Elements.Components/src/ComponentDefinition.cs index edac2f113..f31f1b456 100644 --- a/Elements.Components/src/ComponentDefinition.cs +++ b/Elements.Components/src/ComponentDefinition.cs @@ -4,7 +4,7 @@ using System.Linq; using Elements; using Elements.Geometry; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Components { diff --git a/Elements.Components/src/ContentCatalogRetrieval.cs b/Elements.Components/src/ContentCatalogRetrieval.cs index cc3a97941..3645d9249 100644 --- a/Elements.Components/src/ContentCatalogRetrieval.cs +++ b/Elements.Components/src/ContentCatalogRetrieval.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Reflection; using Elements.Geometry; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Components { diff --git a/Elements.Components/src/Rules/SizeBasedPlacementRule.cs b/Elements.Components/src/Rules/SizeBasedPlacementRule.cs index 82b1caa22..487d23eed 100644 --- a/Elements.Components/src/Rules/SizeBasedPlacementRule.cs +++ b/Elements.Components/src/Rules/SizeBasedPlacementRule.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Linq; using Elements.Geometry; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Components { diff --git a/Elements/src/Analysis/AnalysisMesh.cs b/Elements/src/Analysis/AnalysisMesh.cs index 0d1e2cfdf..e96348981 100644 --- a/Elements/src/Analysis/AnalysisMesh.cs +++ b/Elements/src/Analysis/AnalysisMesh.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using Elements.Geometry; using Elements.Geometry.Interfaces; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Analysis { diff --git a/Elements/src/Analysis/ColorScale.cs b/Elements/src/Analysis/ColorScale.cs index bd6b8343d..b1981d3c2 100644 --- a/Elements/src/Analysis/ColorScale.cs +++ b/Elements/src/Analysis/ColorScale.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; using Elements.Geometry; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using Elements; using System.Linq; @@ -114,7 +114,7 @@ public ColorScale(List colors, List values) { if (i > 0 && values[i] <= values[i - 1]) { - throw new ArgumentException($"Your list of custom values must be sorted numerically and contain no duplicate values. {values[i]} cannot come after {values[i-1]}."); + throw new ArgumentException($"Your list of custom values must be sorted numerically and contain no duplicate values. {values[i]} cannot come after {values[i - 1]}."); } this.Domains.Add(new Domain1d(values[i], values[i + 1])); } diff --git a/Elements/src/BaseCeiling.cs b/Elements/src/BaseCeiling.cs index 220ed190a..fd348e8e4 100644 --- a/Elements/src/BaseCeiling.cs +++ b/Elements/src/BaseCeiling.cs @@ -1,7 +1,7 @@ using Elements.Geometry; using Elements.Geometry.Solids; using Elements.Interfaces; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using System; using System.Collections.Generic; using System.Linq; diff --git a/Elements/src/ContentCatalog.cs b/Elements/src/ContentCatalog.cs index 57593d09f..52ff3f89b 100644 --- a/Elements/src/ContentCatalog.cs +++ b/Elements/src/ContentCatalog.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using System.Linq; using Elements.Serialization.JSON; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using Newtonsoft.Json.Linq; namespace Elements diff --git a/Elements/src/ContentElement.cs b/Elements/src/ContentElement.cs index 14c78f51e..6b40c3dfa 100644 --- a/Elements/src/ContentElement.cs +++ b/Elements/src/ContentElement.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using Elements.Geometry; using Elements.Geometry.Solids; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements { diff --git a/Elements/src/Element.cs b/Elements/src/Element.cs index 902d5d415..fae007a9d 100644 --- a/Elements/src/Element.cs +++ b/Elements/src/Element.cs @@ -1,6 +1,6 @@ using System; using Elements.Serialization.JSON; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements { diff --git a/Elements/src/ElementInstance.cs b/Elements/src/ElementInstance.cs index 9cb9e2019..c1b4dbaca 100644 --- a/Elements/src/ElementInstance.cs +++ b/Elements/src/ElementInstance.cs @@ -1,6 +1,6 @@ using System; using Elements.Geometry; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements { diff --git a/Elements/src/ElementProxy.cs b/Elements/src/ElementProxy.cs index f79e702ba..de04fdc7c 100644 --- a/Elements/src/ElementProxy.cs +++ b/Elements/src/ElementProxy.cs @@ -1,4 +1,4 @@ -using Newtonsoft.Json; +using System.Text.Json.Serialization; using System; using System.Collections.Generic; using System.Linq; diff --git a/Elements/src/Floor.cs b/Elements/src/Floor.cs index 15a99d186..768dc0673 100644 --- a/Elements/src/Floor.cs +++ b/Elements/src/Floor.cs @@ -3,7 +3,7 @@ using System; using Elements.Geometry.Solids; using System.Collections.Generic; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements { diff --git a/Elements/src/GeoJSON/Feature.cs b/Elements/src/GeoJSON/Feature.cs index 111137622..c11de43a3 100644 --- a/Elements/src/GeoJSON/Feature.cs +++ b/Elements/src/GeoJSON/Feature.cs @@ -1,4 +1,4 @@ -using Newtonsoft.Json; +using System.Text.Json.Serialization; using System.Collections.Generic; namespace Elements.GeoJSON @@ -12,7 +12,8 @@ public class Feature /// The type of the feature. /// [JsonProperty("type")] - public string Type{ + public string Type + { get { return GetType().Name; @@ -22,28 +23,28 @@ public string Type{ /// /// All properties of the feature. /// - [JsonProperty("properties", NullValueHandling=NullValueHandling.Ignore)] - public Dictionary Properties{get; set;} + [JsonProperty("properties", NullValueHandling = NullValueHandling.Ignore)] + public Dictionary Properties { get; set; } /// /// The geometry of the feature. /// [JsonProperty("geometry")] [JsonConverter(typeof(GeometryConverter))] - public Geometry Geometry{get;set;} + public Geometry Geometry { get; set; } /// /// The bounding box of the feature. /// - [JsonProperty("bbox", NullValueHandling=NullValueHandling.Ignore)] - public IEnumerable BBox{get;} + [JsonProperty("bbox", NullValueHandling = NullValueHandling.Ignore)] + public IEnumerable BBox { get; } /// /// Construct a feature. /// /// /// - public Feature(Geometry geometry, Dictionary properties) + public Feature(Geometry geometry, Dictionary properties) { this.Geometry = geometry; this.Properties = properties; diff --git a/Elements/src/GeoJSON/FeatureCollection.cs b/Elements/src/GeoJSON/FeatureCollection.cs index 605b668ef..7b36b2927 100644 --- a/Elements/src/GeoJSON/FeatureCollection.cs +++ b/Elements/src/GeoJSON/FeatureCollection.cs @@ -1,5 +1,5 @@ using System.Collections.Generic; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.GeoJSON { @@ -12,18 +12,19 @@ public class FeatureCollection /// The type of the feature. /// [JsonProperty("type")] - public string Type{ + public string Type + { get { return GetType().Name; } } - + /// /// A collection of features. /// [JsonProperty("features")] - public IEnumerable Features{get;set;} + public IEnumerable Features { get; set; } /// /// Construct a feature collection. diff --git a/Elements/src/GeoJSON/Geometry.cs b/Elements/src/GeoJSON/Geometry.cs index 47b89feb5..984409fcc 100644 --- a/Elements/src/GeoJSON/Geometry.cs +++ b/Elements/src/GeoJSON/Geometry.cs @@ -1,5 +1,5 @@ using Elements.Geometry; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using Newtonsoft.Json.Linq; using System; diff --git a/Elements/src/GeoJSON/Position.cs b/Elements/src/GeoJSON/Position.cs index 7515d85fc..aae8de6c5 100644 --- a/Elements/src/GeoJSON/Position.cs +++ b/Elements/src/GeoJSON/Position.cs @@ -1,6 +1,6 @@ using Elements.Geometry; using Elements.Spatial; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.GeoJSON { diff --git a/Elements/src/GeometricElement.cs b/Elements/src/GeometricElement.cs index b60f35da9..ad570f015 100644 --- a/Elements/src/GeometricElement.cs +++ b/Elements/src/GeometricElement.cs @@ -5,7 +5,7 @@ using Elements.Geometry.Solids; using Elements.Interfaces; using Elements.Serialization.JSON; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements { diff --git a/Elements/src/Geometry/Arc.cs b/Elements/src/Geometry/Arc.cs index 28961a912..b3fef76fc 100644 --- a/Elements/src/Geometry/Arc.cs +++ b/Elements/src/Geometry/Arc.cs @@ -1,6 +1,6 @@ using Elements.Validators; using System; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using System.Collections.Generic; namespace Elements.Geometry diff --git a/Elements/src/Geometry/BBox3.cs b/Elements/src/Geometry/BBox3.cs index ab257d6b6..067573b04 100644 --- a/Elements/src/Geometry/BBox3.cs +++ b/Elements/src/Geometry/BBox3.cs @@ -1,5 +1,5 @@ using Elements.Validators; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using System.Collections.Generic; using System.Linq; diff --git a/Elements/src/Geometry/Box.cs b/Elements/src/Geometry/Box.cs index a27727d53..44e5ceff6 100644 --- a/Elements/src/Geometry/Box.cs +++ b/Elements/src/Geometry/Box.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using System.Linq; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Geometry { diff --git a/Elements/src/Geometry/Circle.cs b/Elements/src/Geometry/Circle.cs index 46805a5e9..696bd3e58 100644 --- a/Elements/src/Geometry/Circle.cs +++ b/Elements/src/Geometry/Circle.cs @@ -1,4 +1,4 @@ -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Geometry { diff --git a/Elements/src/Geometry/Color.cs b/Elements/src/Geometry/Color.cs index 5569e21d4..e567fc1cd 100644 --- a/Elements/src/Geometry/Color.cs +++ b/Elements/src/Geometry/Color.cs @@ -1,5 +1,5 @@ using Elements.Validators; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using System; using System.Globalization; diff --git a/Elements/src/Geometry/Curve.cs b/Elements/src/Geometry/Curve.cs index ccb1281bf..bcef6ca69 100644 --- a/Elements/src/Geometry/Curve.cs +++ b/Elements/src/Geometry/Curve.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using Elements.Geometry.Interfaces; using Elements.Serialization.JSON; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Geometry { diff --git a/Elements/src/Geometry/Line.cs b/Elements/src/Geometry/Line.cs index eb3079c9e..cc4aa9e19 100644 --- a/Elements/src/Geometry/Line.cs +++ b/Elements/src/Geometry/Line.cs @@ -4,7 +4,7 @@ using System; using System.Collections.Generic; using System.Linq; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Geometry { diff --git a/Elements/src/Geometry/Matrix.cs b/Elements/src/Geometry/Matrix.cs index 02f77d7fc..91ad37547 100644 --- a/Elements/src/Geometry/Matrix.cs +++ b/Elements/src/Geometry/Matrix.cs @@ -1,6 +1,6 @@ using Elements.Validators; using System; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Geometry { diff --git a/Elements/src/Geometry/Mesh.cs b/Elements/src/Geometry/Mesh.cs index c2ac78b1b..c1fa3ab77 100644 --- a/Elements/src/Geometry/Mesh.cs +++ b/Elements/src/Geometry/Mesh.cs @@ -1,6 +1,6 @@ using Elements.Serialization.JSON; using LibTessDotNet.Double; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using Octree; using System; using System.Collections.Generic; diff --git a/Elements/src/Geometry/Plane.cs b/Elements/src/Geometry/Plane.cs index 7e19c4d20..39eb6c2aa 100644 --- a/Elements/src/Geometry/Plane.cs +++ b/Elements/src/Geometry/Plane.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; using Elements.Validators; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Geometry { diff --git a/Elements/src/Geometry/Polygon.cs b/Elements/src/Geometry/Polygon.cs index 26e697cfa..ad677ac65 100644 --- a/Elements/src/Geometry/Polygon.cs +++ b/Elements/src/Geometry/Polygon.cs @@ -3,7 +3,7 @@ using Elements.Spatial; using Elements.Validators; using LibTessDotNet.Double; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using System; using System.Collections.Generic; using System.Linq; diff --git a/Elements/src/Geometry/Polyline.cs b/Elements/src/Geometry/Polyline.cs index 267e24ca1..f5290129e 100644 --- a/Elements/src/Geometry/Polyline.cs +++ b/Elements/src/Geometry/Polyline.cs @@ -1,4 +1,4 @@ -using Newtonsoft.Json; +using System.Text.Json.Serialization; using System; using System.Collections.Generic; using System.Linq; diff --git a/Elements/src/Geometry/Profile.cs b/Elements/src/Geometry/Profile.cs index 140f06269..f9cac6e7f 100644 --- a/Elements/src/Geometry/Profile.cs +++ b/Elements/src/Geometry/Profile.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; using ClipperLib; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Geometry { diff --git a/Elements/src/Geometry/Profiles/CProfile.cs b/Elements/src/Geometry/Profiles/CProfile.cs index 6437fe20e..ff623a3fa 100644 --- a/Elements/src/Geometry/Profiles/CProfile.cs +++ b/Elements/src/Geometry/Profiles/CProfile.cs @@ -1,7 +1,7 @@ #pragma warning disable CS1591 using System; using System.Collections.Generic; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Geometry.Profiles { diff --git a/Elements/src/Geometry/Profiles/HSSPipeProfile.cs b/Elements/src/Geometry/Profiles/HSSPipeProfile.cs index 7626208ec..73cfbe522 100644 --- a/Elements/src/Geometry/Profiles/HSSPipeProfile.cs +++ b/Elements/src/Geometry/Profiles/HSSPipeProfile.cs @@ -1,6 +1,6 @@ #pragma warning disable CS1591 using System; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Geometry.Profiles { diff --git a/Elements/src/Geometry/Profiles/HSSProfile.cs b/Elements/src/Geometry/Profiles/HSSProfile.cs index a7d30b9b2..11a2f56e9 100644 --- a/Elements/src/Geometry/Profiles/HSSProfile.cs +++ b/Elements/src/Geometry/Profiles/HSSProfile.cs @@ -1,7 +1,7 @@ #pragma warning disable CS1591 using System; using System.Collections.Generic; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Geometry.Profiles { diff --git a/Elements/src/Geometry/Profiles/LProfile.cs b/Elements/src/Geometry/Profiles/LProfile.cs index fd70f55c1..39a80230c 100644 --- a/Elements/src/Geometry/Profiles/LProfile.cs +++ b/Elements/src/Geometry/Profiles/LProfile.cs @@ -2,7 +2,7 @@ using System; using System.Collections.Generic; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Geometry.Profiles { diff --git a/Elements/src/Geometry/Profiles/MCProfile.cs b/Elements/src/Geometry/Profiles/MCProfile.cs index b2eeeb0f2..586b35414 100644 --- a/Elements/src/Geometry/Profiles/MCProfile.cs +++ b/Elements/src/Geometry/Profiles/MCProfile.cs @@ -1,7 +1,7 @@ #pragma warning disable CS1591 using System; using System.Collections.Generic; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Geometry.Profiles { diff --git a/Elements/src/Geometry/Profiles/ParametricProfile.cs b/Elements/src/Geometry/Profiles/ParametricProfile.cs index e3248fcac..294b43f11 100644 --- a/Elements/src/Geometry/Profiles/ParametricProfile.cs +++ b/Elements/src/Geometry/Profiles/ParametricProfile.cs @@ -5,7 +5,7 @@ using System.Threading.Tasks; using Microsoft.CodeAnalysis.CSharp.Scripting; using Microsoft.CodeAnalysis.Scripting; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Geometry.Profiles { diff --git a/Elements/src/Geometry/Profiles/RHSProfile.cs b/Elements/src/Geometry/Profiles/RHSProfile.cs index 60e2362ba..22c351949 100644 --- a/Elements/src/Geometry/Profiles/RHSProfile.cs +++ b/Elements/src/Geometry/Profiles/RHSProfile.cs @@ -1,6 +1,6 @@ #pragma warning disable CS1591 using System; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Geometry.Profiles { diff --git a/Elements/src/Geometry/Profiles/SHSProfile.cs b/Elements/src/Geometry/Profiles/SHSProfile.cs index 06de6a280..3c7811928 100644 --- a/Elements/src/Geometry/Profiles/SHSProfile.cs +++ b/Elements/src/Geometry/Profiles/SHSProfile.cs @@ -1,5 +1,5 @@ using System; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Geometry.Profiles { diff --git a/Elements/src/Geometry/Profiles/STProfile.cs b/Elements/src/Geometry/Profiles/STProfile.cs index 9df7826c8..2acc8e8a6 100644 --- a/Elements/src/Geometry/Profiles/STProfile.cs +++ b/Elements/src/Geometry/Profiles/STProfile.cs @@ -1,7 +1,7 @@ #pragma warning disable CS1591 using System; using System.Collections.Generic; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Geometry.Profiles { diff --git a/Elements/src/Geometry/Profiles/VectorExpression.cs b/Elements/src/Geometry/Profiles/VectorExpression.cs index 951ff3a4e..bedee3170 100644 --- a/Elements/src/Geometry/Profiles/VectorExpression.cs +++ b/Elements/src/Geometry/Profiles/VectorExpression.cs @@ -1,4 +1,4 @@ -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Geometry.Profiles { diff --git a/Elements/src/Geometry/Profiles/WProfile.cs b/Elements/src/Geometry/Profiles/WProfile.cs index ab0bc755c..f6dd4d470 100644 --- a/Elements/src/Geometry/Profiles/WProfile.cs +++ b/Elements/src/Geometry/Profiles/WProfile.cs @@ -1,7 +1,7 @@ #pragma warning disable CS1591 using System; using System.Collections.Generic; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Geometry.Profiles { diff --git a/Elements/src/Geometry/Profiles/WTProfile.cs b/Elements/src/Geometry/Profiles/WTProfile.cs index f7e70bca2..d6b68e6af 100644 --- a/Elements/src/Geometry/Profiles/WTProfile.cs +++ b/Elements/src/Geometry/Profiles/WTProfile.cs @@ -1,7 +1,7 @@ #pragma warning disable CS1591 using System; using System.Collections.Generic; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Geometry.Profiles { diff --git a/Elements/src/Geometry/Profiles/WideFlangeProfile.cs b/Elements/src/Geometry/Profiles/WideFlangeProfile.cs index d59241311..8bd40febd 100644 --- a/Elements/src/Geometry/Profiles/WideFlangeProfile.cs +++ b/Elements/src/Geometry/Profiles/WideFlangeProfile.cs @@ -3,7 +3,7 @@ using System; using System.Collections.Generic; using Elements.Serialization.JSON; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Geometry.Profiles { diff --git a/Elements/src/Geometry/Representation.cs b/Elements/src/Geometry/Representation.cs index 0c87d0aa7..babeca465 100644 --- a/Elements/src/Geometry/Representation.cs +++ b/Elements/src/Geometry/Representation.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; using Elements.Geometry.Solids; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Geometry { diff --git a/Elements/src/Geometry/Solids/ConstructedSolid.cs b/Elements/src/Geometry/Solids/ConstructedSolid.cs index 46a412e71..fd2f7bd28 100644 --- a/Elements/src/Geometry/Solids/ConstructedSolid.cs +++ b/Elements/src/Geometry/Solids/ConstructedSolid.cs @@ -1,5 +1,5 @@ using Elements.Serialization.JSON; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Geometry.Solids { diff --git a/Elements/src/Geometry/Solids/Extrude.cs b/Elements/src/Geometry/Solids/Extrude.cs index 167d2b834..4218de03a 100644 --- a/Elements/src/Geometry/Solids/Extrude.cs +++ b/Elements/src/Geometry/Solids/Extrude.cs @@ -1,7 +1,7 @@ using System; using Elements.Serialization.JSON; using Elements.Validators; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Geometry.Solids { diff --git a/Elements/src/Geometry/Solids/Lamina.cs b/Elements/src/Geometry/Solids/Lamina.cs index b933fa592..ceba84eea 100644 --- a/Elements/src/Geometry/Solids/Lamina.cs +++ b/Elements/src/Geometry/Solids/Lamina.cs @@ -1,5 +1,5 @@ using System.Collections.Generic; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Geometry.Solids { diff --git a/Elements/src/Geometry/Solids/SolidOperation.cs b/Elements/src/Geometry/Solids/SolidOperation.cs index 1910bdc2b..92b03d7bd 100644 --- a/Elements/src/Geometry/Solids/SolidOperation.cs +++ b/Elements/src/Geometry/Solids/SolidOperation.cs @@ -1,5 +1,5 @@ using Elements.Serialization.JSON; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Geometry.Solids { diff --git a/Elements/src/Geometry/Solids/Sweep.cs b/Elements/src/Geometry/Solids/Sweep.cs index eb615e3fb..5ce453e05 100644 --- a/Elements/src/Geometry/Solids/Sweep.cs +++ b/Elements/src/Geometry/Solids/Sweep.cs @@ -1,6 +1,6 @@ using System; using Elements.Serialization.JSON; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Geometry.Solids { diff --git a/Elements/src/Geometry/Transform.cs b/Elements/src/Geometry/Transform.cs index cab259f9c..6ff531550 100644 --- a/Elements/src/Geometry/Transform.cs +++ b/Elements/src/Geometry/Transform.cs @@ -1,4 +1,4 @@ -using Newtonsoft.Json; +using System.Text.Json.Serialization; using System; using System.Collections.Generic; diff --git a/Elements/src/Geometry/Triangle.cs b/Elements/src/Geometry/Triangle.cs index c6f914f84..8034cb934 100644 --- a/Elements/src/Geometry/Triangle.cs +++ b/Elements/src/Geometry/Triangle.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Diagnostics; using LibTessDotNet.Double; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Geometry { diff --git a/Elements/src/Geometry/UV.cs b/Elements/src/Geometry/UV.cs index cff2dae21..06e41e0e7 100644 --- a/Elements/src/Geometry/UV.cs +++ b/Elements/src/Geometry/UV.cs @@ -1,4 +1,4 @@ -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Geometry { diff --git a/Elements/src/Geometry/Vector3.cs b/Elements/src/Geometry/Vector3.cs index 6b37cdc4c..150f0de2d 100644 --- a/Elements/src/Geometry/Vector3.cs +++ b/Elements/src/Geometry/Vector3.cs @@ -1,5 +1,5 @@ using Elements.Validators; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using System; using System.Collections.Generic; diff --git a/Elements/src/Geometry/Vertex.cs b/Elements/src/Geometry/Vertex.cs index 4b49ce89e..e736602e6 100644 --- a/Elements/src/Geometry/Vertex.cs +++ b/Elements/src/Geometry/Vertex.cs @@ -1,5 +1,5 @@ using System.Collections.Generic; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Geometry { diff --git a/Elements/src/GeometryReference.cs b/Elements/src/GeometryReference.cs index 79010ce2d..da205a2aa 100644 --- a/Elements/src/GeometryReference.cs +++ b/Elements/src/GeometryReference.cs @@ -1,5 +1,5 @@ using System.Collections.Generic; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements { diff --git a/Elements/src/Joist.cs b/Elements/src/Joist.cs index e7c004b1a..8bd61e9b7 100644 --- a/Elements/src/Joist.cs +++ b/Elements/src/Joist.cs @@ -6,7 +6,7 @@ using Elements.Geometry.Profiles; using Elements.Geometry.Solids; using Elements.Spatial; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements { diff --git a/Elements/src/Mass.cs b/Elements/src/Mass.cs index 8b935f9c9..10d06c54d 100644 --- a/Elements/src/Mass.cs +++ b/Elements/src/Mass.cs @@ -1,6 +1,6 @@ using Elements.Geometry; using Elements.Geometry.Solids; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using System; using System.Collections.Generic; diff --git a/Elements/src/Material.cs b/Elements/src/Material.cs index 56c724409..d95e1476d 100644 --- a/Elements/src/Material.cs +++ b/Elements/src/Material.cs @@ -3,7 +3,7 @@ using System.IO; using Elements.Geometry; using Elements.Validators; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements { diff --git a/Elements/src/Math/Domain1d.cs b/Elements/src/Math/Domain1d.cs index 79d1bb60c..691abe145 100644 --- a/Elements/src/Math/Domain1d.cs +++ b/Elements/src/Math/Domain1d.cs @@ -1,5 +1,5 @@ using System; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements { diff --git a/Elements/src/MeshElement.cs b/Elements/src/MeshElement.cs index 5d2617dc5..0f3e65f65 100644 --- a/Elements/src/MeshElement.cs +++ b/Elements/src/MeshElement.cs @@ -1,7 +1,7 @@ using System; using Elements.Geometry; using Elements.Geometry.Interfaces; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements { diff --git a/Elements/src/Model.cs b/Elements/src/Model.cs index 7d8ec521e..353060b92 100644 --- a/Elements/src/Model.cs +++ b/Elements/src/Model.cs @@ -6,7 +6,7 @@ using System.Linq; using System.Reflection; using System.Collections; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using Elements.Serialization.JSON; using Elements.Geometry; using Elements.Geometry.Solids; diff --git a/Elements/src/ModelArrows.cs b/Elements/src/ModelArrows.cs index e55707e25..4e94bd123 100644 --- a/Elements/src/ModelArrows.cs +++ b/Elements/src/ModelArrows.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; using Elements.Geometry; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements { diff --git a/Elements/src/ModelLines.cs b/Elements/src/ModelLines.cs index ff6694c2f..d2074059c 100644 --- a/Elements/src/ModelLines.cs +++ b/Elements/src/ModelLines.cs @@ -1,5 +1,5 @@ using Elements.Geometry; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using System; using System.Collections.Generic; using System.Text; diff --git a/Elements/src/ModelPoints.cs b/Elements/src/ModelPoints.cs index ebf6343e5..db576aead 100644 --- a/Elements/src/ModelPoints.cs +++ b/Elements/src/ModelPoints.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; using Elements.Geometry; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements { diff --git a/Elements/src/OpenCeiling.cs b/Elements/src/OpenCeiling.cs index d5cd70f40..b45662789 100644 --- a/Elements/src/OpenCeiling.cs +++ b/Elements/src/OpenCeiling.cs @@ -1,6 +1,6 @@ using Elements.Geometry; using Elements.Geometry.Solids; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using System; namespace Elements diff --git a/Elements/src/Opening.cs b/Elements/src/Opening.cs index a14e693b8..ab068cdcb 100644 --- a/Elements/src/Opening.cs +++ b/Elements/src/Opening.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using Elements.Geometry; using Elements.Geometry.Solids; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements { diff --git a/Elements/src/Serialization/JSON/JsonInheritanceConverter.cs b/Elements/src/Serialization/JSON/JsonInheritanceConverter.cs index 4f6cd7387..fa8cb0dc8 100644 --- a/Elements/src/Serialization/JSON/JsonInheritanceConverter.cs +++ b/Elements/src/Serialization/JSON/JsonInheritanceConverter.cs @@ -4,7 +4,7 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using Newtonsoft.Json.Linq; namespace Elements.Serialization.JSON diff --git a/Elements/src/Serialization/JSON/MeshConverter.cs b/Elements/src/Serialization/JSON/MeshConverter.cs index 8f1ebe3c8..977994244 100644 --- a/Elements/src/Serialization/JSON/MeshConverter.cs +++ b/Elements/src/Serialization/JSON/MeshConverter.cs @@ -4,7 +4,7 @@ using System.Collections.Generic; using System.Linq; using Elements.Geometry; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using Newtonsoft.Json.Linq; namespace Elements.Serialization.JSON diff --git a/Elements/src/Serialization/JSON/SolidConverter.cs b/Elements/src/Serialization/JSON/SolidConverter.cs index 472e2508e..1451a6a65 100644 --- a/Elements/src/Serialization/JSON/SolidConverter.cs +++ b/Elements/src/Serialization/JSON/SolidConverter.cs @@ -2,7 +2,7 @@ using Elements.Geometry.Solids; using System; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using Newtonsoft.Json.Linq; using System.Collections.Generic; using Elements.Geometry; diff --git a/Elements/src/SolidCeiling.cs b/Elements/src/SolidCeiling.cs index 357e6d3a7..01b74d56f 100644 --- a/Elements/src/SolidCeiling.cs +++ b/Elements/src/SolidCeiling.cs @@ -1,7 +1,7 @@ using Elements.Geometry; using Elements.Geometry.Solids; using Elements.Interfaces; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using System; using System.Collections.Generic; using System.Linq; diff --git a/Elements/src/Space.cs b/Elements/src/Space.cs index 16483940b..6bf4fb21d 100644 --- a/Elements/src/Space.cs +++ b/Elements/src/Space.cs @@ -1,7 +1,7 @@ using Elements.Geometry; using System; using Elements.Geometry.Solids; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using System.Collections.Generic; using System.Linq; diff --git a/Elements/src/Spatial/AdaptiveGrid/AdaptiveGrid.cs b/Elements/src/Spatial/AdaptiveGrid/AdaptiveGrid.cs index 5316f16d0..143da5862 100644 --- a/Elements/src/Spatial/AdaptiveGrid/AdaptiveGrid.cs +++ b/Elements/src/Spatial/AdaptiveGrid/AdaptiveGrid.cs @@ -1,5 +1,5 @@ using Elements.Geometry; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using System; using System.Collections.Generic; using System.Linq; diff --git a/Elements/src/Spatial/AdaptiveGrid/Vertex.cs b/Elements/src/Spatial/AdaptiveGrid/Vertex.cs index fc63149ac..6697f003e 100644 --- a/Elements/src/Spatial/AdaptiveGrid/Vertex.cs +++ b/Elements/src/Spatial/AdaptiveGrid/Vertex.cs @@ -1,5 +1,5 @@ using Elements.Geometry; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using System; using System.Collections.Generic; using System.Linq; diff --git a/Elements/src/Spatial/CellComplex/Cell.cs b/Elements/src/Spatial/CellComplex/Cell.cs index 4d990ebd5..e55d9d2a2 100644 --- a/Elements/src/Spatial/CellComplex/Cell.cs +++ b/Elements/src/Spatial/CellComplex/Cell.cs @@ -3,7 +3,7 @@ using System.Linq; using Elements.Geometry.Solids; using Elements.Geometry; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Spatial.CellComplex { diff --git a/Elements/src/Spatial/CellComplex/CellComplex.cs b/Elements/src/Spatial/CellComplex/CellComplex.cs index 958cd2463..4e2105b8a 100644 --- a/Elements/src/Spatial/CellComplex/CellComplex.cs +++ b/Elements/src/Spatial/CellComplex/CellComplex.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Linq; using Elements.Geometry; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Spatial.CellComplex { diff --git a/Elements/src/Spatial/CellComplex/ChildBase.cs b/Elements/src/Spatial/CellComplex/ChildBase.cs index 3803c92d6..6e65c4fd0 100644 --- a/Elements/src/Spatial/CellComplex/ChildBase.cs +++ b/Elements/src/Spatial/CellComplex/ChildBase.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using System.Linq; using Elements.Geometry; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using System; namespace Elements.Spatial.CellComplex diff --git a/Elements/src/Spatial/CellComplex/DirectedEdge.cs b/Elements/src/Spatial/CellComplex/DirectedEdge.cs index 0244a646a..1c987e17a 100644 --- a/Elements/src/Spatial/CellComplex/DirectedEdge.cs +++ b/Elements/src/Spatial/CellComplex/DirectedEdge.cs @@ -1,4 +1,4 @@ -using Newtonsoft.Json; +using System.Text.Json.Serialization; using System.Collections.Generic; using System.Linq; diff --git a/Elements/src/Spatial/CellComplex/Edge.cs b/Elements/src/Spatial/CellComplex/Edge.cs index 11b2ef06f..9546f3065 100644 --- a/Elements/src/Spatial/CellComplex/Edge.cs +++ b/Elements/src/Spatial/CellComplex/Edge.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using Elements.Geometry; namespace Elements.Spatial.CellComplex diff --git a/Elements/src/Spatial/CellComplex/Face.cs b/Elements/src/Spatial/CellComplex/Face.cs index a9d208283..cc0f19074 100644 --- a/Elements/src/Spatial/CellComplex/Face.cs +++ b/Elements/src/Spatial/CellComplex/Face.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using Elements.Geometry; namespace Elements.Spatial.CellComplex diff --git a/Elements/src/Spatial/CellComplex/Interfaces/IDistanceTo.cs b/Elements/src/Spatial/CellComplex/Interfaces/IDistanceTo.cs index a47006669..945aebdb9 100644 --- a/Elements/src/Spatial/CellComplex/Interfaces/IDistanceTo.cs +++ b/Elements/src/Spatial/CellComplex/Interfaces/IDistanceTo.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using System.Linq; using Elements.Geometry; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using System; namespace Elements.Spatial.CellComplex.Interfaces diff --git a/Elements/src/Spatial/CellComplex/Interfaces/IHasNeighbors.cs b/Elements/src/Spatial/CellComplex/Interfaces/IHasNeighbors.cs index 56b27bd65..629e5d433 100644 --- a/Elements/src/Spatial/CellComplex/Interfaces/IHasNeighbors.cs +++ b/Elements/src/Spatial/CellComplex/Interfaces/IHasNeighbors.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using System.Linq; using Elements.Geometry; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using System; namespace Elements.Spatial.CellComplex.Interfaces diff --git a/Elements/src/Spatial/CellComplex/Vertex.cs b/Elements/src/Spatial/CellComplex/Vertex.cs index 21999aa7e..e806ae130 100644 --- a/Elements/src/Spatial/CellComplex/Vertex.cs +++ b/Elements/src/Spatial/CellComplex/Vertex.cs @@ -1,6 +1,6 @@ using Elements.Geometry; using System.Collections.Generic; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using System.Linq; namespace Elements.Spatial.CellComplex diff --git a/Elements/src/Spatial/CellComplex/VertexBase.cs b/Elements/src/Spatial/CellComplex/VertexBase.cs index bbf60e543..407db34f2 100644 --- a/Elements/src/Spatial/CellComplex/VertexBase.cs +++ b/Elements/src/Spatial/CellComplex/VertexBase.cs @@ -1,5 +1,5 @@ using Elements.Geometry; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Spatial.CellComplex { diff --git a/Elements/src/Spatial/Grid1d.cs b/Elements/src/Spatial/Grid1d.cs index 7b43e5f2e..96d81c738 100644 --- a/Elements/src/Spatial/Grid1d.cs +++ b/Elements/src/Spatial/Grid1d.cs @@ -4,7 +4,7 @@ using System.Linq; using Elements.Geometry; using Elements.Serialization.JSON; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Spatial { diff --git a/Elements/src/Spatial/Grid2d.cs b/Elements/src/Spatial/Grid2d.cs index 649619a75..ce7937564 100644 --- a/Elements/src/Spatial/Grid2d.cs +++ b/Elements/src/Spatial/Grid2d.cs @@ -4,7 +4,7 @@ using Elements.Geometry; using Elements.Geometry.Interfaces; using Elements.Serialization.JSON; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Spatial { diff --git a/Elements/src/Symbol.cs b/Elements/src/Symbol.cs index c875e488d..a527e4449 100644 --- a/Elements/src/Symbol.cs +++ b/Elements/src/Symbol.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Net; using System.Threading.Tasks; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using Newtonsoft.Json.Linq; namespace Elements diff --git a/Elements/src/TiledCeiling.cs b/Elements/src/TiledCeiling.cs index f1cbb7dfa..62db62128 100644 --- a/Elements/src/TiledCeiling.cs +++ b/Elements/src/TiledCeiling.cs @@ -2,7 +2,7 @@ using Elements.Geometry.Solids; using Elements.Interfaces; using Elements.Spatial; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using System; using System.Collections.Generic; using System.Linq; diff --git a/Elements/src/Topography.cs b/Elements/src/Topography.cs index 4bf7228b6..37f7a1042 100644 --- a/Elements/src/Topography.cs +++ b/Elements/src/Topography.cs @@ -5,7 +5,7 @@ using Elements.Geometry.Interfaces; using Elements.Geometry.Solids; using LibTessDotNet.Double; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using Vertex = Elements.Geometry.Vertex; namespace Elements diff --git a/Elements/src/Wall.cs b/Elements/src/Wall.cs index 23c43b163..b04d6c3f4 100644 --- a/Elements/src/Wall.cs +++ b/Elements/src/Wall.cs @@ -1,7 +1,7 @@ using Elements.Geometry; using Elements.Geometry.Solids; using Elements.Interfaces; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using System; using System.Collections.Generic; diff --git a/Elements/src/WallByProfile.cs b/Elements/src/WallByProfile.cs index 670ea9505..3800ba8b0 100644 --- a/Elements/src/WallByProfile.cs +++ b/Elements/src/WallByProfile.cs @@ -3,7 +3,7 @@ using System.Linq; using Elements.Geometry; using Elements.Geometry.Solids; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements { diff --git a/Elements/test/BBox3Tests.cs b/Elements/test/BBox3Tests.cs index 389befd0d..f6832b64b 100644 --- a/Elements/test/BBox3Tests.cs +++ b/Elements/test/BBox3Tests.cs @@ -4,7 +4,7 @@ using Elements.Geometry; using Elements.Geometry.Profiles; using Elements.Geometry.Solids; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using Xunit; namespace Elements.Tests diff --git a/Elements/test/BoxTests.cs b/Elements/test/BoxTests.cs index aea0d7d4a..ea7ded5fa 100644 --- a/Elements/test/BoxTests.cs +++ b/Elements/test/BoxTests.cs @@ -4,7 +4,7 @@ using Elements.Geometry; using Elements.Geometry.Profiles; using Elements.Geometry.Solids; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using Xunit; namespace Elements.Tests diff --git a/Elements/test/ColorScaleTests.cs b/Elements/test/ColorScaleTests.cs index 3df86bf2c..cdac51b42 100644 --- a/Elements/test/ColorScaleTests.cs +++ b/Elements/test/ColorScaleTests.cs @@ -3,7 +3,7 @@ using Elements.Analysis; using Elements.Geometry; using Xunit; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Tests { diff --git a/Elements/test/ColorTests.cs b/Elements/test/ColorTests.cs index 4595a8d53..86758d16f 100644 --- a/Elements/test/ColorTests.cs +++ b/Elements/test/ColorTests.cs @@ -3,7 +3,7 @@ using Elements.Analysis; using Elements.Geometry; using Xunit; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Tests { diff --git a/Elements/test/CsgTests.cs b/Elements/test/CsgTests.cs index 67fe218c8..eb8dd74f9 100644 --- a/Elements/test/CsgTests.cs +++ b/Elements/test/CsgTests.cs @@ -7,7 +7,7 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using Elements.Geometry.Tessellation; namespace Elements.Tests diff --git a/Elements/test/ElementProxyTests.cs b/Elements/test/ElementProxyTests.cs index d0a37247d..7841210ba 100644 --- a/Elements/test/ElementProxyTests.cs +++ b/Elements/test/ElementProxyTests.cs @@ -1,6 +1,6 @@ using Elements.Spatial; using Xunit; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using Elements.Geometry; namespace Elements.Tests diff --git a/Elements/test/GeoJSONTests.cs b/Elements/test/GeoJSONTests.cs index 5724d2ce7..ebc18a1c5 100644 --- a/Elements/test/GeoJSONTests.cs +++ b/Elements/test/GeoJSONTests.cs @@ -1,14 +1,14 @@ using Elements.GeoJSON; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using System; using Xunit; using Line = Elements.GeoJSON.Line; namespace Elements.Tests { - + public class GeoJSONTests - { + { private const string feature = @" [ { @@ -70,19 +70,19 @@ public void Position_Serialize_Valid() [Fact] public void Point_Serialize_Valid() { - var p = new Point(new Position(10.0,5.0)); + var p = new Point(new Position(10.0, 5.0)); var json = JsonConvert.SerializeObject(p); var newP = JsonConvert.DeserializeObject(json); Assert.Equal("Point", newP.Type); - Assert.Equal(new Position(10.0,5.0), newP.Coordinates); + Assert.Equal(new Position(10.0, 5.0), newP.Coordinates); } [Fact] public void Line_Serialize_Valid() { - var a = new Position(0,0); - var b = new Position(5,5); - var l = new Line(new[]{a,b}); + var a = new Position(0, 0); + var b = new Position(5, 5); + var l = new Line(new[] { a, b }); var json = JsonConvert.SerializeObject(l); var newL = JsonConvert.DeserializeObject(json); Assert.Equal(a, newL.Coordinates[0]); @@ -93,10 +93,10 @@ public void Line_Serialize_Valid() [Fact] public void LineString_Serialize_Valid() { - var a = new Position(0,0); - var b = new Position(5,5); - var c = new Position(10,10); - var ls = new LineString(new[]{a,b,c}); + var a = new Position(0, 0); + var b = new Position(5, 5); + var c = new Position(10, 10); + var ls = new LineString(new[] { a, b, c }); var json = JsonConvert.SerializeObject(ls); var newLs = JsonConvert.DeserializeObject(json); Assert.Equal(a, newLs.Coordinates[0]); @@ -108,25 +108,26 @@ public void LineString_Serialize_Valid() [Fact] public void Polygon_Serialize_Valid() { - var a = new Position(0,0); - var b = new Position(5,5); - var c = new Position(10,10); - var p = new Polygon(new[]{new[]{a,b,c,a}}); + var a = new Position(0, 0); + var b = new Position(5, 5); + var c = new Position(10, 10); + var p = new Polygon(new[] { new[] { a, b, c, a } }); var json = JsonConvert.SerializeObject(p); - Assert.Throws(()=>{ + Assert.Throws(() => + { // End point coincidence test. - var pFail = new Polygon(new[]{new[]{a,b,c}}); + var pFail = new Polygon(new[] { new[] { a, b, c } }); }); } [Fact] public void MultiLineString_Serialize_Valid() { - var a = new Position(0,0); - var b = new Position(5,5); - var c = new Position(10,10); - var mls = new MultiLineString(new[]{new[]{a,b,c},new[]{c,b,a}}); + var a = new Position(0, 0); + var b = new Position(5, 5); + var c = new Position(10, 10); + var mls = new MultiLineString(new[] { new[] { a, b, c }, new[] { c, b, a } }); var json = JsonConvert.SerializeObject(mls); var newMls = JsonConvert.DeserializeObject(json); Assert.Equal(2, newMls.Coordinates.GetLength(0)); @@ -137,11 +138,11 @@ public void MultiLineString_Serialize_Valid() [Fact] public void FeatureCollection_SerializeValid() { - var p = new Point(new Position(0,0)); - var l = new Line(new []{new Position(0,0), new Position(10,10)}); - var f1 = new Feature(p,null); - var f2 = new Feature(l,null); - var fc = new FeatureCollection(new[]{f1,f2}); + var p = new Point(new Position(0, 0)); + var l = new Line(new[] { new Position(0, 0), new Position(10, 10) }); + var f1 = new Feature(p, null); + var f2 = new Feature(l, null); + var fc = new FeatureCollection(new[] { f1, f2 }); var json = JsonConvert.SerializeObject(fc); } diff --git a/Elements/test/GltfTests.cs b/Elements/test/GltfTests.cs index cd1ea508b..1e4f51e67 100644 --- a/Elements/test/GltfTests.cs +++ b/Elements/test/GltfTests.cs @@ -7,7 +7,7 @@ using glTFLoader.Schema; using System; using System.IO; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Tests { diff --git a/Elements/test/Grid1dTests.cs b/Elements/test/Grid1dTests.cs index 4fbc7132a..748ed3844 100644 --- a/Elements/test/Grid1dTests.cs +++ b/Elements/test/Grid1dTests.cs @@ -4,7 +4,7 @@ using Xunit; using Elements.Geometry; using System.Collections.Generic; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Tests { diff --git a/Elements/test/Grid2dElement.cs b/Elements/test/Grid2dElement.cs index ae645b4f4..9a55eb410 100644 --- a/Elements/test/Grid2dElement.cs +++ b/Elements/test/Grid2dElement.cs @@ -1,6 +1,6 @@ using Elements.Serialization.JSON; using Elements.Spatial; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements { diff --git a/Elements/test/Grid2dTests.cs b/Elements/test/Grid2dTests.cs index 112e87858..5ecd53f09 100644 --- a/Elements/test/Grid2dTests.cs +++ b/Elements/test/Grid2dTests.cs @@ -3,7 +3,7 @@ using System.Linq; using Elements.Spatial; using Xunit; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using Elements.Geometry; using System.Collections.Generic; diff --git a/Elements/test/HalfEdgeGraph2dTests.cs b/Elements/test/HalfEdgeGraph2dTests.cs index c0eb7f38a..4fd1eb050 100644 --- a/Elements/test/HalfEdgeGraph2dTests.cs +++ b/Elements/test/HalfEdgeGraph2dTests.cs @@ -6,7 +6,7 @@ using Elements.Spatial; using Elements.Serialization.JSON; using System.IO; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Tests { diff --git a/Elements/test/LineTests.cs b/Elements/test/LineTests.cs index 36ee1fea2..41fd1b9cb 100644 --- a/Elements/test/LineTests.cs +++ b/Elements/test/LineTests.cs @@ -3,7 +3,7 @@ using System.IO; using System.Linq; using Elements.Tests; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using Xunit; namespace Elements.Geometry.Tests diff --git a/Elements/test/MeshTests.cs b/Elements/test/MeshTests.cs index 85c18175d..a73b0ea96 100644 --- a/Elements/test/MeshTests.cs +++ b/Elements/test/MeshTests.cs @@ -2,7 +2,7 @@ using Elements.Geometry; using Elements.Geometry.Solids; using Elements.Serialization.JSON; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using Xunit; namespace Elements.Tests diff --git a/Elements/test/ModelTests.cs b/Elements/test/ModelTests.cs index 012ec12e5..77e888735 100644 --- a/Elements/test/ModelTests.cs +++ b/Elements/test/ModelTests.cs @@ -5,7 +5,7 @@ using Elements.Serialization.glTF; using System.Collections.Generic; using Elements.Generate; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using Elements.Geometry.Solids; using System.Linq; using Xunit.Abstractions; diff --git a/Elements/test/PolygonTests.cs b/Elements/test/PolygonTests.cs index 975d113f3..baf45ad16 100644 --- a/Elements/test/PolygonTests.cs +++ b/Elements/test/PolygonTests.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using Xunit; using Xunit.Abstractions; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using Elements.Tests; using System.IO; using System.Diagnostics; diff --git a/Elements/test/ProfileTests.cs b/Elements/test/ProfileTests.cs index 9f87edaf3..3a6767c13 100644 --- a/Elements/test/ProfileTests.cs +++ b/Elements/test/ProfileTests.cs @@ -6,7 +6,7 @@ using Elements.Spatial; using Elements.Serialization.JSON; using System.IO; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Elements.Tests { @@ -157,7 +157,7 @@ public void ProfileComplexUnionAll() new Vector3(73.8654, 42.1189) })); var unions = Geometry.Profile.UnionAll(new[] { - profile1, profile2, profile3, profile4, profile5, + profile1, profile2, profile3, profile4, profile5, profile6, profile7, profile8, profile9, profile10 }); Assert.Single(unions); var union = unions.First(); diff --git a/Elements/test/SolidTests.cs b/Elements/test/SolidTests.cs index dbbcdbe63..83706c19c 100644 --- a/Elements/test/SolidTests.cs +++ b/Elements/test/SolidTests.cs @@ -2,7 +2,7 @@ using Elements.Geometry; using Elements.Geometry.Solids; using Elements.Geometry.Profiles; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using Xunit.Abstractions; using System.Collections.Generic; using System; diff --git a/Elements/test/TopographyTests.cs b/Elements/test/TopographyTests.cs index a53876fbd..7700c5ffb 100644 --- a/Elements/test/TopographyTests.cs +++ b/Elements/test/TopographyTests.cs @@ -6,7 +6,7 @@ using Elements.Geometry; using Elements.Geometry.Solids; using Elements.Spatial; -using Newtonsoft.Json; +using System.Text.Json.Serialization; using SixLabors.ImageSharp; using SixLabors.ImageSharp.PixelFormats; using Xunit; From f8dd48ca50766b8166d3c499315f89d78b3642fe Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sat, 16 Apr 2022 14:13:46 -0700 Subject: [PATCH 025/150] Replace all JsonProperty with JsonPropertyName. --- .../src/Templates/Class.liquid | 2 +- Elements/src/ContentCatalog.cs | 4 ++-- Elements/src/ContentElement.cs | 10 ++++----- Elements/src/Element.cs | 4 ++-- Elements/src/ElementProxy.cs | 4 ++-- Elements/src/GeoJSON/Feature.cs | 8 +++---- Elements/src/GeoJSON/FeatureCollection.cs | 4 ++-- Elements/src/GeoJSON/Geometry.cs | 18 +++++++-------- Elements/src/GeoJSON/Position.cs | 4 ++-- Elements/src/GeometricElement.cs | 6 ++--- Elements/src/Geometry/Arc.cs | 8 +++---- Elements/src/Geometry/BBox3.cs | 4 ++-- Elements/src/Geometry/Color.cs | 8 +++---- Elements/src/Geometry/Line.cs | 4 ++-- Elements/src/Geometry/Matrix.cs | 2 +- Elements/src/Geometry/Mesh.cs | 4 ++-- Elements/src/Geometry/Plane.cs | 4 ++-- Elements/src/Geometry/Polyline.cs | 2 +- Elements/src/Geometry/Profile.cs | 4 ++-- Elements/src/Geometry/Representation.cs | 2 +- .../src/Geometry/Solids/ConstructedSolid.cs | 2 +- Elements/src/Geometry/Solids/Extrude.cs | 4 ++-- Elements/src/Geometry/Solids/Lamina.cs | 4 ++-- .../src/Geometry/Solids/SolidOperation.cs | 3 +-- Elements/src/Geometry/Solids/Sweep.cs | 8 +++---- Elements/src/Geometry/Transform.cs | 2 +- Elements/src/Geometry/Triangle.cs | 4 ++-- Elements/src/Geometry/UV.cs | 4 ++-- Elements/src/Geometry/Vector3.cs | 6 ++--- Elements/src/Geometry/Vertex.cs | 12 +++++----- Elements/src/GeometryReference.cs | 4 ++-- Elements/src/Material.cs | 22 +++++++++---------- Elements/src/Model.cs | 6 ++--- Elements/src/Spatial/Grid1d.cs | 6 ++--- Elements/src/Spatial/Grid2d.cs | 12 +++++----- Elements/src/Symbol.cs | 4 ++-- Elements/src/WallByProfile.cs | 6 ++--- Elements/test/Grid2dElement.cs | 2 +- Elements/test/MeshTests.cs | 2 +- 39 files changed, 109 insertions(+), 110 deletions(-) diff --git a/Elements.CodeGeneration/src/Templates/Class.liquid b/Elements.CodeGeneration/src/Templates/Class.liquid index 962884bb4..5824400eb 100644 --- a/Elements.CodeGeneration/src/Templates/Class.liquid +++ b/Elements.CodeGeneration/src/Templates/Class.liquid @@ -30,7 +30,7 @@ {% if property.HasDescription -%} /// {{ property.Description | csharpdocs }} {% endif -%} - [JsonProperty("{{ property.Name }}", Required = {{ property.JsonPropertyRequiredCode }}{% if property.IsStringEnumArray %}, ItemConverterType = typeof(Converters.StringEnumConverter){% endif %})] + [JsonPropertyName("{{ property.Name }}")] {% if property.RenderRequiredAttribute -%} [System.ComponentModel.DataAnnotations.Required{% if property.AllowEmptyStrings %}(AllowEmptyStrings = true){% endif %}] {% endif -%} diff --git a/Elements/src/ContentCatalog.cs b/Elements/src/ContentCatalog.cs index 52ff3f89b..3301fb9af 100644 --- a/Elements/src/ContentCatalog.cs +++ b/Elements/src/ContentCatalog.cs @@ -13,12 +13,12 @@ namespace Elements public class ContentCatalog : Element { /// The content elements in this catalog. - [JsonProperty("Content", Required = Required.Always)] + [JsonPropertyName("Content")] [System.ComponentModel.DataAnnotations.Required] public IList Content { get; set; } = new List(); /// An example arrangement of the elements contained in this catalog. - [JsonProperty("ReferenceConfiguration", Required = Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [JsonPropertyName("ReferenceConfiguration")] public IList ReferenceConfiguration { get; set; } /// diff --git a/Elements/src/ContentElement.cs b/Elements/src/ContentElement.cs index 6b40c3dfa..d968bfd1d 100644 --- a/Elements/src/ContentElement.cs +++ b/Elements/src/ContentElement.cs @@ -12,23 +12,23 @@ namespace Elements public class ContentElement : GeometricElement { /// The URI of the gltf for this element. - [JsonProperty("gltfLocation", Required = Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [JsonPropertyName("gltfLocation")] public string GltfLocation { get; set; } /// The bounding box of the content. - [JsonProperty("Bounding Box", Required = Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [JsonPropertyName("Bounding Box")] public BBox3 BoundingBox { get; set; } /// The scale needed to convert the gltf to meters. - [JsonProperty("Gltf Scale to Meters", Required = Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [JsonPropertyName("Gltf Scale to Meters")] public double GltfScaleToMeters { get; set; } /// A vector indicating the direction the source object was originally facing. - [JsonProperty("SourceDirection", Required = Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [JsonPropertyName("SourceDirection")] public Vector3 SourceDirection { get; set; } /// Alternate symbolic representations of the object. - [JsonProperty("Symbols", Required = Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [JsonPropertyName("Symbols")] public IList Symbols { get; set; } private System.Collections.Generic.IDictionary _additionalProperties = new System.Collections.Generic.Dictionary(); diff --git a/Elements/src/Element.cs b/Elements/src/Element.cs index fae007a9d..10786a1e9 100644 --- a/Elements/src/Element.cs +++ b/Elements/src/Element.cs @@ -32,7 +32,7 @@ public abstract class Element : System.ComponentModel.INotifyPropertyChanged } /// A unique id. - [JsonProperty("Id", Required = Required.Always)] + [JsonPropertyName("Id")] [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] public System.Guid Id { @@ -48,7 +48,7 @@ public System.Guid Id } /// A name. - [JsonProperty("Name", Required = Required.AllowNull)] + [JsonPropertyName("Name")] public string Name { get { return _name; } diff --git a/Elements/src/ElementProxy.cs b/Elements/src/ElementProxy.cs index de04fdc7c..37020b108 100644 --- a/Elements/src/ElementProxy.cs +++ b/Elements/src/ElementProxy.cs @@ -58,13 +58,13 @@ public class ElementProxy : Element where T : Element /// /// ID of element that this is a proxy for. /// - [JsonProperty("elementId")] + [JsonPropertyName("elementId")] public Guid ElementId { get; set; } /// /// Dependency string for the dependency that this element came from. /// - [JsonProperty("dependency")] + [JsonPropertyName("dependency")] public string Dependency { get; set; } /// diff --git a/Elements/src/GeoJSON/Feature.cs b/Elements/src/GeoJSON/Feature.cs index c11de43a3..fefe7a22c 100644 --- a/Elements/src/GeoJSON/Feature.cs +++ b/Elements/src/GeoJSON/Feature.cs @@ -11,7 +11,7 @@ public class Feature /// /// The type of the feature. /// - [JsonProperty("type")] + [JsonPropertyName("type")] public string Type { get @@ -23,20 +23,20 @@ public string Type /// /// All properties of the feature. /// - [JsonProperty("properties", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("properties")] public Dictionary Properties { get; set; } /// /// The geometry of the feature. /// - [JsonProperty("geometry")] + [JsonPropertyName("geometry")] [JsonConverter(typeof(GeometryConverter))] public Geometry Geometry { get; set; } /// /// The bounding box of the feature. /// - [JsonProperty("bbox", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("bbox")] public IEnumerable BBox { get; } /// diff --git a/Elements/src/GeoJSON/FeatureCollection.cs b/Elements/src/GeoJSON/FeatureCollection.cs index 7b36b2927..18dba00b8 100644 --- a/Elements/src/GeoJSON/FeatureCollection.cs +++ b/Elements/src/GeoJSON/FeatureCollection.cs @@ -11,7 +11,7 @@ public class FeatureCollection /// /// The type of the feature. /// - [JsonProperty("type")] + [JsonPropertyName("type")] public string Type { get @@ -23,7 +23,7 @@ public string Type /// /// A collection of features. /// - [JsonProperty("features")] + [JsonPropertyName("features")] public IEnumerable Features { get; set; } /// diff --git a/Elements/src/GeoJSON/Geometry.cs b/Elements/src/GeoJSON/Geometry.cs index 984409fcc..38fda3db7 100644 --- a/Elements/src/GeoJSON/Geometry.cs +++ b/Elements/src/GeoJSON/Geometry.cs @@ -15,7 +15,7 @@ public abstract class Geometry /// /// The type of the geometry. /// - [JsonProperty("type")] + [JsonPropertyName("type")] public virtual string Type { get { return GetType().Name; } @@ -30,7 +30,7 @@ public class Point : Geometry /// /// The coordinates of the geometry. /// - [JsonProperty("coordinates")] + [JsonPropertyName("coordinates")] public Position Coordinates { get; } /// @@ -56,7 +56,7 @@ public class Line : Geometry /// /// The coordinates of the geometry. /// - [JsonProperty("coordinates")] + [JsonPropertyName("coordinates")] public Position[] Coordinates { get; } /// @@ -82,7 +82,7 @@ public class MultiPoint : Geometry /// /// The coordinates of the geometry. /// - [JsonProperty("coordinates")] + [JsonPropertyName("coordinates")] public Position[] Coordinates { get; } /// @@ -108,7 +108,7 @@ public class LineString : Geometry /// /// The coordinates of the geometry. /// - [JsonProperty("coordinates")] + [JsonPropertyName("coordinates")] public Position[] Coordinates { get; } /// @@ -138,7 +138,7 @@ public class MultiLineString : Geometry /// /// The coordinates of the geometry. /// - [JsonProperty("coordinates")] + [JsonPropertyName("coordinates")] public Position[][] Coordinates { get; } /// @@ -163,7 +163,7 @@ public class Polygon : Geometry /// /// The coordinates of the geometry. /// - [JsonProperty("coordinates")] + [JsonPropertyName("coordinates")] public Position[][] Coordinates { get; } /// @@ -225,7 +225,7 @@ public class MultiPolygon : Geometry /// /// The coordinates of the geometry. /// - [JsonProperty("coordinates")] + [JsonPropertyName("coordinates")] public Position[][] Coordinates { get; } /// @@ -247,7 +247,7 @@ public MultiPolygon(Position[][] coordinates) /// public class GeometryCollection { - [JsonProperty("geometries")] + [JsonPropertyName("geometries")] Geometry[] Geometries { get; } /// diff --git a/Elements/src/GeoJSON/Position.cs b/Elements/src/GeoJSON/Position.cs index aae8de6c5..fbd6b45c3 100644 --- a/Elements/src/GeoJSON/Position.cs +++ b/Elements/src/GeoJSON/Position.cs @@ -11,11 +11,11 @@ namespace Elements.GeoJSON public class Position { /// The latitude in decimal degrees. - [JsonProperty("latitude", Required = Required.Always)] + [JsonPropertyName("latitude")] public double Latitude { get; set; } /// The longitude in decimal degrees. - [JsonProperty("longitude", Required = Required.Always)] + [JsonPropertyName("longitude")] public double Longitude { get; set; } /// diff --git a/Elements/src/GeometricElement.cs b/Elements/src/GeometricElement.cs index ad570f015..35279830f 100644 --- a/Elements/src/GeometricElement.cs +++ b/Elements/src/GeometricElement.cs @@ -16,7 +16,7 @@ namespace Elements public class GeometricElement : Element { /// The element's transform. - [JsonProperty("Transform", Required = Required.AllowNull)] + [JsonPropertyName("Transform")] public Transform Transform { get; set; } /// The element's material. @@ -25,11 +25,11 @@ public class GeometricElement : Element public Material Material { get; set; } /// The element's representation. - [JsonProperty("Representation", Required = Required.AllowNull)] + [JsonPropertyName("Representation")] public Representation Representation { get; set; } /// When true, this element will act as the base definition for element instances, and will not appear in visual output. - [JsonProperty("IsElementDefinition", Required = Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [JsonPropertyName("IsElementDefinition")] public bool IsElementDefinition { get; set; } = false; /// diff --git a/Elements/src/Geometry/Arc.cs b/Elements/src/Geometry/Arc.cs index b3fef76fc..f0541cb30 100644 --- a/Elements/src/Geometry/Arc.cs +++ b/Elements/src/Geometry/Arc.cs @@ -14,21 +14,21 @@ namespace Elements.Geometry public partial class Arc : Curve, IEquatable { /// The center of the arc. - [JsonProperty("Center", Required = Required.AllowNull)] + [JsonPropertyName("Center")] public Vector3 Center { get; set; } /// The radius of the arc. - [JsonProperty("Radius", Required = Required.Always)] + [JsonPropertyName("Radius")] [System.ComponentModel.DataAnnotations.Range(0.0D, double.MaxValue)] public double Radius { get; set; } /// The angle from 0.0, in degrees, at which the arc will start with respect to the positive X axis. - [JsonProperty("StartAngle", Required = Required.Always)] + [JsonPropertyName("StartAngle")] [System.ComponentModel.DataAnnotations.Range(0.0D, 360.0D)] public double StartAngle { get; set; } /// The angle from 0.0, in degrees, at which the arc will end with respect to the positive X axis. - [JsonProperty("EndAngle", Required = Required.Always)] + [JsonPropertyName("EndAngle")] [System.ComponentModel.DataAnnotations.Range(0.0D, 360.0D)] public double EndAngle { get; set; } diff --git a/Elements/src/Geometry/BBox3.cs b/Elements/src/Geometry/BBox3.cs index 067573b04..114b96629 100644 --- a/Elements/src/Geometry/BBox3.cs +++ b/Elements/src/Geometry/BBox3.cs @@ -12,11 +12,11 @@ namespace Elements.Geometry public struct BBox3 { /// The minimum extent of the bounding box. - [JsonProperty("Min", Required = Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [JsonPropertyName("Min")] public Vector3 Min { get; set; } /// The maximum extent of the bounding box. - [JsonProperty("Max", Required = Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [JsonPropertyName("Max")] public Vector3 Max { get; set; } /// diff --git a/Elements/src/Geometry/Color.cs b/Elements/src/Geometry/Color.cs index e567fc1cd..9e81bb714 100644 --- a/Elements/src/Geometry/Color.cs +++ b/Elements/src/Geometry/Color.cs @@ -9,22 +9,22 @@ namespace Elements.Geometry public struct Color : IEquatable { /// The red component of the color between 0.0 and 1.0. - [JsonProperty("Red", Required = Required.Always)] + [JsonPropertyName("Red")] [System.ComponentModel.DataAnnotations.Range(0.0D, 1.0D)] public double Red { get; set; } /// The green component of the color between 0.0 and 1.0. - [JsonProperty("Green", Required = Required.Always)] + [JsonPropertyName("Green")] [System.ComponentModel.DataAnnotations.Range(0.0D, 1.0D)] public double Green { get; set; } /// The blue component of the color between 0.0 and 1.0. - [JsonProperty("Blue", Required = Required.Always)] + [JsonPropertyName("Blue")] [System.ComponentModel.DataAnnotations.Range(0.0D, 1.0D)] public double Blue { get; set; } /// The alpha component of the color between 0.0 and 1.0. - [JsonProperty("Alpha", Required = Required.Always)] + [JsonPropertyName("Alpha")] [System.ComponentModel.DataAnnotations.Range(0.0D, 1.0D)] public double Alpha { get; set; } diff --git a/Elements/src/Geometry/Line.cs b/Elements/src/Geometry/Line.cs index cc4aa9e19..e777e4d16 100644 --- a/Elements/src/Geometry/Line.cs +++ b/Elements/src/Geometry/Line.cs @@ -17,11 +17,11 @@ namespace Elements.Geometry public class Line : Curve, IEquatable { /// The start of the line. - [JsonProperty("Start", Required = Required.AllowNull)] + [JsonPropertyName("Start")] public Vector3 Start { get; set; } /// The end of the line. - [JsonProperty("End", Required = Required.AllowNull)] + [JsonPropertyName("End")] public Vector3 End { get; set; } /// diff --git a/Elements/src/Geometry/Matrix.cs b/Elements/src/Geometry/Matrix.cs index 91ad37547..c2eb81a2e 100644 --- a/Elements/src/Geometry/Matrix.cs +++ b/Elements/src/Geometry/Matrix.cs @@ -12,7 +12,7 @@ namespace Elements.Geometry public partial class Matrix : IEquatable { /// The components of the matrix. - [JsonProperty("Components", Required = Required.Always)] + [JsonPropertyName("Components")] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.MinLength(12)] [System.ComponentModel.DataAnnotations.MaxLength(12)] diff --git a/Elements/src/Geometry/Mesh.cs b/Elements/src/Geometry/Mesh.cs index c1fa3ab77..0b17a2e6d 100644 --- a/Elements/src/Geometry/Mesh.cs +++ b/Elements/src/Geometry/Mesh.cs @@ -19,11 +19,11 @@ public partial class Mesh private PointOctree _octree = new PointOctree(100000, new Octree.Point(0f, 0f, 0f), (float)Vector3.EPSILON); /// The mesh' vertices. - [JsonProperty("Vertices", Required = Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [JsonPropertyName("Vertices")] public IList Vertices { get; set; } /// The mesh' triangles. - [JsonProperty("Triangles", Required = Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [JsonPropertyName("Triangles")] public IList Triangles { get; set; } /// diff --git a/Elements/src/Geometry/Plane.cs b/Elements/src/Geometry/Plane.cs index 39eb6c2aa..909e2ef2d 100644 --- a/Elements/src/Geometry/Plane.cs +++ b/Elements/src/Geometry/Plane.cs @@ -11,11 +11,11 @@ namespace Elements.Geometry public partial class Plane : IEquatable { /// The origin of the plane. - [JsonProperty("Origin", Required = Required.AllowNull)] + [JsonPropertyName("Origin")] public Vector3 Origin { get; set; } /// The normal of the plane. - [JsonProperty("Normal", Required = Required.AllowNull)] + [JsonPropertyName("Normal")] public Vector3 Normal { get; set; } /// diff --git a/Elements/src/Geometry/Polyline.cs b/Elements/src/Geometry/Polyline.cs index f5290129e..661011bb3 100644 --- a/Elements/src/Geometry/Polyline.cs +++ b/Elements/src/Geometry/Polyline.cs @@ -23,7 +23,7 @@ public class Polyline : Curve, IEquatable internal BBox3 _bounds; /// The vertices of the polygon. - [JsonProperty("Vertices", Required = Required.Always)] + [JsonPropertyName("Vertices")] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.MinLength(2)] public IList Vertices { get; set; } = new List(); diff --git a/Elements/src/Geometry/Profile.cs b/Elements/src/Geometry/Profile.cs index f9cac6e7f..13f1a6fda 100644 --- a/Elements/src/Geometry/Profile.cs +++ b/Elements/src/Geometry/Profile.cs @@ -13,11 +13,11 @@ namespace Elements.Geometry public class Profile : Element, IEquatable { /// The perimeter of the profile. - [JsonProperty("Perimeter", Required = Required.AllowNull)] + [JsonPropertyName("Perimeter", Required = Required.AllowNull)] public Polygon Perimeter { get; set; } /// A collection of Polygons representing voids in the profile. - [JsonProperty("Voids", Required = Required.AllowNull)] + [JsonPropertyName("Voids", Required = Required.AllowNull)] public IList Voids { get; set; } /// diff --git a/Elements/src/Geometry/Representation.cs b/Elements/src/Geometry/Representation.cs index babeca465..6877090e9 100644 --- a/Elements/src/Geometry/Representation.cs +++ b/Elements/src/Geometry/Representation.cs @@ -8,7 +8,7 @@ namespace Elements.Geometry public class Representation { /// A collection of solid operations. - [JsonProperty("SolidOperations", Required = Required.Always)] + [JsonPropertyName("SolidOperations")] [System.ComponentModel.DataAnnotations.Required] public IList SolidOperations { get; set; } = new List(); diff --git a/Elements/src/Geometry/Solids/ConstructedSolid.cs b/Elements/src/Geometry/Solids/ConstructedSolid.cs index fd2f7bd28..1e454aa8a 100644 --- a/Elements/src/Geometry/Solids/ConstructedSolid.cs +++ b/Elements/src/Geometry/Solids/ConstructedSolid.cs @@ -20,7 +20,7 @@ public ConstructedSolid(Solid solid, bool isVoid = false) : base(isVoid) // This is a hack to get the normally JsonIgnored // `Solid` property to serialize. - [JsonProperty("Solid")] + [JsonPropertyName("Solid")] [JsonConverter(typeof(SolidConverter))] internal Solid InternalSolid => base.Solid; } diff --git a/Elements/src/Geometry/Solids/Extrude.cs b/Elements/src/Geometry/Solids/Extrude.cs index 4218de03a..3bc676f2d 100644 --- a/Elements/src/Geometry/Solids/Extrude.cs +++ b/Elements/src/Geometry/Solids/Extrude.cs @@ -31,7 +31,7 @@ public Profile Profile } /// The height of the extrusion. - [JsonProperty("Height", Required = Required.Always)] + [JsonPropertyName("Height")] [System.ComponentModel.DataAnnotations.Range(0D, double.MaxValue)] public double Height { @@ -47,7 +47,7 @@ public double Height } /// The direction in which to extrude. - [JsonProperty("Direction", Required = Required.AllowNull)] + [JsonPropertyName("Direction")] public Vector3 Direction { get { return _direction; } diff --git a/Elements/src/Geometry/Solids/Lamina.cs b/Elements/src/Geometry/Solids/Lamina.cs index ceba84eea..76714de2f 100644 --- a/Elements/src/Geometry/Solids/Lamina.cs +++ b/Elements/src/Geometry/Solids/Lamina.cs @@ -12,7 +12,7 @@ public class Lamina : SolidOperation private IList _voids; /// The perimeter. - [JsonProperty("Perimeter", Required = Required.AllowNull)] + [JsonPropertyName("Perimeter")] public Polygon Perimeter { get { return _perimeter; } @@ -29,7 +29,7 @@ public Polygon Perimeter /// /// A collection of voids. /// - [JsonProperty("Voids", Required = Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [JsonPropertyName("Voids")] public IList Voids { get { return _voids; } diff --git a/Elements/src/Geometry/Solids/SolidOperation.cs b/Elements/src/Geometry/Solids/SolidOperation.cs index 92b03d7bd..83d5ce402 100644 --- a/Elements/src/Geometry/Solids/SolidOperation.cs +++ b/Elements/src/Geometry/Solids/SolidOperation.cs @@ -21,14 +21,13 @@ public abstract class SolidOperation /// The solid operation's solid. /// [JsonIgnore] - [System.Text.Json.Serialization.JsonIgnore] public Solid Solid { get { return _solid; } } /// Is the solid operation a void operation? - [JsonProperty("IsVoid", Required = Required.Always)] + [JsonPropertyName("IsVoid")] public bool IsVoid { get; set; } = false; /// diff --git a/Elements/src/Geometry/Solids/Sweep.cs b/Elements/src/Geometry/Solids/Sweep.cs index 5ce453e05..5fd23af7e 100644 --- a/Elements/src/Geometry/Solids/Sweep.cs +++ b/Elements/src/Geometry/Solids/Sweep.cs @@ -54,7 +54,7 @@ public Profile Profile } /// The curve along which the profile will be swept. - [JsonProperty("Curve", Required = Required.AllowNull)] + [JsonPropertyName("Curve")] public Curve Curve { get { return _curve; } @@ -69,7 +69,7 @@ public Curve Curve } /// The amount to set back the resulting solid from the start of the curve. - [JsonProperty("StartSetback", Required = Required.Always)] + [JsonPropertyName("StartSetback")] public double StartSetback { get { return _startSetback; } @@ -84,7 +84,7 @@ public double StartSetback } /// The amount to set back the resulting solid from the end of the curve. - [JsonProperty("EndSetback", Required = Required.Always)] + [JsonPropertyName("EndSetback")] public double EndSetback { get { return _endSetback; } @@ -99,7 +99,7 @@ public double EndSetback } /// The rotation of the profile around the sweep's curve. - [JsonProperty("ProfileRotation", Required = Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [JsonPropertyName("ProfileRotation")] public double ProfileRotation { get { return _profileRotation; } diff --git a/Elements/src/Geometry/Transform.cs b/Elements/src/Geometry/Transform.cs index 6ff531550..47135daac 100644 --- a/Elements/src/Geometry/Transform.cs +++ b/Elements/src/Geometry/Transform.cs @@ -37,7 +37,7 @@ public partial class Transform : IEquatable public Vector3 ZAxis => this.Matrix.ZAxis; /// The transform's matrix. - [JsonProperty("Matrix", Required = Required.Always)] + [JsonPropertyName("Matrix")] [System.ComponentModel.DataAnnotations.Required] public Matrix Matrix { get; set; } = new Matrix(); diff --git a/Elements/src/Geometry/Triangle.cs b/Elements/src/Geometry/Triangle.cs index 8034cb934..55e453608 100644 --- a/Elements/src/Geometry/Triangle.cs +++ b/Elements/src/Geometry/Triangle.cs @@ -12,12 +12,12 @@ namespace Elements.Geometry public class Triangle { /// The triangle's vertices. - [JsonProperty("Vertices", Required = Required.Always)] + [JsonPropertyName("Vertices")] [System.ComponentModel.DataAnnotations.Required] public IList Vertices { get; set; } = new List(); /// The triangle's normal. - [JsonProperty("Normal", Required = Required.AllowNull)] + [JsonPropertyName("Normal")] public Vector3 Normal { get; set; } /// diff --git a/Elements/src/Geometry/UV.cs b/Elements/src/Geometry/UV.cs index 06e41e0e7..13c38c384 100644 --- a/Elements/src/Geometry/UV.cs +++ b/Elements/src/Geometry/UV.cs @@ -8,11 +8,11 @@ namespace Elements.Geometry public struct UV { /// The U coordinate. - [JsonProperty("U", Required = Required.Always)] + [JsonPropertyName("U")] public double U { get; set; } /// The V coordinate. - [JsonProperty("V", Required = Required.Always)] + [JsonPropertyName("V")] public double V { get; set; } /// diff --git a/Elements/src/Geometry/Vector3.cs b/Elements/src/Geometry/Vector3.cs index 150f0de2d..bd0d9b611 100644 --- a/Elements/src/Geometry/Vector3.cs +++ b/Elements/src/Geometry/Vector3.cs @@ -48,15 +48,15 @@ public Vector3(double @x, double @y, double @z) } /// The X component of the vector. - [JsonProperty("X", Required = Required.Always)] + [JsonPropertyName("X")] public double X { get; set; } /// The Y component of the vector. - [JsonProperty("Y", Required = Required.Always)] + [JsonPropertyName("Y")] public double Y { get; set; } /// The Z component of the vector. - [JsonProperty("Z", Required = Required.Always)] + [JsonPropertyName("Z")] public double Z { get; set; } /// diff --git a/Elements/src/Geometry/Vertex.cs b/Elements/src/Geometry/Vertex.cs index e736602e6..0a1339fde 100644 --- a/Elements/src/Geometry/Vertex.cs +++ b/Elements/src/Geometry/Vertex.cs @@ -9,24 +9,24 @@ namespace Elements.Geometry public class Vertex { /// The vertex's position. - [JsonProperty("Position", Required = Required.AllowNull)] + [JsonPropertyName("Position")] public Vector3 Position { get; set; } /// The vertex's normal. - [JsonProperty("Normal", Required = Required.AllowNull)] + [JsonPropertyName("Normal")] public Vector3 Normal { get; set; } /// The vertex's color. - [JsonProperty("Color", Required = Required.Always)] + [JsonPropertyName("Color")] [System.ComponentModel.DataAnnotations.Required] public Color Color { get; set; } = new Color(); /// The index of the vertex within a mesh. - [JsonProperty("Index", Required = Required.Always)] + [JsonPropertyName("Index")] public int Index { get; set; } /// The vertex's texture coordinate. - [JsonProperty("UV", Required = Required.Always)] + [JsonPropertyName("UV")] [System.ComponentModel.DataAnnotations.Required] public UV UV { get; set; } = new UV(); @@ -53,7 +53,7 @@ public Vertex(Vector3 @position, Vector3 @normal, Color @color, int @index, UV @ // during serialization. /// The triangles associated with this vertex. - [JsonProperty("Triangles", Required = Required.Always)] + [JsonPropertyName("Triangles")] [System.ComponentModel.DataAnnotations.Required] [JsonIgnore] public IList Triangles { get; set; } = new List(); diff --git a/Elements/src/GeometryReference.cs b/Elements/src/GeometryReference.cs index da205a2aa..1c60d7467 100644 --- a/Elements/src/GeometryReference.cs +++ b/Elements/src/GeometryReference.cs @@ -8,11 +8,11 @@ namespace Elements public partial class GeometryReference { /// The URL where the referenced geometry is hosted. - [JsonProperty("GeometryUrl", Required = Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [JsonPropertyName("GeometryUrl")] public string GeometryUrl { get; set; } /// Any geometric data directly contained in this reference. - [JsonProperty("InternalGeometry", Required = Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [JsonPropertyName("InternalGeometry")] public IList InternalGeometry { get; set; } /// diff --git a/Elements/src/Material.cs b/Elements/src/Material.cs index d95e1476d..bac4ef50e 100644 --- a/Elements/src/Material.cs +++ b/Elements/src/Material.cs @@ -16,52 +16,52 @@ namespace Elements public class Material : Element { /// The material's color. - [JsonProperty("Color", Required = Required.Always)] + [JsonPropertyName("Color")] [System.ComponentModel.DataAnnotations.Required] public Color Color { get; set; } = new Color(); /// The specular factor between 0.0 and 1.0. - [JsonProperty("SpecularFactor", Required = Required.Always)] + [JsonPropertyName("SpecularFactor")] [System.ComponentModel.DataAnnotations.Range(0.0D, 1.0D)] public double SpecularFactor { get; set; } = 0.1D; /// The glossiness factor between 0.0 and 1.0. - [JsonProperty("GlossinessFactor", Required = Required.Always)] + [JsonPropertyName("GlossinessFactor")] [System.ComponentModel.DataAnnotations.Range(0.0D, 1.0D)] public double GlossinessFactor { get; set; } = 0.1D; /// Is this material affected by lights? - [JsonProperty("Unlit", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("Unlit")] public bool Unlit { get; set; } = false; /// A relative file path to an image file to be used as a texture. - [JsonProperty("Texture", Required = Required.Default, NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("Texture")] public string Texture { get; set; } /// Is this material to be rendered from both sides? - [JsonProperty("DoubleSided", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("DoubleSided")] public bool DoubleSided { get; set; } = false; /// Should the texture be repeated? The RepeatTexture property determines whether textures are clamped in the [0,0]->[1,1] range or repeat continuously. - [JsonProperty("RepeatTexture", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("RepeatTexture")] public bool RepeatTexture { get; set; } = true; /// A relative path to a jpg or png image file to be used as a normal texture. - [JsonProperty("NormalTexture", Required = Required.Default, NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("NormalTexture")] public string NormalTexture { get; set; } /// Should the texture colors be interpolated between pixels? If false, renders hard pixels in the texture rather than fading between adjacent pixels. - [JsonProperty("InterpolateTexture", Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("InterpolateTexture")] public bool InterpolateTexture { get; set; } = true; /// A relative path to a jpg or png image file to be used as an emissive texture. - [JsonProperty("EmissiveTexture", Required = Required.Default, NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("EmissiveTexture")] public string EmissiveTexture { get; set; } /// /// The scale, between 0.0 and 1.0, of the emissive texture's components. /// - [JsonProperty("EmissiveFactor", Required = Required.Default, NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("EmissiveFactor")] public double EmissiveFactor { get; set; } /// diff --git a/Elements/src/Model.cs b/Elements/src/Model.cs index 353060b92..7cc0cc908 100644 --- a/Elements/src/Model.cs +++ b/Elements/src/Model.cs @@ -23,16 +23,16 @@ namespace Elements public class Model { /// The origin of the model. - [JsonProperty("Origin", Required = Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [JsonPropertyName("Origin")] [Obsolete("Use Transform instead.")] public Position Origin { get; set; } /// The transform of the model. - [JsonProperty("Transform", Required = Required.AllowNull)] + [JsonPropertyName("Transform")] public Transform Transform { get; set; } /// A collection of Elements keyed by their identifiers. - [JsonProperty("Elements", Required = Required.Always)] + [JsonPropertyName("Elements")] [System.ComponentModel.DataAnnotations.Required] public System.Collections.Generic.IDictionary Elements { get; set; } = new System.Collections.Generic.Dictionary(); diff --git a/Elements/src/Spatial/Grid1d.cs b/Elements/src/Spatial/Grid1d.cs index 96d81c738..eaa4c4a98 100644 --- a/Elements/src/Spatial/Grid1d.cs +++ b/Elements/src/Spatial/Grid1d.cs @@ -28,7 +28,7 @@ public class Grid1d /// /// Child cells of this Grid. If null, this Grid is a complete cell with no subdivisions. /// - [JsonProperty("Cells", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("Cells")] public List Cells { get => cells; @@ -91,7 +91,7 @@ public Curve Curve // we have to maintain an internal curve domain because subsequent subdivisions of a grid // based on a curve retain the entire curve; this domain allows us to map from the subdivided // domain back to the original curve. - [JsonProperty("CurveDomain")] + [JsonPropertyName("CurveDomain")] internal readonly Domain1d curveDomain; // if this 1d grid is the axis of a 2d grid, this is where we store that reference. If not, it will be null @@ -101,7 +101,7 @@ public Curve Curve // is useful in serialization so we only store the base curve once. private Grid1d topLevelParentGrid; - [JsonProperty("TopLevelParentCurve", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("TopLevelParentCurve")] private Curve topLevelParentCurve { get diff --git a/Elements/src/Spatial/Grid2d.cs b/Elements/src/Spatial/Grid2d.cs index ce7937564..c214afb71 100644 --- a/Elements/src/Spatial/Grid2d.cs +++ b/Elements/src/Spatial/Grid2d.cs @@ -51,29 +51,29 @@ public string Type /// /// A transform from grid space to world space /// - [JsonProperty("FromGrid")] + [JsonPropertyName("FromGrid")] internal Transform fromGrid = new Transform(); /// /// A transform from world space to grid space /// - [JsonProperty("ToGrid")] + [JsonPropertyName("ToGrid")] internal Transform toGrid = new Transform(); - [JsonProperty("UDomainInternal")] + [JsonPropertyName("UDomainInternal")] private Domain1d UDomainInternal = new Domain1d(0, 0); - [JsonProperty("VDomainInternal")] + [JsonPropertyName("VDomainInternal")] private Domain1d VDomainInternal = new Domain1d(0, 0); /// /// Any boundary curves, transformed to grid space. /// - [JsonProperty("BoundariesInGridSpace", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("BoundariesInGridSpace")] private IList boundariesInGridSpace; private List> cells; - [JsonProperty("ModifiedChildCells", NullValueHandling = NullValueHandling.Ignore)] + [JsonPropertyName("ModifiedChildCells")] internal List ModifiedChildCells => GetModifiedChildCells(); // for serialization purposes, we store only those cells that are not a natural consequence of the U and V 1d grids composing this grid. diff --git a/Elements/src/Symbol.cs b/Elements/src/Symbol.cs index a527e4449..bd55e8943 100644 --- a/Elements/src/Symbol.cs +++ b/Elements/src/Symbol.cs @@ -17,11 +17,11 @@ public class Symbol /// /// The geometry of the symbol. /// - [JsonProperty("Geometry", Required = Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [JsonPropertyName("Geometry")] public GeometryReference Geometry { get; set; } /// A named camera position for this representation, indicating the direction from which the camera is looking (a top view looks from top down, a north view looks from north to south.) - [JsonProperty("CameraPosition", Required = Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [JsonPropertyName("CameraPosition")] [JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] public SymbolCameraPosition CameraPosition { get; set; } diff --git a/Elements/src/WallByProfile.cs b/Elements/src/WallByProfile.cs index 3800ba8b0..58ec5ffae 100644 --- a/Elements/src/WallByProfile.cs +++ b/Elements/src/WallByProfile.cs @@ -14,18 +14,18 @@ namespace Elements public class WallByProfile : Wall { /// The overall thickness of the Wall - [JsonProperty("Thickness", Required = Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [JsonPropertyName("Thickness")] public double Thickness { get; set; } /// /// The perimeter of the Wall's elevation. It is assumed to be in the same Plane as the Centerline, /// and will often be projected to that Plane during internal operations. /// - [JsonProperty("Perimeter", Required = Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [JsonPropertyName("Perimeter")] public Polygon Perimeter { get; set; } /// The Centerline of the wall - [JsonProperty("Centerline", Required = Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [JsonPropertyName("Centerline")] public Line Centerline { get; set; } /// diff --git a/Elements/test/Grid2dElement.cs b/Elements/test/Grid2dElement.cs index 9a55eb410..c815d8622 100644 --- a/Elements/test/Grid2dElement.cs +++ b/Elements/test/Grid2dElement.cs @@ -10,7 +10,7 @@ namespace Elements public partial class Grid2dElement : Element { /// contains a grid - [JsonProperty("Grid", Required = Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [JsonPropertyName("Grid")] public Grid2d Grid { get; set; } [JsonConstructor] diff --git a/Elements/test/MeshTests.cs b/Elements/test/MeshTests.cs index a73b0ea96..873df21c8 100644 --- a/Elements/test/MeshTests.cs +++ b/Elements/test/MeshTests.cs @@ -53,7 +53,7 @@ public InputsWithMesh(Mesh @mesh, string bucketName, string uploadsBucket, Dicti this.Mesh = @mesh; } - [JsonProperty("Mesh", Required = Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [JsonPropertyName("Mesh")] public Mesh Mesh { get; set; } } } From f7d69467ae7dffaa909a72a5d4cefd353f5bff5e Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sat, 16 Apr 2022 14:19:22 -0700 Subject: [PATCH 026/150] Replace inheritance converter with ElementConverter --- Elements/src/ContentCatalog.cs | 2 +- Elements/src/ContentElement.cs | 3 ++- Elements/src/GeometricElement.cs | 2 +- Elements/src/Geometry/BBox3.cs | 3 ++- Elements/src/Geometry/Curve.cs | 3 +-- Elements/src/Geometry/Solids/SolidOperation.cs | 3 +-- Elements/src/GeometryReference.cs | 3 ++- Elements/src/Spatial/Grid1d.cs | 3 +-- Elements/src/Spatial/Grid2d.cs | 3 +-- Elements/src/WallByProfile.cs | 3 ++- Elements/test/Grid2dElement.cs | 3 +-- 11 files changed, 15 insertions(+), 16 deletions(-) diff --git a/Elements/src/ContentCatalog.cs b/Elements/src/ContentCatalog.cs index 3301fb9af..0bcabcc35 100644 --- a/Elements/src/ContentCatalog.cs +++ b/Elements/src/ContentCatalog.cs @@ -9,7 +9,7 @@ namespace Elements /// /// A collection of content elements. /// - [JsonConverter(typeof(Elements.Serialization.JSON.JsonInheritanceConverter), "discriminator")] + [JsonConverter(typeof(ElementConverter))] public class ContentCatalog : Element { /// The content elements in this catalog. diff --git a/Elements/src/ContentElement.cs b/Elements/src/ContentElement.cs index d968bfd1d..27a412866 100644 --- a/Elements/src/ContentElement.cs +++ b/Elements/src/ContentElement.cs @@ -2,13 +2,14 @@ using Elements.Geometry; using Elements.Geometry.Solids; using System.Text.Json.Serialization; +using Elements.Serialization.JSON; namespace Elements { /// /// An element representing user content. /// - [JsonConverter(typeof(Elements.Serialization.JSON.JsonInheritanceConverter), "discriminator")] + [JsonConverter(typeof(ElementConverter))] public class ContentElement : GeometricElement { /// The URI of the gltf for this element. diff --git a/Elements/src/GeometricElement.cs b/Elements/src/GeometricElement.cs index 35279830f..89cb391f7 100644 --- a/Elements/src/GeometricElement.cs +++ b/Elements/src/GeometricElement.cs @@ -12,7 +12,7 @@ namespace Elements /// /// An element with a geometric representation. /// - [JsonConverter(typeof(Elements.Serialization.JSON.JsonInheritanceConverter), "discriminator")] + [JsonConverter(typeof(ElementConverter))] public class GeometricElement : Element { /// The element's transform. diff --git a/Elements/src/Geometry/BBox3.cs b/Elements/src/Geometry/BBox3.cs index 114b96629..b6b760dd5 100644 --- a/Elements/src/Geometry/BBox3.cs +++ b/Elements/src/Geometry/BBox3.cs @@ -2,13 +2,14 @@ using System.Text.Json.Serialization; using System.Collections.Generic; using System.Linq; +using Elements.Serialization.JSON; namespace Elements.Geometry { /// /// An axis-aligned bounding box. /// - [JsonConverter(typeof(Elements.Serialization.JSON.JsonInheritanceConverter), "discriminator")] + [JsonConverter(typeof(ElementConverter))] public struct BBox3 { /// The minimum extent of the bounding box. diff --git a/Elements/src/Geometry/Curve.cs b/Elements/src/Geometry/Curve.cs index bcef6ca69..4fad29a05 100644 --- a/Elements/src/Geometry/Curve.cs +++ b/Elements/src/Geometry/Curve.cs @@ -8,8 +8,7 @@ namespace Elements.Geometry /// /// The abstract base class for all curves. /// - [Newtonsoft.Json.JsonConverter(typeof(Elements.Serialization.JSON.JsonInheritanceConverter), "discriminator")] - [System.Text.Json.Serialization.JsonConverter(typeof(ElementConverter))] + [JsonConverter(typeof(ElementConverter))] public abstract partial class Curve : ICurve, ITransformable { /// diff --git a/Elements/src/Geometry/Solids/SolidOperation.cs b/Elements/src/Geometry/Solids/SolidOperation.cs index 83d5ce402..7822e95d7 100644 --- a/Elements/src/Geometry/Solids/SolidOperation.cs +++ b/Elements/src/Geometry/Solids/SolidOperation.cs @@ -6,8 +6,7 @@ namespace Elements.Geometry.Solids /// /// The base class for all operations which create solids. /// - [Newtonsoft.Json.JsonConverter(typeof(Elements.Serialization.JSON.JsonInheritanceConverter), "discriminator")] - [System.Text.Json.Serialization.JsonConverter(typeof(ElementConverter))] + [JsonConverter(typeof(ElementConverter))] public abstract class SolidOperation { internal Solid _solid; diff --git a/Elements/src/GeometryReference.cs b/Elements/src/GeometryReference.cs index 1c60d7467..08fb8f95b 100644 --- a/Elements/src/GeometryReference.cs +++ b/Elements/src/GeometryReference.cs @@ -1,10 +1,11 @@ using System.Collections.Generic; using System.Text.Json.Serialization; +using Elements.Serialization.JSON; namespace Elements { /// A reference to a model, hosted at a URL. - [JsonConverter(typeof(Elements.Serialization.JSON.JsonInheritanceConverter), "discriminator")] + [JsonConverter(typeof(ElementConverter))] public partial class GeometryReference { /// The URL where the referenced geometry is hosted. diff --git a/Elements/src/Spatial/Grid1d.cs b/Elements/src/Spatial/Grid1d.cs index eaa4c4a98..12e93d42a 100644 --- a/Elements/src/Spatial/Grid1d.cs +++ b/Elements/src/Spatial/Grid1d.cs @@ -14,8 +14,7 @@ namespace Elements.Spatial /// /// [!code-csharp[Main](../../Elements/test/Grid1dTests.cs?name=example)] /// - [Newtonsoft.Json.JsonConverter(typeof(Elements.Serialization.JSON.JsonInheritanceConverter), "discriminator")] - [System.Text.Json.Serialization.JsonConverter(typeof(ElementConverter))] + [JsonConverter(typeof(ElementConverter))] public class Grid1d { #region Properties diff --git a/Elements/src/Spatial/Grid2d.cs b/Elements/src/Spatial/Grid2d.cs index c214afb71..06266500a 100644 --- a/Elements/src/Spatial/Grid2d.cs +++ b/Elements/src/Spatial/Grid2d.cs @@ -14,8 +14,7 @@ namespace Elements.Spatial /// /// [!code-csharp[Main](../../Elements/test/Grid2dTests.cs?name=example)] /// - [Newtonsoft.Json.JsonConverter(typeof(Elements.Serialization.JSON.JsonInheritanceConverter), "discriminator")] - [System.Text.Json.Serialization.JsonConverter(typeof(ElementConverter))] + [JsonConverter(typeof(ElementConverter))] public class Grid2d { #region Properties diff --git a/Elements/src/WallByProfile.cs b/Elements/src/WallByProfile.cs index 58ec5ffae..8f54d8244 100644 --- a/Elements/src/WallByProfile.cs +++ b/Elements/src/WallByProfile.cs @@ -4,13 +4,14 @@ using Elements.Geometry; using Elements.Geometry.Solids; using System.Text.Json.Serialization; +using Elements.Serialization.JSON; namespace Elements { /// /// A wall drawn using the elevation profile /// - [JsonConverter(typeof(Elements.Serialization.JSON.JsonInheritanceConverter), "discriminator")] + [JsonConverter(typeof(ElementConverter))] public class WallByProfile : Wall { /// The overall thickness of the Wall diff --git a/Elements/test/Grid2dElement.cs b/Elements/test/Grid2dElement.cs index c815d8622..ad004fd49 100644 --- a/Elements/test/Grid2dElement.cs +++ b/Elements/test/Grid2dElement.cs @@ -5,8 +5,7 @@ namespace Elements { /// Just a test - [Newtonsoft.Json.JsonConverter(typeof(Elements.Serialization.JSON.JsonInheritanceConverter), "discriminator")] - [System.Text.Json.Serialization.JsonConverter(typeof(ElementConverter))] + [JsonConverter(typeof(ElementConverter))] public partial class Grid2dElement : Element { /// contains a grid From def903f025c617c35dccb9367f92905109059b45 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sat, 16 Apr 2022 14:24:57 -0700 Subject: [PATCH 027/150] Cleanup all JsonConstructor. --- Elements/src/Geometry/Polygon.cs | 3 +-- Elements/src/Geometry/Profile.cs | 3 +-- Elements/src/Geometry/Profiles/WideFlangeProfile.cs | 1 - Elements/src/Geometry/Representation.cs | 3 +-- Elements/src/Geometry/Solids/Extrude.cs | 3 +-- Elements/src/Geometry/Solids/Lamina.cs | 3 +-- Elements/src/Geometry/Solids/SolidOperation.cs | 3 +-- Elements/src/Geometry/Solids/Sweep.cs | 7 +++---- 8 files changed, 9 insertions(+), 17 deletions(-) diff --git a/Elements/src/Geometry/Polygon.cs b/Elements/src/Geometry/Polygon.cs index ad677ac65..3eef2e6d2 100644 --- a/Elements/src/Geometry/Polygon.cs +++ b/Elements/src/Geometry/Polygon.cs @@ -28,8 +28,7 @@ public partial class Polygon : Polyline /// Construct a polygon. /// /// A collection of vertex locations. - [Newtonsoft.Json.JsonConstructor] - [System.Text.Json.Serialization.JsonConstructor] + [JsonConstructor] public Polygon(IList @vertices) : base(vertices) { _plane = Plane(); diff --git a/Elements/src/Geometry/Profile.cs b/Elements/src/Geometry/Profile.cs index 13f1a6fda..1b4badcf7 100644 --- a/Elements/src/Geometry/Profile.cs +++ b/Elements/src/Geometry/Profile.cs @@ -33,8 +33,7 @@ internal Profile() { } /// A collection of voids in the profile. /// The id of the profile. /// The name of the profile. - [Newtonsoft.Json.JsonConstructor] - [System.Text.Json.Serialization.JsonConstructor] + [JsonConstructor] public Profile(Polygon @perimeter, IList @voids, Guid @id = default, string @name = null) : base(id, name) { diff --git a/Elements/src/Geometry/Profiles/WideFlangeProfile.cs b/Elements/src/Geometry/Profiles/WideFlangeProfile.cs index 8bd40febd..3e7f1a014 100644 --- a/Elements/src/Geometry/Profiles/WideFlangeProfile.cs +++ b/Elements/src/Geometry/Profiles/WideFlangeProfile.cs @@ -131,7 +131,6 @@ public class WideFlangeProfile : Profile /// /// [JsonConstructor] - [System.Text.Json.Serialization.JsonConstructor] public WideFlangeProfile(string name, Guid id, double bf = 0.1, diff --git a/Elements/src/Geometry/Representation.cs b/Elements/src/Geometry/Representation.cs index 6877090e9..8ae0926d8 100644 --- a/Elements/src/Geometry/Representation.cs +++ b/Elements/src/Geometry/Representation.cs @@ -16,8 +16,7 @@ public class Representation /// Construct a representation. /// /// A collection of solid operations. - [Newtonsoft.Json.JsonConstructor] - [System.Text.Json.Serialization.JsonConstructor] + [JsonConstructor] public Representation(IList @solidOperations) { this.SolidOperations = @solidOperations; diff --git a/Elements/src/Geometry/Solids/Extrude.cs b/Elements/src/Geometry/Solids/Extrude.cs index 3bc676f2d..d7be17eb4 100644 --- a/Elements/src/Geometry/Solids/Extrude.cs +++ b/Elements/src/Geometry/Solids/Extrude.cs @@ -68,8 +68,7 @@ public Vector3 Direction /// /// /// - [Newtonsoft.Json.JsonConstructor] - [System.Text.Json.Serialization.JsonConstructor] + [JsonConstructor] public Extrude(Profile @profile, double @height, Vector3 @direction, bool @isVoid) : base(isVoid) { diff --git a/Elements/src/Geometry/Solids/Lamina.cs b/Elements/src/Geometry/Solids/Lamina.cs index 76714de2f..79e6af4cb 100644 --- a/Elements/src/Geometry/Solids/Lamina.cs +++ b/Elements/src/Geometry/Solids/Lamina.cs @@ -49,8 +49,7 @@ public IList Voids /// /// /// - [Newtonsoft.Json.JsonConstructor] - [System.Text.Json.Serialization.JsonConstructor] + [JsonConstructor] public Lamina(Polygon @perimeter, IList @voids, bool @isVoid) : base(isVoid) { diff --git a/Elements/src/Geometry/Solids/SolidOperation.cs b/Elements/src/Geometry/Solids/SolidOperation.cs index 7822e95d7..4ebc395ed 100644 --- a/Elements/src/Geometry/Solids/SolidOperation.cs +++ b/Elements/src/Geometry/Solids/SolidOperation.cs @@ -33,8 +33,7 @@ public Solid Solid /// Construct a solid operation. /// /// - [Newtonsoft.Json.JsonConstructor] - [System.Text.Json.Serialization.JsonConstructor] + [JsonConstructor] public SolidOperation(bool @isVoid) { this.IsVoid = @isVoid; diff --git a/Elements/src/Geometry/Solids/Sweep.cs b/Elements/src/Geometry/Solids/Sweep.cs index 5fd23af7e..16ac29e1f 100644 --- a/Elements/src/Geometry/Solids/Sweep.cs +++ b/Elements/src/Geometry/Solids/Sweep.cs @@ -22,8 +22,7 @@ public partial class Sweep : SolidOperation, System.ComponentModel.INotifyProper /// /// /// - [Newtonsoft.Json.JsonConstructor] - [System.Text.Json.Serialization.JsonConstructor] + [JsonConstructor] public Sweep(Profile @profile, Curve @curve, double @startSetback, double @endSetback, double @profileRotation, bool @isVoid) : base(isVoid) { @@ -38,8 +37,8 @@ public Sweep(Profile @profile, Curve @curve, double @startSetback, double @endSe } /// The id of the profile to be swept along the curve. - [Newtonsoft.Json.JsonProperty("Profile", Required = Newtonsoft.Json.Required.AllowNull)] - [System.Text.Json.Serialization.JsonConverter(typeof(ElementConverter))] + [JsonPropertyName("Profile")] + [JsonConverter(typeof(ElementConverter))] public Profile Profile { get { return _profile; } From c300c7d1cecc838ac607b21b1e7721e61401366f Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sat, 16 Apr 2022 14:37:45 -0700 Subject: [PATCH 028/150] Convert private fields with JsonProperty. --- Elements/src/Analysis/ColorScale.cs | 7 +- .../src/Spatial/AdaptiveGrid/AdaptiveGrid.cs | 26 ++++---- .../src/Spatial/CellComplex/CellComplex.cs | 66 +++++++++---------- .../src/Spatial/CellComplex/DirectedEdge.cs | 5 +- Elements/src/Spatial/CellComplex/Face.cs | 18 ++--- 5 files changed, 59 insertions(+), 63 deletions(-) diff --git a/Elements/src/Analysis/ColorScale.cs b/Elements/src/Analysis/ColorScale.cs index b1981d3c2..ce8225f86 100644 --- a/Elements/src/Analysis/ColorScale.cs +++ b/Elements/src/Analysis/ColorScale.cs @@ -19,21 +19,18 @@ public class ColorScale /// /// The colors of the scale. /// - [JsonProperty] public List Colors { get; } = new List(); /// /// The domain of the scale /// - [JsonProperty] - private List Domains { get; } = null; + public List Domains { get; } = null; /// /// Whether this scale is chunked into discrete bands. /// If false, values will be returned in a smooth gradient. /// - [JsonProperty] - private Boolean Discrete { get; } = false; + public Boolean Discrete { get; } = false; /// /// Create a ColorScale from a list of colors. The scale will automatically have a domain from 0 to 1. diff --git a/Elements/src/Spatial/AdaptiveGrid/AdaptiveGrid.cs b/Elements/src/Spatial/AdaptiveGrid/AdaptiveGrid.cs index 143da5862..4540a08e2 100644 --- a/Elements/src/Spatial/AdaptiveGrid/AdaptiveGrid.cs +++ b/Elements/src/Spatial/AdaptiveGrid/AdaptiveGrid.cs @@ -26,14 +26,14 @@ public class AdaptiveGrid /// /// Vertices by ID. /// - [JsonProperty] - private Dictionary _vertices = new Dictionary(); + [JsonPropertyName("_vertices")] // TODO: Backwards serialization capability. Update to align with property name in future. + public Dictionary Vertices = new Dictionary(); /// /// Edges by ID. /// - [JsonProperty] - private Dictionary _edges = new Dictionary(); + [JsonPropertyName("_edges")] // TODO: Backwards serialization capability. Update to align with property name in future. + public Dictionary Edges = new Dictionary(); // See Edge.GetHash for how edges are identified as unique. private Dictionary _edgesLookup = new Dictionary(); @@ -261,7 +261,7 @@ public void SubtractBox(BBox3 box) /// public Vertex GetVertex(ulong vertexId) { - this._vertices.TryGetValue(vertexId, out var vertex); + this.Vertices.TryGetValue(vertexId, out var vertex); return vertex; } @@ -271,7 +271,7 @@ public Vertex GetVertex(ulong vertexId) /// public List GetVertices() { - return this._vertices.Values.ToList(); + return this.Vertices.Values.ToList(); } /// @@ -280,7 +280,7 @@ public List GetVertices() /// public List GetEdges() { - return this._edges.Values.ToList(); + return this.Edges.Values.ToList(); } /// @@ -466,7 +466,7 @@ public Edge AddEdge(ulong vertexId1, ulong vertexId2) edgeId = edge.Id; this._edgesLookup[hash] = edgeId; - this._edges.Add(edgeId, edge); + this.Edges.Add(edgeId, edge); this.GetVertex(edge.StartId).Edges.Add(edge); this.GetVertex(edge.EndId).Edges.Add(edge); @@ -476,7 +476,7 @@ public Edge AddEdge(ulong vertexId1, ulong vertexId2) } else { - this._edges.TryGetValue(edgeId, out var edge); + this.Edges.TryGetValue(edgeId, out var edge); return edge; } } @@ -511,7 +511,7 @@ public void RemoveEdge(Edge edge) { var hash = Edge.GetHash(new List { edge.StartId, edge.EndId }); this._edgesLookup.Remove(hash); - this._edges.Remove(edge.Id); + this.Edges.Remove(edge.Id); var startVertexEdges = this.GetVertex(edge.StartId).Edges; startVertexEdges.Remove(edge); @@ -545,7 +545,7 @@ private Vertex AddVertex(Vector3 point) id = this._vertexId; var vertex = new Vertex(id, point); zDict[point.Z] = id; - _vertices[id] = vertex; + Vertices[id] = vertex; this._vertexId++; } @@ -554,8 +554,8 @@ private Vertex AddVertex(Vector3 point) private void DeleteVertex(ulong id) { - var vertex = _vertices[id]; - _vertices.Remove(id); + var vertex = Vertices[id]; + Vertices.Remove(id); var zDict = GetAddressParent(_verticesLookup, vertex.Point, tolerance: Tolerance); if (zDict == null) { diff --git a/Elements/src/Spatial/CellComplex/CellComplex.cs b/Elements/src/Spatial/CellComplex/CellComplex.cs index 4e2105b8a..36769812b 100644 --- a/Elements/src/Spatial/CellComplex/CellComplex.cs +++ b/Elements/src/Spatial/CellComplex/CellComplex.cs @@ -35,38 +35,38 @@ public class CellComplex : Elements.Element /// /// Vertices by ID. /// - [JsonProperty] - private Dictionary _vertices = new Dictionary(); + [JsonPropertyName("_vertices")] // TODO: Backwards serialization capability. Update to align with property name in future. + public Dictionary Vertices = new Dictionary(); /// /// U or V directions by ID. /// - [JsonProperty] - private Dictionary _orientations = new Dictionary(); + [JsonPropertyName("_orientations")] // TODO: Backwards serialization capability. Update to align with property name in future. + public Dictionary Orientations = new Dictionary(); /// /// Edges by ID. /// - [JsonProperty] - private Dictionary _edges = new Dictionary(); + [JsonPropertyName("_edges")] // TODO: Backwards serialization capability. Update to align with property name in future. + public Dictionary Edges = new Dictionary(); /// /// DirectedEdges by ID. /// - [JsonProperty] - private Dictionary _directedEdges = new Dictionary(); + [JsonPropertyName("_directedEdges")] // TODO: Backwards serialization capability. Update to align with property name in future. + public Dictionary DirectedEdges = new Dictionary(); /// /// Faces by ID. /// - [JsonProperty] - private Dictionary _faces = new Dictionary(); + [JsonPropertyName("_faces")] // TODO: Backwards serialization capability. Update to align with property name in future. + public Dictionary Faces = new Dictionary(); /// /// Cells by ID. /// - [JsonProperty] - private Dictionary _cells = new Dictionary(); + [JsonPropertyName("_cells")] // TODO: Backwards serialization capability. Update to align with property name in future. + public Dictionary Cells = new Dictionary(); // Vertex lookup by x, y, z coordinate. private Dictionary>> _verticesLookup = new Dictionary>>(); @@ -257,14 +257,14 @@ private DirectedEdge AddDirectedEdge(Line line) /// Whether the cell was successfully added. Will be false if cellId already exists. private Boolean AddCell(ulong cellId, List faces, Face bottomFace, Face topFace, out Cell cell) { - if (this._cells.ContainsKey(cellId)) + if (this.Cells.ContainsKey(cellId)) { cell = null; return false; } cell = new Cell(this, cellId, faces, bottomFace, topFace); - this._cells.Add(cell.Id, cell); + this.Cells.Add(cell.Id, cell); foreach (var face in faces) { @@ -300,7 +300,7 @@ private Boolean AddFace(Polygon polygon, ulong idIfNew, Orientation u, Orientati face = new Face(this, idIfNew, directedEdges, u, v); faceId = face.Id; this._facesLookup.Add(hash, faceId); - this._faces.Add(faceId, face); + this.Faces.Add(faceId, face); foreach (var directedEdge in directedEdges) { @@ -312,7 +312,7 @@ private Boolean AddFace(Polygon polygon, ulong idIfNew, Orientation u, Orientati } else { - this._faces.TryGetValue(faceId, out face); + this.Faces.TryGetValue(faceId, out face); return false; } } @@ -341,7 +341,7 @@ private Boolean AddDirectedEdge(Edge edge, Boolean edgeTupleIsInOrder, ulong idI directedEdgeId = directedEdge.Id; directedEdgeDict.Add(edgeTupleIsInOrder, directedEdgeId); - this._directedEdges.Add(directedEdgeId, directedEdge); + this.DirectedEdges.Add(directedEdgeId, directedEdge); edge.DirectedEdges.Add(directedEdge); @@ -351,7 +351,7 @@ private Boolean AddDirectedEdge(Edge edge, Boolean edgeTupleIsInOrder, ulong idI } else { - this._directedEdges.TryGetValue(directedEdgeId, out directedEdge); + this.DirectedEdges.TryGetValue(directedEdgeId, out directedEdge); return false; } @@ -374,7 +374,7 @@ private Boolean AddEdge(List vertexIds, ulong idIfNew, out Edge edge) edgeId = edge.Id; this._edgesLookup[hash] = edgeId; - this._edges.Add(edgeId, edge); + this.Edges.Add(edgeId, edge); this.GetVertex(edge.StartVertexId).Edges.Add(edge); this.GetVertex(edge.EndVertexId).Edges.Add(edge); @@ -385,7 +385,7 @@ private Boolean AddEdge(List vertexIds, ulong idIfNew, out Edge edge) } else { - this._edges.TryGetValue(edgeId, out edge); + this.Edges.TryGetValue(edgeId, out edge); return false; } } @@ -401,7 +401,7 @@ private Dictionary GetVertexOrOrientationDictionary() where T : Ver { throw new Exception("Unsupported type provided, expected Vertex or Orientation"); } - return typeof(T) == typeof(Orientation) ? this._orientations as Dictionary : this._vertices as Dictionary; + return typeof(T) == typeof(Orientation) ? this.Orientations as Dictionary : this.Vertices as Dictionary; } /// @@ -496,7 +496,7 @@ private Boolean AddVertexOrOrientation(Vector3 point, ulong idIfNew, out ulon /// public Vertex GetVertex(ulong vertexId) { - this._vertices.TryGetValue(vertexId, out var vertex); + this.Vertices.TryGetValue(vertexId, out var vertex); return vertex; } @@ -506,7 +506,7 @@ public Vertex GetVertex(ulong vertexId) /// public List GetVertices() { - return this._vertices.Values.ToList(); + return this.Vertices.Values.ToList(); } /// @@ -520,7 +520,7 @@ public Orientation GetOrientation(ulong? orientationId) { return null; } - this._orientations.TryGetValue((ulong)orientationId, out var orientation); + this.Orientations.TryGetValue((ulong)orientationId, out var orientation); return orientation; } @@ -530,7 +530,7 @@ public Orientation GetOrientation(ulong? orientationId) /// internal List GetOrientations() { - return this._orientations.Values.ToList(); + return this.Orientations.Values.ToList(); } /// @@ -540,7 +540,7 @@ internal List GetOrientations() /// public Edge GetEdge(ulong edgeId) { - this._edges.TryGetValue(edgeId, out var edge); + this.Edges.TryGetValue(edgeId, out var edge); return edge; } @@ -550,7 +550,7 @@ public Edge GetEdge(ulong edgeId) /// public List GetEdges() { - return this._edges.Values.ToList(); + return this.Edges.Values.ToList(); } /// @@ -564,7 +564,7 @@ public Face GetFace(ulong? faceId) { return null; } - this._faces.TryGetValue((ulong)faceId, out var face); + this.Faces.TryGetValue((ulong)faceId, out var face); return face; } @@ -574,7 +574,7 @@ public Face GetFace(ulong? faceId) /// public List GetFaces() { - return this._faces.Values.ToList(); + return this.Faces.Values.ToList(); } /// @@ -584,7 +584,7 @@ public List GetFaces() /// public Cell GetCell(ulong cellId) { - this._cells.TryGetValue(cellId, out var cell); + this.Cells.TryGetValue(cellId, out var cell); return cell; } @@ -594,7 +594,7 @@ public Cell GetCell(ulong cellId) /// public List GetCells() { - return this._cells.Values.ToList(); + return this.Cells.Values.ToList(); } /// @@ -644,7 +644,7 @@ public Cell GetClosestCell(Vector3 point) /// internal DirectedEdge GetDirectedEdge(ulong directedEdgeId) { - this._directedEdges.TryGetValue(directedEdgeId, out var directedEdge); + this.DirectedEdges.TryGetValue(directedEdgeId, out var directedEdge); return directedEdge; } @@ -654,7 +654,7 @@ internal DirectedEdge GetDirectedEdge(ulong directedEdgeId) /// internal List GetDirectedEdges() { - return this._directedEdges.Values.ToList(); + return this.DirectedEdges.Values.ToList(); } /// diff --git a/Elements/src/Spatial/CellComplex/DirectedEdge.cs b/Elements/src/Spatial/CellComplex/DirectedEdge.cs index 1c987e17a..e5a25795e 100644 --- a/Elements/src/Spatial/CellComplex/DirectedEdge.cs +++ b/Elements/src/Spatial/CellComplex/DirectedEdge.cs @@ -10,13 +10,12 @@ namespace Elements.Spatial.CellComplex /// There is a maximum of two DirectedEdges per Edge. /// This class is completely internal and only used for utilities inside of CellComplex. /// - internal class DirectedEdge : EdgeBase + public class DirectedEdge : EdgeBase { /// /// ID of the associated, direction-agnostic Edge. /// - [JsonProperty] - internal ulong EdgeId; + public ulong EdgeId; /// /// The unique Faces that are associated with this DirectedEdge. diff --git a/Elements/src/Spatial/CellComplex/Face.cs b/Elements/src/Spatial/CellComplex/Face.cs index cc0f19074..5e5952594 100644 --- a/Elements/src/Spatial/CellComplex/Face.cs +++ b/Elements/src/Spatial/CellComplex/Face.cs @@ -19,14 +19,14 @@ public class Face : ChildBase, Interfaces.IHasNeighbors /// ID of U orientation. /// - [JsonProperty] - private ulong? _orientationUId; + [JsonPropertyName("_orientationUId")] // TODO: Backwards serialization capability. Update to align with property name in future. + public ulong? OrientationUId; /// /// ID of V orientation. /// - [JsonProperty] - private ulong? _orientationVId; + [JsonPropertyName("_orientationVId")] // TODO: Backwards serialization capability. Update to align with property name in future. + public ulong? OrientationVId; /// /// Cells that reference this Face. @@ -48,11 +48,11 @@ internal Face(CellComplex cellComplex, ulong id, List directedEdge this.DirectedEdgeIds = directedEdges.Select(ds => ds.Id).ToList(); if (u != null) { - this._orientationUId = u.Id; + this.OrientationUId = u.Id; } if (v != null) { - this._orientationVId = v.Id; + this.OrientationVId = v.Id; } } @@ -64,8 +64,8 @@ internal Face(ulong id, List directedEdgeIds, ulong? _orientationUId = nu { this.Id = id; this.DirectedEdgeIds = directedEdgeIds; - this._orientationUId = _orientationUId; - this._orientationVId = _orientationVId; + this.OrientationUId = _orientationUId; + this.OrientationVId = _orientationVId; } /// @@ -192,7 +192,7 @@ public Cell GetClosestCell(Vector3 point) /// public (Orientation U, Orientation V) GetOrientation() { - return (U: this.CellComplex.GetOrientation(this._orientationUId), V: this.CellComplex.GetOrientation(this._orientationVId)); + return (U: this.CellComplex.GetOrientation(this.OrientationUId), V: this.CellComplex.GetOrientation(this.OrientationVId)); } /// From 8a5ee2fa4d91ac435e753a673053502344cd4860 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sat, 16 Apr 2022 14:54:17 -0700 Subject: [PATCH 029/150] Allow existing converters to use newtonsoft. --- Elements/src/GeoJSON/GeometryConverter.cs | 55 +++++++++++++++++++ Elements/src/GeoJSON/PositionConverter.cs | 34 ++++++++++++ .../JSON/JsonInheritanceConverter.cs | 2 +- .../src/Serialization/JSON/MeshConverter.cs | 2 +- .../src/Serialization/JSON/SolidConverter.cs | 2 +- 5 files changed, 92 insertions(+), 3 deletions(-) create mode 100644 Elements/src/GeoJSON/GeometryConverter.cs create mode 100644 Elements/src/GeoJSON/PositionConverter.cs diff --git a/Elements/src/GeoJSON/GeometryConverter.cs b/Elements/src/GeoJSON/GeometryConverter.cs new file mode 100644 index 000000000..8470be071 --- /dev/null +++ b/Elements/src/GeoJSON/GeometryConverter.cs @@ -0,0 +1,55 @@ +using System; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace Elements.GeoJSON +{ + public class GeometryConverter : JsonConverter + { + public override bool CanConvert(Type objectType) + { + if (typeof(Geometry).IsAssignableFrom(objectType)) + { + return true; + } + return false; + } + + public override bool CanWrite + { + get { return false; } + } + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + var jsonObject = JObject.Load(reader); + string typeName = (jsonObject["type"]).ToString(); + switch (typeName) + { + case "Point": + return jsonObject.ToObject(); + case "Line": + return jsonObject.ToObject(); + case "MultiPoint": + return jsonObject.ToObject(); + case "LineString": + return jsonObject.ToObject(); + case "MultiLineString": + return jsonObject.ToObject(); + case "Polygon": + return jsonObject.ToObject(); + case "MultiPolygon": + return jsonObject.ToObject(); + case "GeometryCollection": + return jsonObject.ToObject(); + default: + throw new Exception($"The type found in the GeoJSON, {typeName}, could not be resolved."); + } + } + + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + throw new NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/Elements/src/GeoJSON/PositionConverter.cs b/Elements/src/GeoJSON/PositionConverter.cs new file mode 100644 index 000000000..81bad484d --- /dev/null +++ b/Elements/src/GeoJSON/PositionConverter.cs @@ -0,0 +1,34 @@ +using System; +using Newtonsoft.Json; + +namespace Elements.GeoJSON +{ + public class PositionConverter : JsonConverter + { + public override bool CanConvert(Type objectType) + { + if (objectType == typeof(Position)) + { + return true; + } + return false; + } + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + var lon = reader.ReadAsDouble(); + var lat = reader.ReadAsDouble(); + reader.Read(); + return new Position(lat.Value, lon.Value); + } + + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + var p = (Position)value; + writer.WriteStartArray(); + writer.WriteValue(p.Longitude); + writer.WriteValue(p.Latitude); + writer.WriteEndArray(); + } + } +} \ No newline at end of file diff --git a/Elements/src/Serialization/JSON/JsonInheritanceConverter.cs b/Elements/src/Serialization/JSON/JsonInheritanceConverter.cs index fa8cb0dc8..4f6cd7387 100644 --- a/Elements/src/Serialization/JSON/JsonInheritanceConverter.cs +++ b/Elements/src/Serialization/JSON/JsonInheritanceConverter.cs @@ -4,7 +4,7 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; -using System.Text.Json.Serialization; +using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace Elements.Serialization.JSON diff --git a/Elements/src/Serialization/JSON/MeshConverter.cs b/Elements/src/Serialization/JSON/MeshConverter.cs index 977994244..a6f19ec09 100644 --- a/Elements/src/Serialization/JSON/MeshConverter.cs +++ b/Elements/src/Serialization/JSON/MeshConverter.cs @@ -4,8 +4,8 @@ using System.Collections.Generic; using System.Linq; using Elements.Geometry; -using System.Text.Json.Serialization; using Newtonsoft.Json.Linq; +using Newtonsoft.Json; namespace Elements.Serialization.JSON { diff --git a/Elements/src/Serialization/JSON/SolidConverter.cs b/Elements/src/Serialization/JSON/SolidConverter.cs index 1451a6a65..84f87f116 100644 --- a/Elements/src/Serialization/JSON/SolidConverter.cs +++ b/Elements/src/Serialization/JSON/SolidConverter.cs @@ -2,12 +2,12 @@ using Elements.Geometry.Solids; using System; -using System.Text.Json.Serialization; using Newtonsoft.Json.Linq; using System.Collections.Generic; using Elements.Geometry; using System.Linq; using System.Reflection; +using Newtonsoft.Json; namespace Elements.Serialization.JSON { From 3179f824f5a4258b06534f8752006026bc092d07 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sat, 16 Apr 2022 14:54:29 -0700 Subject: [PATCH 030/150] Cleanup attributes in favor of system.text.json. --- Elements/src/Element.cs | 3 +- Elements/src/GeoJSON/Geometry.cs | 80 ------------------------- Elements/src/GeometricElement.cs | 4 +- Elements/src/Geometry/Profile.cs | 4 +- Elements/src/Geometry/Solids/Extrude.cs | 4 +- Elements/src/Model.cs | 6 +- Elements/src/StructuralFraming.cs | 3 +- Elements/src/Symbol.cs | 6 +- 8 files changed, 17 insertions(+), 93 deletions(-) diff --git a/Elements/src/Element.cs b/Elements/src/Element.cs index 10786a1e9..d5699ab97 100644 --- a/Elements/src/Element.cs +++ b/Elements/src/Element.cs @@ -7,8 +7,7 @@ namespace Elements /// /// An object which is identified with a unique identifier and a name. /// - [Newtonsoft.Json.JsonConverter(typeof(JsonInheritanceConverter), "discriminator")] - [System.Text.Json.Serialization.JsonConverter(typeof(ElementConverter))] + [JsonConverter(typeof(ElementConverter))] public abstract class Element : System.ComponentModel.INotifyPropertyChanged { private System.Guid _id; diff --git a/Elements/src/GeoJSON/Geometry.cs b/Elements/src/GeoJSON/Geometry.cs index 38fda3db7..6bad28823 100644 --- a/Elements/src/GeoJSON/Geometry.cs +++ b/Elements/src/GeoJSON/Geometry.cs @@ -1,6 +1,5 @@ using Elements.Geometry; using System.Text.Json.Serialization; -using Newtonsoft.Json.Linq; using System; @@ -259,83 +258,4 @@ public GeometryCollection(Geometry[] geometries) this.Geometries = geometries; } } - - class PositionConverter : JsonConverter - { - public override bool CanConvert(Type objectType) - { - if (objectType == typeof(Position)) - { - return true; - } - return false; - } - - public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) - { - var lon = reader.ReadAsDouble(); - var lat = reader.ReadAsDouble(); - reader.Read(); - return new Position(lat.Value, lon.Value); - } - - public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) - { - var p = (Position)value; - writer.WriteStartArray(); - writer.WriteValue(p.Longitude); - writer.WriteValue(p.Latitude); - writer.WriteEndArray(); - } - } - - - class GeometryConverter : JsonConverter - { - public override bool CanConvert(Type objectType) - { - if (typeof(Geometry).IsAssignableFrom(objectType)) - { - return true; - } - return false; - } - - public override bool CanWrite - { - get { return false; } - } - - public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) - { - var jsonObject = JObject.Load(reader); - string typeName = (jsonObject["type"]).ToString(); - switch (typeName) - { - case "Point": - return jsonObject.ToObject(); - case "Line": - return jsonObject.ToObject(); - case "MultiPoint": - return jsonObject.ToObject(); - case "LineString": - return jsonObject.ToObject(); - case "MultiLineString": - return jsonObject.ToObject(); - case "Polygon": - return jsonObject.ToObject(); - case "MultiPolygon": - return jsonObject.ToObject(); - case "GeometryCollection": - return jsonObject.ToObject(); - default: - throw new Exception($"The type found in the GeoJSON, {typeName}, could not be resolved."); - } - } - - public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) - { - throw new NotImplementedException(); - } - } } \ No newline at end of file diff --git a/Elements/src/GeometricElement.cs b/Elements/src/GeometricElement.cs index 89cb391f7..5809d435b 100644 --- a/Elements/src/GeometricElement.cs +++ b/Elements/src/GeometricElement.cs @@ -20,8 +20,8 @@ public class GeometricElement : Element public Transform Transform { get; set; } /// The element's material. - [Newtonsoft.Json.JsonProperty("Material", Required = Newtonsoft.Json.Required.AllowNull)] - [System.Text.Json.Serialization.JsonConverter(typeof(ElementConverter))] + [JsonPropertyName("Material")] + [JsonConverter(typeof(ElementConverter))] public Material Material { get; set; } /// The element's representation. diff --git a/Elements/src/Geometry/Profile.cs b/Elements/src/Geometry/Profile.cs index 1b4badcf7..4bce51119 100644 --- a/Elements/src/Geometry/Profile.cs +++ b/Elements/src/Geometry/Profile.cs @@ -13,11 +13,11 @@ namespace Elements.Geometry public class Profile : Element, IEquatable { /// The perimeter of the profile. - [JsonPropertyName("Perimeter", Required = Required.AllowNull)] + [JsonPropertyName("Perimeter")] public Polygon Perimeter { get; set; } /// A collection of Polygons representing voids in the profile. - [JsonPropertyName("Voids", Required = Required.AllowNull)] + [JsonPropertyName("Voids")] public IList Voids { get; set; } /// diff --git a/Elements/src/Geometry/Solids/Extrude.cs b/Elements/src/Geometry/Solids/Extrude.cs index d7be17eb4..e3282c4a9 100644 --- a/Elements/src/Geometry/Solids/Extrude.cs +++ b/Elements/src/Geometry/Solids/Extrude.cs @@ -15,8 +15,8 @@ public class Extrude : SolidOperation, System.ComponentModel.INotifyPropertyChan private Vector3 _direction; /// The id of the profile to extrude. - [Newtonsoft.Json.JsonProperty("Profile", Required = Newtonsoft.Json.Required.AllowNull)] - [System.Text.Json.Serialization.JsonConverter(typeof(ElementConverter))] + [JsonPropertyName("Profile")] + [JsonConverter(typeof(ElementConverter))] public Profile Profile { get { return _profile; } diff --git a/Elements/src/Model.cs b/Elements/src/Model.cs index 7cc0cc908..0e07514fe 100644 --- a/Elements/src/Model.cs +++ b/Elements/src/Model.cs @@ -14,6 +14,7 @@ using System.IO; using System.Text.Json; using System.Diagnostics; +using Newtonsoft.Json; namespace Elements { @@ -42,7 +43,8 @@ public class Model /// The origin of the model. /// The transform of the model. /// A collection of elements. - [JsonConstructor] + [Newtonsoft.Json.JsonConstructor] + [System.Text.Json.Serialization.JsonConstructor] public Model(Position @origin, Transform @transform, System.Collections.Generic.IDictionary @elements) { this.Origin = @origin; @@ -394,7 +396,7 @@ private List RecursiveGatherSubElementsInternal(object obj, Dictionary< { // This query had a nice little speed boost when we filtered for // valid types first then filtered for custom attributes. - constrainedProps = t.GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(p => IsValidForRecursiveAddition(p.PropertyType) && p.GetCustomAttribute() == null).ToList(); + constrainedProps = t.GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(p => IsValidForRecursiveAddition(p.PropertyType) && p.GetCustomAttribute() == null).ToList(); properties.Add(t, constrainedProps); } diff --git a/Elements/src/StructuralFraming.cs b/Elements/src/StructuralFraming.cs index cff46db06..45d7a48f0 100644 --- a/Elements/src/StructuralFraming.cs +++ b/Elements/src/StructuralFraming.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Text.Json.Serialization; using Elements.Geometry; using Elements.Geometry.Solids; using Elements.Serialization.JSON; @@ -29,7 +30,7 @@ public abstract class StructuralFraming : GeometricElement /// /// The structural framing's profile. /// - [System.Text.Json.Serialization.JsonConverter(typeof(ElementConverter))] + [JsonConverter(typeof(ElementConverter))] public Profile Profile { get; set; } /// diff --git a/Elements/src/Symbol.cs b/Elements/src/Symbol.cs index bd55e8943..f753452ba 100644 --- a/Elements/src/Symbol.cs +++ b/Elements/src/Symbol.cs @@ -6,6 +6,7 @@ using System.Threading.Tasks; using System.Text.Json.Serialization; using Newtonsoft.Json.Linq; +using Newtonsoft.Json; namespace Elements { @@ -22,7 +23,7 @@ public class Symbol /// A named camera position for this representation, indicating the direction from which the camera is looking (a top view looks from top down, a north view looks from north to south.) [JsonPropertyName("CameraPosition")] - [JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] public SymbolCameraPosition CameraPosition { get; set; } /// @@ -30,7 +31,8 @@ public class Symbol /// /// The geometry of the symbol. /// A named camera position for this representation. - [JsonConstructor] + [Newtonsoft.Json.JsonConstructor] + [System.Text.Json.Serialization.JsonConstructor] public Symbol(GeometryReference @geometry, SymbolCameraPosition @cameraPosition) { this.Geometry = @geometry; From 636416b92d017a3b6d78bd3ab48b802807a51fea Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sat, 16 Apr 2022 15:17:35 -0700 Subject: [PATCH 031/150] Switch to system.text.json serializer where possible. --- Elements.Serialization.DXF/tests/DxfTests.cs | 3 ++- Elements/src/ContentElement.cs | 5 ++-- Elements/test/BBox3Tests.cs | 5 ++-- Elements/test/ColorScaleTests.cs | 9 ++++--- Elements/test/CsgTests.cs | 5 ++-- Elements/test/GeoJSONTests.cs | 27 ++++++++++---------- Elements/test/GltfTests.cs | 3 ++- Elements/test/Grid1dTests.cs | 5 ++-- Elements/test/Grid2dTests.cs | 11 ++++---- Elements/test/LineTests.cs | 17 ++++++------ Elements/test/ModelTests.cs | 5 ++-- Elements/test/PolygonTests.cs | 19 +++++++------- Elements/test/ProfileTests.cs | 17 ++++++------ Elements/test/SolidTests.cs | 3 ++- Elements/test/TopographyTests.cs | 5 ++-- 15 files changed, 77 insertions(+), 62 deletions(-) diff --git a/Elements.Serialization.DXF/tests/DxfTests.cs b/Elements.Serialization.DXF/tests/DxfTests.cs index 5f9eb5f89..60c8f9507 100644 --- a/Elements.Serialization.DXF/tests/DxfTests.cs +++ b/Elements.Serialization.DXF/tests/DxfTests.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.IO; +using System.Text.Json; using Elements.Geometry; using Xunit; @@ -67,7 +68,7 @@ public void DxfFromModel() var renderer = new DXF.ModelToDxf(); var configJson = File.ReadAllText("../../../TestModels/cad-standard.json"); - var config = Newtonsoft.Json.JsonConvert.DeserializeObject(configJson); + var config = JsonSerializer.Deserialize(configJson); renderer.SetMappingConfiguration(config); var stream = renderer.Render(model); stream.Position = 0; diff --git a/Elements/src/ContentElement.cs b/Elements/src/ContentElement.cs index 27a412866..f7bfe31c1 100644 --- a/Elements/src/ContentElement.cs +++ b/Elements/src/ContentElement.cs @@ -3,6 +3,7 @@ using Elements.Geometry.Solids; using System.Text.Json.Serialization; using Elements.Serialization.JSON; +using System.Text.Json; namespace Elements { @@ -89,7 +90,7 @@ public ContentElement(string @gltfLocation, public ContentElement(string @gltfLocation, BBox3 @boundingBox, double @gltfScaleToMeters, Vector3 @sourceDirection, IList symbols, Transform @transform, Material @material, Representation @representation, bool @isElementDefinition, System.Guid @id, string @name, string @additionalProperties) : this(@gltfLocation, @boundingBox, @gltfScaleToMeters, @sourceDirection, symbols, @transform, @material, @representation, @isElementDefinition, @id, @name) { - this.AdditionalProperties = Newtonsoft.Json.JsonConvert.DeserializeObject>(@additionalProperties); + this.AdditionalProperties = JsonSerializer.Deserialize>(@additionalProperties); } /// @@ -111,7 +112,7 @@ public ContentElement(string @gltfLocation, BBox3 @boundingBox, double @gltfScal public ContentElement(string @gltfLocation, BBox3 @boundingBox, double @gltfScaleToMeters, Vector3 @sourceDirection, Transform @transform, Material @material, Representation @representation, bool @isElementDefinition, System.Guid @id, string @name, string @additionalProperties) : this(@gltfLocation, @boundingBox, @gltfScaleToMeters, @sourceDirection, null, @transform, @material, @representation, @isElementDefinition, @id, @name) { - this.AdditionalProperties = Newtonsoft.Json.JsonConvert.DeserializeObject>(@additionalProperties); + this.AdditionalProperties = JsonSerializer.Deserialize>(@additionalProperties); } /// diff --git a/Elements/test/BBox3Tests.cs b/Elements/test/BBox3Tests.cs index f6832b64b..baf073bc3 100644 --- a/Elements/test/BBox3Tests.cs +++ b/Elements/test/BBox3Tests.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Text.Json; using Elements.Geometry; using Elements.Geometry.Profiles; using Elements.Geometry.Solids; @@ -14,7 +15,7 @@ public class Bbox3Tests : ModelTest [Fact] public void Bbox3Calculates() { - var polygon = JsonConvert.DeserializeObject("{\"discriminator\":\"Elements.Geometry.Polygon\",\"Vertices\":[{\"X\":-30.52885,\"Y\":-5.09393,\"Z\":0.0},{\"X\":-48.41906,\"Y\":111.94723,\"Z\":0.0},{\"X\":-95.02982,\"Y\":70.39512,\"Z\":0.0},{\"X\":-72.98057,\"Y\":-34.12159,\"Z\":0.0}]}"); + var polygon = JsonSerializer.Deserialize("{\"discriminator\":\"Elements.Geometry.Polygon\",\"Vertices\":[{\"X\":-30.52885,\"Y\":-5.09393,\"Z\":0.0},{\"X\":-48.41906,\"Y\":111.94723,\"Z\":0.0},{\"X\":-95.02982,\"Y\":70.39512,\"Z\":0.0},{\"X\":-72.98057,\"Y\":-34.12159,\"Z\":0.0}]}"); var bbox = new BBox3(polygon); var diagonal = bbox.Max.DistanceTo(bbox.Min); Assert.Equal(159.676157, diagonal, 4); @@ -144,7 +145,7 @@ public void BBoxesForElements() ""Opaque"": 1 }"; - var contentElement = JsonConvert.DeserializeObject(contentJson); + var contentElement = JsonSerializer.Deserialize(contentJson); elements.Add(contentElement.CreateInstance(new Transform(-6, 0, 0), null)); elements.Add(contentElement.CreateInstance(new Transform(new Vector3(-8, 0, 0), 45), null)); diff --git a/Elements/test/ColorScaleTests.cs b/Elements/test/ColorScaleTests.cs index cdac51b42..826cf5d10 100644 --- a/Elements/test/ColorScaleTests.cs +++ b/Elements/test/ColorScaleTests.cs @@ -4,6 +4,7 @@ using Elements.Geometry; using Xunit; using System.Text.Json.Serialization; +using System.Text.Json; namespace Elements.Tests { @@ -85,13 +86,13 @@ public void ThrowsOnDuplicatedValues() public void DeserializesCorrectly() { var bandedColorScale = new ColorScale(new List() { Colors.Cyan, Colors.Purple, Colors.Orange }, 10); - var bandedSerialized = JsonConvert.SerializeObject(bandedColorScale); - var bandedDeserialized = JsonConvert.DeserializeObject(bandedSerialized); + var bandedSerialized = JsonSerializer.Serialize(bandedColorScale); + var bandedDeserialized = JsonSerializer.Deserialize(bandedSerialized); Assert.Equal(bandedColorScale.GetColor(0.12345), bandedDeserialized.GetColor(0.12345)); var linearColorScale = new ColorScale(new List() { Colors.Cyan, Colors.Purple, Colors.Orange }); - var linearSerialized = JsonConvert.SerializeObject(linearColorScale); - var linearDeserialized = JsonConvert.DeserializeObject(linearSerialized); + var linearSerialized = JsonSerializer.Serialize(linearColorScale); + var linearDeserialized = JsonSerializer.Deserialize(linearSerialized); Assert.Equal(linearColorScale.GetColor(0.12345), linearDeserialized.GetColor(0.12345)); Assert.NotEqual(linearColorScale.GetColor(0.12345), bandedColorScale.GetColor(0.12345)); diff --git a/Elements/test/CsgTests.cs b/Elements/test/CsgTests.cs index eb8dd74f9..bc358acf9 100644 --- a/Elements/test/CsgTests.cs +++ b/Elements/test/CsgTests.cs @@ -9,6 +9,7 @@ using System.Threading.Tasks; using System.Text.Json.Serialization; using Elements.Geometry.Tessellation; +using System.Text.Json; namespace Elements.Tests { @@ -94,7 +95,7 @@ public void SubtractWithProblematicPolygons() [Fact] public void UnionWithProblematicPolygons() { - var profile1 = JsonConvert.DeserializeObject( + var profile1 = JsonSerializer.Deserialize( @"{ ""Vertices"": [ { @@ -129,7 +130,7 @@ public void UnionWithProblematicPolygons() } ]} "); - var profile2 = JsonConvert.DeserializeObject( + var profile2 = JsonSerializer.Deserialize( @"{ ""Vertices"": [ { diff --git a/Elements/test/GeoJSONTests.cs b/Elements/test/GeoJSONTests.cs index ebc18a1c5..b614d73ad 100644 --- a/Elements/test/GeoJSONTests.cs +++ b/Elements/test/GeoJSONTests.cs @@ -3,6 +3,7 @@ using System; using Xunit; using Line = Elements.GeoJSON.Line; +using System.Text.Json; namespace Elements.Tests { @@ -61,8 +62,8 @@ public class GeoJSONTests public void Position_Serialize_Valid() { var p = new Position(10.0, 5.0); - var json = JsonConvert.SerializeObject(p); - var newP = JsonConvert.DeserializeObject(json); + var json = JsonSerializer.Serialize(p); + var newP = JsonSerializer.Deserialize(json); Assert.Equal(5.0, newP.Longitude); Assert.Equal(10.0, newP.Latitude); } @@ -71,8 +72,8 @@ public void Position_Serialize_Valid() public void Point_Serialize_Valid() { var p = new Point(new Position(10.0, 5.0)); - var json = JsonConvert.SerializeObject(p); - var newP = JsonConvert.DeserializeObject(json); + var json = JsonSerializer.Serialize(p); + var newP = JsonSerializer.Deserialize(json); Assert.Equal("Point", newP.Type); Assert.Equal(new Position(10.0, 5.0), newP.Coordinates); } @@ -83,8 +84,8 @@ public void Line_Serialize_Valid() var a = new Position(0, 0); var b = new Position(5, 5); var l = new Line(new[] { a, b }); - var json = JsonConvert.SerializeObject(l); - var newL = JsonConvert.DeserializeObject(json); + var json = JsonSerializer.Serialize(l); + var newL = JsonSerializer.Deserialize(json); Assert.Equal(a, newL.Coordinates[0]); Assert.Equal(b, newL.Coordinates[1]); Assert.Equal("Line", newL.Type); @@ -97,8 +98,8 @@ public void LineString_Serialize_Valid() var b = new Position(5, 5); var c = new Position(10, 10); var ls = new LineString(new[] { a, b, c }); - var json = JsonConvert.SerializeObject(ls); - var newLs = JsonConvert.DeserializeObject(json); + var json = JsonSerializer.Serialize(ls); + var newLs = JsonSerializer.Deserialize(json); Assert.Equal(a, newLs.Coordinates[0]); Assert.Equal(b, newLs.Coordinates[1]); Assert.Equal(c, newLs.Coordinates[2]); @@ -112,7 +113,7 @@ public void Polygon_Serialize_Valid() var b = new Position(5, 5); var c = new Position(10, 10); var p = new Polygon(new[] { new[] { a, b, c, a } }); - var json = JsonConvert.SerializeObject(p); + var json = JsonSerializer.Serialize(p); Assert.Throws(() => { @@ -128,8 +129,8 @@ public void MultiLineString_Serialize_Valid() var b = new Position(5, 5); var c = new Position(10, 10); var mls = new MultiLineString(new[] { new[] { a, b, c }, new[] { c, b, a } }); - var json = JsonConvert.SerializeObject(mls); - var newMls = JsonConvert.DeserializeObject(json); + var json = JsonSerializer.Serialize(mls); + var newMls = JsonSerializer.Deserialize(json); Assert.Equal(2, newMls.Coordinates.GetLength(0)); Assert.Equal(3, newMls.Coordinates[0].Length); Assert.Equal(3, newMls.Coordinates[1].Length); @@ -143,7 +144,7 @@ public void FeatureCollection_SerializeValid() var f1 = new Feature(p, null); var f2 = new Feature(l, null); var fc = new FeatureCollection(new[] { f1, f2 }); - var json = JsonConvert.SerializeObject(fc); + var json = JsonSerializer.Serialize(fc); } // [Fact] @@ -174,7 +175,7 @@ public void FeatureCollection_SerializeValid() [Fact] public void Feature_Deserialize_Valid() { - var f = JsonConvert.DeserializeObject(feature); + var f = JsonSerializer.Deserialize(feature); var p = (Polygon)f[0].Geometry; Assert.Equal(7, p.Coordinates[0].Length); Assert.Equal("Feature", f[0].Type); diff --git a/Elements/test/GltfTests.cs b/Elements/test/GltfTests.cs index 1e4f51e67..0092ac26d 100644 --- a/Elements/test/GltfTests.cs +++ b/Elements/test/GltfTests.cs @@ -8,6 +8,7 @@ using System; using System.IO; using System.Text.Json.Serialization; +using System.Text.Json; namespace Elements.Tests { @@ -82,7 +83,7 @@ public void GeometricElementWithoutMaterialUsesDefaultMaterial() public void ThinObjectsGenerateCorrectly() { var json = File.ReadAllText("../../../models/Geometry/Single-Panel.json"); - var panel = JsonConvert.DeserializeObject(json); + var panel = JsonSerializer.Deserialize(json); var model = new Model(); model.AddElement(panel); var modelsDir = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "models"); diff --git a/Elements/test/Grid1dTests.cs b/Elements/test/Grid1dTests.cs index 748ed3844..3699f5a28 100644 --- a/Elements/test/Grid1dTests.cs +++ b/Elements/test/Grid1dTests.cs @@ -5,6 +5,7 @@ using Elements.Geometry; using System.Collections.Generic; using System.Text.Json.Serialization; +using System.Text.Json; namespace Elements.Tests { @@ -160,8 +161,8 @@ public void Grid1dSerializes() var grid = new Grid1d(polyline); grid.DivideByCount(4); grid[3].DivideByFixedLength(0.4); - var json = JsonConvert.SerializeObject(grid); - var deserialized = JsonConvert.DeserializeObject(json); + var json = JsonSerializer.Serialize(grid); + var deserialized = JsonSerializer.Deserialize(json); Assert.Equal(grid.GetCells().Count, deserialized.GetCells().Count); Assert.Equal(0, (grid.Curve as Polyline).Start.DistanceTo((deserialized.Curve as Polyline).Start)); } diff --git a/Elements/test/Grid2dTests.cs b/Elements/test/Grid2dTests.cs index 5ecd53f09..1533d5a74 100644 --- a/Elements/test/Grid2dTests.cs +++ b/Elements/test/Grid2dTests.cs @@ -6,6 +6,7 @@ using System.Text.Json.Serialization; using Elements.Geometry; using System.Collections.Generic; +using System.Text.Json; namespace Elements.Tests { @@ -66,7 +67,7 @@ public void TrimBehavior() { Name = "TrimBehavior"; var polygonjson = "[{\"discriminator\":\"Elements.Geometry.Polygon\",\"Vertices\":[{\"X\":-14.371519985751306,\"Y\":-4.8816304299427005,\"Z\":0.0},{\"X\":-17.661873645682569,\"Y\":9.2555712951713573,\"Z\":0.0},{\"X\":12.965610421927806,\"Y\":9.2555712951713573,\"Z\":0.0},{\"X\":12.965610421927806,\"Y\":3.5538269529982784,\"Z\":0.0},{\"X\":6.4046991240848143,\"Y\":3.5538269529982784,\"Z\":0.0},{\"X\":1.3278034769444158,\"Y\":-4.8816304299427005,\"Z\":0.0}]},{\"discriminator\":\"Elements.Geometry.Polygon\",\"Vertices\":[{\"X\":-9.4508365123690652,\"Y\":0.20473478280229102,\"Z\":0.0},{\"X\":-1.8745460850979974,\"Y\":0.20473478280229102,\"Z\":0.0},{\"X\":-1.8745460850979974,\"Y\":5.4378426037008651,\"Z\":0.0},{\"X\":-9.4508365123690652,\"Y\":5.4378426037008651,\"Z\":0.0}]}]\r\n"; - var polygons = JsonConvert.DeserializeObject>(polygonjson); + var polygons = JsonSerializer.Deserialize>(polygonjson); var grid = new Grid2d(polygons); foreach (var pt in polygons[1].Vertices) { @@ -196,8 +197,8 @@ public void Grid2dSerializes() grid2d.U.DivideByCount(10); grid2d.V.DivideByCount(3); grid2d[2, 2].U.DivideByCount(4); - var json = JsonConvert.SerializeObject(grid2d); - var deserialized = JsonConvert.DeserializeObject(json); + var json = JsonSerializer.Serialize(grid2d); + var deserialized = JsonSerializer.Deserialize(json); Assert.Equal(grid2d.GetCells().Count, deserialized.GetCells().Count); var grid2dElem = new Grid2dElement(grid2d, Guid.NewGuid(), "Grid"); @@ -477,7 +478,7 @@ public void SkewedGridsWithNearlyParallelBoundary() ] } }"; - var transform = JsonConvert.DeserializeObject(transformStr); + var transform = JsonSerializer.Deserialize(transformStr); var origin = transform.Origin; var uDirection = transform.XAxis; var vDirection = transform.YAxis; @@ -547,7 +548,7 @@ public void RotateGridWithClosePointDoNotThrow() public void SeparatorsFromBadPolygon() { var json = File.ReadAllText("../../../models/Geometry/bad_grid.json"); - var grid = JsonConvert.DeserializeObject(json); + var grid = JsonSerializer.Deserialize(json); var cellSeparators = grid.GetCellSeparators(GridDirection.V, true); } } diff --git a/Elements/test/LineTests.cs b/Elements/test/LineTests.cs index 41fd1b9cb..b816550db 100644 --- a/Elements/test/LineTests.cs +++ b/Elements/test/LineTests.cs @@ -5,6 +5,7 @@ using Elements.Tests; using System.Text.Json.Serialization; using Xunit; +using System.Text.Json; namespace Elements.Geometry.Tests { @@ -226,8 +227,8 @@ public void LineTrimToInYZ() [Fact] public void TrimLineThatStartsAtPolygonEdge() { - var polygon = JsonConvert.DeserializeObject(File.ReadAllText("../../../models/Geometry/ConcavePolygon.json")); - var line = JsonConvert.DeserializeObject(File.ReadAllText("../../../models/Geometry/LineThatFailsTrim.json")); + var polygon = JsonSerializer.Deserialize(File.ReadAllText("../../../models/Geometry/ConcavePolygon.json")); + var line = JsonSerializer.Deserialize(File.ReadAllText("../../../models/Geometry/LineThatFailsTrim.json")); var lines = line.Trim(polygon, out var _); Assert.Equal(4.186147, lines[0].Length(), 2); @@ -236,8 +237,8 @@ public void TrimLineThatStartsAtPolygonEdge() [Fact] public void LineIntersectAtEnd() { - var line1 = JsonConvert.DeserializeObject("{\"discriminator\":\"Elements.Geometry.Line\",\"Start\":{\"X\":22.63192881973488,\"Y\":23.07673264883112,\"Z\":0.0},\"End\":{\"X\":26.239210000000003,\"Y\":32.009170000000005,\"Z\":0.0}}"); - var line2 = JsonConvert.DeserializeObject("{\"discriminator\":\"Elements.Geometry.Line\",\"Start\":{\"X\":26.23921,\"Y\":32.00917,\"Z\":0.0},\"End\":{\"X\":24.47373,\"Y\":32.72215,\"Z\":0.0}}"); + var line1 = JsonSerializer.Deserialize("{\"discriminator\":\"Elements.Geometry.Line\",\"Start\":{\"X\":22.63192881973488,\"Y\":23.07673264883112,\"Z\":0.0},\"End\":{\"X\":26.239210000000003,\"Y\":32.009170000000005,\"Z\":0.0}}"); + var line2 = JsonSerializer.Deserialize("{\"discriminator\":\"Elements.Geometry.Line\",\"Start\":{\"X\":26.23921,\"Y\":32.00917,\"Z\":0.0},\"End\":{\"X\":24.47373,\"Y\":32.72215,\"Z\":0.0}}"); line1.Intersects(line2, out var intersection, false, true); } @@ -290,13 +291,13 @@ public void LineTrimWithPolygon() public void ExtendToProfile() { Name = "ExtendToProfile"; - var polygons = JsonConvert.DeserializeObject>("[{\"Vertices\":[{\"X\":-3.3239130434782611,\"Y\":2.534782608695652,\"Z\":0.0},{\"X\":1.924698097225491,\"Y\":6.0910303088278326,\"Z\":0.0},{\"X\":2.5714592294272105,\"Y\":3.5518940120358997,\"Z\":0.0},{\"X\":1.1956521739130428,\"Y\":2.1760869565217393,\"Z\":0.0},{\"X\":1.7456521739130428,\"Y\":0.47826086956521707,\"Z\":0.0},{\"X\":0.69347826086956554,\"Y\":-1.2195652173913047,\"Z\":0.0},{\"X\":2.9652173913043476,\"Y\":-1.3391304347826083,\"Z\":0.0},{\"X\":3.2760869565217394,\"Y\":-2.7978260869565217,\"Z\":0.0},{\"X\":1.5065217391304346,\"Y\":-3.347826086956522,\"Z\":0.0},{\"X\":-0.43043478260869589,\"Y\":-1.482608695652174,\"Z\":0.0},{\"X\":-1.4586956521739132,\"Y\":-1.7695652173913039,\"Z\":0.0},{\"X\":-3.3239130434782611,\"Y\":-2.1043478260869568,\"Z\":0.0}]},{\"Vertices\":[{\"X\":0.070768827751857444,\"Y\":-0.75686629107050352,\"Z\":0.0},{\"X\":1.1928650019807621,\"Y\":0.39683822609442632,\"Z\":0.0},{\"X\":-1.1303482038171115,\"Y\":2.5936180601481968,\"Z\":0.0},{\"X\":-1.3358024329012763,\"Y\":2.2617304593199297,\"Z\":0.0}]}]"); + var polygons = JsonSerializer.Deserialize>("[{\"Vertices\":[{\"X\":-3.3239130434782611,\"Y\":2.534782608695652,\"Z\":0.0},{\"X\":1.924698097225491,\"Y\":6.0910303088278326,\"Z\":0.0},{\"X\":2.5714592294272105,\"Y\":3.5518940120358997,\"Z\":0.0},{\"X\":1.1956521739130428,\"Y\":2.1760869565217393,\"Z\":0.0},{\"X\":1.7456521739130428,\"Y\":0.47826086956521707,\"Z\":0.0},{\"X\":0.69347826086956554,\"Y\":-1.2195652173913047,\"Z\":0.0},{\"X\":2.9652173913043476,\"Y\":-1.3391304347826083,\"Z\":0.0},{\"X\":3.2760869565217394,\"Y\":-2.7978260869565217,\"Z\":0.0},{\"X\":1.5065217391304346,\"Y\":-3.347826086956522,\"Z\":0.0},{\"X\":-0.43043478260869589,\"Y\":-1.482608695652174,\"Z\":0.0},{\"X\":-1.4586956521739132,\"Y\":-1.7695652173913039,\"Z\":0.0},{\"X\":-3.3239130434782611,\"Y\":-2.1043478260869568,\"Z\":0.0}]},{\"Vertices\":[{\"X\":0.070768827751857444,\"Y\":-0.75686629107050352,\"Z\":0.0},{\"X\":1.1928650019807621,\"Y\":0.39683822609442632,\"Z\":0.0},{\"X\":-1.1303482038171115,\"Y\":2.5936180601481968,\"Z\":0.0},{\"X\":-1.3358024329012763,\"Y\":2.2617304593199297,\"Z\":0.0}]}]"); var profile = new Profile(polygons); var mcs = profile.ToModelCurves(material: BuiltInMaterials.XAxis); Model.AddElements(mcs); - var intersectsAtVertex = JsonConvert.DeserializeObject("{\"X\":1.9248644534137522,\"Y\":-2.3794833726732039,\"Z\":0.0}"); - var doesntIntersect = JsonConvert.DeserializeObject("{\"X\":-3.5077580495618728,\"Y\":3.5797588753975274,\"Z\":0.0}"); - var hitsVoid = JsonConvert.DeserializeObject("{\"X\":-0.73780074305628141,\"Y\":-0.976285760075414,\"Z\":0.0}"); + var intersectsAtVertex = JsonSerializer.Deserialize("{\"X\":1.9248644534137522,\"Y\":-2.3794833726732039,\"Z\":0.0}"); + var doesntIntersect = JsonSerializer.Deserialize("{\"X\":-3.5077580495618728,\"Y\":3.5797588753975274,\"Z\":0.0}"); + var hitsVoid = JsonSerializer.Deserialize("{\"X\":-0.73780074305628141,\"Y\":-0.976285760075414,\"Z\":0.0}"); var lineDir = new Vector3(0.1, 0.1); var iavLine = new Line(intersectsAtVertex, intersectsAtVertex + lineDir).ExtendTo(profile); var diLine = new Line(doesntIntersect, doesntIntersect + lineDir).ExtendTo(profile); diff --git a/Elements/test/ModelTests.cs b/Elements/test/ModelTests.cs index 77e888735..ae451ce70 100644 --- a/Elements/test/ModelTests.cs +++ b/Elements/test/ModelTests.cs @@ -12,6 +12,7 @@ using Newtonsoft.Json.Linq; using System.Threading.Tasks; using Elements.Geometry.Profiles; +using System.Text.Json; namespace Elements.Tests { @@ -102,10 +103,10 @@ public async Task MergesModelsWithUserDefinedTypes() Assert.NotNull(facadePanelType); var envelopeType = asm.Assembly.GetType("Elements.Envelope"); Assert.NotNull(envelopeType); - var model1 = JsonConvert.DeserializeObject(File.ReadAllText("../../../models/Merge/facade.json")); + var model1 = JsonSerializer.Deserialize(File.ReadAllText("../../../models/Merge/facade.json")); var count1 = model1.Elements.Count; - var model2 = JsonConvert.DeserializeObject(File.ReadAllText("../../../models/Merge/structure.json")); + var model2 = JsonSerializer.Deserialize(File.ReadAllText("../../../models/Merge/structure.json")); var count2 = model2.Elements.Count; var merge = new Model(); diff --git a/Elements/test/PolygonTests.cs b/Elements/test/PolygonTests.cs index baf45ad16..1a96dfd12 100644 --- a/Elements/test/PolygonTests.cs +++ b/Elements/test/PolygonTests.cs @@ -7,6 +7,7 @@ using Elements.Tests; using System.IO; using System.Diagnostics; +using System.Text.Json; namespace Elements.Geometry.Tests { @@ -689,8 +690,8 @@ public void UnionAllSequential() { Name = "UnionAllSequential"; // sample data contributed by Marco Juliani - var polygonsA = JsonConvert.DeserializeObject>(File.ReadAllText("../../../models/Geometry/testUnionAll.json")); - var polygonsB = JsonConvert.DeserializeObject>(File.ReadAllText("../../../models/Geometry/testUnionAll_2.json")); + var polygonsA = JsonSerializer.Deserialize>(File.ReadAllText("../../../models/Geometry/testUnionAll.json")); + var polygonsB = JsonSerializer.Deserialize>(File.ReadAllText("../../../models/Geometry/testUnionAll_2.json")); var unionA = Polygon.UnionAll(polygonsA); var unionB = Polygon.UnionAll(polygonsB); Model.AddElements(unionA.Select(u => new ModelCurve(u))); @@ -982,12 +983,12 @@ public void DeserializesWithoutDiscriminator() ] } "; - var polygon = JsonConvert.DeserializeObject(json); + var polygon = JsonSerializer.Deserialize(json); // We've created a new Polygon, which will have a discriminator // because it was created using the JsonInheritanceConverter. - var newJson = JsonConvert.SerializeObject(polygon); - var newPolygon = (Polygon)JsonConvert.DeserializeObject(newJson); + var newJson = JsonSerializer.Serialize(polygon); + var newPolygon = (Polygon)JsonSerializer.Deserialize(newJson); Assert.Equal(polygon.Vertices.Count, newPolygon.Vertices.Count); } @@ -1520,8 +1521,8 @@ public void CorrectWindingForTrims() var r = new Random(); - var bigPoly = JsonConvert.DeserializeObject(_bigPoly); - var splitters = JsonConvert.DeserializeObject>(_splitters); + var bigPoly = JsonSerializer.Deserialize(_bigPoly); + var splitters = JsonSerializer.Deserialize>(_splitters); foreach (var splitter in splitters) { @@ -1920,8 +1921,8 @@ public void ExtendWhereSomeSegmentsAreAtOrigin() public void LineTrim() { Name = nameof(LineTrim); - var boundary = JsonConvert.DeserializeObject("{\"discriminator\":\"Elements.Geometry.Polygon\",\"Vertices\":[{\"X\":27.25008,\"Y\":19.98296,\"Z\":0.0},{\"X\":-14.78244,\"Y\":19.98296,\"Z\":0.0},{\"X\":-14.78244,\"Y\":16.4675,\"Z\":0.0},{\"X\":27.25008,\"Y\":16.4675,\"Z\":0.0}]}"); - var line = JsonConvert.DeserializeObject("{\"discriminator\": \"Elements.Geometry.Line\",\"Start\": {\"X\": -0.771609999999999,\"Y\": 16.46749,\"Z\": 0.0},\"End\": {\"X\": -0.771609999999999,\"Y\": 19.98295,\"Z\": 0.0}\n}"); + var boundary = JsonSerializer.Deserialize("{\"discriminator\":\"Elements.Geometry.Polygon\",\"Vertices\":[{\"X\":27.25008,\"Y\":19.98296,\"Z\":0.0},{\"X\":-14.78244,\"Y\":19.98296,\"Z\":0.0},{\"X\":-14.78244,\"Y\":16.4675,\"Z\":0.0},{\"X\":27.25008,\"Y\":16.4675,\"Z\":0.0}]}"); + var line = JsonSerializer.Deserialize("{\"discriminator\": \"Elements.Geometry.Line\",\"Start\": {\"X\": -0.771609999999999,\"Y\": 16.46749,\"Z\": 0.0},\"End\": {\"X\": -0.771609999999999,\"Y\": 19.98295,\"Z\": 0.0}\n}"); var trimmed = line.Trim(boundary, out var remainder); Assert.True(trimmed.Sum(l => l.Length()) > 0); diff --git a/Elements/test/ProfileTests.cs b/Elements/test/ProfileTests.cs index 3a6767c13..bafebcacc 100644 --- a/Elements/test/ProfileTests.cs +++ b/Elements/test/ProfileTests.cs @@ -7,6 +7,7 @@ using Elements.Serialization.JSON; using System.IO; using System.Text.Json.Serialization; +using System.Text.Json; namespace Elements.Tests { @@ -423,9 +424,9 @@ public void DifferenceFail() { // This test used to fail with an exception due to a very small polygon produced from the boolean. var aShapeJson = "{\"discriminator\":\"Elements.Geometry.Profile\",\"Perimeter\":{\"discriminator\":\"Elements.Geometry.Polygon\",\"Vertices\":[{\"X\":-149.51680916003411,\"Y\":-545.6788101645068,\"Z\":0.0},{\"X\":-181.13449678692302,\"Y\":-508.57118930829984,\"Z\":0.0},{\"X\":-185.00173212061222,\"Y\":-476.0495417216826,\"Z\":0.0},{\"X\":-211.47915563014516,\"Y\":-479.19804234633307,\"Z\":0.0},{\"X\":-213.43484799507593,\"Y\":-627.6323068549372,\"Z\":0.0},{\"X\":-169.59832064900132,\"Y\":-624.8068240421294,\"Z\":0.0},{\"X\":-144.53329588528302,\"Y\":-620.4717620034767,\"Z\":0.0}]},\"Voids\":[{\"discriminator\":\"Elements.Geometry.Polygon\",\"Vertices\":[{\"X\":-174.65966226538052,\"Y\":-581.4103523143159,\"Z\":0.0},{\"X\":-174.89675190025594,\"Y\":-599.4087908161704,\"Z\":0.0},{\"X\":-184.89588440128614,\"Y\":-599.2770743523507,\"Z\":0.0},{\"X\":-184.65879476641072,\"Y\":-581.2786358504962,\"Z\":0.0}]}],\"Id\":\"5b65b6a5-b0a4-4373-ba47-76380d379893\",\"Name\":null}"; - var p1 = Newtonsoft.Json.JsonConvert.DeserializeObject(aShapeJson); + var p1 = JsonSerializer.Deserialize(aShapeJson); var otherPolysJson = "[{\"discriminator\":\"Elements.Geometry.Profile\",\"Perimeter\":{\"discriminator\":\"Elements.Geometry.Polygon\",\"Vertices\":[{\"X\":-170.30455,\"Y\":-618.83988,\"Z\":0.0},{\"X\":-150.8792,\"Y\":-615.48022,\"Z\":0.0},{\"X\":-155.37154,\"Y\":-548.05882,\"Z\":0.0},{\"X\":-186.87827,\"Y\":-511.08143,\"Z\":0.0},{\"X\":-190.01511,\"Y\":-484.70206,\"Z\":0.0},{\"X\":-205.57554,\"Y\":-486.55239,\"Z\":0.0},{\"X\":-207.34994,\"Y\":-621.22765,\"Z\":0.0}]},\"Voids\":[{\"discriminator\":\"Elements.Geometry.Polygon\",\"Vertices\":[{\"X\":-205.82871,\"Y\":-619.62649,\"Z\":0.0},{\"X\":-204.09299,\"Y\":-487.88667,\"Z\":0.0},{\"X\":-191.3275,\"Y\":-486.36869,\"Z\":0.0},{\"X\":-188.31421,\"Y\":-511.70899,\"Z\":0.0},{\"X\":-156.83522,\"Y\":-548.65382,\"Z\":0.0},{\"X\":-152.46567,\"Y\":-614.23233,\"Z\":0.0},{\"X\":-170.48117,\"Y\":-617.34816,\"Z\":0.0}]}],\"Id\":\"0fbf2cac-126b-45a3-b32e-e53c32c9e05a\",\"Name\":\"Corridor\"},{\"discriminator\":\"Elements.Geometry.Profile\",\"Perimeter\":{\"discriminator\":\"Elements.Geometry.Polygon\",\"Vertices\":[{\"X\":-153.1705,\"Y\":-580.19402,\"Z\":0.0},{\"X\":-206.8,\"Y\":-579.48763,\"Z\":0.0},{\"X\":-206.81976,\"Y\":-580.98749,\"Z\":0.0},{\"X\":-184.6588,\"Y\":-581.27939,\"Z\":0.0},{\"X\":-184.65879,\"Y\":-581.27864,\"Z\":0.0},{\"X\":-174.65966,\"Y\":-581.41035,\"Z\":0.0},{\"X\":-174.65967,\"Y\":-581.41109,\"Z\":0.0},{\"X\":-153.19026,\"Y\":-581.69388,\"Z\":0.0}]},\"Voids\":[],\"Id\":\"a02d7813-883b-4bd4-8bd5-47aa0ce8ac05\",\"Name\":null},{\"discriminator\":\"Elements.Geometry.Profile\",\"Perimeter\":{\"discriminator\":\"Elements.Geometry.Polygon\",\"Vertices\":[{\"X\":-184.89513,\"Y\":-599.27708,\"Z\":0.0},{\"X\":-184.89588,\"Y\":-599.27707,\"Z\":0.0},{\"X\":-184.65879,\"Y\":-581.27864,\"Z\":0.0},{\"X\":-184.65805,\"Y\":-581.27865,\"Z\":0.0},{\"X\":-183.76997,\"Y\":-513.85917,\"Z\":0.0},{\"X\":-185.26983,\"Y\":-513.83941,\"Z\":0.0},{\"X\":-186.66607,\"Y\":-619.83625,\"Z\":0.0},{\"X\":-185.16621,\"Y\":-619.85601,\"Z\":0.0}]},\"Voids\":[],\"Id\":\"59c1f71d-7c88-4fa3-8b79-6d799f6f80f0\",\"Name\":null},{\"discriminator\":\"Elements.Geometry.Profile\",\"Perimeter\":{\"discriminator\":\"Elements.Geometry.Polygon\",\"Vertices\":[{\"X\":-151.87004,\"Y\":-599.71136,\"Z\":0.0},{\"X\":-174.89674,\"Y\":-599.40804,\"Z\":0.0},{\"X\":-174.89675,\"Y\":-599.40879,\"Z\":0.0},{\"X\":-184.89588,\"Y\":-599.27707,\"Z\":0.0},{\"X\":-184.89587,\"Y\":-599.27633,\"Z\":0.0},{\"X\":-207.05688,\"Y\":-598.98441,\"Z\":0.0},{\"X\":-207.07664,\"Y\":-600.48427,\"Z\":0.0},{\"X\":-151.8898,\"Y\":-601.21122,\"Z\":0.0}]},\"Voids\":[],\"Id\":\"b320c3f1-eac5-46a9-9ed5-3bb49a5e38e9\",\"Name\":null},{\"discriminator\":\"Elements.Geometry.Profile\",\"Perimeter\":{\"discriminator\":\"Elements.Geometry.Polygon\",\"Vertices\":[{\"X\":-172.44555,\"Y\":-527.14991,\"Z\":0.0},{\"X\":-173.94541,\"Y\":-527.13015,\"Z\":0.0},{\"X\":-174.66041,\"Y\":-581.41034,\"Z\":0.0},{\"X\":-174.65966,\"Y\":-581.41035,\"Z\":0.0},{\"X\":-174.89675,\"Y\":-599.40879,\"Z\":0.0},{\"X\":-174.89749,\"Y\":-599.40878,\"Z\":0.0},{\"X\":-175.1568,\"Y\":-619.09442,\"Z\":0.0},{\"X\":-173.65694,\"Y\":-619.11418,\"Z\":0.0}]},\"Voids\":[],\"Id\":\"82060be1-c38b-4eaf-aa5f-6792f6839f37\",\"Name\":null}]"; - var otherPolys = Newtonsoft.Json.JsonConvert.DeserializeObject>(otherPolysJson); + var otherPolys = JsonSerializer.Deserialize>(otherPolysJson); var result = Elements.Geometry.Profile.Difference(new[] { p1 }, otherPolys); } @@ -434,7 +435,7 @@ public void DifferenceFail2() { this.Name = nameof(DifferenceFail2); var json = File.ReadAllText("../../../models/Geometry/differenceFail2.json"); - var profiles = JsonConvert.DeserializeObject>>(json); + var profiles = JsonSerializer.Deserialize>>(json); var firstSet = profiles["levelBoundaryCleaned"]; var secondSet = profiles["insetProfiles"]; var diff = Elements.Geometry.Profile.Difference(firstSet, secondSet); @@ -449,10 +450,10 @@ public void SplitDonutProfileFromFunction() { Name = "SplitDonutProfileFromFunction"; - var perim = Newtonsoft.Json.JsonConvert.DeserializeObject("{\"discriminator\":\"Elements.Geometry.Polygon\",\"Vertices\":[{\"X\":76.30921,\"Y\":46.63686,\"Z\":0.0},{\"X\":-75.42933,\"Y\":46.63686,\"Z\":0.0},{\"X\":-75.42933,\"Y\":-30.00397,\"Z\":0.0},{\"X\":76.30921,\"Y\":-30.00397,\"Z\":0.0}]}"); - var voids = Newtonsoft.Json.JsonConvert.DeserializeObject>("[{\"discriminator\":\"Elements.Geometry.Polygon\",\"Vertices\":[{\"X\":-69.42933,\"Y\":-24.00397,\"Z\":0.0},{\"X\":-69.42933,\"Y\":40.63686,\"Z\":0.0},{\"X\":70.30921,\"Y\":40.63686,\"Z\":0.0},{\"X\":70.30921,\"Y\":-24.00397,\"Z\":0.0}]}]"); + var perim = JsonSerializer.Deserialize("{\"discriminator\":\"Elements.Geometry.Polygon\",\"Vertices\":[{\"X\":76.30921,\"Y\":46.63686,\"Z\":0.0},{\"X\":-75.42933,\"Y\":46.63686,\"Z\":0.0},{\"X\":-75.42933,\"Y\":-30.00397,\"Z\":0.0},{\"X\":76.30921,\"Y\":-30.00397,\"Z\":0.0}]}"); + var voids = JsonSerializer.Deserialize>("[{\"discriminator\":\"Elements.Geometry.Polygon\",\"Vertices\":[{\"X\":-69.42933,\"Y\":-24.00397,\"Z\":0.0},{\"X\":-69.42933,\"Y\":40.63686,\"Z\":0.0},{\"X\":70.30921,\"Y\":40.63686,\"Z\":0.0},{\"X\":70.30921,\"Y\":-24.00397,\"Z\":0.0}]}]"); var profileToSplit = new Profile(perim, voids, Guid.NewGuid(), null); - var splitters = Newtonsoft.Json.JsonConvert.DeserializeObject>("[{\"discriminator\":\"Elements.Geometry.Polyline\",\"Vertices\":[{\"X\":76.40920999999999,\"Y\":46.63686,\"Z\":0.0},{\"X\":-75.52932999999997,\"Y\":46.63686,\"Z\":0.0}]},{\"discriminator\":\"Elements.Geometry.Polyline\",\"Vertices\":[{\"X\":-75.42933,\"Y\":46.83686,\"Z\":0.0},{\"X\":-75.42933,\"Y\":-30.20397,\"Z\":0.0}]},{\"discriminator\":\"Elements.Geometry.Polyline\",\"Vertices\":[{\"X\":-75.52932999999999,\"Y\":-30.00397,\"Z\":0.0},{\"X\":76.40920999999997,\"Y\":-30.00397,\"Z\":0.0}]},{\"discriminator\":\"Elements.Geometry.Polyline\",\"Vertices\":[{\"X\":76.30921,\"Y\":-30.20397,\"Z\":0.0},{\"X\":76.30921,\"Y\":46.83686,\"Z\":0.0}]},{\"discriminator\":\"Elements.Geometry.Polyline\",\"Vertices\":[{\"X\":-69.42933,\"Y\":-30.103969999999997,\"Z\":0.0},{\"X\":-69.42933,\"Y\":46.73686,\"Z\":0.0}]},{\"discriminator\":\"Elements.Geometry.Polyline\",\"Vertices\":[{\"X\":-69.52932999999999,\"Y\":40.63686,\"Z\":0.0},{\"X\":70.40920999999997,\"Y\":40.63686,\"Z\":0.0}]},{\"discriminator\":\"Elements.Geometry.Polyline\",\"Vertices\":[{\"X\":70.30921,\"Y\":46.73686000000001,\"Z\":0.0},{\"X\":70.30921,\"Y\":-30.103969999999997,\"Z\":0.0}]},{\"discriminator\":\"Elements.Geometry.Polyline\",\"Vertices\":[{\"X\":70.40920999999999,\"Y\":-24.00397,\"Z\":0.0},{\"X\":-69.52932999999997,\"Y\":-24.00397,\"Z\":0.0}]}]"); + var splitters = JsonSerializer.Deserialize>("[{\"discriminator\":\"Elements.Geometry.Polyline\",\"Vertices\":[{\"X\":76.40920999999999,\"Y\":46.63686,\"Z\":0.0},{\"X\":-75.52932999999997,\"Y\":46.63686,\"Z\":0.0}]},{\"discriminator\":\"Elements.Geometry.Polyline\",\"Vertices\":[{\"X\":-75.42933,\"Y\":46.83686,\"Z\":0.0},{\"X\":-75.42933,\"Y\":-30.20397,\"Z\":0.0}]},{\"discriminator\":\"Elements.Geometry.Polyline\",\"Vertices\":[{\"X\":-75.52932999999999,\"Y\":-30.00397,\"Z\":0.0},{\"X\":76.40920999999997,\"Y\":-30.00397,\"Z\":0.0}]},{\"discriminator\":\"Elements.Geometry.Polyline\",\"Vertices\":[{\"X\":76.30921,\"Y\":-30.20397,\"Z\":0.0},{\"X\":76.30921,\"Y\":46.83686,\"Z\":0.0}]},{\"discriminator\":\"Elements.Geometry.Polyline\",\"Vertices\":[{\"X\":-69.42933,\"Y\":-30.103969999999997,\"Z\":0.0},{\"X\":-69.42933,\"Y\":46.73686,\"Z\":0.0}]},{\"discriminator\":\"Elements.Geometry.Polyline\",\"Vertices\":[{\"X\":-69.52932999999999,\"Y\":40.63686,\"Z\":0.0},{\"X\":70.40920999999997,\"Y\":40.63686,\"Z\":0.0}]},{\"discriminator\":\"Elements.Geometry.Polyline\",\"Vertices\":[{\"X\":70.30921,\"Y\":46.73686000000001,\"Z\":0.0},{\"X\":70.30921,\"Y\":-30.103969999999997,\"Z\":0.0}]},{\"discriminator\":\"Elements.Geometry.Polyline\",\"Vertices\":[{\"X\":70.40920999999999,\"Y\":-24.00397,\"Z\":0.0},{\"X\":-69.52932999999997,\"Y\":-24.00397,\"Z\":0.0}]}]"); Model.AddElement(perim); voids.ForEach((v) => Model.AddElement(v)); Model.AddElements(splitters.Select(s => new ModelCurve(s, BuiltInMaterials.XAxis))); @@ -519,8 +520,8 @@ public void ProfileInvalidWontThrow() public void DifferenceToleratesBadGeometry() { Name = nameof(DifferenceToleratesBadGeometry); - var cp = JsonConvert.DeserializeObject>(File.ReadAllText("../../../models/Geometry/corridorProfiles.json")); - var lb = JsonConvert.DeserializeObject(File.ReadAllText("../../../models/Geometry/levelBoundary.json")); + var cp = JsonSerializer.Deserialize>(File.ReadAllText("../../../models/Geometry/corridorProfiles.json")); + var lb = JsonSerializer.Deserialize(File.ReadAllText("../../../models/Geometry/levelBoundary.json")); var results = Elements.Geometry.Profile.Difference(new[] { lb }, cp); Model.AddElements(results); Model.AddElements(results.SelectMany(r => r.ToModelCurves())); diff --git a/Elements/test/SolidTests.cs b/Elements/test/SolidTests.cs index 83706c19c..aab19f873 100644 --- a/Elements/test/SolidTests.cs +++ b/Elements/test/SolidTests.cs @@ -10,6 +10,7 @@ using Elements.Serialization.glTF; using Elements.Serialization.JSON; using System.Linq; +using Newtonsoft.Json; namespace Elements.Tests { @@ -270,7 +271,7 @@ public void CreateLaminaWithHoles() public void ConstructedSolidProducesValidGlb() { Name = nameof(ConstructedSolidProducesValidGlb); - var allPolygons = JsonConvert.DeserializeObject innerLoops)>>(File.ReadAllText("../../../models/Geometry/ExampleConstructedSolidPolygons.json")); + var allPolygons = System.Text.Json.JsonSerializer.Deserialize innerLoops)>>(File.ReadAllText("../../../models/Geometry/ExampleConstructedSolidPolygons.json")); var solid = new Solid(); foreach (var face in allPolygons) { diff --git a/Elements/test/TopographyTests.cs b/Elements/test/TopographyTests.cs index 7700c5ffb..4e4711324 100644 --- a/Elements/test/TopographyTests.cs +++ b/Elements/test/TopographyTests.cs @@ -12,6 +12,7 @@ using Xunit; using Xunit.Abstractions; using SixLabors.ImageSharp.Processing; +using System.Text.Json; namespace Elements.Tests { @@ -31,7 +32,7 @@ public void Example() // // Read topo elevations from a file. - var data = JsonConvert.DeserializeObject>(File.ReadAllText("./elevations.json")); + var data = JsonSerializer.Deserialize>(File.ReadAllText("./elevations.json")); var latitude = 45; var elevations = data["points"]; var tileSize = WebMercatorProjection.GetTileSizeMeters(latitude, 15); @@ -411,7 +412,7 @@ public void CreateTopoFromMesh() private static Topography CreateTopoFromMapboxElevations(Vector3 origin = default(Vector3), Material material = null) { // Read topo elevations - var data = JsonConvert.DeserializeObject>(File.ReadAllText("./elevations.json")); + var data = JsonSerializer.Deserialize>(File.ReadAllText("./elevations.json")); var elevations = data["points"]; // Compute the mapbox tile side length. From 769a49813b2d9be6df5fca5f73b36f14899633d6 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sat, 16 Apr 2022 18:22:20 -0700 Subject: [PATCH 032/150] Convert geojson to system.text.json. --- Elements/src/GeoJSON/Feature.cs | 7 +- Elements/src/GeoJSON/Geometry.cs | 18 ----- Elements/src/GeoJSON/GeometryCollection.cs | 26 +++++++ Elements/src/GeoJSON/GeometryConverter.cs | 85 +++++++++++---------- Elements/src/GeoJSON/PositionConverter.cs | 44 ++++++----- Elements/src/GeoJSON/PropertiesConverter.cs | 63 +++++++++++++++ Elements/test/GeoJSONTests.cs | 3 +- 7 files changed, 166 insertions(+), 80 deletions(-) create mode 100644 Elements/src/GeoJSON/GeometryCollection.cs create mode 100644 Elements/src/GeoJSON/PropertiesConverter.cs diff --git a/Elements/src/GeoJSON/Feature.cs b/Elements/src/GeoJSON/Feature.cs index fefe7a22c..2d62e6a2f 100644 --- a/Elements/src/GeoJSON/Feature.cs +++ b/Elements/src/GeoJSON/Feature.cs @@ -24,6 +24,7 @@ public string Type /// All properties of the feature. /// [JsonPropertyName("properties")] + [JsonConverter(typeof(PropertiesConverter))] public Dictionary Properties { get; set; } /// @@ -31,7 +32,7 @@ public string Type /// [JsonPropertyName("geometry")] [JsonConverter(typeof(GeometryConverter))] - public Geometry Geometry { get; set; } + public object Geometry { get; set; } /// /// The bounding box of the feature. @@ -44,10 +45,10 @@ public string Type /// /// /// - public Feature(Geometry geometry, Dictionary properties) + public Feature(object geometry, Dictionary properties) { this.Geometry = geometry; - this.Properties = properties; + this.Properties = properties ?? new Dictionary(); } } } \ No newline at end of file diff --git a/Elements/src/GeoJSON/Geometry.cs b/Elements/src/GeoJSON/Geometry.cs index 6bad28823..497870691 100644 --- a/Elements/src/GeoJSON/Geometry.cs +++ b/Elements/src/GeoJSON/Geometry.cs @@ -240,22 +240,4 @@ public MultiPolygon(Position[][] coordinates) this.Coordinates = coordinates; } } - - /// - /// A GeoJSON geometry collection. - /// - public class GeometryCollection - { - [JsonPropertyName("geometries")] - Geometry[] Geometries { get; } - - /// - /// Construct a geometry collection. - /// - /// An array of geometries. - public GeometryCollection(Geometry[] geometries) - { - this.Geometries = geometries; - } - } } \ No newline at end of file diff --git a/Elements/src/GeoJSON/GeometryCollection.cs b/Elements/src/GeoJSON/GeometryCollection.cs new file mode 100644 index 000000000..1f80bfbed --- /dev/null +++ b/Elements/src/GeoJSON/GeometryCollection.cs @@ -0,0 +1,26 @@ +using System.Text.Json.Serialization; + +namespace Elements.GeoJSON +{ + + /// + /// A GeoJSON geometry collection. + /// + public class GeometryCollection + { + /// + /// A collection of geometry. + /// + [JsonPropertyName("geometries")] + public Geometry[] Geometries { get; } + + /// + /// Construct a geometry collection. + /// + /// An array of geometries. + public GeometryCollection(Geometry[] geometries) + { + this.Geometries = geometries; + } + } +} \ No newline at end of file diff --git a/Elements/src/GeoJSON/GeometryConverter.cs b/Elements/src/GeoJSON/GeometryConverter.cs index 8470be071..cd1b31f02 100644 --- a/Elements/src/GeoJSON/GeometryConverter.cs +++ b/Elements/src/GeoJSON/GeometryConverter.cs @@ -1,55 +1,60 @@ using System; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; +using System.Text.Json; +using System.Text.Json.Serialization; namespace Elements.GeoJSON { - public class GeometryConverter : JsonConverter + /// + /// Convert geojson geometry. + /// + public class GeometryConverter : JsonConverter { - public override bool CanConvert(Type objectType) + /// + /// Read geometry. + /// + /// + /// + /// + public override object Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { - if (typeof(Geometry).IsAssignableFrom(objectType)) + using (var doc = JsonDocument.ParseValue(ref reader)) { - return true; - } - return false; - } + var root = doc.RootElement; - public override bool CanWrite - { - get { return false; } - } - - public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) - { - var jsonObject = JObject.Load(reader); - string typeName = (jsonObject["type"]).ToString(); - switch (typeName) - { - case "Point": - return jsonObject.ToObject(); - case "Line": - return jsonObject.ToObject(); - case "MultiPoint": - return jsonObject.ToObject(); - case "LineString": - return jsonObject.ToObject(); - case "MultiLineString": - return jsonObject.ToObject(); - case "Polygon": - return jsonObject.ToObject(); - case "MultiPolygon": - return jsonObject.ToObject(); - case "GeometryCollection": - return jsonObject.ToObject(); - default: - throw new Exception($"The type found in the GeoJSON, {typeName}, could not be resolved."); + var typeName = root.GetProperty("type").GetString(); + switch (typeName) + { + case "Point": + return root.Deserialize(); + case "Line": + return root.Deserialize(); + case "MultiPoint": + return root.Deserialize(); + case "LineString": + return root.Deserialize(); + case "MultiLineString": + return root.Deserialize(); + case "Polygon": + return root.Deserialize(); + case "MultiPolygon": + return root.Deserialize(); + case "GeometryCollection": + return root.Deserialize(); + default: + throw new Exception($"The type found in the GeoJSON, {typeName}, could not be resolved."); + } } } - public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + /// + /// Write geometry. + /// + /// + /// + /// + public override void Write(Utf8JsonWriter writer, object value, JsonSerializerOptions options) { - throw new NotImplementedException(); + JsonSerializer.Serialize(writer, value); } } } \ No newline at end of file diff --git a/Elements/src/GeoJSON/PositionConverter.cs b/Elements/src/GeoJSON/PositionConverter.cs index 81bad484d..a685cbe5f 100644 --- a/Elements/src/GeoJSON/PositionConverter.cs +++ b/Elements/src/GeoJSON/PositionConverter.cs @@ -1,33 +1,41 @@ using System; -using Newtonsoft.Json; +using System.Text.Json; +using System.Text.Json.Serialization; namespace Elements.GeoJSON { - public class PositionConverter : JsonConverter + /// + /// Convert a geojson position object to an array of coordinates. + /// + public class PositionConverter : JsonConverter { - public override bool CanConvert(Type objectType) + /// + /// Read a position. + /// + /// + /// + /// + public override Position Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { - if (objectType == typeof(Position)) + using (var doc = JsonDocument.ParseValue(ref reader)) { - return true; + var root = doc.RootElement; + var values = root.Deserialize(); + return new Position(values[1], values[0]); } - return false; } - public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + /// + /// Write a position. + /// + /// + /// + /// + public override void Write(Utf8JsonWriter writer, Position value, JsonSerializerOptions options) { - var lon = reader.ReadAsDouble(); - var lat = reader.ReadAsDouble(); - reader.Read(); - return new Position(lat.Value, lon.Value); - } - - public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) - { - var p = (Position)value; writer.WriteStartArray(); - writer.WriteValue(p.Longitude); - writer.WriteValue(p.Latitude); + writer.WriteNumberValue(value.Longitude); + writer.WriteNumberValue(value.Latitude); writer.WriteEndArray(); } } diff --git a/Elements/src/GeoJSON/PropertiesConverter.cs b/Elements/src/GeoJSON/PropertiesConverter.cs new file mode 100644 index 000000000..75b9b1d5c --- /dev/null +++ b/Elements/src/GeoJSON/PropertiesConverter.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace Elements.GeoJSON +{ + /// + /// Convert geojson properties. + /// + public class PropertiesConverter : JsonConverter> + { + /// + /// Read properties. + /// + /// + /// + /// + /// + public override Dictionary Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + var properties = new Dictionary(); + using (var doc = JsonDocument.ParseValue(ref reader)) + { + var root = doc.RootElement; + foreach (var el in root.EnumerateObject()) + { + var key = el.Name; + switch (el.Value.ValueKind) + { + // TODO: Support additional types of geojson properties + // as needed. + case JsonValueKind.Number: + if (el.Value.TryGetInt32(out var intValue)) + { + properties.Add(key, intValue); + } + else if (el.Value.TryGetDouble(out var doubleValue)) + { + properties.Add(key, doubleValue); + } + break; + case JsonValueKind.String: + properties.Add(key, el.Value.GetString()); + break; + } + } + } + return properties; + } + + /// + /// Write properties. + /// + /// + /// + /// + public override void Write(Utf8JsonWriter writer, Dictionary value, JsonSerializerOptions options) + { + JsonSerializer.Serialize(writer, value); + } + } +} \ No newline at end of file diff --git a/Elements/test/GeoJSONTests.cs b/Elements/test/GeoJSONTests.cs index b614d73ad..0ef1b0ad6 100644 --- a/Elements/test/GeoJSONTests.cs +++ b/Elements/test/GeoJSONTests.cs @@ -1,5 +1,4 @@ using Elements.GeoJSON; -using System.Text.Json.Serialization; using System; using Xunit; using Line = Elements.GeoJSON.Line; @@ -144,6 +143,8 @@ public void FeatureCollection_SerializeValid() var f1 = new Feature(p, null); var f2 = new Feature(l, null); var fc = new FeatureCollection(new[] { f1, f2 }); + f1.Properties.Add("foo", "This is foo."); + f2.Properties.Add("bar", 42); var json = JsonSerializer.Serialize(fc); } From 801c2723874fd4f0afae53979f6b8abc970865c9 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sun, 17 Apr 2022 00:29:18 -0700 Subject: [PATCH 033/150] Convert model methods to use new logic. All model tests pass. --- Elements.Benchmarks/Trace.cs | 2 +- Elements/src/ContentCatalog.cs | 1 - Elements/src/ContentElement.cs | 1 - Elements/src/Floor.cs | 3 + Elements/src/GeoJSON/GeometryConverter.cs | 2 +- Elements/src/GeometricElement.cs | 1 - Elements/src/Mass.cs | 2 + Elements/src/MeshElement.cs | 2 + Elements/src/Model.cs | 84 ++-------- .../Serialization/JSON/ElementConverter.cs | 15 +- .../JSON/JsonInheritanceConverter.cs | 12 +- .../src/Serialization/JSON/MeshConverter.cs | 155 +++++++++--------- .../src/Serialization/JSON/ModelConverter.cs | 53 +++--- .../JSON/PropertySerializationExtensions.cs | 8 + Elements/src/Wall.cs | 2 + Elements/src/WallByProfile.cs | 2 - Elements/test/Grid2dElement.cs | 2 - Elements/test/MeshTests.cs | 12 +- Elements/test/ModelTests.cs | 46 +----- Elements/test/StructuralFramingTests.cs | 4 - Elements/test/UserElementTests.cs | 4 +- 21 files changed, 184 insertions(+), 229 deletions(-) diff --git a/Elements.Benchmarks/Trace.cs b/Elements.Benchmarks/Trace.cs index 5aaf7e45c..dd2eba9ec 100644 --- a/Elements.Benchmarks/Trace.cs +++ b/Elements.Benchmarks/Trace.cs @@ -17,7 +17,7 @@ public void TraceModelCreation() var factory = new HSSPipeProfileFactory(); var hssProfiles = factory.AllProfiles().ToList(); var model = ElementCreation.DrawAllBeams(hssProfiles); - model.ToJson(gatherSubElements: false); + model.ToJson(); } } diff --git a/Elements/src/ContentCatalog.cs b/Elements/src/ContentCatalog.cs index 0bcabcc35..8161bbdd8 100644 --- a/Elements/src/ContentCatalog.cs +++ b/Elements/src/ContentCatalog.cs @@ -9,7 +9,6 @@ namespace Elements /// /// A collection of content elements. /// - [JsonConverter(typeof(ElementConverter))] public class ContentCatalog : Element { /// The content elements in this catalog. diff --git a/Elements/src/ContentElement.cs b/Elements/src/ContentElement.cs index f7bfe31c1..7ac148df6 100644 --- a/Elements/src/ContentElement.cs +++ b/Elements/src/ContentElement.cs @@ -10,7 +10,6 @@ namespace Elements /// /// An element representing user content. /// - [JsonConverter(typeof(ElementConverter))] public class ContentElement : GeometricElement { /// The URI of the gltf for this element. diff --git a/Elements/src/Floor.cs b/Elements/src/Floor.cs index 768dc0673..9c6cf278e 100644 --- a/Elements/src/Floor.cs +++ b/Elements/src/Floor.cs @@ -4,6 +4,7 @@ using Elements.Geometry.Solids; using System.Collections.Generic; using System.Text.Json.Serialization; +using Elements.Serialization.JSON; namespace Elements { @@ -29,6 +30,7 @@ public class Floor : GeometricElement, IHasOpenings /// /// The untransformed profile of the floor. /// + [JsonConverter(typeof(ElementConverter))] public Profile Profile { get; set; } /// @@ -47,6 +49,7 @@ public class Floor : GeometricElement, IHasOpenings /// Is this an element definition? /// The floor's id. /// The floor's name. + [JsonConstructor] public Floor(Profile profile, double thickness, Transform transform = null, diff --git a/Elements/src/GeoJSON/GeometryConverter.cs b/Elements/src/GeoJSON/GeometryConverter.cs index cd1b31f02..1ee2524f1 100644 --- a/Elements/src/GeoJSON/GeometryConverter.cs +++ b/Elements/src/GeoJSON/GeometryConverter.cs @@ -54,7 +54,7 @@ public override object Read(ref Utf8JsonReader reader, Type typeToConvert, JsonS /// public override void Write(Utf8JsonWriter writer, object value, JsonSerializerOptions options) { - JsonSerializer.Serialize(writer, value); + JsonSerializer.Serialize(writer, value, options); } } } \ No newline at end of file diff --git a/Elements/src/GeometricElement.cs b/Elements/src/GeometricElement.cs index 5809d435b..a179ff097 100644 --- a/Elements/src/GeometricElement.cs +++ b/Elements/src/GeometricElement.cs @@ -12,7 +12,6 @@ namespace Elements /// /// An element with a geometric representation. /// - [JsonConverter(typeof(ElementConverter))] public class GeometricElement : Element { /// The element's transform. diff --git a/Elements/src/Mass.cs b/Elements/src/Mass.cs index 10d06c54d..774ae370b 100644 --- a/Elements/src/Mass.cs +++ b/Elements/src/Mass.cs @@ -3,6 +3,7 @@ using System.Text.Json.Serialization; using System; using System.Collections.Generic; +using Elements.Serialization.JSON; namespace Elements { @@ -17,6 +18,7 @@ public class Mass : GeometricElement /// /// The profile of the mass. /// + [JsonConverter(typeof(ElementConverter))] public Profile Profile { get; set; } /// diff --git a/Elements/src/MeshElement.cs b/Elements/src/MeshElement.cs index 0f3e65f65..ff3970f45 100644 --- a/Elements/src/MeshElement.cs +++ b/Elements/src/MeshElement.cs @@ -2,6 +2,7 @@ using Elements.Geometry; using Elements.Geometry.Interfaces; using System.Text.Json.Serialization; +using Elements.Serialization.JSON; namespace Elements { @@ -21,6 +22,7 @@ public class MeshElement : GeometricElement, ITessellate /// /// The element's mesh. /// + [JsonConverter(typeof(MeshConverter))] public Mesh Mesh { get { return this._mesh; } diff --git a/Elements/src/Model.cs b/Elements/src/Model.cs index 0e07514fe..c0ca5807a 100644 --- a/Elements/src/Model.cs +++ b/Elements/src/Model.cs @@ -14,7 +14,6 @@ using System.IO; using System.Text.Json; using System.Diagnostics; -using Newtonsoft.Json; namespace Elements { @@ -213,25 +212,12 @@ public string ToJson(bool indent = false, bool gatherSubElements = true) { var exportModel = CreateExportModel(gatherSubElements); - return JsonConvert.SerializeObject(exportModel, indent ? Formatting.Indented : Formatting.None); - } - - /// - /// Serialize the model to JSON using default arguments. - /// - public string ToJson() - { - // The arguments here are meant to match the default arguments of the ToJson(bool, bool) method above. - return ToJson(false, true); - } - - /// - /// Serialize the model to JSON to match default arguments. - /// TODO this method can be removed after Hypar.Functions release 0.9.11 occurs. - /// - public string ToJson(bool indent = false) - { - return ToJson(indent, true); + var serializerOptions = new JsonSerializerOptions + { + WriteIndented = indent + }; + serializerOptions.Converters.Add(new ElementConverterFactory()); + return JsonSerializer.Serialize(exportModel, serializerOptions); } /// @@ -246,12 +232,8 @@ public void ToJson(string path, bool gatherSubElements = true) // Json.net recommends writing to a stream for anything over 85k to avoid a string on the large object heap. // https://www.newtonsoft.com/json/help/html/Performance.htm using (FileStream s = File.Create(path)) - using (StreamWriter writer = new StreamWriter(s)) - using (JsonTextWriter jsonWriter = new JsonTextWriter(writer)) { - var serializer = new Newtonsoft.Json.JsonSerializer(); - serializer.Serialize(jsonWriter, exportModel); - jsonWriter.Flush(); + JsonSerializer.Serialize(s, exportModel); } } @@ -274,49 +256,7 @@ internal Model CreateExportModel(bool gatherSubElements) /// Deserialize a model from JSON. /// /// The JSON representing the model. - /// A collection of deserialization errors. - /// Option to force reloading the inernal type cache. Use if you add types dynamically in your code. - public static Model FromJson(string json, out List errors, bool forceTypeReload = false) - { - // When user elements have been loaded into the app domain, they haven't always been - // loaded into the InheritanceConverter's Cache. This does have some overhead, - // but is useful here, at the Model level, to ensure user types are available. - var deserializationErrors = new List(); - if (forceTypeReload) - { - JsonInheritanceConverter.RefreshAppDomainTypeCache(out var typeLoadErrors); - deserializationErrors.AddRange(typeLoadErrors); - } - - var model = JsonConvert.DeserializeObject(json, new JsonSerializerSettings() - { - Error = (sender, args) => - { - deserializationErrors.Add(args.ErrorContext.Error.Message); - args.ErrorContext.Handled = true; - } - }); - errors = deserializationErrors; - JsonInheritanceConverter.Elements.Clear(); - return model; - } - - public static Model FromJson(string json, bool forceTypeReload = false) - { - return FromJson(json, out _, forceTypeReload); - } - - /// - /// Deserialize a model from JSON - /// - public string ToJsonNew() - { - var serializerOptions = new JsonSerializerOptions(); - serializerOptions.Converters.Add(new ElementConverterFactory()); - return System.Text.Json.JsonSerializer.Serialize(this, serializerOptions); - } - - public static Model FromJsonNew(string json) + public static Model FromJson(string json) { var sw = new Stopwatch(); sw.Start(); @@ -331,7 +271,7 @@ public static Model FromJsonNew(string json) var options = new JsonSerializerOptions() { - PropertyNameCaseInsensitive = true + PropertyNameCaseInsensitive = true, }; // Our custom reference handler will cache elements by id as @@ -340,7 +280,11 @@ public static Model FromJsonNew(string json) var refHandler = new ElementReferenceHandler(typeCache, elementsElement); options.ReferenceHandler = refHandler; - model = System.Text.Json.JsonSerializer.Deserialize(json, options); + // We use the model converter here so that we have a chance to + // intercept the creation of elements when things go wrong. + options.Converters.Add(new ModelConverter()); + + model = JsonSerializer.Deserialize(json, options); // Resetting the reference handler, empties the internal // elements cache. diff --git a/Elements/src/Serialization/JSON/ElementConverter.cs b/Elements/src/Serialization/JSON/ElementConverter.cs index 3b4fb1a70..b3e4bc0ca 100644 --- a/Elements/src/Serialization/JSON/ElementConverter.cs +++ b/Elements/src/Serialization/JSON/ElementConverter.cs @@ -38,7 +38,20 @@ public override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerial var root = doc.RootElement; var discriminator = root.GetProperty("discriminator").GetString(); - var derivedType = resolver.TypeCache[discriminator]; + + if (!resolver.TypeCache.TryGetValue(discriminator, out var derivedType)) + { + // The type could not be found. See if it has the hallmarks + // of a geometric element and deserialize it as such if possible. + if (root.TryGetProperty("Representation", out _)) + { + derivedType = typeof(GeometricElement); + } + else + { + return default; + } + } // Use the type info to get all properties which are Element // references, and deserialize those first. diff --git a/Elements/src/Serialization/JSON/JsonInheritanceConverter.cs b/Elements/src/Serialization/JSON/JsonInheritanceConverter.cs index 4f6cd7387..ea904c470 100644 --- a/Elements/src/Serialization/JSON/JsonInheritanceConverter.cs +++ b/Elements/src/Serialization/JSON/JsonInheritanceConverter.cs @@ -4,6 +4,8 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; +using Elements.Geometry; +using Elements.Geometry.Solids; using Newtonsoft.Json; using Newtonsoft.Json.Linq; @@ -115,10 +117,14 @@ private static bool IsValidTypeForElements(Type t) { if (t.IsPublic && t.IsClass) { - var attrib = t.GetCustomAttribute(); - if (attrib != null && attrib.ConverterType == typeof(JsonInheritanceConverter)) + var attrib = t.GetCustomAttribute(); + if (attrib != null && attrib.ConverterType.GenericTypeArguments.Length > 0) { - return true; + var valid = attrib.ConverterType.GenericTypeArguments[0] == t + || attrib.ConverterType == typeof(ElementConverter) + || attrib.ConverterType == typeof(ElementConverter) + || attrib.ConverterType == typeof(ElementConverter); + return valid; } } diff --git a/Elements/src/Serialization/JSON/MeshConverter.cs b/Elements/src/Serialization/JSON/MeshConverter.cs index a6f19ec09..329930f54 100644 --- a/Elements/src/Serialization/JSON/MeshConverter.cs +++ b/Elements/src/Serialization/JSON/MeshConverter.cs @@ -4,22 +4,16 @@ using System.Collections.Generic; using System.Linq; using Elements.Geometry; -using Newtonsoft.Json.Linq; -using Newtonsoft.Json; +using System.Text.Json.Serialization; +using System.Text.Json; namespace Elements.Serialization.JSON { /// /// Triangle converter. /// - public class MeshConverter : JsonConverter + public class MeshConverter : JsonConverter { - public override bool CanConvert(Type objectType) - { - return objectType == typeof(Mesh); - } - - // There are currently two version of the Mesh schema used on our platform. // One used in explore and one used in the Elements Library. // Explore - https://hypar.io/Schemas/Mesh.json - used in input_schema @@ -27,103 +21,106 @@ public override bool CanConvert(Type objectType) // TODO These schemas should converge to one. They both should change to match the serialized format of the // data that is being transmitted on the platform. Neither schema matches the desired serialization format currently. // The desired schema format is the one this converter reads/writes, it is very compact. - public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + public override Mesh Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { - if (reader.Value == null && reader.TokenType == JsonToken.Null) + if (reader.TokenType == JsonTokenType.Null) { return null; } - var obj = JObject.Load(reader); - var mesh = new Mesh(); - if (obj.TryGetValue("vertices", out var vertices)) + using (var doc = JsonDocument.ParseValue(ref reader)) { - //input_schema Mesh path - var allVertices = new List(vertices.Count()); - foreach (var v in vertices) - { - var i = v["index"].ToObject(); - var p = v["position"]; - var x2 = p["X"].ToObject(); - - allVertices.Insert(i, new Vertex(new Vector3( - v["position"]["X"].ToObject(), - v["position"]["Y"].ToObject(), - v["position"]["Z"].ToObject() - ) - )); - } - foreach (var v in allVertices) - { - mesh.AddVertex(v); - } + var root = doc.RootElement; - foreach (var t in obj["triangles"]) - { - var indices = t["vertexIndices"]; - mesh.AddTriangle(allVertices[indices[0].ToObject()], - allVertices[indices[1].ToObject()], - allVertices[indices[2].ToObject()]); - } - } - else - { - //Elements Mesh path - var positions = obj["Positions"].ToObject>(); - var colors = obj["Colors"].ToObject>(); - var normals = obj["Normals"].ToObject>(); - var uvs = obj["UVs"].ToObject>(); + var mesh = new Mesh(); - for (var i = 0; i < positions.Count / 3; i++) + if (root.TryGetProperty("vertices", out var verticesElement)) { - var pi = i * 3; - var ui = i * 2; - var ci = i * 4; - mesh.AddVertex(new Vector3(positions[pi], - positions[pi + 1], - positions[pi + 2]), new UV(uvs[ui], - uvs[ui + 1]), new Vector3(normals[pi], - normals[pi + 1], - normals[pi + 2]), new Color(colors[ci], - colors[ci + 1], - colors[ci + 2], - colors[ci + 3])); + //input_schema Mesh path + var allVertices = new List(verticesElement.GetArrayLength()); + foreach (var v in verticesElement.EnumerateArray()) + { + ; + var i = v.GetProperty("index").GetInt32(); + var p = v.GetProperty("position"); + + allVertices.Insert(i, new Vertex(new Vector3( + p.GetProperty("X").GetDouble(), + p.GetProperty("Y").GetDouble(), + p.GetProperty("Z").GetDouble() + ) + )); + } + foreach (var v in allVertices) + { + mesh.AddVertex(v); + } + + foreach (var t in root.GetProperty("triangles").EnumerateArray()) + { + var indices = t.GetProperty("vertexIndices"); + mesh.AddTriangle(allVertices[indices[0].GetInt32()], + allVertices[indices[1].GetInt32()], + allVertices[indices[2].GetInt32()]); + } } - - var triangles = obj["Triangles"].ToObject>(); - for (var i = 0; i < triangles.Count; i += 3) + else { - var a = mesh.Vertices[triangles[i]]; - var b = mesh.Vertices[triangles[i + 1]]; - var c = mesh.Vertices[triangles[i + 2]]; - var tri = new Triangle(a, b, c); - mesh.AddTriangle(tri); + //Elements Mesh path + var positions = root.GetProperty("Positions").Deserialize>(); + var colors = root.GetProperty("Colors").Deserialize>(); + var normals = root.GetProperty("Normals").Deserialize>(); + var uvs = root.GetProperty("UVs").Deserialize>(); + + for (var i = 0; i < positions.Count / 3; i++) + { + var pi = i * 3; + var ui = i * 2; + var ci = i * 4; + mesh.AddVertex(new Vector3(positions[pi], + positions[pi + 1], + positions[pi + 2]), new UV(uvs[ui], + uvs[ui + 1]), new Vector3(normals[pi], + normals[pi + 1], + normals[pi + 2]), new Color(colors[ci], + colors[ci + 1], + colors[ci + 2], + colors[ci + 3])); + } + + var triangles = root.GetProperty("Triangles").Deserialize>(); + for (var i = 0; i < triangles.Count; i += 3) + { + var a = mesh.Vertices[triangles[i]]; + var b = mesh.Vertices[triangles[i + 1]]; + var c = mesh.Vertices[triangles[i + 2]]; + var tri = new Triangle(a, b, c); + mesh.AddTriangle(tri); + } } - } - return mesh; + return mesh; + } } - public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + public override void Write(Utf8JsonWriter writer, Mesh value, JsonSerializerOptions options) { - var m = (Mesh)value; - writer.WriteStartObject(); writer.WritePropertyName("Positions"); - serializer.Serialize(writer, m.Vertices.SelectMany(v => new[] { v.Position.X, v.Position.Y, v.Position.Z })); + JsonSerializer.Serialize(writer, value.Vertices.SelectMany(v => new[] { v.Position.X, v.Position.Y, v.Position.Z })); writer.WritePropertyName("Normals"); - serializer.Serialize(writer, m.Vertices.SelectMany(v => new[] { v.Normal.X, v.Normal.Y, v.Normal.Z })); + JsonSerializer.Serialize(writer, value.Vertices.SelectMany(v => new[] { v.Normal.X, v.Normal.Y, v.Normal.Z })); writer.WritePropertyName("UVs"); - serializer.Serialize(writer, m.Vertices.SelectMany(v => new[] { v.UV.U, v.UV.V })); + JsonSerializer.Serialize(writer, value.Vertices.SelectMany(v => new[] { v.UV.U, v.UV.V })); writer.WritePropertyName("Colors"); - serializer.Serialize(writer, m.Vertices.SelectMany(v => new[] { v.Color.Red, v.Color.Green, v.Color.Blue, v.Color.Alpha })); + JsonSerializer.Serialize(writer, value.Vertices.SelectMany(v => new[] { v.Color.Red, v.Color.Green, v.Color.Blue, v.Color.Alpha })); writer.WritePropertyName("Triangles"); - serializer.Serialize(writer, m.Triangles.SelectMany(t => new[] { t.Vertices[0].Index, t.Vertices[1].Index, t.Vertices[2].Index })); + JsonSerializer.Serialize(writer, value.Triangles.SelectMany(t => new[] { t.Vertices[0].Index, t.Vertices[1].Index, t.Vertices[2].Index })); writer.WriteEndObject(); } diff --git a/Elements/src/Serialization/JSON/ModelConverter.cs b/Elements/src/Serialization/JSON/ModelConverter.cs index e120e7b69..b6c127f8a 100644 --- a/Elements/src/Serialization/JSON/ModelConverter.cs +++ b/Elements/src/Serialization/JSON/ModelConverter.cs @@ -1,36 +1,51 @@ using System; +using System.Collections.Generic; using System.Text.Json; using System.Text.Json.Serialization; +using Elements.Geometry; namespace Elements.Serialization.JSON { internal class ModelConverter : JsonConverter { - public override Model Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { - throw new NotImplementedException(); - } - - public override void Write(Utf8JsonWriter writer, Model value, JsonSerializerOptions options) - { - writer.WriteStartObject(); + var elements = new Dictionary(); + using (var doc = JsonDocument.ParseValue(ref reader)) + { + var root = doc.RootElement; + var elementsElement = root.GetProperty("Elements"); + var transform = JsonSerializer.Deserialize(root.GetProperty("Transform")); - // Write the transform - writer.WritePropertyName("Transform"); - JsonSerializer.Serialize(writer, value.Transform); + foreach (var element in elementsElement.EnumerateObject()) + { + // TODO: This try/catch is only here to protect against + // situations like null property values when the serializer + // expects a value. Unlike json.net, system.text.json doesn't + // have null value handling on read. + try + { + var id = Guid.Parse(element.Name); + var e = JsonSerializer.Deserialize(element.Value, options); + if (e != null) + { + elements.Add(id, e); + } + } + catch + { + continue; + } + } - //Write the elements dictionary - writer.WritePropertyName("Elements"); - writer.WriteStartObject(); - foreach (var kvp in value.Elements) - { - writer.WritePropertyName(kvp.Key.ToString()); - JsonSerializer.Serialize(writer, kvp.Value, kvp.Value.GetType(), options); + var model = new Model(transform, elements); + return model; } - writer.WriteEndObject(); + } - writer.WriteEndObject(); + public override void Write(Utf8JsonWriter writer, Model value, JsonSerializerOptions options) + { + JsonSerializer.Serialize(writer, value, options); } } } \ No newline at end of file diff --git a/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs b/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs index 4e60a947d..e5bf87eda 100644 --- a/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs +++ b/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs @@ -96,6 +96,14 @@ public static void DeserializeElementProperties(Type derivedType, foreach (var elementProperty in elementProperties) { var prop = root.GetProperty(elementProperty.Name); + if (prop.ValueKind == JsonValueKind.Null) + { + // You'll get here when you've got a null reference to an element. + // Resolve to an empty id, causing the resolver to return null. + resolver.ResolveReference(string.Empty); + continue; + } + if (prop.TryGetGuid(out var referencedId)) { if (resolver.ResolveReference(referencedId.ToString()) != null) diff --git a/Elements/src/Wall.cs b/Elements/src/Wall.cs index b04d6c3f4..ac5e1816f 100644 --- a/Elements/src/Wall.cs +++ b/Elements/src/Wall.cs @@ -4,6 +4,7 @@ using System.Text.Json.Serialization; using System; using System.Collections.Generic; +using Elements.Serialization.JSON; namespace Elements { @@ -21,6 +22,7 @@ public class Wall : GeometricElement, IHasOpenings /// /// The profile of the wall. /// + [JsonConverter(typeof(ElementConverter))] [Obsolete("The profile property on the Wall base class is obsolete, check the methods of an inherited class like StandardWall or WallByProfile.")] public Profile Profile { get; protected set; } diff --git a/Elements/src/WallByProfile.cs b/Elements/src/WallByProfile.cs index 8f54d8244..70ddd1747 100644 --- a/Elements/src/WallByProfile.cs +++ b/Elements/src/WallByProfile.cs @@ -4,14 +4,12 @@ using Elements.Geometry; using Elements.Geometry.Solids; using System.Text.Json.Serialization; -using Elements.Serialization.JSON; namespace Elements { /// /// A wall drawn using the elevation profile /// - [JsonConverter(typeof(ElementConverter))] public class WallByProfile : Wall { /// The overall thickness of the Wall diff --git a/Elements/test/Grid2dElement.cs b/Elements/test/Grid2dElement.cs index ad004fd49..d8d5a5d46 100644 --- a/Elements/test/Grid2dElement.cs +++ b/Elements/test/Grid2dElement.cs @@ -1,11 +1,9 @@ -using Elements.Serialization.JSON; using Elements.Spatial; using System.Text.Json.Serialization; namespace Elements { /// Just a test - [JsonConverter(typeof(ElementConverter))] public partial class Grid2dElement : Element { /// contains a grid diff --git a/Elements/test/MeshTests.cs b/Elements/test/MeshTests.cs index 873df21c8..e50823214 100644 --- a/Elements/test/MeshTests.cs +++ b/Elements/test/MeshTests.cs @@ -4,6 +4,7 @@ using Elements.Serialization.JSON; using System.Text.Json.Serialization; using Xunit; +using System.Text.Json; namespace Elements.Tests { @@ -34,6 +35,7 @@ public void Volume() var a1 = l1.Area(); Assert.Equal((l.Area() + l1.Area()) * 5, l1Mesh.Volume(), 5); } + [Fact] public void ReadMeshSerializedAsNull() { @@ -42,18 +44,24 @@ public void ReadMeshSerializedAsNull() ""Mesh"": null, } "; - Newtonsoft.Json.JsonConvert.DeserializeObject(json, new[] { new MeshConverter() }); + var options = new JsonSerializerOptions + { + AllowTrailingCommas = true + }; + + JsonSerializer.Deserialize(json, options); } public class InputsWithMesh { [JsonConstructor] - public InputsWithMesh(Mesh @mesh, string bucketName, string uploadsBucket, Dictionary modelInputKeys, string gltfKey, string elementsKey, string ifcKey) + public InputsWithMesh(Mesh @mesh) { this.Mesh = @mesh; } [JsonPropertyName("Mesh")] + [JsonConverter(typeof(MeshConverter))] public Mesh Mesh { get; set; } } } diff --git a/Elements/test/ModelTests.cs b/Elements/test/ModelTests.cs index ae451ce70..21d997dc2 100644 --- a/Elements/test/ModelTests.cs +++ b/Elements/test/ModelTests.cs @@ -5,13 +5,11 @@ using Elements.Serialization.glTF; using System.Collections.Generic; using Elements.Generate; -using System.Text.Json.Serialization; using Elements.Geometry.Solids; using System.Linq; using Xunit.Abstractions; using Newtonsoft.Json.Linq; using System.Threading.Tasks; -using Elements.Geometry.Profiles; using System.Text.Json; namespace Elements.Tests @@ -72,17 +70,12 @@ public void HasOriginAfterSerialization() public void SkipsUnknownTypesDuringDeserialization() { // We've changed an Elements.Beam to Elements.Foo - var modelStr = "{'Transform':{'Matrix':{'Components':[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0]}},'Elements':{'c6d1dc68-f800-47c1-9190-745b525ad569':{'discriminator':'Elements.Baz'}, '37f161d6-a892-4588-ad65-457b04b97236':{'discriminator':'Elements.Geometry.Profiles.WideFlangeProfile','d':1.1176,'tw':0.025908,'bf':0.4064,'tf':0.044958,'Perimeter':{'discriminator':'Elements.Geometry.Polygon','Vertices':[{'X':-0.2032,'Y':0.5588,'Z':0.0},{'X':-0.2032,'Y':0.51384199999999991,'Z':0.0},{'X':-0.012954,'Y':0.51384199999999991,'Z':0.0},{'X':-0.012954,'Y':-0.51384199999999991,'Z':0.0},{'X':-0.2032,'Y':-0.51384199999999991,'Z':0.0},{'X':-0.2032,'Y':-0.5588,'Z':0.0},{'X':0.2032,'Y':-0.5588,'Z':0.0},{'X':0.2032,'Y':-0.51384199999999991,'Z':0.0},{'X':0.012954,'Y':-0.51384199999999991,'Z':0.0},{'X':0.012954,'Y':0.51384199999999991,'Z':0.0},{'X':0.2032,'Y':0.51384199999999991,'Z':0.0},{'X':0.2032,'Y':0.5588,'Z':0.0}]},'Voids':null,'Id':'37f161d6-a892-4588-ad65-457b04b97236','Name':'W44x335'},'6b77d69a-204e-40f9-bc1f-ed84683e64c6':{'discriminator':'Elements.Material','Color':{'Red':0.60000002384185791,'Green':0.5,'Blue':0.5,'Alpha':1.0},'SpecularFactor':0.0,'GlossinessFactor':0.0,'Id':'6b77d69a-204e-40f9-bc1f-ed84683e64c6','Name':'steel'},'fd35bd2c-0108-47df-8e6d-42cc43e4eed0':{'discriminator':'Elements.Foo','Curve':{'discriminator':'Elements.Geometry.Arc','Center':{'X':0.0,'Y':0.0,'Z':0.0},'Radius':2.0,'StartAngle':0.0,'EndAngle':90.0},'StartSetback':0.25,'EndSetback':0.25,'Profile':'37f161d6-a892-4588-ad65-457b04b97236','Transform':{'Matrix':{'Components':[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0]}},'Material':'6b77d69a-204e-40f9-bc1f-ed84683e64c6','Representation':{'SolidOperations':[{'discriminator':'Elements.Geometry.Solids.Sweep','Profile':'37f161d6-a892-4588-ad65-457b04b97236','Curve':{'discriminator':'Elements.Geometry.Arc','Center':{'X':0.0,'Y':0.0,'Z':0.0},'Radius':2.0,'StartAngle':0.0,'EndAngle':90.0},'StartSetback':0.25,'EndSetback':0.25,'Rotation':0.0,'IsVoid':false}]},'Id':'fd35bd2c-0108-47df-8e6d-42cc43e4eed0','Name':null}}}"; - var model = Model.FromJson(modelStr, out var errors); - foreach (var e in errors) - { - this._output.WriteLine(e); - } + var modelStr = "{\"Transform\":{\"Matrix\":{\"Components\":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0]}},\"Elements\":{\"c6d1dc68-f800-47c1-9190-745b525ad569\":{\"discriminator\":\"Elements.Baz\"}, \"37f161d6-a892-4588-ad65-457b04b97236\":{\"discriminator\":\"Elements.Geometry.Profiles.WideFlangeProfile\",\"d\":1.1176,\"tw\":0.025908,\"bf\":0.4064,\"tf\":0.044958,\"Perimeter\":{\"discriminator\":\"Elements.Geometry.Polygon\",\"Vertices\":[{\"X\":-0.2032,\"Y\":0.5588,\"Z\":0.0},{\"X\":-0.2032,\"Y\":0.51384199999999991,\"Z\":0.0},{\"X\":-0.012954,\"Y\":0.51384199999999991,\"Z\":0.0},{\"X\":-0.012954,\"Y\":-0.51384199999999991,\"Z\":0.0},{\"X\":-0.2032,\"Y\":-0.51384199999999991,\"Z\":0.0},{\"X\":-0.2032,\"Y\":-0.5588,\"Z\":0.0},{\"X\":0.2032,\"Y\":-0.5588,\"Z\":0.0},{\"X\":0.2032,\"Y\":-0.51384199999999991,\"Z\":0.0},{\"X\":0.012954,\"Y\":-0.51384199999999991,\"Z\":0.0},{\"X\":0.012954,\"Y\":0.51384199999999991,\"Z\":0.0},{\"X\":0.2032,\"Y\":0.51384199999999991,\"Z\":0.0},{\"X\":0.2032,\"Y\":0.5588,\"Z\":0.0}]},\"Voids\":null,\"Id\":\"37f161d6-a892-4588-ad65-457b04b97236\",\"Name\":\"W44x335\"},\"6b77d69a-204e-40f9-bc1f-ed84683e64c6\":{\"discriminator\":\"Elements.Material\",\"Color\":{\"Red\":0.60000002384185791,\"Green\":0.5,\"Blue\":0.5,\"Alpha\":1.0},\"SpecularFactor\":0.0,\"GlossinessFactor\":0.0,\"Id\":\"6b77d69a-204e-40f9-bc1f-ed84683e64c6\",\"Name\":\"steel\"},\"fd35bd2c-0108-47df-8e6d-42cc43e4eed0\":{\"discriminator\":\"Elements.Foo\",\"Curve\":{\"discriminator\":\"Elements.Geometry.Arc\",\"Center\":{\"X\":0.0,\"Y\":0.0,\"Z\":0.0},\"Radius\":2.0,\"StartAngle\":0.0,\"EndAngle\":90.0},\"StartSetback\":0.25,\"EndSetback\":0.25,\"Profile\":\"37f161d6-a892-4588-ad65-457b04b97236\",\"Transform\":{\"Matrix\":{\"Components\":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0]}},\"Material\":\"6b77d69a-204e-40f9-bc1f-ed84683e64c6\",\"Representation\":{\"SolidOperations\":[{\"discriminator\":\"Elements.Geometry.Solids.Sweep\",\"Profile\":\"37f161d6-a892-4588-ad65-457b04b97236\",\"Curve\":{\"discriminator\":\"Elements.Geometry.Arc\",\"Center\":{\"X\":0.0,\"Y\":0.0,\"Z\":0.0},\"Radius\":2.0,\"StartAngle\":0.0,\"EndAngle\":90.0},\"StartSetback\":0.25,\"EndSetback\":0.25,\"Rotation\":0.0,\"IsVoid\":false}]},\"Id\":\"fd35bd2c-0108-47df-8e6d-42cc43e4eed0\",\"Name\":null}}}"; + var model = Model.FromJson(modelStr); // We expect three geometric elements, // but the baz will not deserialize. Assert.Equal(3, model.Elements.Count); - Assert.Equal(2, errors.Count); } /// @@ -220,7 +213,7 @@ public void DeserializationConstructsWithMissingProperties() // Remove the Location property c.Property("Location").Remove(); - var newModel = Model.FromJson(obj.ToString(), out var errors); + var newModel = Model.FromJson(obj.ToString()); var newColumn = newModel.AllElementsOfType().First(); Assert.Equal(Vector3.Origin, newColumn.Location); } @@ -232,18 +225,15 @@ public void DeserializationSkipsNullProperties() var model = new Model(); model.AddElement(column); var json = model.ToJson(true); + // https://www.newtonsoft.com/json/help/html/ModifyJson.htm var obj = JObject.Parse(json); var elements = obj["Elements"]; var c = (JObject)elements.Values().ElementAt(2); // the column - // Nullify a property. c.Property("Location").Value = null; - var newModel = Model.FromJson(obj.ToString(), out var errors); - foreach (var e in errors) - { - this._output.WriteLine(e); - } + + var newModel = Model.FromJson(obj.ToString()); Assert.Empty(newModel.AllElementsOfType()); } @@ -355,30 +345,6 @@ public void HandlesAllDocumentedSubElements() Assert.False(Model.IsValidForRecursiveAddition(typeof(object))); } - [Fact] - public void SerializesNew() - { - var model = QuadPanelModel(); - var json = model.ToJsonNew(); - _output.WriteLine(json); - var newModel = Model.FromJsonNew(json); - } - - [Fact] - public void SerializesOneBeamNew() - { - var profiles = new WideFlangeProfileFactory(); - var w = profiles.GetProfileByType(WideFlangeProfileType.W44x335); - - var line = new Line(Vector3.Origin, new Vector3(5, 5)); - var beam = new Beam(line, w); - var model = new Model(); - model.AddElement(beam); - var json = model.ToJsonNew(); - _output.WriteLine(json); - var newModel = Model.FromJsonNew(json); - } - [Fact] public void AllElementsAssignableFromType() { diff --git a/Elements/test/StructuralFramingTests.cs b/Elements/test/StructuralFramingTests.cs index 7a1a12746..5a13b644e 100644 --- a/Elements/test/StructuralFramingTests.cs +++ b/Elements/test/StructuralFramingTests.cs @@ -61,10 +61,6 @@ public void BeamExample() this.Model.AddElements(polyT); this.Model.AddElement(arcBeam); this.Model.AddElements(arcT); - - var json = this.Model.ToJsonNew(); - _output.WriteLine(json); - var newModel = Model.FromJsonNew(json); } [Theory] diff --git a/Elements/test/UserElementTests.cs b/Elements/test/UserElementTests.cs index e1e568d08..aec67b07a 100644 --- a/Elements/test/UserElementTests.cs +++ b/Elements/test/UserElementTests.cs @@ -81,8 +81,8 @@ public void CreateCustomElement() this.Model.AddElement(ue); var json = this.Model.ToJson(); - var newModel = Model.FromJson(json, out var errors); - Assert.Empty(errors); + var newModel = Model.FromJson(json); + var newUe = newModel.AllElementsOfType().First(); // Plus one because of the profile that will be added from From 27afc0f15e255f2d3bb99030cd70c85be2db8db1 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sun, 17 Apr 2022 00:29:36 -0700 Subject: [PATCH 034/150] Update the bridge API. --- Elements.Wasm/ElementsAPI.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Elements.Wasm/ElementsAPI.cs b/Elements.Wasm/ElementsAPI.cs index 25e71c6e9..650cc2bc0 100644 --- a/Elements.Wasm/ElementsAPI.cs +++ b/Elements.Wasm/ElementsAPI.cs @@ -14,7 +14,7 @@ public static class ElementsAPI [JSInvokable] public static Task ModelFromJson(string json) { - return Task.FromResult(Model.FromJsonNew(json)); + return Task.FromResult(Model.FromJson(json)); } [JSInvokable] @@ -22,7 +22,7 @@ public static Task ModelToGlbBase64(string json) { Validator.DisableValidationOnConstruction = true; - var model = Model.FromJsonNew(json); + var model = Model.FromJson(json); return Task.FromResult(model.ToBase64String()); } @@ -52,11 +52,11 @@ public static Task Test() sb.AppendLine($"{sw.ElapsedMilliseconds}ms for creating test beams."); sw.Restart(); - var json = model.ToJsonNew(); + var json = model.ToJson(); sb.AppendLine($"{sw.ElapsedMilliseconds}ms for serializing model."); sw.Restart(); - var newModel = Model.FromJsonNew(json); + var newModel = Model.FromJson(json); sb.AppendLine($"{sw.ElapsedMilliseconds}ms for deserializing model."); sw.Restart(); @@ -82,7 +82,7 @@ public static Task ModelToGlbBytes(string json) var sw = new Stopwatch(); sw.Start(); - var model = Model.FromJsonNew(json); + var model = Model.FromJson(json); Console.WriteLine($"{sw.ElapsedMilliseconds}ms for creating the model from json."); sw.Restart(); var result = Task.FromResult(model.ToGlTF()); From c27f54f45fe953e8a40f8ebc715e4a67b27dcc14 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sun, 17 Apr 2022 00:55:27 -0700 Subject: [PATCH 035/150] Update the readme with publish instructions. --- Elements.Wasm/README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Elements.Wasm/README.md b/Elements.Wasm/README.md index dd0d6e169..61ecbbbc3 100644 --- a/Elements.Wasm/README.md +++ b/Elements.Wasm/README.md @@ -5,7 +5,11 @@ This is a minimal web assembly project. `dotnet watch run` ### Publish -`dotnet publish -c release` +``` +dotnet publish -c release +cd bin/release/net6.0/publish/wwwroot +python3 -m http.server +``` ### Files `Elements.js` From 5d63c31876bbd966d36547a4d1da6e546685a878 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sun, 17 Apr 2022 01:43:37 -0700 Subject: [PATCH 036/150] Set publish to AOT compile. --- Elements.Wasm/Elements.Wasm.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/Elements.Wasm/Elements.Wasm.csproj b/Elements.Wasm/Elements.Wasm.csproj index 3d87e5ee5..6a0fcb715 100644 --- a/Elements.Wasm/Elements.Wasm.csproj +++ b/Elements.Wasm/Elements.Wasm.csproj @@ -5,6 +5,7 @@ enable enable en + true From ae23c60d4ac611a845944aef35ddba896c7b0883 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sun, 17 Apr 2022 09:06:29 -0700 Subject: [PATCH 037/150] Expose serialization constructor on topography to fix all topo tests. --- Elements/src/Topography.cs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/Elements/src/Topography.cs b/Elements/src/Topography.cs index 37f7a1042..41888632a 100644 --- a/Elements/src/Topography.cs +++ b/Elements/src/Topography.cs @@ -131,8 +131,22 @@ public Topography(Vector3 origin, RegisterPropertyChangeHandlers(); } + /// + /// Create a topography. + /// + /// A mesh representing the topography. + /// An array of elevation samples which will be converted to a square array of width. + /// The origin of the topography. + /// The number of cells 'across' the topography. + /// The distance between two elevation samples along a row. + /// The distance between two elevation samples along a column. + /// The topography's material. + /// The topography's transform. + /// The topography's id. + /// The topography's name. + /// [JsonConstructor] - internal Topography(Mesh mesh, + public Topography(Mesh mesh, double[] elevations, Vector3 origin, int rowWidth, From e6b88641f0f0e2bab29fa4944c43897f2e2290a5 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Tue, 19 Apr 2022 10:00:27 -0700 Subject: [PATCH 038/150] Fixing joists. --- Elements/src/Joist.cs | 4 ++++ Elements/src/Serialization/JSON/ModelConverter.cs | 3 ++- Elements/src/StructuralFraming.cs | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Elements/src/Joist.cs b/Elements/src/Joist.cs index 8bd61e9b7..59830b64e 100644 --- a/Elements/src/Joist.cs +++ b/Elements/src/Joist.cs @@ -7,6 +7,7 @@ using Elements.Geometry.Solids; using Elements.Spatial; using System.Text.Json.Serialization; +using Elements.Serialization.JSON; namespace Elements { @@ -26,16 +27,19 @@ public class Joist : StructuralFraming /// /// Profile of the top chord of the joist. /// + [JsonConverter(typeof(ElementConverter))] public LProfile TopChordProfile { get; set; } /// /// Profile of the bottom chord of the joist. /// + [JsonConverter(typeof(ElementConverter))] public LProfile BottomChordProfile { get; set; } /// /// Profile of the web of the joist. /// + [JsonConverter(typeof(ElementConverter))] public LProfile WebProfile { get; set; } /// diff --git a/Elements/src/Serialization/JSON/ModelConverter.cs b/Elements/src/Serialization/JSON/ModelConverter.cs index b6c127f8a..bed2b3858 100644 --- a/Elements/src/Serialization/JSON/ModelConverter.cs +++ b/Elements/src/Serialization/JSON/ModelConverter.cs @@ -32,8 +32,9 @@ public override Model Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSe elements.Add(id, e); } } - catch + catch (Exception ex) { + Console.WriteLine(ex.Message); continue; } } diff --git a/Elements/src/StructuralFraming.cs b/Elements/src/StructuralFraming.cs index 45d7a48f0..1ff804eea 100644 --- a/Elements/src/StructuralFraming.cs +++ b/Elements/src/StructuralFraming.cs @@ -15,6 +15,7 @@ public abstract class StructuralFraming : GeometricElement /// /// The center line of the framing element. /// + [JsonConverter(typeof(ElementConverter))] public Curve Curve { get; set; } /// From 6b0110601fb6e8d45608b7df795a6ac16f12d094 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sun, 24 Apr 2022 14:15:32 -0700 Subject: [PATCH 039/150] Finish fixing joists, and start adding parameterless constructors. --- Elements/src/ElementInstance.cs | 6 +++++- Elements/src/Joist.cs | 9 ++++++++- Elements/src/StructuralFraming.cs | 10 +++++++++- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/Elements/src/ElementInstance.cs b/Elements/src/ElementInstance.cs index c1b4dbaca..d800f518c 100644 --- a/Elements/src/ElementInstance.cs +++ b/Elements/src/ElementInstance.cs @@ -1,6 +1,7 @@ using System; using Elements.Geometry; using System.Text.Json.Serialization; +using Elements.Serialization.JSON; namespace Elements { @@ -17,6 +18,7 @@ public class ElementInstance : Element /// /// The element from which this instance is derived. /// + [JsonConverter(typeof(ElementConverter))] public GeometricElement BaseDefinition { get; } /// @@ -26,13 +28,15 @@ public class ElementInstance : Element /// /// Construct an element instance. + /// This constructor is only for JSON serialization. You should use + /// someElement.CreateInstance(...) to create element instances. /// /// The definition from which this instance is derived. /// The transform of the instance. /// The name of the instance. /// The id of the instance. [JsonConstructor] - internal ElementInstance(GeometricElement baseDefinition, + public ElementInstance(GeometricElement baseDefinition, Transform transform, string name = null, Guid id = default(Guid)) : base(id == default(Guid) ? Guid.NewGuid() : id, name) diff --git a/Elements/src/Joist.cs b/Elements/src/Joist.cs index 59830b64e..d65c9c101 100644 --- a/Elements/src/Joist.cs +++ b/Elements/src/Joist.cs @@ -62,6 +62,12 @@ public class Joist : StructuralFraming /// public List JoistPoints { get; set; } = new List(); + [JsonConstructor] + public Joist() : base() + { + // Empty construction for JSON serialization. + } + /// /// Construct a new BarJoist. /// @@ -76,7 +82,6 @@ public class Joist : StructuralFraming /// The cell count of the joist. /// The seat depth of the joist. /// The distance to the first panel of the joist (Y). - [JsonConstructor] public Joist(Line curve, LProfile topChordProfile, LProfile bottomChordProfile, @@ -139,6 +144,8 @@ private Representation ConstructRepresentation() JoistPoints.Clear(); + // TODO: This creates too many profiles. We should reference the + // existing profiles but create local transforms for the profiles. var ll = Construct2LProfile(TopChordProfile, true); var topSweepR = new Sweep(ll[0], diff --git a/Elements/src/StructuralFraming.cs b/Elements/src/StructuralFraming.cs index 1ff804eea..eafb69d60 100644 --- a/Elements/src/StructuralFraming.cs +++ b/Elements/src/StructuralFraming.cs @@ -40,7 +40,15 @@ public abstract class StructuralFraming : GeometricElement public double Rotation { get; set; } /// - /// Construct a beam. + /// Construct a structural framing element. + /// + public StructuralFraming() + { + // Empty construction for JSON serialization. + } + + /// + /// Construct a structural framing element. /// /// The center line of the beam. /// The structural framing's profile. From 40bf6d36ea72a9e2aadc7ea9f907e0837cceb4c6 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sun, 24 Apr 2022 21:20:04 -0700 Subject: [PATCH 040/150] Update user element tests to support collections. --- .../Serialization/JSON/ElementConverter.cs | 106 ++++++--- .../JSON/PropertySerializationExtensions.cs | 209 +++++++++++------- Elements/test/UserElementTests.cs | 10 +- 3 files changed, 222 insertions(+), 103 deletions(-) diff --git a/Elements/src/Serialization/JSON/ElementConverter.cs b/Elements/src/Serialization/JSON/ElementConverter.cs index b3e4bc0ca..c0aec4b19 100644 --- a/Elements/src/Serialization/JSON/ElementConverter.cs +++ b/Elements/src/Serialization/JSON/ElementConverter.cs @@ -21,6 +21,10 @@ public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializer } } + /// + /// Convert elements, lists of elements and dictionaries of elements. + /// + /// internal class ElementConverter : JsonConverter { public override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) @@ -29,44 +33,92 @@ public override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerial if (reader.TokenType == JsonTokenType.String) { + // Convert an id reference into an element. var id = reader.GetString(); - return (T)resolver.ResolveReference(id.ToString()); + return (T)resolver.ResolveReference(id); } - - using (var doc = JsonDocument.ParseValue(ref reader)) + else { - var root = doc.RootElement; - - var discriminator = root.GetProperty("discriminator").GetString(); - - if (!resolver.TypeCache.TryGetValue(discriminator, out var derivedType)) + if (PropertySerializationExtensions.IsAcceptedCollectionType(typeToConvert, out var collectionType)) { - // The type could not be found. See if it has the hallmarks - // of a geometric element and deserialize it as such if possible. - if (root.TryGetProperty("Representation", out _)) + var elements = Activator.CreateInstance(typeToConvert); + var mi = typeToConvert.GetMethod("Add"); + switch (collectionType) { - derivedType = typeof(GeometricElement); - } - else - { - return default; + case CollectionType.List: + // At this point we'll be at the start of an array. + reader.Read(); + do + { + var id = reader.GetString(); + mi.Invoke(elements, new[] { resolver.ResolveReference(id) }); + reader.Read(); + } + while (reader.TokenType != JsonTokenType.EndArray); + break; + case CollectionType.Dictionary: + var args = typeToConvert.GetGenericArguments(); + // At this point we'll be at the start of an object + // This will be a dictionary that looks like id: id + using (var doc = JsonDocument.ParseValue(ref reader)) + { + var root = doc.RootElement; + foreach (var prop in root.EnumerateObject()) + { + if (args[0] == typeof(Guid)) + { + mi.Invoke(elements, new[] { Guid.Parse(prop.Name), resolver.ResolveReference(prop.Value.GetString()) }); + } + else + { + mi.Invoke(elements, new[] { prop.Name, resolver.ResolveReference(prop.Value.GetString()) }); + } + } + } + break; } + return (T)elements; } + else + { - // Use the type info to get all properties which are Element - // references, and deserialize those first. + using (var doc = JsonDocument.ParseValue(ref reader)) + { + // Deserialize an element. + var root = doc.RootElement; - // TODO: This *should* support serialization of elements in - // any order, removing the requirement to do any kind of recursive - // sub-element searching. We can remove that code from the model. - PropertySerializationExtensions.DeserializeElementProperties(derivedType, root, resolver, resolver.DocumentElements); + var discriminator = root.GetProperty("discriminator").GetString(); - T e = (T)root.Deserialize(derivedType, options); - if (typeof(Element).IsAssignableFrom(derivedType)) - { - resolver.AddReference(((Element)(object)e).Id.ToString(), e); + if (!resolver.TypeCache.TryGetValue(discriminator, out var derivedType)) + { + // The type could not be found. See if it has the hallmarks + // of a geometric element and deserialize it as such if possible. + if (root.TryGetProperty("Representation", out _)) + { + derivedType = typeof(GeometricElement); + } + else + { + return default; + } + } + + // Use the type info to get all properties which are Element + // references, and deserialize those first. + + // TODO: This *should* support serialization of elements in + // any order, removing the requirement to do any kind of recursive + // sub-element searching. We can remove that code from the model. + PropertySerializationExtensions.DeserializeElementProperties(derivedType, root, resolver, resolver.DocumentElements); + + T e = (T)root.Deserialize(derivedType, options); + if (typeof(Element).IsAssignableFrom(derivedType)) + { + resolver.AddReference(((Element)(object)e).Id.ToString(), e); + } + return e; + } } - return e; } } diff --git a/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs b/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs index e5bf87eda..23cd244fd 100644 --- a/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs +++ b/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs @@ -7,10 +7,18 @@ namespace Elements.Serialization.JSON { + internal enum CollectionType + { + None, + List, + Dictionary + } + internal static class PropertySerializationExtensions { public static void WriteProperties(this object value, Utf8JsonWriter writer, JsonSerializerOptions options) { + // Inject the discriminator into the serialized JSON. writer.WriteString("discriminator", value.GetDiscriminatorName()); var pinfos = value.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance); @@ -23,76 +31,29 @@ public static void WriteProperties(this object value, Utf8JsonWriter writer, Jso continue; } - // TODO: Use the Newtonsoft version as well. - var newtonIgnore = pinfo.GetCustomAttribute(); - if (newtonIgnore != null) - { - continue; - } - writer.WritePropertyName(pinfo.Name); JsonSerializer.Serialize(writer, pinfo.GetValue(value), pinfo.PropertyType, options); } } - private static string GetDiscriminatorName(this object value) - { - var t = value.GetType(); - if (t.IsGenericType) - { - return $"{t.FullName.Split('`').First()}<{string.Join(",", t.GenericTypeArguments.Select(arg => arg.FullName))}>"; - } - else - { - return t.FullName.Split('`').First(); - } - } - - public static JsonSerializerOptions CopyAndRemoveConverter(this JsonSerializerOptions options, Type converterType) - { - var copy = new JsonSerializerOptions(options); - for (var i = copy.Converters.Count - 1; i >= 0; i--) - if (copy.Converters[i].GetType() == converterType) - copy.Converters.RemoveAt(i); - return copy; - } - - public static Type GetObjectSubtype(Type objectType, string discriminator, Dictionary typeCache) - { - // Check the type cache. - if (discriminator != null && typeCache.ContainsKey(discriminator)) - { - return typeCache[discriminator]; - } - - // Check for proxy generics. - if (discriminator != null && discriminator.StartsWith("Elements.ElementProxy<")) - { - var typeNames = discriminator.Split('<')[1].Split('>')[0].Split(','); // We do this split because in theory we can serialize with multiple generics - var typeName = typeNames.FirstOrDefault(); - var generic = typeCache[typeName]; - var proxy = typeof(ElementProxy<>).MakeGenericType(generic); - return proxy; - } - - // If it's not in the type cache see if it's got a representation. - // Import it as a GeometricElement. - // if (jObject.TryGetValue("Representation", out _)) - // { - // return typeof(GeometricElement); - // } - - // The default behavior for this converter, as provided by nJSONSchema - // is to return the base objectType if a derived type can't be found. - return objectType; - } - public static void DeserializeElementProperties(Type derivedType, JsonElement root, ReferenceResolver resolver, JsonElement documentElements) { - var elementProperties = derivedType.GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(p => typeof(Element).IsAssignableFrom(p.PropertyType)); + var elementReferenceResolver = resolver as ElementReferenceResolver; + + var elementProperties = derivedType.GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(p => + { + // Properties which are elements. + if (typeof(Element).IsAssignableFrom(p.PropertyType)) + { + return true; + }; + + return IsAcceptedCollectionType(p.PropertyType, out _); + }); + foreach (var elementProperty in elementProperties) { var prop = root.GetProperty(elementProperty.Name); @@ -100,33 +61,131 @@ public static void DeserializeElementProperties(Type derivedType, { // You'll get here when you've got a null reference to an element. // Resolve to an empty id, causing the resolver to return null. - resolver.ResolveReference(string.Empty); + elementReferenceResolver.ResolveReference(string.Empty); continue; } - - if (prop.TryGetGuid(out var referencedId)) + else if (prop.ValueKind == JsonValueKind.Array) { - if (resolver.ResolveReference(referencedId.ToString()) != null) + foreach (var value in prop.EnumerateArray()) { - continue; + if (value.TryGetGuid(out var referenceId)) + { + if (documentElements.TryGetProperty(referenceId.ToString(), out var foundElement)) + { + if (foundElement.TryGetProperty("discriminator", out var discriminatorProp)) + { + if (elementReferenceResolver.TypeCache.TryGetValue(discriminatorProp.GetString(), out var discriminatorValue)) + { + HandleReferenceId(value, referenceId, resolver, documentElements, discriminatorValue); + } + } + } + } + else + { + // The array element is not an element. + // Just deserialize it. + } } - - if (documentElements.TryGetProperty(referencedId.ToString(), out var propertyBody)) + continue; + } + else if (prop.ValueKind == JsonValueKind.Object) + { + foreach (var innerProp in prop.EnumerateObject()) { - if (propertyBody.TryGetProperty("discriminator", out var elementBody)) + if (innerProp.Value.TryGetGuid(out var referenceId)) { - var referencedElement = (Element)prop.Deserialize(elementProperty.PropertyType); - resolver.AddReference(referencedId.ToString(), referencedElement); + if (documentElements.TryGetProperty(referenceId.ToString(), out var foundElement)) + { + if (foundElement.TryGetProperty("discriminator", out var discriminatorProp)) + { + if (elementReferenceResolver.TypeCache.TryGetValue(discriminatorProp.GetString(), out var discriminatorValue)) + { + HandleReferenceId(innerProp.Value, referenceId, resolver, documentElements, discriminatorValue); + } + } + } } } - else + continue; + } + + if (prop.TryGetGuid(out var referencedId)) + { + HandleReferenceId(prop, referencedId, resolver, documentElements, elementProperty.PropertyType); + } + } + } + + + internal static bool IsAcceptedCollectionType(Type propertyType, out CollectionType collectionType) + { + if (propertyType.IsGenericType) + { + var def = propertyType.GetGenericTypeDefinition(); + var args = propertyType.GetGenericArguments(); + + // Properties which are List + if (def == typeof(List<>)) + { + if (typeof(Element).IsAssignableFrom(args[0])) { - // The reference cannot be found. It's either not - // a direct reference, as in the case of a cross-model - // reference, or it's just broken. - resolver.AddReference(referencedId.ToString(), null); + collectionType = CollectionType.List; + return true; } } + // Properties which are Dictionary or Dictionary + else if (def == typeof(Dictionary<,>)) + { + if ((args[0] == typeof(Guid) || args[0] == typeof(string)) && typeof(Element).IsAssignableFrom(args[1])) + { + collectionType = CollectionType.Dictionary; + return true; + } + } + } + collectionType = CollectionType.None; + return false; + } + + private static void HandleReferenceId(JsonElement elementToDeserialize, + Guid referencedId, + ReferenceResolver resolver, + JsonElement documentElements, + Type propertyType) + { + if (resolver.ResolveReference(referencedId.ToString()) != null) + { + return; + } + + if (documentElements.TryGetProperty(referencedId.ToString(), out var propertyBody)) + { + if (propertyBody.TryGetProperty("discriminator", out _)) + { + var referencedElement = (Element)elementToDeserialize.Deserialize(propertyType); + resolver.AddReference(referencedId.ToString(), referencedElement); + } + } + else + { + // The reference cannot be found. It's either not + // a direct reference, as in the case of a cross-model + // reference, or it's just broken. + resolver.AddReference(referencedId.ToString(), null); + } + } + + private static string GetDiscriminatorName(this object value) + { + var t = value.GetType(); + if (t.IsGenericType) + { + return $"{t.FullName.Split('`').First()}<{string.Join(",", t.GenericTypeArguments.Select(arg => arg.FullName))}>"; + } + else + { + return t.FullName.Split('`').First(); } } } diff --git a/Elements/test/UserElementTests.cs b/Elements/test/UserElementTests.cs index aec67b07a..84514d3c0 100644 --- a/Elements/test/UserElementTests.cs +++ b/Elements/test/UserElementTests.cs @@ -1,8 +1,10 @@ using Elements.Geometry; using Elements.Geometry.Solids; +using Elements.Serialization.JSON; using System; using System.Collections.Generic; using System.Linq; +using System.Text.Json.Serialization; using Xunit; namespace Elements.Tests @@ -12,12 +14,15 @@ public class TestUserElement : GeometricElement public Line CenterLine { get; set; } // Used to test serialization of top level elements. + [JsonConverter(typeof(ElementConverter))] public Profile Profile { get; set; } // Used to test serialization of lists of sub elements. + [JsonConverter(typeof(ElementConverter>))] public List SubElements { get; set; } // Used to test dictionaries of sub elements. + [JsonConverter(typeof(ElementConverter>))] public Dictionary DictionaryElements { get; set; } internal TestUserElement() : base(null, @@ -74,9 +79,10 @@ public void CreateCustomElement() var m = new Material("UserElementGreen", Colors.Green); var ue = new TestUserElement(line, new Profile(Polygon.L(1, 2, 0.5)), m); - var p = new Profile(Polygon.Rectangle(1, 1)); + var p = new Profile(Polygon.Rectangle(2, 2)); var m1 = new Mass(p, 1, BuiltInMaterials.Wood); ue.SubElements.Add(m1); + ue.DictionaryElements.Add("foo", m1); this.Model.AddElement(ue); @@ -92,6 +98,8 @@ public void CreateCustomElement() Assert.Equal(ue.Representation.SolidOperations.Count, newUe.Representation.SolidOperations.Count); Assert.Equal(ue.Id, newUe.Id); Assert.Equal(ue.Transform, newUe.Transform); + Assert.Equal(ue.SubElements[0].Id, newUe.SubElements[0].Id); + Assert.Equal(ue.DictionaryElements["foo"].Id, newUe.DictionaryElements["foo"].Id); // Three profiles. // 1. The user element From 3152fd9cff0bb59472c15e8a09219fec9b373dc1 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sun, 24 Apr 2022 22:35:56 -0700 Subject: [PATCH 041/150] Move elementwise serialization into the converter. --- .../src/Serialization/JSON/ElementConverter.cs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/Elements/src/Serialization/JSON/ElementConverter.cs b/Elements/src/Serialization/JSON/ElementConverter.cs index c0aec4b19..a9f93ac38 100644 --- a/Elements/src/Serialization/JSON/ElementConverter.cs +++ b/Elements/src/Serialization/JSON/ElementConverter.cs @@ -6,6 +6,18 @@ namespace Elements.Serialization.JSON { internal class ElementConverterFactory : JsonConverterFactory { + private readonly bool _elementwiseSerialization; + + /// + /// Should the elements be serialized completely? If this option is false, + /// elements will be serialized to ids. + /// + /// + public ElementConverterFactory(bool elementwiseSerialization = false) + { + _elementwiseSerialization = elementwiseSerialization; + } + public override bool CanConvert(Type typeToConvert) { return typeof(Element).IsAssignableFrom(typeToConvert); @@ -17,6 +29,8 @@ public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializer var typeArgs = new[] { typeToConvert }; var converterType = elementConverter.MakeGenericType(typeArgs); var converter = Activator.CreateInstance(converterType) as JsonConverter; + var pi = converterType.GetProperty("ElementwiseSerialization"); + pi.SetValue(converter, _elementwiseSerialization); return converter; } } @@ -27,6 +41,8 @@ public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializer /// internal class ElementConverter : JsonConverter { + public bool ElementwiseSerialization { get; internal set; } = false; + public override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { var resolver = options.ReferenceHandler.CreateResolver() as ElementReferenceResolver; @@ -125,7 +141,7 @@ public override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerial public override void Write(Utf8JsonWriter writer, T value, JsonSerializerOptions options) { var isElement = typeof(Element).IsAssignableFrom(value.GetType()); - if (writer.CurrentDepth > 2 && isElement) + if (writer.CurrentDepth > 2 && isElement && !ElementwiseSerialization) { writer.WriteStringValue(((Element)(object)value).Id.ToString()); } From 92ba6d7893529cf4940e7d2c0b5b625ad2bb283e Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sun, 24 Apr 2022 22:36:52 -0700 Subject: [PATCH 042/150] Fix bbox tests. --- Elements/test/BBox3Tests.cs | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/Elements/test/BBox3Tests.cs b/Elements/test/BBox3Tests.cs index baf073bc3..71ac69aac 100644 --- a/Elements/test/BBox3Tests.cs +++ b/Elements/test/BBox3Tests.cs @@ -3,10 +3,8 @@ using System.Linq; using System.Text.Json; using Elements.Geometry; -using Elements.Geometry.Profiles; -using Elements.Geometry.Solids; -using System.Text.Json.Serialization; using Xunit; +using Elements.Serialization.JSON; namespace Elements.Tests { @@ -72,10 +70,11 @@ public void BBoxesForElements() { Name = nameof(BBoxesForElements); - var elements = new List(); - - // mass with weird transform - elements.Add(new Mass(Polygon.Star(5, 3, 5), 1, null, new Transform(new Vector3(4, 3, 2), new Vector3(1, 1, 1)))); + var elements = new List + { + // mass with weird transform + new Mass(Polygon.Star(5, 3, 5), 1, null, new Transform(new Vector3(4, 3, 2), new Vector3(1, 1, 1))) + }; // element instances var contentJson = @" @@ -145,7 +144,21 @@ public void BBoxesForElements() ""Opaque"": 1 }"; - var contentElement = JsonSerializer.Deserialize(contentJson); + ContentElement contentElement; + using (var doc = JsonDocument.Parse(contentJson)) + { + var root = doc.RootElement; + var options = new JsonSerializerOptions() + { + PropertyNameCaseInsensitive = true, + }; + var typeCache = JsonInheritanceConverter.BuildAppDomainTypeCache(out _); + var refHandler = new ElementReferenceHandler(typeCache, root); + options.ReferenceHandler = refHandler; + + contentElement = JsonSerializer.Deserialize(contentJson, options); + } + elements.Add(contentElement.CreateInstance(new Transform(-6, 0, 0), null)); elements.Add(contentElement.CreateInstance(new Transform(new Vector3(-8, 0, 0), 45), null)); From 3d5c67542b2b573a6c668f7601f482b606162dc0 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sun, 24 Apr 2022 22:55:01 -0700 Subject: [PATCH 043/150] Point to System.Text.Json's version of extension data. --- Elements/src/Element.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Elements/src/Element.cs b/Elements/src/Element.cs index d5699ab97..a84f6ade6 100644 --- a/Elements/src/Element.cs +++ b/Elements/src/Element.cs @@ -66,7 +66,7 @@ public string Name /// /// A collection of additional properties. /// - [Newtonsoft.Json.JsonExtensionData] + [JsonExtensionData] public System.Collections.Generic.IDictionary AdditionalProperties { get { return _additionalProperties; } From 59620e9411c973ea61a392cf907bec6d8d7e0837 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sun, 24 Apr 2022 23:16:28 -0700 Subject: [PATCH 044/150] Fix content elements. --- Elements/src/ContentCatalog.cs | 36 ++++++---- Elements/src/ContentElement.cs | 2 - Elements/src/Element.cs | 3 +- .../JSON/AdditionalPropertiesConverter.cs | 69 +++++++++++++++++++ Elements/test/ContentTests.cs | 1 - 5 files changed, 93 insertions(+), 18 deletions(-) create mode 100644 Elements/src/Serialization/JSON/AdditionalPropertiesConverter.cs diff --git a/Elements/src/ContentCatalog.cs b/Elements/src/ContentCatalog.cs index 8161bbdd8..53ae266a5 100644 --- a/Elements/src/ContentCatalog.cs +++ b/Elements/src/ContentCatalog.cs @@ -2,7 +2,7 @@ using System.Linq; using Elements.Serialization.JSON; using System.Text.Json.Serialization; -using Newtonsoft.Json.Linq; +using System.Text.Json; namespace Elements { @@ -40,10 +40,9 @@ public ContentCatalog(IList @content, IList @referenceC /// public string ToJson() { - JsonInheritanceConverter.ElementwiseSerialization = true; - var json = Newtonsoft.Json.JsonConvert.SerializeObject(this); - JsonInheritanceConverter.ElementwiseSerialization = false; - return json; + var serializerOptions = new JsonSerializerOptions(); + serializerOptions.Converters.Add(new ElementConverterFactory(true)); + return JsonSerializer.Serialize(this, serializerOptions); } /// @@ -52,17 +51,26 @@ public string ToJson() /// public static ContentCatalog FromJson(string json) { - var catalogObject = Newtonsoft.Json.JsonConvert.DeserializeObject(json); - if (catalogObject.TryGetValue("discriminator", out _)) + using (var doc = JsonDocument.Parse(json)) { - return catalogObject.ToObject(); - } - else if (catalogObject.TryGetValue("Elements", out _) && catalogObject.TryGetValue("Transform", out _)) // catalog is stored in a model - { - var model = Model.FromJson(json); - return model.AllElementsOfType().First(); + var root = doc.RootElement; + if (root.TryGetProperty("discriminator", out _)) + { + var options = new JsonSerializerOptions() + { + PropertyNameCaseInsensitive = true, + }; + var typeCache = JsonInheritanceConverter.BuildAppDomainTypeCache(out _); + var refHandler = new ElementReferenceHandler(typeCache, root); + options.ReferenceHandler = refHandler; + return root.Deserialize(options); + } + else if (root.TryGetProperty("Elements", out _) && root.TryGetProperty("Transform", out _)) + { + var model = Model.FromJson(json); + return model.AllElementsOfType().First(); + } } - return null; } diff --git a/Elements/src/ContentElement.cs b/Elements/src/ContentElement.cs index 7ac148df6..9afac50d0 100644 --- a/Elements/src/ContentElement.cs +++ b/Elements/src/ContentElement.cs @@ -32,8 +32,6 @@ public class ContentElement : GeometricElement [JsonPropertyName("Symbols")] public IList Symbols { get; set; } - private System.Collections.Generic.IDictionary _additionalProperties = new System.Collections.Generic.Dictionary(); - /// /// Construct a content element. /// diff --git a/Elements/src/Element.cs b/Elements/src/Element.cs index a84f6ade6..dcbd1f40d 100644 --- a/Elements/src/Element.cs +++ b/Elements/src/Element.cs @@ -66,7 +66,8 @@ public string Name /// /// A collection of additional properties. /// - [JsonExtensionData] + // [JsonExtensionData] + [JsonConverter(typeof(AdditionalPropertiesConverter))] public System.Collections.Generic.IDictionary AdditionalProperties { get { return _additionalProperties; } diff --git a/Elements/src/Serialization/JSON/AdditionalPropertiesConverter.cs b/Elements/src/Serialization/JSON/AdditionalPropertiesConverter.cs new file mode 100644 index 000000000..01c7d830b --- /dev/null +++ b/Elements/src/Serialization/JSON/AdditionalPropertiesConverter.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace Elements.Serialization.JSON +{ + /// + /// Convert the additional properties collection. + /// This converter is required because System.Text.Json will read + /// string values in the dictionary as JsonValue objects. + /// + public class AdditionalPropertiesConverter : JsonConverter> + { + /// + /// Read the dictionary. + /// + /// + /// + /// + /// + public override IDictionary Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + var result = new Dictionary(); + using (var doc = JsonDocument.ParseValue(ref reader)) + { + var root = doc.RootElement; + foreach (var p in root.EnumerateObject()) + { + switch (p.Value.ValueKind) + { + case JsonValueKind.Number: + if (p.Value.TryGetInt32(out var intValue)) + { + result.Add(p.Name, intValue); + } + else if (p.Value.TryGetDouble(out var doubleValue)) + { + result.Add(p.Name, doubleValue); + } + break; + case JsonValueKind.String: + if (p.Value.TryGetGuid(out var guidValue)) + { + result.Add(p.Name, guidValue); + } + else + { + result.Add(p.Name, p.Value.GetString()); + } + break; + } + } + return result; + } + } + + /// + /// Write the dictionary. + /// + /// + /// + /// + public override void Write(Utf8JsonWriter writer, IDictionary value, JsonSerializerOptions options) + { + JsonSerializer.Serialize(writer, value); + } + } +} \ No newline at end of file diff --git a/Elements/test/ContentTests.cs b/Elements/test/ContentTests.cs index 3300af899..0977954f9 100644 --- a/Elements/test/ContentTests.cs +++ b/Elements/test/ContentTests.cs @@ -42,7 +42,6 @@ public void CatalogSerialization() var str = boxType2.ToString(); boxType.AdditionalProperties["ImportantParameter"] = "The Value"; - var testCatalog = new ContentCatalog(new List { boxType, boxType2 }, new List(), Guid.NewGuid(), "test"); var savePath = "../../../models/ContentCatalog.json"; From 2bb069b9cd78f7098453a42a0a1bdeb965c7a129 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sun, 24 Apr 2022 23:24:54 -0700 Subject: [PATCH 045/150] Clean out the json inheritance converter. --- Elements/src/ContentCatalog.cs | 2 +- Elements/src/Model.cs | 6 +- .../Serialization/JSON/AppDomainTypeCache.cs | 83 +++++ .../JSON/JsonInheritanceConverter.cs | 326 ------------------ 4 files changed, 87 insertions(+), 330 deletions(-) create mode 100644 Elements/src/Serialization/JSON/AppDomainTypeCache.cs delete mode 100644 Elements/src/Serialization/JSON/JsonInheritanceConverter.cs diff --git a/Elements/src/ContentCatalog.cs b/Elements/src/ContentCatalog.cs index 53ae266a5..c3c890abc 100644 --- a/Elements/src/ContentCatalog.cs +++ b/Elements/src/ContentCatalog.cs @@ -60,7 +60,7 @@ public static ContentCatalog FromJson(string json) { PropertyNameCaseInsensitive = true, }; - var typeCache = JsonInheritanceConverter.BuildAppDomainTypeCache(out _); + var typeCache = AppDomainTypeCache.BuildAppDomainTypeCache(out _); var refHandler = new ElementReferenceHandler(typeCache, root); options.ReferenceHandler = refHandler; return root.Deserialize(options); diff --git a/Elements/src/Model.cs b/Elements/src/Model.cs index c0ca5807a..b049ac2fe 100644 --- a/Elements/src/Model.cs +++ b/Elements/src/Model.cs @@ -210,14 +210,14 @@ public IEnumerable AllElementsAssignableFromType() where T : Element /// public string ToJson(bool indent = false, bool gatherSubElements = true) { - var exportModel = CreateExportModel(gatherSubElements); + // var exportModel = CreateExportModel(gatherSubElements); var serializerOptions = new JsonSerializerOptions { WriteIndented = indent }; serializerOptions.Converters.Add(new ElementConverterFactory()); - return JsonSerializer.Serialize(exportModel, serializerOptions); + return JsonSerializer.Serialize(this, serializerOptions); } /// @@ -260,7 +260,7 @@ public static Model FromJson(string json) { var sw = new Stopwatch(); sw.Start(); - var typeCache = JsonInheritanceConverter.BuildAppDomainTypeCache(out _); + var typeCache = AppDomainTypeCache.BuildAppDomainTypeCache(out _); Console.WriteLine($"{sw.ElapsedMilliseconds}ms for creating type cache."); Model model = null; diff --git a/Elements/src/Serialization/JSON/AppDomainTypeCache.cs b/Elements/src/Serialization/JSON/AppDomainTypeCache.cs new file mode 100644 index 000000000..61f3a7453 --- /dev/null +++ b/Elements/src/Serialization/JSON/AppDomainTypeCache.cs @@ -0,0 +1,83 @@ +#pragma warning disable CS1591 + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using Elements.Geometry; +using Elements.Geometry.Solids; + +namespace Elements.Serialization.JSON +{ + public static class AppDomainTypeCache + { + /// + /// The type cache needs to contains all types that will have a discriminator. + /// This includes base types, like elements, and all derived types like Wall. + /// We use reflection to find all public types available in the app domain + /// that have a JsonConverterAttribute whose converter type is the + /// Elements.Serialization.JSON.JsonInheritanceConverter. + /// + /// A dictionary containing all found types keyed by their full name. + internal static Dictionary BuildAppDomainTypeCache(out List failedAssemblyErrors) + { + var typeCache = new Dictionary(); + + failedAssemblyErrors = new List(); + + var skipAssembliesPrefices = new[] { "System", "SixLabors", "Newtonsoft" }; + foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies().Where(a => + { + var name = a.GetName().Name; + return !skipAssembliesPrefices.Any(p => name.StartsWith(p)); + })) + { + var types = Array.Empty(); + try + { + types = assembly.GetTypes(); + } + catch (ReflectionTypeLoadException) + { + failedAssemblyErrors.Add($"Failed to load assembly: {assembly.FullName}"); + continue; + } + foreach (var t in types) + { + try + { + if (IsValidTypeForElements(t) && !typeCache.ContainsKey(t.FullName)) + { + typeCache.Add(t.FullName, t); + } + } + catch (TypeLoadException) + { + failedAssemblyErrors.Add($"Failed to load type: {t.FullName}"); + continue; + } + } + } + + return typeCache; + } + + private static bool IsValidTypeForElements(Type t) + { + if (t.IsPublic && t.IsClass) + { + var attrib = t.GetCustomAttribute(); + if (attrib != null && attrib.ConverterType.GenericTypeArguments.Length > 0) + { + var valid = attrib.ConverterType.GenericTypeArguments[0] == t + || attrib.ConverterType == typeof(ElementConverter) + || attrib.ConverterType == typeof(ElementConverter) + || attrib.ConverterType == typeof(ElementConverter); + return valid; + } + } + + return false; + } + } +} \ No newline at end of file diff --git a/Elements/src/Serialization/JSON/JsonInheritanceConverter.cs b/Elements/src/Serialization/JSON/JsonInheritanceConverter.cs deleted file mode 100644 index ea904c470..000000000 --- a/Elements/src/Serialization/JSON/JsonInheritanceConverter.cs +++ /dev/null @@ -1,326 +0,0 @@ -#pragma warning disable CS1591 - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using Elements.Geometry; -using Elements.Geometry.Solids; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; - -namespace Elements.Serialization.JSON -{ - public class JsonInheritanceConverter : JsonConverter - { - internal static readonly string DefaultDiscriminatorName = "discriminator"; - - private readonly string _discriminator; - - [System.ThreadStatic] - private static bool _isReading; - - [System.ThreadStatic] - private static bool _isWriting; - - [System.ThreadStatic] - private static Dictionary _typeCache; - private static Dictionary TypeCache - { - get - { - if (_typeCache == null) - { - _typeCache = BuildAppDomainTypeCache(out _); - } - return _typeCache; - } - } - - [System.ThreadStatic] - private static Dictionary _elements; - - public static Dictionary Elements - { - get - { - if (_elements == null) - { - _elements = new Dictionary(); - } - return _elements; - } - } - - public JsonInheritanceConverter() - { - _discriminator = DefaultDiscriminatorName; - } - - public JsonInheritanceConverter(string discriminator) - { - _discriminator = discriminator; - } - - /// - /// The type cache needs to contains all types that will have a discriminator. - /// This includes base types, like elements, and all derived types like Wall. - /// We use reflection to find all public types available in the app domain - /// that have a JsonConverterAttribute whose converter type is the - /// Elements.Serialization.JSON.JsonInheritanceConverter. - /// - /// A dictionary containing all found types keyed by their full name. - internal static Dictionary BuildAppDomainTypeCache(out List failedAssemblyErrors) - { - var typeCache = new Dictionary(); - - failedAssemblyErrors = new List(); - - var skipAssembliesPrefices = new[] { "System", "SixLabors", "Newtonsoft" }; - foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies().Where(a => - { - var name = a.GetName().Name; - return !skipAssembliesPrefices.Any(p => name.StartsWith(p)); - })) - { - var types = Array.Empty(); - try - { - types = assembly.GetTypes(); - } - catch (ReflectionTypeLoadException) - { - failedAssemblyErrors.Add($"Failed to load assembly: {assembly.FullName}"); - continue; - } - foreach (var t in types) - { - try - { - if (IsValidTypeForElements(t) && !typeCache.ContainsKey(t.FullName)) - { - typeCache.Add(t.FullName, t); - } - } - catch (TypeLoadException) - { - failedAssemblyErrors.Add($"Failed to load type: {t.FullName}"); - continue; - } - } - } - - return typeCache; - } - - private static bool IsValidTypeForElements(Type t) - { - if (t.IsPublic && t.IsClass) - { - var attrib = t.GetCustomAttribute(); - if (attrib != null && attrib.ConverterType.GenericTypeArguments.Length > 0) - { - var valid = attrib.ConverterType.GenericTypeArguments[0] == t - || attrib.ConverterType == typeof(ElementConverter) - || attrib.ConverterType == typeof(ElementConverter) - || attrib.ConverterType == typeof(ElementConverter); - return valid; - } - } - - return false; - } - - /// - /// Call this method after assemblies have been loaded into the app - /// domain to ensure that the converter's cache is up to date. - /// - internal static void RefreshAppDomainTypeCache(out List errors) - { - _typeCache = BuildAppDomainTypeCache(out errors); - } - - public static bool ElementwiseSerialization { get; set; } = false; - - public override void WriteJson(Newtonsoft.Json.JsonWriter writer, object value, Newtonsoft.Json.JsonSerializer serializer) - { - try - { - _isWriting = true; - - // Operate on all identifiable Elements with a path less than Entities.xxxxx - // This will get all properties. - if (value is Element element && writer.Path.Split('.').Length == 1 && !ElementwiseSerialization) - { - var ident = element; - writer.WriteValue(ident.Id); - } - else - { - var jObject = Newtonsoft.Json.Linq.JObject.FromObject(value, serializer); - if (jObject.TryGetValue(_discriminator, out JToken token)) - { - ((JValue)token).Value = GetDiscriminatorName(value); - } - else - { - jObject.AddFirst(new Newtonsoft.Json.Linq.JProperty(_discriminator, GetDiscriminatorName(value))); - } - writer.WriteToken(jObject.CreateReader()); - } - } - finally - { - _isWriting = false; - } - } - - private static string GetDiscriminatorName(object value) - { - var t = value.GetType(); - if (t.IsGenericType) - { - return $"{t.FullName.Split('`').First()}<{String.Join(",", t.GenericTypeArguments.Select(arg => arg.FullName))}>"; - } - else - { - return t.FullName.Split('`').First(); - } - } - - public override bool CanWrite - { - get - { - if (_isWriting) - { - _isWriting = false; - return false; - } - return true; - } - } - - public override bool CanRead - { - get - { - if (_isReading) - { - _isReading = false; - return false; - } - return true; - } - } - - public override bool CanConvert(System.Type objectType) - { - return true; - } - - public override object ReadJson(Newtonsoft.Json.JsonReader reader, System.Type objectType, object existingValue, Newtonsoft.Json.JsonSerializer serializer) - { - // The serialized value is an identifier, so the expectation is - // that the element with that id has already been deserialized. - if (typeof(Element).IsAssignableFrom(objectType) && reader.Path.Split('.').Length == 1 && reader.Value != null) - { - var id = Guid.Parse(reader.Value.ToString()); - return Elements[id]; - } - - var jObject = serializer.Deserialize(reader); - if (jObject == null) - { - return null; - } - - // We need to handle both cases where we're receiving JSON that has a - // discriminator, like that produced by serializing using this - // converter, and the case where the JSON does not have a discriminator, - // but the type is known during deserialization. - Type subtype; - string discriminator = null; - jObject.TryGetValue(_discriminator, out JToken discriminatorToken); - if (discriminatorToken != null) - { - discriminator = Newtonsoft.Json.Linq.Extensions.Value(discriminatorToken); - subtype = GetObjectSubtype(objectType, discriminator, jObject); - } - else - { - // Without a discriminator the call to GetObjectSubtype will - // fall through to returning either a [UserElement] type or - // the object type. - subtype = GetObjectSubtype(objectType, null, jObject); - } - - try - { - _isReading = true; - var obj = serializer.Deserialize(jObject.CreateReader(), subtype); - - // Write the id to the cache so that we can retrieve it next time - // instead of de-serializing it again. - if (typeof(Element).IsAssignableFrom(objectType) && reader.Path.Split('.').Length > 1) - { - var ident = (Element)obj; - if (!Elements.ContainsKey(ident.Id)) - { - Elements.Add(ident.Id, ident); - } - } - - return obj; - } - catch (Exception ex) - { - var baseMessage = "This may happen if the type is not recognized in the system."; - var moreInfoMessage = "See the inner exception for more details."; - - if (discriminator != null) - { - throw new Exception($"An object with the discriminator, {discriminator}, could not be deserialized. {baseMessage} {moreInfoMessage}", ex); - } - else - { - throw new Exception($"{baseMessage} {moreInfoMessage}", ex); - } - } - finally - { - _isReading = false; - } - } - - private System.Type GetObjectSubtype(System.Type objectType, string discriminator, JObject jObject) - { - // Check the type cache. - if (discriminator != null && TypeCache.ContainsKey(discriminator)) - { - return TypeCache[discriminator]; - } - - // Check for proxy generics. - if (discriminator != null && discriminator.StartsWith("Elements.ElementProxy<")) - { - var typeNames = discriminator.Split('<')[1].Split('>')[0].Split(','); // We do this split because in theory we can serialize with multiple generics - var typeName = typeNames.FirstOrDefault(); - var generic = TypeCache[typeName]; - var proxy = typeof(ElementProxy<>).MakeGenericType(generic); - return proxy; - } - - // If it's not in the type cache see if it's got a representation. - // Import it as a GeometricElement. - if (jObject.TryGetValue("Representation", out _)) - { - return typeof(GeometricElement); - } - - // The default behavior for this converter, as provided by nJSONSchema - // is to return the base objectType if a derived type can't be found. - return objectType; - } - } -} \ No newline at end of file From 4218d79e3c56cadced3358f4c0a1a7b913bf7889 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sun, 24 Apr 2022 23:29:04 -0700 Subject: [PATCH 046/150] Don't use the model converter by default. --- Elements/src/Model.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Elements/src/Model.cs b/Elements/src/Model.cs index b049ac2fe..58c9d40eb 100644 --- a/Elements/src/Model.cs +++ b/Elements/src/Model.cs @@ -280,9 +280,9 @@ public static Model FromJson(string json) var refHandler = new ElementReferenceHandler(typeCache, elementsElement); options.ReferenceHandler = refHandler; - // We use the model converter here so that we have a chance to + // Use the model converter here so that we have a chance to // intercept the creation of elements when things go wrong. - options.Converters.Add(new ModelConverter()); + // options.Converters.Add(new ModelConverter()); model = JsonSerializer.Deserialize(json, options); From 4edb5d029e61db9ca07bcca65e5260a0c1b9de68 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sun, 24 Apr 2022 23:36:15 -0700 Subject: [PATCH 047/150] Fix one test. --- Elements/test/BBox3Tests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Elements/test/BBox3Tests.cs b/Elements/test/BBox3Tests.cs index 71ac69aac..1b153a8be 100644 --- a/Elements/test/BBox3Tests.cs +++ b/Elements/test/BBox3Tests.cs @@ -152,7 +152,7 @@ public void BBoxesForElements() { PropertyNameCaseInsensitive = true, }; - var typeCache = JsonInheritanceConverter.BuildAppDomainTypeCache(out _); + var typeCache = AppDomainTypeCache.BuildAppDomainTypeCache(out _); var refHandler = new ElementReferenceHandler(typeCache, root); options.ReferenceHandler = refHandler; From 060f64baee09b6de2117ec3860c3d59b68d013cb Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sun, 24 Apr 2022 23:39:56 -0700 Subject: [PATCH 048/150] Fix the analysis mesh tests. --- Elements/src/Analysis/AnalysisMesh.cs | 11 ++++++++++- Elements/src/Analysis/ColorScale.cs | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Elements/src/Analysis/AnalysisMesh.cs b/Elements/src/Analysis/AnalysisMesh.cs index e96348981..d4a93dd83 100644 --- a/Elements/src/Analysis/AnalysisMesh.cs +++ b/Elements/src/Analysis/AnalysisMesh.cs @@ -65,6 +65,15 @@ public double TotalAnalysisLocations /// public ColorScale ColorScale { get; set; } + /// + /// Construct an analysis mesh. + /// + [JsonConstructor] + public AnalysisMesh() + { + Material = new Material($"Analysis_{Guid.NewGuid()}", Colors.White, 0, 0, null, true, true, id: Guid.NewGuid()); + } + /// /// Construct an analysis mesh. /// @@ -93,7 +102,7 @@ public AnalysisMesh(Polygon perimeter, this.VLength = vLength; this.ColorScale = colorScale; this._analyze = analyze; - this.Material = new Material($"Analysis_{Guid.NewGuid().ToString()}", Colors.White, 0, 0, null, true, true, id: Guid.NewGuid()); + this.Material = new Material($"Analysis_{Guid.NewGuid()}", Colors.White, 0, 0, null, true, true, id: Guid.NewGuid()); } /// diff --git a/Elements/src/Analysis/ColorScale.cs b/Elements/src/Analysis/ColorScale.cs index ce8225f86..424fda0f7 100644 --- a/Elements/src/Analysis/ColorScale.cs +++ b/Elements/src/Analysis/ColorScale.cs @@ -50,7 +50,7 @@ public ColorScale(List colors) /// Whether this color scale uses discrete values. /// The domains which the colors map to [JsonConstructor] - internal ColorScale(List colors, Boolean discrete, List domains = null) + public ColorScale(List colors, Boolean discrete, List domains = null) { this.Colors = colors; this.Discrete = discrete; From 4a93a2a02c941b978bb0952b1e1822088f331015 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Mon, 25 Apr 2022 15:01:45 -0700 Subject: [PATCH 049/150] Only write during debug. --- Elements/src/Model.cs | 2 ++ Elements/src/Serialization/JSON/ElementReferenceResolver.cs | 2 ++ 2 files changed, 4 insertions(+) diff --git a/Elements/src/Model.cs b/Elements/src/Model.cs index 58c9d40eb..13920c95a 100644 --- a/Elements/src/Model.cs +++ b/Elements/src/Model.cs @@ -261,7 +261,9 @@ public static Model FromJson(string json) var sw = new Stopwatch(); sw.Start(); var typeCache = AppDomainTypeCache.BuildAppDomainTypeCache(out _); +#if DEBUG Console.WriteLine($"{sw.ElapsedMilliseconds}ms for creating type cache."); +#endif Model model = null; using (var document = JsonDocument.Parse(json)) diff --git a/Elements/src/Serialization/JSON/ElementReferenceResolver.cs b/Elements/src/Serialization/JSON/ElementReferenceResolver.cs index 47641a762..8200d523f 100644 --- a/Elements/src/Serialization/JSON/ElementReferenceResolver.cs +++ b/Elements/src/Serialization/JSON/ElementReferenceResolver.cs @@ -22,7 +22,9 @@ internal class ElementReferenceResolver : ReferenceResolver public ElementReferenceResolver(Dictionary typeCache, JsonElement documentElements) { +#if DEBUG Console.WriteLine("Constructing a new reference resolver."); +#endif TypeCache = typeCache; DocumentElements = documentElements; } From 197c432f0e157c39f4b89ebe6b4bebec58c8946f Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Mon, 25 Apr 2022 15:01:53 -0700 Subject: [PATCH 050/150] Fix import mesh element. --- Elements/src/ImportMeshElement.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Elements/src/ImportMeshElement.cs b/Elements/src/ImportMeshElement.cs index 007885ac8..d4822885e 100644 --- a/Elements/src/ImportMeshElement.cs +++ b/Elements/src/ImportMeshElement.cs @@ -18,6 +18,11 @@ public sealed class ImportMeshElement : MeshElement /// public string Path { get; } + /// + /// The length unit used in the provided mesh. + /// + public LengthUnit LengthUnit { get; set; } + /// /// Construct an import mesh element. /// @@ -38,6 +43,7 @@ public ImportMeshElement(string path, name) { this.Path = path; + this.LengthUnit = lengthUnit; if (!File.Exists(path)) { From ac2a5ba730d8be6eb036d08375cf4c5ad44a18e4 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Mon, 25 Apr 2022 15:22:12 -0700 Subject: [PATCH 051/150] We must keep these for now. --- Elements/src/Model.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Elements/src/Model.cs b/Elements/src/Model.cs index 13920c95a..fc06f4382 100644 --- a/Elements/src/Model.cs +++ b/Elements/src/Model.cs @@ -210,14 +210,17 @@ public IEnumerable AllElementsAssignableFromType() where T : Element /// public string ToJson(bool indent = false, bool gatherSubElements = true) { - // var exportModel = CreateExportModel(gatherSubElements); + // TODO: Remove this excess model creation when the JSON serializer + // supports recursive write out and all receivers are capable of + // receiving updated JSON. + var exportModel = CreateExportModel(gatherSubElements); var serializerOptions = new JsonSerializerOptions { WriteIndented = indent }; serializerOptions.Converters.Add(new ElementConverterFactory()); - return JsonSerializer.Serialize(this, serializerOptions); + return JsonSerializer.Serialize(exportModel, serializerOptions); } /// @@ -274,6 +277,7 @@ public static Model FromJson(string json) var options = new JsonSerializerOptions() { PropertyNameCaseInsensitive = true, + AllowTrailingCommas = true }; // Our custom reference handler will cache elements by id as From d6146780186ba4ca23252911e6ec8c003772e355 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Mon, 25 Apr 2022 15:22:43 -0700 Subject: [PATCH 052/150] Throw a meaningful exception and create a new API to deserialize one element. --- Elements/src/Element.cs | 27 +++++++++++++++++++ .../Serialization/JSON/ElementConverter.cs | 5 ++++ 2 files changed, 32 insertions(+) diff --git a/Elements/src/Element.cs b/Elements/src/Element.cs index dcbd1f40d..85227ca4c 100644 --- a/Elements/src/Element.cs +++ b/Elements/src/Element.cs @@ -1,6 +1,7 @@ using System; using Elements.Serialization.JSON; using System.Text.Json.Serialization; +using System.Text.Json; namespace Elements { @@ -90,5 +91,31 @@ protected virtual void RaisePropertyChanged([System.Runtime.CompilerServices.Cal handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName)); } + /// + /// Deserialize an element of type T using reference resolution + /// and discriminated type construction. + /// Do not use this method for the deserialization large numbers of + /// elements, as it needs to construct a reference handler and type cache + /// for each invocation. + /// + /// The JSON of the element. + /// An element of type T. + public static T Deserialize(string json) + { + using (var doc = JsonDocument.Parse(json)) + { + var root = doc.RootElement; + var options = new JsonSerializerOptions() + { + PropertyNameCaseInsensitive = true, + AllowTrailingCommas = true + }; + var typeCache = AppDomainTypeCache.BuildAppDomainTypeCache(out _); + var refHandler = new ElementReferenceHandler(typeCache, root); + options.ReferenceHandler = refHandler; + return JsonSerializer.Deserialize(doc, options); + } + } + } } \ No newline at end of file diff --git a/Elements/src/Serialization/JSON/ElementConverter.cs b/Elements/src/Serialization/JSON/ElementConverter.cs index a9f93ac38..124cf3e12 100644 --- a/Elements/src/Serialization/JSON/ElementConverter.cs +++ b/Elements/src/Serialization/JSON/ElementConverter.cs @@ -45,6 +45,11 @@ internal class ElementConverter : JsonConverter public override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { + if (options.ReferenceHandler == null) + { + throw new Exception("You are deserializing an element, but you don't have a reference resolver. Try using Element.Deserialize instead."); + } + var resolver = options.ReferenceHandler.CreateResolver() as ElementReferenceResolver; if (reader.TokenType == JsonTokenType.String) From bb0b91e71a819a638652f2478601e5de8aa099f9 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Mon, 25 Apr 2022 15:28:32 -0700 Subject: [PATCH 053/150] Fifteen test fixes. --- Elements/src/Space.cs | 2 ++ Elements/test/BBox3Tests.cs | 15 +-------------- Elements/test/GltfTests.cs | 2 +- Elements/test/Grid2dTests.cs | 3 ++- Elements/test/ProfileTests.cs | 12 +++++------- 5 files changed, 11 insertions(+), 23 deletions(-) diff --git a/Elements/src/Space.cs b/Elements/src/Space.cs index 6bf4fb21d..bcc54e99f 100644 --- a/Elements/src/Space.cs +++ b/Elements/src/Space.cs @@ -4,6 +4,7 @@ using System.Text.Json.Serialization; using System.Collections.Generic; using System.Linq; +using Elements.Serialization.JSON; namespace Elements { @@ -18,6 +19,7 @@ public class Space : GeometricElement /// /// The profile of the space. /// + [JsonConverter(typeof(ElementConverter))] public Profile Profile { get; set; } /// diff --git a/Elements/test/BBox3Tests.cs b/Elements/test/BBox3Tests.cs index 1b153a8be..9aeaf4ca9 100644 --- a/Elements/test/BBox3Tests.cs +++ b/Elements/test/BBox3Tests.cs @@ -144,20 +144,7 @@ public void BBoxesForElements() ""Opaque"": 1 }"; - ContentElement contentElement; - using (var doc = JsonDocument.Parse(contentJson)) - { - var root = doc.RootElement; - var options = new JsonSerializerOptions() - { - PropertyNameCaseInsensitive = true, - }; - var typeCache = AppDomainTypeCache.BuildAppDomainTypeCache(out _); - var refHandler = new ElementReferenceHandler(typeCache, root); - options.ReferenceHandler = refHandler; - - contentElement = JsonSerializer.Deserialize(contentJson, options); - } + var contentElement = Element.Deserialize(contentJson); elements.Add(contentElement.CreateInstance(new Transform(-6, 0, 0), null)); elements.Add(contentElement.CreateInstance(new Transform(new Vector3(-8, 0, 0), 45), null)); diff --git a/Elements/test/GltfTests.cs b/Elements/test/GltfTests.cs index 0092ac26d..e70111a5f 100644 --- a/Elements/test/GltfTests.cs +++ b/Elements/test/GltfTests.cs @@ -83,7 +83,7 @@ public void GeometricElementWithoutMaterialUsesDefaultMaterial() public void ThinObjectsGenerateCorrectly() { var json = File.ReadAllText("../../../models/Geometry/Single-Panel.json"); - var panel = JsonSerializer.Deserialize(json); + var panel = Element.Deserialize(json); var model = new Model(); model.AddElement(panel); var modelsDir = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "models"); diff --git a/Elements/test/Grid2dTests.cs b/Elements/test/Grid2dTests.cs index 1533d5a74..2f1871d52 100644 --- a/Elements/test/Grid2dTests.cs +++ b/Elements/test/Grid2dTests.cs @@ -548,7 +548,8 @@ public void RotateGridWithClosePointDoNotThrow() public void SeparatorsFromBadPolygon() { var json = File.ReadAllText("../../../models/Geometry/bad_grid.json"); - var grid = JsonSerializer.Deserialize(json); + + var grid = Element.Deserialize(json); var cellSeparators = grid.GetCellSeparators(GridDirection.V, true); } } diff --git a/Elements/test/ProfileTests.cs b/Elements/test/ProfileTests.cs index bafebcacc..bf3660d94 100644 --- a/Elements/test/ProfileTests.cs +++ b/Elements/test/ProfileTests.cs @@ -4,9 +4,7 @@ using System.Linq; using System.Collections.Generic; using Elements.Spatial; -using Elements.Serialization.JSON; using System.IO; -using System.Text.Json.Serialization; using System.Text.Json; namespace Elements.Tests @@ -424,9 +422,9 @@ public void DifferenceFail() { // This test used to fail with an exception due to a very small polygon produced from the boolean. var aShapeJson = "{\"discriminator\":\"Elements.Geometry.Profile\",\"Perimeter\":{\"discriminator\":\"Elements.Geometry.Polygon\",\"Vertices\":[{\"X\":-149.51680916003411,\"Y\":-545.6788101645068,\"Z\":0.0},{\"X\":-181.13449678692302,\"Y\":-508.57118930829984,\"Z\":0.0},{\"X\":-185.00173212061222,\"Y\":-476.0495417216826,\"Z\":0.0},{\"X\":-211.47915563014516,\"Y\":-479.19804234633307,\"Z\":0.0},{\"X\":-213.43484799507593,\"Y\":-627.6323068549372,\"Z\":0.0},{\"X\":-169.59832064900132,\"Y\":-624.8068240421294,\"Z\":0.0},{\"X\":-144.53329588528302,\"Y\":-620.4717620034767,\"Z\":0.0}]},\"Voids\":[{\"discriminator\":\"Elements.Geometry.Polygon\",\"Vertices\":[{\"X\":-174.65966226538052,\"Y\":-581.4103523143159,\"Z\":0.0},{\"X\":-174.89675190025594,\"Y\":-599.4087908161704,\"Z\":0.0},{\"X\":-184.89588440128614,\"Y\":-599.2770743523507,\"Z\":0.0},{\"X\":-184.65879476641072,\"Y\":-581.2786358504962,\"Z\":0.0}]}],\"Id\":\"5b65b6a5-b0a4-4373-ba47-76380d379893\",\"Name\":null}"; - var p1 = JsonSerializer.Deserialize(aShapeJson); + var p1 = Element.Deserialize(aShapeJson); var otherPolysJson = "[{\"discriminator\":\"Elements.Geometry.Profile\",\"Perimeter\":{\"discriminator\":\"Elements.Geometry.Polygon\",\"Vertices\":[{\"X\":-170.30455,\"Y\":-618.83988,\"Z\":0.0},{\"X\":-150.8792,\"Y\":-615.48022,\"Z\":0.0},{\"X\":-155.37154,\"Y\":-548.05882,\"Z\":0.0},{\"X\":-186.87827,\"Y\":-511.08143,\"Z\":0.0},{\"X\":-190.01511,\"Y\":-484.70206,\"Z\":0.0},{\"X\":-205.57554,\"Y\":-486.55239,\"Z\":0.0},{\"X\":-207.34994,\"Y\":-621.22765,\"Z\":0.0}]},\"Voids\":[{\"discriminator\":\"Elements.Geometry.Polygon\",\"Vertices\":[{\"X\":-205.82871,\"Y\":-619.62649,\"Z\":0.0},{\"X\":-204.09299,\"Y\":-487.88667,\"Z\":0.0},{\"X\":-191.3275,\"Y\":-486.36869,\"Z\":0.0},{\"X\":-188.31421,\"Y\":-511.70899,\"Z\":0.0},{\"X\":-156.83522,\"Y\":-548.65382,\"Z\":0.0},{\"X\":-152.46567,\"Y\":-614.23233,\"Z\":0.0},{\"X\":-170.48117,\"Y\":-617.34816,\"Z\":0.0}]}],\"Id\":\"0fbf2cac-126b-45a3-b32e-e53c32c9e05a\",\"Name\":\"Corridor\"},{\"discriminator\":\"Elements.Geometry.Profile\",\"Perimeter\":{\"discriminator\":\"Elements.Geometry.Polygon\",\"Vertices\":[{\"X\":-153.1705,\"Y\":-580.19402,\"Z\":0.0},{\"X\":-206.8,\"Y\":-579.48763,\"Z\":0.0},{\"X\":-206.81976,\"Y\":-580.98749,\"Z\":0.0},{\"X\":-184.6588,\"Y\":-581.27939,\"Z\":0.0},{\"X\":-184.65879,\"Y\":-581.27864,\"Z\":0.0},{\"X\":-174.65966,\"Y\":-581.41035,\"Z\":0.0},{\"X\":-174.65967,\"Y\":-581.41109,\"Z\":0.0},{\"X\":-153.19026,\"Y\":-581.69388,\"Z\":0.0}]},\"Voids\":[],\"Id\":\"a02d7813-883b-4bd4-8bd5-47aa0ce8ac05\",\"Name\":null},{\"discriminator\":\"Elements.Geometry.Profile\",\"Perimeter\":{\"discriminator\":\"Elements.Geometry.Polygon\",\"Vertices\":[{\"X\":-184.89513,\"Y\":-599.27708,\"Z\":0.0},{\"X\":-184.89588,\"Y\":-599.27707,\"Z\":0.0},{\"X\":-184.65879,\"Y\":-581.27864,\"Z\":0.0},{\"X\":-184.65805,\"Y\":-581.27865,\"Z\":0.0},{\"X\":-183.76997,\"Y\":-513.85917,\"Z\":0.0},{\"X\":-185.26983,\"Y\":-513.83941,\"Z\":0.0},{\"X\":-186.66607,\"Y\":-619.83625,\"Z\":0.0},{\"X\":-185.16621,\"Y\":-619.85601,\"Z\":0.0}]},\"Voids\":[],\"Id\":\"59c1f71d-7c88-4fa3-8b79-6d799f6f80f0\",\"Name\":null},{\"discriminator\":\"Elements.Geometry.Profile\",\"Perimeter\":{\"discriminator\":\"Elements.Geometry.Polygon\",\"Vertices\":[{\"X\":-151.87004,\"Y\":-599.71136,\"Z\":0.0},{\"X\":-174.89674,\"Y\":-599.40804,\"Z\":0.0},{\"X\":-174.89675,\"Y\":-599.40879,\"Z\":0.0},{\"X\":-184.89588,\"Y\":-599.27707,\"Z\":0.0},{\"X\":-184.89587,\"Y\":-599.27633,\"Z\":0.0},{\"X\":-207.05688,\"Y\":-598.98441,\"Z\":0.0},{\"X\":-207.07664,\"Y\":-600.48427,\"Z\":0.0},{\"X\":-151.8898,\"Y\":-601.21122,\"Z\":0.0}]},\"Voids\":[],\"Id\":\"b320c3f1-eac5-46a9-9ed5-3bb49a5e38e9\",\"Name\":null},{\"discriminator\":\"Elements.Geometry.Profile\",\"Perimeter\":{\"discriminator\":\"Elements.Geometry.Polygon\",\"Vertices\":[{\"X\":-172.44555,\"Y\":-527.14991,\"Z\":0.0},{\"X\":-173.94541,\"Y\":-527.13015,\"Z\":0.0},{\"X\":-174.66041,\"Y\":-581.41034,\"Z\":0.0},{\"X\":-174.65966,\"Y\":-581.41035,\"Z\":0.0},{\"X\":-174.89675,\"Y\":-599.40879,\"Z\":0.0},{\"X\":-174.89749,\"Y\":-599.40878,\"Z\":0.0},{\"X\":-175.1568,\"Y\":-619.09442,\"Z\":0.0},{\"X\":-173.65694,\"Y\":-619.11418,\"Z\":0.0}]},\"Voids\":[],\"Id\":\"82060be1-c38b-4eaf-aa5f-6792f6839f37\",\"Name\":null}]"; - var otherPolys = JsonSerializer.Deserialize>(otherPolysJson); + var otherPolys = Element.Deserialize>(otherPolysJson); var result = Elements.Geometry.Profile.Difference(new[] { p1 }, otherPolys); } @@ -435,7 +433,7 @@ public void DifferenceFail2() { this.Name = nameof(DifferenceFail2); var json = File.ReadAllText("../../../models/Geometry/differenceFail2.json"); - var profiles = JsonSerializer.Deserialize>>(json); + var profiles = Element.Deserialize>>(json); var firstSet = profiles["levelBoundaryCleaned"]; var secondSet = profiles["insetProfiles"]; var diff = Elements.Geometry.Profile.Difference(firstSet, secondSet); @@ -520,8 +518,8 @@ public void ProfileInvalidWontThrow() public void DifferenceToleratesBadGeometry() { Name = nameof(DifferenceToleratesBadGeometry); - var cp = JsonSerializer.Deserialize>(File.ReadAllText("../../../models/Geometry/corridorProfiles.json")); - var lb = JsonSerializer.Deserialize(File.ReadAllText("../../../models/Geometry/levelBoundary.json")); + var cp = Element.Deserialize>(File.ReadAllText("../../../models/Geometry/corridorProfiles.json")); + var lb = Element.Deserialize(File.ReadAllText("../../../models/Geometry/levelBoundary.json")); var results = Elements.Geometry.Profile.Difference(new[] { lb }, cp); Model.AddElements(results); Model.AddElements(results.SelectMany(r => r.ToModelCurves())); From baa7ba17dde62b380085fb77b2c127e48a74285e Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Mon, 25 Apr 2022 21:40:03 -0700 Subject: [PATCH 054/150] Fix solid converter. --- .../src/Geometry/Solids/ConstructedSolid.cs | 28 +++- .../src/Geometry/Solids/SolidOperation.cs | 4 +- Elements/src/Model.cs | 7 +- .../src/Serialization/JSON/SolidConverter.cs | 141 ++++++++---------- Elements/test/SolidTests.cs | 24 +-- 5 files changed, 107 insertions(+), 97 deletions(-) diff --git a/Elements/src/Geometry/Solids/ConstructedSolid.cs b/Elements/src/Geometry/Solids/ConstructedSolid.cs index 1e454aa8a..960a5cc7b 100644 --- a/Elements/src/Geometry/Solids/ConstructedSolid.cs +++ b/Elements/src/Geometry/Solids/ConstructedSolid.cs @@ -1,4 +1,3 @@ -using Elements.Serialization.JSON; using System.Text.Json.Serialization; namespace Elements.Geometry.Solids @@ -8,6 +7,25 @@ namespace Elements.Geometry.Solids /// public class ConstructedSolid : SolidOperation { + /// + /// Create an import solid. + /// + [JsonConstructor] + public ConstructedSolid() : base(false) + { + } + + /// + /// The constructed solid. + /// + // This is hack to enable serialization of the normally + // hidden solid property. + public new Solid Solid + { + get { return _solid; } + set { _solid = value; } + } + /// /// Create an import solid. /// @@ -15,13 +33,7 @@ public class ConstructedSolid : SolidOperation /// Is the operation a void? public ConstructedSolid(Solid solid, bool isVoid = false) : base(isVoid) { - this._solid = solid; + _solid = solid; } - - // This is a hack to get the normally JsonIgnored - // `Solid` property to serialize. - [JsonPropertyName("Solid")] - [JsonConverter(typeof(SolidConverter))] - internal Solid InternalSolid => base.Solid; } } \ No newline at end of file diff --git a/Elements/src/Geometry/Solids/SolidOperation.cs b/Elements/src/Geometry/Solids/SolidOperation.cs index 4ebc395ed..6c509cc87 100644 --- a/Elements/src/Geometry/Solids/SolidOperation.cs +++ b/Elements/src/Geometry/Solids/SolidOperation.cs @@ -25,7 +25,9 @@ public Solid Solid get { return _solid; } } - /// Is the solid operation a void operation? + /// + /// Is the solid operation a void operation? + /// [JsonPropertyName("IsVoid")] public bool IsVoid { get; set; } = false; diff --git a/Elements/src/Model.cs b/Elements/src/Model.cs index fc06f4382..ab88b7379 100644 --- a/Elements/src/Model.cs +++ b/Elements/src/Model.cs @@ -220,6 +220,7 @@ public string ToJson(bool indent = false, bool gatherSubElements = true) WriteIndented = indent }; serializerOptions.Converters.Add(new ElementConverterFactory()); + serializerOptions.Converters.Add(new SolidConverter()); return JsonSerializer.Serialize(exportModel, serializerOptions); } @@ -236,7 +237,10 @@ public void ToJson(string path, bool gatherSubElements = true) // https://www.newtonsoft.com/json/help/html/Performance.htm using (FileStream s = File.Create(path)) { - JsonSerializer.Serialize(s, exportModel); + var serializerOptions = new JsonSerializerOptions(); + serializerOptions.Converters.Add(new ElementConverterFactory()); + serializerOptions.Converters.Add(new SolidConverter()); + JsonSerializer.Serialize(s, exportModel, serializerOptions); } } @@ -279,6 +283,7 @@ public static Model FromJson(string json) PropertyNameCaseInsensitive = true, AllowTrailingCommas = true }; + options.Converters.Add(new SolidConverter()); // Our custom reference handler will cache elements by id as // they are deserialized, supporting reading elements by id diff --git a/Elements/src/Serialization/JSON/SolidConverter.cs b/Elements/src/Serialization/JSON/SolidConverter.cs index 84f87f116..6f22da6fd 100644 --- a/Elements/src/Serialization/JSON/SolidConverter.cs +++ b/Elements/src/Serialization/JSON/SolidConverter.cs @@ -2,27 +2,27 @@ using Elements.Geometry.Solids; using System; -using Newtonsoft.Json.Linq; using System.Collections.Generic; using Elements.Geometry; using System.Linq; using System.Reflection; -using Newtonsoft.Json; +using System.Text.Json.Serialization; +using System.Text.Json; namespace Elements.Serialization.JSON { /// - /// The SolidConverter is used to serialize and deserialize a Solid. + /// The SolidConverter is used to deserialize a Solid. /// Solids have a self-referencing structure which does not serialize /// effectively using the default serialization logic. The SolidConverter /// serializes and deserializes starting at the Solid's Faces, using /// Vertex and Edge ids to reconstruct and link the Edges and Vertices as necessary. /// - internal class SolidConverter : JsonConverter + internal class SolidConverter : JsonConverter { private List _solidTypes; - public SolidConverter(IDictionary materials) + public SolidConverter() { LoadSolidTypes(); } @@ -33,7 +33,7 @@ private void LoadSolidTypes() { _solidTypes = Assembly.GetExecutingAssembly().GetTypes().Where(t => typeof(Solid).IsAssignableFrom(t)).ToList(); } - catch (System.Reflection.ReflectionTypeLoadException ex) + catch (ReflectionTypeLoadException ex) { foreach (var x in ex.LoaderExceptions) { @@ -42,87 +42,78 @@ private void LoadSolidTypes() } } - public SolidConverter() + public override Solid Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { - LoadSolidTypes(); - } - - public override bool CanConvert(Type objectType) - { - return typeof(Solid).IsAssignableFrom(objectType); - } - - public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) - { - var obj = JObject.Load(reader); - var typeName = (string)obj.GetValue("type"); - var foundType = _solidTypes.FirstOrDefault(t => t.FullName.ToLower() == typeName); - if (foundType == null) - { - throw new Exception($"The object with type name, {typeName}, could not be deserialzed."); - } - - var solid = (Solid)Activator.CreateInstance(foundType, new object[] { }); - - foreach (JObject vobj in (JArray)obj.GetValue("vertices")) + using (var obj = JsonDocument.ParseValue(ref reader)) { - var id = (long)vobj.GetValue("id"); - var x = (double)vobj.GetValue("x"); - var y = (double)vobj.GetValue("y"); - var z = (double)vobj.GetValue("z"); - solid.AddVertex(id, new Vector3(x, y, z)); - } - - foreach (JObject face in (JArray)obj.GetValue("faces")) - { - var id = (long)face.GetValue("id"); + var root = obj.RootElement; + var typeName = root.GetProperty("type").GetString(); + var foundType = _solidTypes.FirstOrDefault(t => t.FullName.ToLower() == typeName); + if (foundType == null) + { + throw new Exception($"The object with type name, {typeName}, could not be deserialzed."); + } - var outer = new Loop(); + var solid = (Solid)Activator.CreateInstance(foundType, new object[] { }); - foreach (JObject heobj in (JArray)face.GetValue("outer")) + foreach (var vobj in root.GetProperty("vertices").EnumerateArray()) { - ReadHalfEdge(heobj, outer, solid); + var id = vobj.GetProperty("id").GetInt64(); + var x = vobj.GetProperty("x").GetDouble(); + var y = vobj.GetProperty("y").GetDouble(); + var z = vobj.GetProperty("z").GetDouble(); + solid.AddVertex(id, new Vector3(x, y, z)); } - JToken innerobjs; - var inners = new List(); - if (face.TryGetValue("inner", out innerobjs)) + foreach (var face in root.GetProperty("faces").EnumerateArray()) { - foreach (JArray innerobj in innerobjs) + var id = face.GetProperty("id").GetInt64(); + + var outer = new Loop(); + + foreach (var heobj in face.GetProperty("outer").EnumerateArray()) { - var inner = new Loop(); - inners.Add(inner); - foreach (JObject heobj in innerobj) + ReadHalfEdge(heobj, outer, solid); + } + + var inners = new List(); + if (face.TryGetProperty("inner", out var innerobjs)) + { + foreach (var innerobj in innerobjs.EnumerateArray()) { - ReadHalfEdge(heobj, inner, solid); + var inner = new Loop(); + inners.Add(inner); + foreach (var heobj in innerobj.EnumerateArray()) + { + ReadHalfEdge(heobj, inner, solid); + } } } + solid.AddFace(id, outer, inners.ToArray()); } - solid.AddFace(id, outer, inners.ToArray()); - } - return solid; + return solid; + } } - private void ReadHalfEdge(JObject heobj, Loop loop, Solid solid) + private void ReadHalfEdge(JsonElement heobj, Loop loop, Solid solid) { - var vobj = (JObject)heobj.GetValue("vertex"); - var vid = (long)heobj.GetValue("vertex_id"); + // var vobj = heobj.GetProperty("vertex"); + var vid = heobj.GetProperty("vertex_id").GetInt64(); var v = solid.Vertices[vid]; var he = new HalfEdge(v, loop); loop.AddEdgeToEnd(he); - var eid = (long)heobj.GetValue("edge_id"); - Edge edge; - if (!solid.Edges.TryGetValue(eid, out edge)) + var eid = heobj.GetProperty("edge_id").GetInt64(); + if (!solid.Edges.TryGetValue(eid, out Edge edge)) { edge = solid.AddEdge(eid); } he.Edge = edge; - var side = (string)heobj.GetValue("edge_side"); + var side = heobj.GetProperty("edge_side").GetString(); if (side == "left") { edge.Left = he; @@ -133,27 +124,25 @@ private void ReadHalfEdge(JObject heobj, Loop loop, Solid solid) } } - public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + public override void Write(Utf8JsonWriter writer, Solid value, JsonSerializerOptions options) { - var solid = (Solid)value; - writer.WriteStartObject(); writer.WritePropertyName("type"); - writer.WriteValue(value.GetType().FullName.ToLower()); + writer.WriteStringValue(value.GetType().FullName.ToLower()); writer.WritePropertyName("vertices"); writer.WriteStartArray(); - foreach (var v in solid.Vertices.Values) + foreach (var v in value.Vertices.Values) { writer.WriteStartObject(); writer.WritePropertyName("id"); - writer.WriteValue(v.Id); + writer.WriteNumberValue(v.Id); writer.WritePropertyName("x"); - writer.WriteValue(v.Point.X); + writer.WriteNumberValue(v.Point.X); writer.WritePropertyName("y"); - writer.WriteValue(v.Point.Y); + writer.WriteNumberValue(v.Point.Y); writer.WritePropertyName("z"); - writer.WriteValue(v.Point.Z); + writer.WriteNumberValue(v.Point.Z); writer.WriteEndObject(); } writer.WriteEndArray(); @@ -161,18 +150,18 @@ public override void WriteJson(JsonWriter writer, object value, JsonSerializer s writer.WritePropertyName("faces"); writer.WriteStartArray(); - foreach (var f in solid.Faces.Values) + foreach (var f in value.Faces.Values) { writer.WriteStartObject(); writer.WritePropertyName("id"); - writer.WriteValue(f.Id); + writer.WriteNumberValue(f.Id); writer.WritePropertyName("outer"); writer.WriteStartArray(); foreach (var he in f.Outer.Edges) { - WriteHalfEdge(he, writer, value); + WriteHalfEdge(he, writer); } writer.WriteEndArray(); @@ -186,7 +175,7 @@ public override void WriteJson(JsonWriter writer, object value, JsonSerializer s writer.WriteStartArray(); foreach (var he in loop.Edges) { - WriteHalfEdge(he, writer, value); + WriteHalfEdge(he, writer); } writer.WriteEndArray(); } @@ -200,15 +189,15 @@ public override void WriteJson(JsonWriter writer, object value, JsonSerializer s writer.WriteEndObject(); } - private void WriteHalfEdge(HalfEdge he, JsonWriter writer, object value) + private void WriteHalfEdge(HalfEdge he, Utf8JsonWriter writer) { writer.WriteStartObject(); writer.WritePropertyName("vertex_id"); - writer.WriteValue(he.Vertex.Id); + writer.WriteNumberValue(he.Vertex.Id); writer.WritePropertyName("edge_id"); - writer.WriteValue(he.Edge.Id); + writer.WriteNumberValue(he.Edge.Id); writer.WritePropertyName("edge_side"); - writer.WriteValue(he.Edge.Left == he ? "left" : "right"); + writer.WriteStringValue(he.Edge.Left == he ? "left" : "right"); writer.WriteEndObject(); } } diff --git a/Elements/test/SolidTests.cs b/Elements/test/SolidTests.cs index aab19f873..da158c95c 100644 --- a/Elements/test/SolidTests.cs +++ b/Elements/test/SolidTests.cs @@ -2,7 +2,6 @@ using Elements.Geometry; using Elements.Geometry.Solids; using Elements.Geometry.Profiles; -using System.Text.Json.Serialization; using Xunit.Abstractions; using System.Collections.Generic; using System; @@ -10,7 +9,7 @@ using Elements.Serialization.glTF; using Elements.Serialization.JSON; using System.Linq; -using Newtonsoft.Json; +using System.Text.Json; namespace Elements.Tests { @@ -196,15 +195,16 @@ public void Serialization() var materials = new Dictionary(); var defMaterial = BuiltInMaterials.Default; materials.Add(defMaterial.Id, defMaterial); - var json = JsonConvert.SerializeObject(solid, new JsonSerializerSettings() - { - Converters = new[] { new SolidConverter(materials) }, - Formatting = Formatting.Indented - }); - var newSolid = JsonConvert.DeserializeObject(json, new JsonSerializerSettings() + + var options = new JsonSerializerOptions() { - Converters = new[] { new SolidConverter(materials) } - }); + WriteIndented = true + }; + options.Converters.Add(new SolidConverter()); + + var json = JsonSerializer.Serialize(solid, options); + var newSolid = JsonSerializer.Deserialize(json, options); + Assert.Equal(8, newSolid.Vertices.Count); Assert.Equal(12, newSolid.Edges.Count); Assert.Equal(6, newSolid.Faces.Count); @@ -516,7 +516,9 @@ public void SolidPlaneIntersectionTests(string name, string path) var r = new Random(); - var di = JsonConvert.DeserializeObject(File.ReadAllText(path), new[] { new SolidConverter() }); + var options = new JsonSerializerOptions(); + options.Converters.Add(new SolidConverter()); + var di = JsonSerializer.Deserialize(File.ReadAllText(path)); foreach (var solid in di.Solid) { Assert.True(di.Plane.Normal.IsUnitized()); From b67e6ce3d2284d99d26f6599acb4364efa12220a Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Mon, 25 Apr 2022 21:52:59 -0700 Subject: [PATCH 055/150] Fixed all but 1 solid test. --- .../src/Geometry/Solids/ConstructedSolid.cs | 1 + Elements/test/SolidTests.cs | 19 +++++++++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/Elements/src/Geometry/Solids/ConstructedSolid.cs b/Elements/src/Geometry/Solids/ConstructedSolid.cs index 960a5cc7b..769075869 100644 --- a/Elements/src/Geometry/Solids/ConstructedSolid.cs +++ b/Elements/src/Geometry/Solids/ConstructedSolid.cs @@ -1,4 +1,5 @@ using System.Text.Json.Serialization; +using Elements.Serialization.JSON; namespace Elements.Geometry.Solids { diff --git a/Elements/test/SolidTests.cs b/Elements/test/SolidTests.cs index da158c95c..20dfded21 100644 --- a/Elements/test/SolidTests.cs +++ b/Elements/test/SolidTests.cs @@ -271,14 +271,21 @@ public void CreateLaminaWithHoles() public void ConstructedSolidProducesValidGlb() { Name = nameof(ConstructedSolidProducesValidGlb); - var allPolygons = System.Text.Json.JsonSerializer.Deserialize innerLoops)>>(File.ReadAllText("../../../models/Geometry/ExampleConstructedSolidPolygons.json")); + + var options = new JsonSerializerOptions() + { + IncludeFields = true + }; + var allPolygons = JsonSerializer.Deserialize innerLoops)>>(File.ReadAllText("../../../models/Geometry/ExampleConstructedSolidPolygons.json")); var solid = new Solid(); - foreach (var face in allPolygons) + foreach (var (outerLoop, innerLoops) in allPolygons) { - solid.AddFace(face.outerLoop, face.innerLoops, true); + solid.AddFace(outerLoop, innerLoops, true); } - var solidOp = new Elements.Geometry.Solids.ConstructedSolid(solid, false); - solidOp.LocalTransform = new Transform(); + var solidOp = new ConstructedSolid(solid, false) + { + LocalTransform = new Transform() + }; var geoElem = new GeometricElement(new Transform(), BuiltInMaterials.Concrete, new Representation(new[] { solidOp }), false, Guid.NewGuid(), null); var model = new Model(); model.AddElement(geoElem); @@ -518,7 +525,7 @@ public void SolidPlaneIntersectionTests(string name, string path) var options = new JsonSerializerOptions(); options.Converters.Add(new SolidConverter()); - var di = JsonSerializer.Deserialize(File.ReadAllText(path)); + var di = JsonSerializer.Deserialize(File.ReadAllText(path), options); foreach (var solid in di.Solid) { Assert.True(di.Plane.Normal.IsUnitized()); From 4ddb913b93f98751c89aa9935784970bba45cd21 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Mon, 25 Apr 2022 22:00:06 -0700 Subject: [PATCH 056/150] Fix analysis image. --- Elements/src/Analysis/AnalysisImage.cs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/Elements/src/Analysis/AnalysisImage.cs b/Elements/src/Analysis/AnalysisImage.cs index e20db305a..48f7110a3 100644 --- a/Elements/src/Analysis/AnalysisImage.cs +++ b/Elements/src/Analysis/AnalysisImage.cs @@ -5,6 +5,7 @@ using SixLabors.ImageSharp.PixelFormats; using System.IO; +using System.Text.Json.Serialization; namespace Elements.Analysis { @@ -46,6 +47,15 @@ private static int NextPowerOfTwo(double num) private double _numPixelsY; private int _imgPixels; + /// + /// Create an analysis image. + /// + [JsonConstructor] + public AnalysisImage() + { + + } + /// /// An AnalysisImage is similar to an AnalysisMesh in that it renders a mesh with analysis colors. /// However, it uses a mapped image texture rather than mesh vertex colors to lighten the resulting geometry. @@ -69,7 +79,8 @@ public AnalysisImage(Polygon perimeter, /// /// Compute a value for each grid cell, and create the required material. /// - public override void Analyze() { + public override void Analyze() + { base.Analyze(); _perimBounds = new BBox3(new[] { this.Perimeter }); @@ -132,7 +143,7 @@ public override void Analyze() { var imagePath = Path.Combine(Path.GetTempPath(), $"{Guid.NewGuid()}.png"); image.Save(imagePath); - this.Material = new Material($"Analysis_{Guid.NewGuid().ToString()}", Colors.White, 0, 0, imagePath, true, true, interpolateTexture:false, id: Guid.NewGuid()); + this.Material = new Material($"Analysis_{Guid.NewGuid().ToString()}", Colors.White, 0, 0, imagePath, true, true, interpolateTexture: false, id: Guid.NewGuid()); } /// From c4aafef07928f3794824708e8684088385538cac Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Wed, 27 Apr 2022 11:44:30 -0700 Subject: [PATCH 057/150] Fix element instance tests and user element tests. --- Elements/src/Serialization/JSON/ElementConverter.cs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Elements/src/Serialization/JSON/ElementConverter.cs b/Elements/src/Serialization/JSON/ElementConverter.cs index 124cf3e12..8cf2aa91c 100644 --- a/Elements/src/Serialization/JSON/ElementConverter.cs +++ b/Elements/src/Serialization/JSON/ElementConverter.cs @@ -68,14 +68,12 @@ public override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerial { case CollectionType.List: // At this point we'll be at the start of an array. - reader.Read(); - do + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) { var id = reader.GetString(); mi.Invoke(elements, new[] { resolver.ResolveReference(id) }); - reader.Read(); } - while (reader.TokenType != JsonTokenType.EndArray); + break; case CollectionType.Dictionary: var args = typeToConvert.GetGenericArguments(); From 149409b9a2f50743442e26b0042b3943bb2cefae Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Wed, 27 Apr 2022 11:51:16 -0700 Subject: [PATCH 058/150] Remove unused reference. --- Elements/src/Serialization/MappingConfiguration.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/Elements/src/Serialization/MappingConfiguration.cs b/Elements/src/Serialization/MappingConfiguration.cs index 8f3d8ffd9..5a25af398 100644 --- a/Elements/src/Serialization/MappingConfiguration.cs +++ b/Elements/src/Serialization/MappingConfiguration.cs @@ -1,4 +1,3 @@ -using System; using System.Collections.Generic; using Elements.Geometry; From 5ce74ab2003a6ecd56853cef8089432493ddf587 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Wed, 27 Apr 2022 11:52:18 -0700 Subject: [PATCH 059/150] Cleaning up more newtonsoft references. --- Elements.Components/src/SpaceConfiguration.cs | 5 ++-- Elements/src/Geometry/Representation.cs | 2 +- Elements/src/Model.cs | 5 +--- .../Serialization/JSON/AppDomainTypeCache.cs | 2 +- Elements/src/Symbol.cs | 27 ++++++++++--------- 5 files changed, 19 insertions(+), 22 deletions(-) diff --git a/Elements.Components/src/SpaceConfiguration.cs b/Elements.Components/src/SpaceConfiguration.cs index d6017ca9a..e4fc91d50 100644 --- a/Elements.Components/src/SpaceConfiguration.cs +++ b/Elements.Components/src/SpaceConfiguration.cs @@ -2,8 +2,7 @@ using System; using System.Collections.Generic; using System.Linq; -using Elements; -using Elements.Components; +using System.Text.Json.Serialization; using Elements.Geometry; namespace Elements.Components @@ -99,7 +98,7 @@ private ContentElement MakeContentElement() /// /// The content element corresponding to this item. /// - [Newtonsoft.Json.JsonIgnore] + [JsonIgnore] public ContentElement ContentElement { get diff --git a/Elements/src/Geometry/Representation.cs b/Elements/src/Geometry/Representation.cs index 8ae0926d8..ebd7e5c40 100644 --- a/Elements/src/Geometry/Representation.cs +++ b/Elements/src/Geometry/Representation.cs @@ -45,7 +45,7 @@ public static implicit operator Representation(SolidOperation solidOperation) /// A flag to disable CSG operations on this representation. Instead, /// all solids will be meshed, and all voids will be ignored. /// - [Newtonsoft.Json.JsonIgnore] + [JsonIgnore] [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public bool SkipCSGUnion { get; set; } = false; } diff --git a/Elements/src/Model.cs b/Elements/src/Model.cs index ab88b7379..d5feb3fee 100644 --- a/Elements/src/Model.cs +++ b/Elements/src/Model.cs @@ -42,8 +42,7 @@ public class Model /// The origin of the model. /// The transform of the model. /// A collection of elements. - [Newtonsoft.Json.JsonConstructor] - [System.Text.Json.Serialization.JsonConstructor] + [JsonConstructor] public Model(Position @origin, Transform @transform, System.Collections.Generic.IDictionary @elements) { this.Origin = @origin; @@ -233,8 +232,6 @@ public void ToJson(string path, bool gatherSubElements = true) { var exportModel = CreateExportModel(gatherSubElements); - // Json.net recommends writing to a stream for anything over 85k to avoid a string on the large object heap. - // https://www.newtonsoft.com/json/help/html/Performance.htm using (FileStream s = File.Create(path)) { var serializerOptions = new JsonSerializerOptions(); diff --git a/Elements/src/Serialization/JSON/AppDomainTypeCache.cs b/Elements/src/Serialization/JSON/AppDomainTypeCache.cs index 61f3a7453..6852387aa 100644 --- a/Elements/src/Serialization/JSON/AppDomainTypeCache.cs +++ b/Elements/src/Serialization/JSON/AppDomainTypeCache.cs @@ -25,7 +25,7 @@ internal static Dictionary BuildAppDomainTypeCache(out List(); - var skipAssembliesPrefices = new[] { "System", "SixLabors", "Newtonsoft" }; + var skipAssembliesPrefices = new[] { "System", "SixLabors" }; foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies().Where(a => { var name = a.GetName().Name; diff --git a/Elements/src/Symbol.cs b/Elements/src/Symbol.cs index f753452ba..a4db6055a 100644 --- a/Elements/src/Symbol.cs +++ b/Elements/src/Symbol.cs @@ -5,8 +5,7 @@ using System.Net; using System.Threading.Tasks; using System.Text.Json.Serialization; -using Newtonsoft.Json.Linq; -using Newtonsoft.Json; +using System.Text.Json; namespace Elements { @@ -23,7 +22,7 @@ public class Symbol /// A named camera position for this representation, indicating the direction from which the camera is looking (a top view looks from top down, a north view looks from north to south.) [JsonPropertyName("CameraPosition")] - [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + [JsonConverter(typeof(JsonStringEnumConverter))] public SymbolCameraPosition CameraPosition { get; set; } /// @@ -31,8 +30,7 @@ public class Symbol /// /// The geometry of the symbol. /// A named camera position for this representation. - [Newtonsoft.Json.JsonConstructor] - [System.Text.Json.Serialization.JsonConstructor] + [JsonConstructor] public Symbol(GeometryReference @geometry, SymbolCameraPosition @cameraPosition) { this.Geometry = @geometry; @@ -42,7 +40,6 @@ public Symbol(GeometryReference @geometry, SymbolCameraPosition @cameraPosition) /// /// Get the geometry from this symbol. /// - /// public async Task> GetGeometryAsync() { if (this.Geometry.InternalGeometry != null) @@ -58,14 +55,18 @@ public async Task> GetGeometryAsync() var stream = response.GetResponseStream(); var streamReader = new StreamReader(stream); var json = streamReader.ReadToEnd(); - var objects = JsonConvert.DeserializeObject>(json); - var loadedTypes = typeof(Element).Assembly.GetTypes().ToList(); - return objects.Select(obj => + using (var doc = JsonDocument.Parse(json)) { - var discriminator = obj.Value("discriminator"); - var matchingType = loadedTypes.FirstOrDefault(t => t.FullName.Equals(discriminator)); - return obj.ToObject(matchingType); - }); + var root = doc.RootElement; + var geometry = new List(); + var loadedTypes = typeof(Element).Assembly.GetTypes().ToList(); + foreach (var obj in root.EnumerateArray()) + { + var discriminator = obj.GetProperty("discriminator").GetString(); + var matchingType = loadedTypes.FirstOrDefault(t => t.FullName.Equals(discriminator)); + root.Deserialize(matchingType); + } + } } catch { From 0a7952050a18b1eb4b2864447c45f1e5d745f87c Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Wed, 27 Apr 2022 12:02:08 -0700 Subject: [PATCH 060/150] Fix color scale tests. --- Elements/src/Analysis/ColorScale.cs | 5 ++--- Elements/src/Math/Domain1d.cs | 1 + 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Elements/src/Analysis/ColorScale.cs b/Elements/src/Analysis/ColorScale.cs index 424fda0f7..83ae034a7 100644 --- a/Elements/src/Analysis/ColorScale.cs +++ b/Elements/src/Analysis/ColorScale.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using Elements.Geometry; using System.Text.Json.Serialization; -using Elements; using System.Linq; namespace Elements.Analysis @@ -30,7 +29,7 @@ public class ColorScale /// Whether this scale is chunked into discrete bands. /// If false, values will be returned in a smooth gradient. /// - public Boolean Discrete { get; } = false; + public bool Discrete { get; } = false; /// /// Create a ColorScale from a list of colors. The scale will automatically have a domain from 0 to 1. @@ -50,7 +49,7 @@ public ColorScale(List colors) /// Whether this color scale uses discrete values. /// The domains which the colors map to [JsonConstructor] - public ColorScale(List colors, Boolean discrete, List domains = null) + public ColorScale(List colors, bool discrete, List domains = null) { this.Colors = colors; this.Discrete = discrete; diff --git a/Elements/src/Math/Domain1d.cs b/Elements/src/Math/Domain1d.cs index 691abe145..5d676504e 100644 --- a/Elements/src/Math/Domain1d.cs +++ b/Elements/src/Math/Domain1d.cs @@ -53,6 +53,7 @@ internal bool Includes(double value) /// /// The lower bound of the domain. /// The upper bound of the domain. + [JsonConstructor] public Domain1d(double min = 0.0, double max = 1.0) { Min = min; From 71fcebd8df49fdd95dd8f2eba6e4f9103c8a9523 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Wed, 27 Apr 2022 12:54:31 -0700 Subject: [PATCH 061/150] Use the model converter to catch element deserialization errors. --- Elements/src/Model.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Elements/src/Model.cs b/Elements/src/Model.cs index d5feb3fee..7b5a49e75 100644 --- a/Elements/src/Model.cs +++ b/Elements/src/Model.cs @@ -34,7 +34,7 @@ public class Model /// A collection of Elements keyed by their identifiers. [JsonPropertyName("Elements")] [System.ComponentModel.DataAnnotations.Required] - public System.Collections.Generic.IDictionary Elements { get; set; } = new System.Collections.Generic.Dictionary(); + public IDictionary Elements { get; set; } = new System.Collections.Generic.Dictionary(); /// /// Construct a model. @@ -290,7 +290,7 @@ public static Model FromJson(string json) // Use the model converter here so that we have a chance to // intercept the creation of elements when things go wrong. - // options.Converters.Add(new ModelConverter()); + options.Converters.Add(new ModelConverter()); model = JsonSerializer.Deserialize(json, options); From d9b7e8ad81a7fd994d27230aaf6f967fd19745b2 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Wed, 27 Apr 2022 12:55:36 -0700 Subject: [PATCH 062/150] Skip this test due to behavior change. --- Elements/test/ModelTests.cs | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/Elements/test/ModelTests.cs b/Elements/test/ModelTests.cs index 21d997dc2..d92c952f8 100644 --- a/Elements/test/ModelTests.cs +++ b/Elements/test/ModelTests.cs @@ -218,7 +218,14 @@ public void DeserializationConstructsWithMissingProperties() Assert.Equal(Vector3.Origin, newColumn.Location); } - [Fact] + // With the move to System.Text.Json, this test is no longer valid. + // Previously we skipped elements that had properties that could not + // be converted to null. System.text.json handles this condition + // by using the default value. In this example, the column location + // is set to null in the json, but deserializes to (0,0,0), which is + // valid. This is a nicer way of handling this condition than not + // creating an element at all. + [Fact(Skip = "Outdated")] public void DeserializationSkipsNullProperties() { var column = new Column(new Vector3(5, 0), 5, new Profile(Polygon.Rectangle(1, 1))); @@ -227,13 +234,15 @@ public void DeserializationSkipsNullProperties() var json = model.ToJson(true); // https://www.newtonsoft.com/json/help/html/ModifyJson.htm - var obj = JObject.Parse(json); - var elements = obj["Elements"]; - var c = (JObject)elements.Values().ElementAt(2); // the column - // Nullify a property. - c.Property("Location").Value = null; + // var obj = JObject.Parse(json); + using var doc = JsonDocument.Parse(json); + + var obj = doc.RootElement.Clone(); + var elements = obj.GetProperty("Elements").EnumerateObject(); + var c = elements.ElementAt(2).Value; // the column var newModel = Model.FromJson(obj.ToString()); + Assert.Empty(newModel.AllElementsOfType()); } From 559a35fce05add0cf74a675d9351e9c7474084ca Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Fri, 29 Apr 2022 11:02:19 -0400 Subject: [PATCH 063/150] Fix grid tests. --- Elements/src/Spatial/Grid1d.cs | 11 ++++++----- Elements/src/Spatial/Grid2d.cs | 35 +++++++++++++++++++++++----------- Elements/test/Grid2dTests.cs | 3 +-- 3 files changed, 31 insertions(+), 18 deletions(-) diff --git a/Elements/src/Spatial/Grid1d.cs b/Elements/src/Spatial/Grid1d.cs index 12e93d42a..1fdd3f7dd 100644 --- a/Elements/src/Spatial/Grid1d.cs +++ b/Elements/src/Spatial/Grid1d.cs @@ -14,7 +14,6 @@ namespace Elements.Spatial /// /// [!code-csharp[Main](../../Elements/test/Grid1dTests.cs?name=example)] /// - [JsonConverter(typeof(ElementConverter))] public class Grid1d { #region Properties @@ -27,11 +26,10 @@ public class Grid1d /// /// Child cells of this Grid. If null, this Grid is a complete cell with no subdivisions. /// - [JsonPropertyName("Cells")] public List Cells { get => cells; - private set + set { if (this.parent != null) { @@ -45,6 +43,7 @@ private set /// /// Numerical domain of this Grid /// + [JsonInclude] public Domain1d Domain { get; } /// @@ -90,8 +89,9 @@ public Curve Curve // we have to maintain an internal curve domain because subsequent subdivisions of a grid // based on a curve retain the entire curve; this domain allows us to map from the subdivided // domain back to the original curve. + [JsonInclude] [JsonPropertyName("CurveDomain")] - internal readonly Domain1d curveDomain; + public readonly Domain1d curveDomain; // if this 1d grid is the axis of a 2d grid, this is where we store that reference. If not, it will be null private Grid2d parent; @@ -100,8 +100,9 @@ public Curve Curve // is useful in serialization so we only store the base curve once. private Grid1d topLevelParentGrid; + [JsonInclude] [JsonPropertyName("TopLevelParentCurve")] - private Curve topLevelParentCurve + public Curve topLevelParentCurve { get { diff --git a/Elements/src/Spatial/Grid2d.cs b/Elements/src/Spatial/Grid2d.cs index 06266500a..ee7ddc59f 100644 --- a/Elements/src/Spatial/Grid2d.cs +++ b/Elements/src/Spatial/Grid2d.cs @@ -14,7 +14,6 @@ namespace Elements.Spatial /// /// [!code-csharp[Main](../../Elements/test/Grid2dTests.cs?name=example)] /// - [JsonConverter(typeof(ElementConverter))] public class Grid2d { #region Properties @@ -28,11 +27,13 @@ public class Grid2d /// /// The 1d Grid along the U dimension /// + [JsonInclude] public Grid1d U { get; private set; } /// /// The 1d grid along the V dimension /// + [JsonInclude] public Grid1d V { get; private set; } /// @@ -50,30 +51,34 @@ public string Type /// /// A transform from grid space to world space /// + [JsonInclude] [JsonPropertyName("FromGrid")] - internal Transform fromGrid = new Transform(); + public Transform fromGrid = new Transform(); /// /// A transform from world space to grid space /// + [JsonInclude] [JsonPropertyName("ToGrid")] - internal Transform toGrid = new Transform(); + public Transform toGrid = new Transform(); - [JsonPropertyName("UDomainInternal")] - private Domain1d UDomainInternal = new Domain1d(0, 0); + [JsonInclude] + public Domain1d UDomainInternal = new Domain1d(0, 0); - [JsonPropertyName("VDomainInternal")] - private Domain1d VDomainInternal = new Domain1d(0, 0); + [JsonInclude] + public Domain1d VDomainInternal = new Domain1d(0, 0); /// /// Any boundary curves, transformed to grid space. /// + [JsonInclude] [JsonPropertyName("BoundariesInGridSpace")] - private IList boundariesInGridSpace; + public IList boundariesInGridSpace; + private List> cells; - [JsonPropertyName("ModifiedChildCells")] - internal List ModifiedChildCells => GetModifiedChildCells(); + [JsonInclude] + public List ModifiedChildCells => GetModifiedChildCells(); // for serialization purposes, we store only those cells that are not a natural consequence of the U and V 1d grids composing this grid. private List GetModifiedChildCells() @@ -162,7 +167,15 @@ public Grid2d() /// [JsonConstructor] [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] - public Grid2d(Transform fromGrid, Transform toGrid, Domain1d uDomainInternal, Domain1d vDomainInternal, List boundariesInGridSpace, Grid1d u, Grid1d v, string type, List modifiedChildCells) + public Grid2d(Transform fromGrid, + Transform toGrid, + Domain1d uDomainInternal, + Domain1d vDomainInternal, + IList boundariesInGridSpace, + Grid1d u, + Grid1d v, + string type, + List modifiedChildCells) { this.fromGrid = fromGrid; this.toGrid = toGrid; diff --git a/Elements/test/Grid2dTests.cs b/Elements/test/Grid2dTests.cs index 2f1871d52..07bcb5f09 100644 --- a/Elements/test/Grid2dTests.cs +++ b/Elements/test/Grid2dTests.cs @@ -3,7 +3,6 @@ using System.Linq; using Elements.Spatial; using Xunit; -using System.Text.Json.Serialization; using Elements.Geometry; using System.Collections.Generic; using System.Text.Json; @@ -198,7 +197,7 @@ public void Grid2dSerializes() grid2d.V.DivideByCount(3); grid2d[2, 2].U.DivideByCount(4); var json = JsonSerializer.Serialize(grid2d); - var deserialized = JsonSerializer.Deserialize(json); + var deserialized = Element.Deserialize(json); Assert.Equal(grid2d.GetCells().Count, deserialized.GetCells().Count); var grid2dElem = new Grid2dElement(grid2d, Guid.NewGuid(), "Grid"); From 897859b4cba1a47ed2b2bc5cb5e3397cd6e64e65 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Fri, 29 Apr 2022 11:13:24 -0400 Subject: [PATCH 064/150] Cleanup adaptive grid. --- .../src/Spatial/AdaptiveGrid/AdaptiveGrid.cs | 28 +++++++++---------- Elements/test/AdaptiveGridTests.cs | 3 -- 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/Elements/src/Spatial/AdaptiveGrid/AdaptiveGrid.cs b/Elements/src/Spatial/AdaptiveGrid/AdaptiveGrid.cs index 4540a08e2..645f44893 100644 --- a/Elements/src/Spatial/AdaptiveGrid/AdaptiveGrid.cs +++ b/Elements/src/Spatial/AdaptiveGrid/AdaptiveGrid.cs @@ -1,8 +1,8 @@ using Elements.Geometry; -using System.Text.Json.Serialization; using System; using System.Collections.Generic; using System.Linq; +using System.Text.Json.Serialization; namespace Elements.Spatial.AdaptiveGrid { @@ -26,14 +26,14 @@ public class AdaptiveGrid /// /// Vertices by ID. /// - [JsonPropertyName("_vertices")] // TODO: Backwards serialization capability. Update to align with property name in future. - public Dictionary Vertices = new Dictionary(); + [JsonInclude] + private Dictionary _vertices = new Dictionary(); /// /// Edges by ID. /// - [JsonPropertyName("_edges")] // TODO: Backwards serialization capability. Update to align with property name in future. - public Dictionary Edges = new Dictionary(); + [JsonInclude] + private Dictionary _edges = new Dictionary(); // See Edge.GetHash for how edges are identified as unique. private Dictionary _edgesLookup = new Dictionary(); @@ -261,7 +261,7 @@ public void SubtractBox(BBox3 box) /// public Vertex GetVertex(ulong vertexId) { - this.Vertices.TryGetValue(vertexId, out var vertex); + this._vertices.TryGetValue(vertexId, out var vertex); return vertex; } @@ -271,7 +271,7 @@ public Vertex GetVertex(ulong vertexId) /// public List GetVertices() { - return this.Vertices.Values.ToList(); + return this._vertices.Values.ToList(); } /// @@ -280,7 +280,7 @@ public List GetVertices() /// public List GetEdges() { - return this.Edges.Values.ToList(); + return this._edges.Values.ToList(); } /// @@ -466,7 +466,7 @@ public Edge AddEdge(ulong vertexId1, ulong vertexId2) edgeId = edge.Id; this._edgesLookup[hash] = edgeId; - this.Edges.Add(edgeId, edge); + this._edges.Add(edgeId, edge); this.GetVertex(edge.StartId).Edges.Add(edge); this.GetVertex(edge.EndId).Edges.Add(edge); @@ -476,7 +476,7 @@ public Edge AddEdge(ulong vertexId1, ulong vertexId2) } else { - this.Edges.TryGetValue(edgeId, out var edge); + this._edges.TryGetValue(edgeId, out var edge); return edge; } } @@ -511,7 +511,7 @@ public void RemoveEdge(Edge edge) { var hash = Edge.GetHash(new List { edge.StartId, edge.EndId }); this._edgesLookup.Remove(hash); - this.Edges.Remove(edge.Id); + this._edges.Remove(edge.Id); var startVertexEdges = this.GetVertex(edge.StartId).Edges; startVertexEdges.Remove(edge); @@ -545,7 +545,7 @@ private Vertex AddVertex(Vector3 point) id = this._vertexId; var vertex = new Vertex(id, point); zDict[point.Z] = id; - Vertices[id] = vertex; + _vertices[id] = vertex; this._vertexId++; } @@ -554,8 +554,8 @@ private Vertex AddVertex(Vector3 point) private void DeleteVertex(ulong id) { - var vertex = Vertices[id]; - Vertices.Remove(id); + var vertex = _vertices[id]; + _vertices.Remove(id); var zDict = GetAddressParent(_verticesLookup, vertex.Point, tolerance: Tolerance); if (zDict == null) { diff --git a/Elements/test/AdaptiveGridTests.cs b/Elements/test/AdaptiveGridTests.cs index ca28247f3..94bb7f329 100644 --- a/Elements/test/AdaptiveGridTests.cs +++ b/Elements/test/AdaptiveGridTests.cs @@ -1,11 +1,8 @@ using Elements.Geometry; using Elements.Spatial.AdaptiveGrid; -using Elements.Tests; using System; using System.Collections.Generic; -using System.IO; using System.Linq; -using System.Text; using Xunit; using Vertex = Elements.Spatial.AdaptiveGrid.Vertex; From e42560dcff1e9a02b39477fc1191fd84f6d2b08d Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Fri, 29 Apr 2022 11:16:49 -0400 Subject: [PATCH 065/150] Clean up cell complex. --- .../src/Spatial/CellComplex/CellComplex.cs | 68 +++++++++---------- Elements/src/Spatial/CellComplex/Face.cs | 18 ++--- 2 files changed, 43 insertions(+), 43 deletions(-) diff --git a/Elements/src/Spatial/CellComplex/CellComplex.cs b/Elements/src/Spatial/CellComplex/CellComplex.cs index 36769812b..22ca94bdc 100644 --- a/Elements/src/Spatial/CellComplex/CellComplex.cs +++ b/Elements/src/Spatial/CellComplex/CellComplex.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; using System.Linq; -using Elements.Geometry; using System.Text.Json.Serialization; +using Elements.Geometry; namespace Elements.Spatial.CellComplex { @@ -35,38 +35,38 @@ public class CellComplex : Elements.Element /// /// Vertices by ID. /// - [JsonPropertyName("_vertices")] // TODO: Backwards serialization capability. Update to align with property name in future. - public Dictionary Vertices = new Dictionary(); + [JsonInclude] + private Dictionary _vertices = new Dictionary(); /// /// U or V directions by ID. /// - [JsonPropertyName("_orientations")] // TODO: Backwards serialization capability. Update to align with property name in future. - public Dictionary Orientations = new Dictionary(); + [JsonInclude] + private Dictionary _orientations = new Dictionary(); /// /// Edges by ID. /// - [JsonPropertyName("_edges")] // TODO: Backwards serialization capability. Update to align with property name in future. - public Dictionary Edges = new Dictionary(); + [JsonInclude] + private Dictionary _edges = new Dictionary(); /// /// DirectedEdges by ID. /// - [JsonPropertyName("_directedEdges")] // TODO: Backwards serialization capability. Update to align with property name in future. - public Dictionary DirectedEdges = new Dictionary(); + [JsonInclude] + private Dictionary _directedEdges = new Dictionary(); /// /// Faces by ID. /// - [JsonPropertyName("_faces")] // TODO: Backwards serialization capability. Update to align with property name in future. - public Dictionary Faces = new Dictionary(); + [JsonInclude] + private Dictionary _faces = new Dictionary(); /// /// Cells by ID. /// - [JsonPropertyName("_cells")] // TODO: Backwards serialization capability. Update to align with property name in future. - public Dictionary Cells = new Dictionary(); + [JsonInclude] + private Dictionary _cells = new Dictionary(); // Vertex lookup by x, y, z coordinate. private Dictionary>> _verticesLookup = new Dictionary>>(); @@ -257,14 +257,14 @@ private DirectedEdge AddDirectedEdge(Line line) /// Whether the cell was successfully added. Will be false if cellId already exists. private Boolean AddCell(ulong cellId, List faces, Face bottomFace, Face topFace, out Cell cell) { - if (this.Cells.ContainsKey(cellId)) + if (this._cells.ContainsKey(cellId)) { cell = null; return false; } cell = new Cell(this, cellId, faces, bottomFace, topFace); - this.Cells.Add(cell.Id, cell); + this._cells.Add(cell.Id, cell); foreach (var face in faces) { @@ -300,7 +300,7 @@ private Boolean AddFace(Polygon polygon, ulong idIfNew, Orientation u, Orientati face = new Face(this, idIfNew, directedEdges, u, v); faceId = face.Id; this._facesLookup.Add(hash, faceId); - this.Faces.Add(faceId, face); + this._faces.Add(faceId, face); foreach (var directedEdge in directedEdges) { @@ -312,7 +312,7 @@ private Boolean AddFace(Polygon polygon, ulong idIfNew, Orientation u, Orientati } else { - this.Faces.TryGetValue(faceId, out face); + this._faces.TryGetValue(faceId, out face); return false; } } @@ -341,7 +341,7 @@ private Boolean AddDirectedEdge(Edge edge, Boolean edgeTupleIsInOrder, ulong idI directedEdgeId = directedEdge.Id; directedEdgeDict.Add(edgeTupleIsInOrder, directedEdgeId); - this.DirectedEdges.Add(directedEdgeId, directedEdge); + this._directedEdges.Add(directedEdgeId, directedEdge); edge.DirectedEdges.Add(directedEdge); @@ -351,7 +351,7 @@ private Boolean AddDirectedEdge(Edge edge, Boolean edgeTupleIsInOrder, ulong idI } else { - this.DirectedEdges.TryGetValue(directedEdgeId, out directedEdge); + this._directedEdges.TryGetValue(directedEdgeId, out directedEdge); return false; } @@ -374,7 +374,7 @@ private Boolean AddEdge(List vertexIds, ulong idIfNew, out Edge edge) edgeId = edge.Id; this._edgesLookup[hash] = edgeId; - this.Edges.Add(edgeId, edge); + this._edges.Add(edgeId, edge); this.GetVertex(edge.StartVertexId).Edges.Add(edge); this.GetVertex(edge.EndVertexId).Edges.Add(edge); @@ -385,7 +385,7 @@ private Boolean AddEdge(List vertexIds, ulong idIfNew, out Edge edge) } else { - this.Edges.TryGetValue(edgeId, out edge); + this._edges.TryGetValue(edgeId, out edge); return false; } } @@ -401,7 +401,7 @@ private Dictionary GetVertexOrOrientationDictionary() where T : Ver { throw new Exception("Unsupported type provided, expected Vertex or Orientation"); } - return typeof(T) == typeof(Orientation) ? this.Orientations as Dictionary : this.Vertices as Dictionary; + return typeof(T) == typeof(Orientation) ? this._orientations as Dictionary : this._vertices as Dictionary; } /// @@ -496,7 +496,7 @@ private Boolean AddVertexOrOrientation(Vector3 point, ulong idIfNew, out ulon /// public Vertex GetVertex(ulong vertexId) { - this.Vertices.TryGetValue(vertexId, out var vertex); + this._vertices.TryGetValue(vertexId, out var vertex); return vertex; } @@ -506,7 +506,7 @@ public Vertex GetVertex(ulong vertexId) /// public List GetVertices() { - return this.Vertices.Values.ToList(); + return this._vertices.Values.ToList(); } /// @@ -520,7 +520,7 @@ public Orientation GetOrientation(ulong? orientationId) { return null; } - this.Orientations.TryGetValue((ulong)orientationId, out var orientation); + this._orientations.TryGetValue((ulong)orientationId, out var orientation); return orientation; } @@ -530,7 +530,7 @@ public Orientation GetOrientation(ulong? orientationId) /// internal List GetOrientations() { - return this.Orientations.Values.ToList(); + return this._orientations.Values.ToList(); } /// @@ -540,7 +540,7 @@ internal List GetOrientations() /// public Edge GetEdge(ulong edgeId) { - this.Edges.TryGetValue(edgeId, out var edge); + this._edges.TryGetValue(edgeId, out var edge); return edge; } @@ -550,7 +550,7 @@ public Edge GetEdge(ulong edgeId) /// public List GetEdges() { - return this.Edges.Values.ToList(); + return this._edges.Values.ToList(); } /// @@ -564,7 +564,7 @@ public Face GetFace(ulong? faceId) { return null; } - this.Faces.TryGetValue((ulong)faceId, out var face); + this._faces.TryGetValue((ulong)faceId, out var face); return face; } @@ -574,7 +574,7 @@ public Face GetFace(ulong? faceId) /// public List GetFaces() { - return this.Faces.Values.ToList(); + return this._faces.Values.ToList(); } /// @@ -584,7 +584,7 @@ public List GetFaces() /// public Cell GetCell(ulong cellId) { - this.Cells.TryGetValue(cellId, out var cell); + this._cells.TryGetValue(cellId, out var cell); return cell; } @@ -594,7 +594,7 @@ public Cell GetCell(ulong cellId) /// public List GetCells() { - return this.Cells.Values.ToList(); + return this._cells.Values.ToList(); } /// @@ -644,7 +644,7 @@ public Cell GetClosestCell(Vector3 point) /// internal DirectedEdge GetDirectedEdge(ulong directedEdgeId) { - this.DirectedEdges.TryGetValue(directedEdgeId, out var directedEdge); + this._directedEdges.TryGetValue(directedEdgeId, out var directedEdge); return directedEdge; } @@ -654,7 +654,7 @@ internal DirectedEdge GetDirectedEdge(ulong directedEdgeId) /// internal List GetDirectedEdges() { - return this.DirectedEdges.Values.ToList(); + return this._directedEdges.Values.ToList(); } /// diff --git a/Elements/src/Spatial/CellComplex/Face.cs b/Elements/src/Spatial/CellComplex/Face.cs index 5e5952594..e01e4d866 100644 --- a/Elements/src/Spatial/CellComplex/Face.cs +++ b/Elements/src/Spatial/CellComplex/Face.cs @@ -19,14 +19,14 @@ public class Face : ChildBase, Interfaces.IHasNeighbors /// ID of U orientation. /// - [JsonPropertyName("_orientationUId")] // TODO: Backwards serialization capability. Update to align with property name in future. - public ulong? OrientationUId; + [JsonInclude] + private ulong? _orientationUId; /// /// ID of V orientation. /// - [JsonPropertyName("_orientationVId")] // TODO: Backwards serialization capability. Update to align with property name in future. - public ulong? OrientationVId; + [JsonInclude] + private ulong? _orientationVId; /// /// Cells that reference this Face. @@ -48,11 +48,11 @@ internal Face(CellComplex cellComplex, ulong id, List directedEdge this.DirectedEdgeIds = directedEdges.Select(ds => ds.Id).ToList(); if (u != null) { - this.OrientationUId = u.Id; + this._orientationUId = u.Id; } if (v != null) { - this.OrientationVId = v.Id; + this._orientationVId = v.Id; } } @@ -64,8 +64,8 @@ internal Face(ulong id, List directedEdgeIds, ulong? _orientationUId = nu { this.Id = id; this.DirectedEdgeIds = directedEdgeIds; - this.OrientationUId = _orientationUId; - this.OrientationVId = _orientationVId; + this._orientationUId = _orientationUId; + this._orientationVId = _orientationVId; } /// @@ -192,7 +192,7 @@ public Cell GetClosestCell(Vector3 point) /// public (Orientation U, Orientation V) GetOrientation() { - return (U: this.CellComplex.GetOrientation(this.OrientationUId), V: this.CellComplex.GetOrientation(this.OrientationVId)); + return (U: this.CellComplex.GetOrientation(this._orientationUId), V: this.CellComplex.GetOrientation(this._orientationVId)); } /// From 5045bdb37b2809171cfc370ddd3da4b91f6114e8 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Fri, 29 Apr 2022 11:25:48 -0400 Subject: [PATCH 066/150] Don't use JsonPropertyName unless neccessary. --- Elements/src/ContentCatalog.cs | 2 -- Elements/src/ContentElement.cs | 3 --- Elements/src/Element.cs | 2 -- Elements/src/GeometricElement.cs | 4 ---- Elements/src/Geometry/Arc.cs | 4 ---- Elements/src/Geometry/BBox3.cs | 2 -- Elements/src/Geometry/Color.cs | 4 ---- Elements/src/Geometry/Line.cs | 2 -- Elements/src/Geometry/Matrix.cs | 1 - Elements/src/Geometry/Mesh.cs | 2 -- Elements/src/Geometry/Plane.cs | 2 -- Elements/src/Geometry/Polyline.cs | 1 - Elements/src/Geometry/Profile.cs | 2 -- Elements/src/Geometry/Representation.cs | 1 - Elements/src/Geometry/Solids/Extrude.cs | 3 --- Elements/src/Geometry/Solids/Lamina.cs | 2 -- Elements/src/Geometry/Solids/SolidOperation.cs | 1 - Elements/src/Geometry/Solids/Sweep.cs | 5 ----- Elements/src/Geometry/Transform.cs | 1 - Elements/src/Geometry/Triangle.cs | 2 -- Elements/src/Geometry/UV.cs | 2 -- Elements/src/Geometry/Vector3.cs | 3 --- Elements/src/Geometry/Vertex.cs | 6 ------ Elements/src/GeometryReference.cs | 2 -- Elements/src/Material.cs | 11 ----------- Elements/src/Model.cs | 3 --- Elements/src/Symbol.cs | 2 -- Elements/src/WallByProfile.cs | 3 --- Elements/test/Grid2dElement.cs | 1 - Elements/test/MeshTests.cs | 1 - 30 files changed, 80 deletions(-) diff --git a/Elements/src/ContentCatalog.cs b/Elements/src/ContentCatalog.cs index c3c890abc..76cc147e6 100644 --- a/Elements/src/ContentCatalog.cs +++ b/Elements/src/ContentCatalog.cs @@ -12,12 +12,10 @@ namespace Elements public class ContentCatalog : Element { /// The content elements in this catalog. - [JsonPropertyName("Content")] [System.ComponentModel.DataAnnotations.Required] public IList Content { get; set; } = new List(); /// An example arrangement of the elements contained in this catalog. - [JsonPropertyName("ReferenceConfiguration")] public IList ReferenceConfiguration { get; set; } /// diff --git a/Elements/src/ContentElement.cs b/Elements/src/ContentElement.cs index 9afac50d0..6db21412e 100644 --- a/Elements/src/ContentElement.cs +++ b/Elements/src/ContentElement.cs @@ -17,7 +17,6 @@ public class ContentElement : GeometricElement public string GltfLocation { get; set; } /// The bounding box of the content. - [JsonPropertyName("Bounding Box")] public BBox3 BoundingBox { get; set; } /// The scale needed to convert the gltf to meters. @@ -25,11 +24,9 @@ public class ContentElement : GeometricElement public double GltfScaleToMeters { get; set; } /// A vector indicating the direction the source object was originally facing. - [JsonPropertyName("SourceDirection")] public Vector3 SourceDirection { get; set; } /// Alternate symbolic representations of the object. - [JsonPropertyName("Symbols")] public IList Symbols { get; set; } /// diff --git a/Elements/src/Element.cs b/Elements/src/Element.cs index 85227ca4c..d84162acf 100644 --- a/Elements/src/Element.cs +++ b/Elements/src/Element.cs @@ -32,7 +32,6 @@ public abstract class Element : System.ComponentModel.INotifyPropertyChanged } /// A unique id. - [JsonPropertyName("Id")] [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] public System.Guid Id { @@ -48,7 +47,6 @@ public System.Guid Id } /// A name. - [JsonPropertyName("Name")] public string Name { get { return _name; } diff --git a/Elements/src/GeometricElement.cs b/Elements/src/GeometricElement.cs index a179ff097..724916ef9 100644 --- a/Elements/src/GeometricElement.cs +++ b/Elements/src/GeometricElement.cs @@ -15,20 +15,16 @@ namespace Elements public class GeometricElement : Element { /// The element's transform. - [JsonPropertyName("Transform")] public Transform Transform { get; set; } /// The element's material. - [JsonPropertyName("Material")] [JsonConverter(typeof(ElementConverter))] public Material Material { get; set; } /// The element's representation. - [JsonPropertyName("Representation")] public Representation Representation { get; set; } /// When true, this element will act as the base definition for element instances, and will not appear in visual output. - [JsonPropertyName("IsElementDefinition")] public bool IsElementDefinition { get; set; } = false; /// diff --git a/Elements/src/Geometry/Arc.cs b/Elements/src/Geometry/Arc.cs index f0541cb30..54397b6aa 100644 --- a/Elements/src/Geometry/Arc.cs +++ b/Elements/src/Geometry/Arc.cs @@ -14,21 +14,17 @@ namespace Elements.Geometry public partial class Arc : Curve, IEquatable { /// The center of the arc. - [JsonPropertyName("Center")] public Vector3 Center { get; set; } /// The radius of the arc. - [JsonPropertyName("Radius")] [System.ComponentModel.DataAnnotations.Range(0.0D, double.MaxValue)] public double Radius { get; set; } /// The angle from 0.0, in degrees, at which the arc will start with respect to the positive X axis. - [JsonPropertyName("StartAngle")] [System.ComponentModel.DataAnnotations.Range(0.0D, 360.0D)] public double StartAngle { get; set; } /// The angle from 0.0, in degrees, at which the arc will end with respect to the positive X axis. - [JsonPropertyName("EndAngle")] [System.ComponentModel.DataAnnotations.Range(0.0D, 360.0D)] public double EndAngle { get; set; } diff --git a/Elements/src/Geometry/BBox3.cs b/Elements/src/Geometry/BBox3.cs index b6b760dd5..b63968cc6 100644 --- a/Elements/src/Geometry/BBox3.cs +++ b/Elements/src/Geometry/BBox3.cs @@ -13,11 +13,9 @@ namespace Elements.Geometry public struct BBox3 { /// The minimum extent of the bounding box. - [JsonPropertyName("Min")] public Vector3 Min { get; set; } /// The maximum extent of the bounding box. - [JsonPropertyName("Max")] public Vector3 Max { get; set; } /// diff --git a/Elements/src/Geometry/Color.cs b/Elements/src/Geometry/Color.cs index 9e81bb714..d18202cb8 100644 --- a/Elements/src/Geometry/Color.cs +++ b/Elements/src/Geometry/Color.cs @@ -9,22 +9,18 @@ namespace Elements.Geometry public struct Color : IEquatable { /// The red component of the color between 0.0 and 1.0. - [JsonPropertyName("Red")] [System.ComponentModel.DataAnnotations.Range(0.0D, 1.0D)] public double Red { get; set; } /// The green component of the color between 0.0 and 1.0. - [JsonPropertyName("Green")] [System.ComponentModel.DataAnnotations.Range(0.0D, 1.0D)] public double Green { get; set; } /// The blue component of the color between 0.0 and 1.0. - [JsonPropertyName("Blue")] [System.ComponentModel.DataAnnotations.Range(0.0D, 1.0D)] public double Blue { get; set; } /// The alpha component of the color between 0.0 and 1.0. - [JsonPropertyName("Alpha")] [System.ComponentModel.DataAnnotations.Range(0.0D, 1.0D)] public double Alpha { get; set; } diff --git a/Elements/src/Geometry/Line.cs b/Elements/src/Geometry/Line.cs index e777e4d16..ab8e3bf4d 100644 --- a/Elements/src/Geometry/Line.cs +++ b/Elements/src/Geometry/Line.cs @@ -17,11 +17,9 @@ namespace Elements.Geometry public class Line : Curve, IEquatable { /// The start of the line. - [JsonPropertyName("Start")] public Vector3 Start { get; set; } /// The end of the line. - [JsonPropertyName("End")] public Vector3 End { get; set; } /// diff --git a/Elements/src/Geometry/Matrix.cs b/Elements/src/Geometry/Matrix.cs index c2eb81a2e..77c4bc722 100644 --- a/Elements/src/Geometry/Matrix.cs +++ b/Elements/src/Geometry/Matrix.cs @@ -12,7 +12,6 @@ namespace Elements.Geometry public partial class Matrix : IEquatable { /// The components of the matrix. - [JsonPropertyName("Components")] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.MinLength(12)] [System.ComponentModel.DataAnnotations.MaxLength(12)] diff --git a/Elements/src/Geometry/Mesh.cs b/Elements/src/Geometry/Mesh.cs index 0b17a2e6d..3167407e8 100644 --- a/Elements/src/Geometry/Mesh.cs +++ b/Elements/src/Geometry/Mesh.cs @@ -19,11 +19,9 @@ public partial class Mesh private PointOctree _octree = new PointOctree(100000, new Octree.Point(0f, 0f, 0f), (float)Vector3.EPSILON); /// The mesh' vertices. - [JsonPropertyName("Vertices")] public IList Vertices { get; set; } /// The mesh' triangles. - [JsonPropertyName("Triangles")] public IList Triangles { get; set; } /// diff --git a/Elements/src/Geometry/Plane.cs b/Elements/src/Geometry/Plane.cs index 909e2ef2d..bc6276d14 100644 --- a/Elements/src/Geometry/Plane.cs +++ b/Elements/src/Geometry/Plane.cs @@ -11,11 +11,9 @@ namespace Elements.Geometry public partial class Plane : IEquatable { /// The origin of the plane. - [JsonPropertyName("Origin")] public Vector3 Origin { get; set; } /// The normal of the plane. - [JsonPropertyName("Normal")] public Vector3 Normal { get; set; } /// diff --git a/Elements/src/Geometry/Polyline.cs b/Elements/src/Geometry/Polyline.cs index 661011bb3..630204f28 100644 --- a/Elements/src/Geometry/Polyline.cs +++ b/Elements/src/Geometry/Polyline.cs @@ -23,7 +23,6 @@ public class Polyline : Curve, IEquatable internal BBox3 _bounds; /// The vertices of the polygon. - [JsonPropertyName("Vertices")] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.MinLength(2)] public IList Vertices { get; set; } = new List(); diff --git a/Elements/src/Geometry/Profile.cs b/Elements/src/Geometry/Profile.cs index 4bce51119..1b01e2505 100644 --- a/Elements/src/Geometry/Profile.cs +++ b/Elements/src/Geometry/Profile.cs @@ -13,11 +13,9 @@ namespace Elements.Geometry public class Profile : Element, IEquatable { /// The perimeter of the profile. - [JsonPropertyName("Perimeter")] public Polygon Perimeter { get; set; } /// A collection of Polygons representing voids in the profile. - [JsonPropertyName("Voids")] public IList Voids { get; set; } /// diff --git a/Elements/src/Geometry/Representation.cs b/Elements/src/Geometry/Representation.cs index ebd7e5c40..c9b341956 100644 --- a/Elements/src/Geometry/Representation.cs +++ b/Elements/src/Geometry/Representation.cs @@ -8,7 +8,6 @@ namespace Elements.Geometry public class Representation { /// A collection of solid operations. - [JsonPropertyName("SolidOperations")] [System.ComponentModel.DataAnnotations.Required] public IList SolidOperations { get; set; } = new List(); diff --git a/Elements/src/Geometry/Solids/Extrude.cs b/Elements/src/Geometry/Solids/Extrude.cs index e3282c4a9..20cbb4719 100644 --- a/Elements/src/Geometry/Solids/Extrude.cs +++ b/Elements/src/Geometry/Solids/Extrude.cs @@ -15,7 +15,6 @@ public class Extrude : SolidOperation, System.ComponentModel.INotifyPropertyChan private Vector3 _direction; /// The id of the profile to extrude. - [JsonPropertyName("Profile")] [JsonConverter(typeof(ElementConverter))] public Profile Profile { @@ -31,7 +30,6 @@ public Profile Profile } /// The height of the extrusion. - [JsonPropertyName("Height")] [System.ComponentModel.DataAnnotations.Range(0D, double.MaxValue)] public double Height { @@ -47,7 +45,6 @@ public double Height } /// The direction in which to extrude. - [JsonPropertyName("Direction")] public Vector3 Direction { get { return _direction; } diff --git a/Elements/src/Geometry/Solids/Lamina.cs b/Elements/src/Geometry/Solids/Lamina.cs index 79e6af4cb..4095aea20 100644 --- a/Elements/src/Geometry/Solids/Lamina.cs +++ b/Elements/src/Geometry/Solids/Lamina.cs @@ -12,7 +12,6 @@ public class Lamina : SolidOperation private IList _voids; /// The perimeter. - [JsonPropertyName("Perimeter")] public Polygon Perimeter { get { return _perimeter; } @@ -29,7 +28,6 @@ public Polygon Perimeter /// /// A collection of voids. /// - [JsonPropertyName("Voids")] public IList Voids { get { return _voids; } diff --git a/Elements/src/Geometry/Solids/SolidOperation.cs b/Elements/src/Geometry/Solids/SolidOperation.cs index 6c509cc87..b00eadb91 100644 --- a/Elements/src/Geometry/Solids/SolidOperation.cs +++ b/Elements/src/Geometry/Solids/SolidOperation.cs @@ -28,7 +28,6 @@ public Solid Solid /// /// Is the solid operation a void operation? /// - [JsonPropertyName("IsVoid")] public bool IsVoid { get; set; } = false; /// diff --git a/Elements/src/Geometry/Solids/Sweep.cs b/Elements/src/Geometry/Solids/Sweep.cs index 16ac29e1f..ad9369f5d 100644 --- a/Elements/src/Geometry/Solids/Sweep.cs +++ b/Elements/src/Geometry/Solids/Sweep.cs @@ -37,7 +37,6 @@ public Sweep(Profile @profile, Curve @curve, double @startSetback, double @endSe } /// The id of the profile to be swept along the curve. - [JsonPropertyName("Profile")] [JsonConverter(typeof(ElementConverter))] public Profile Profile { @@ -53,7 +52,6 @@ public Profile Profile } /// The curve along which the profile will be swept. - [JsonPropertyName("Curve")] public Curve Curve { get { return _curve; } @@ -68,7 +66,6 @@ public Curve Curve } /// The amount to set back the resulting solid from the start of the curve. - [JsonPropertyName("StartSetback")] public double StartSetback { get { return _startSetback; } @@ -83,7 +80,6 @@ public double StartSetback } /// The amount to set back the resulting solid from the end of the curve. - [JsonPropertyName("EndSetback")] public double EndSetback { get { return _endSetback; } @@ -98,7 +94,6 @@ public double EndSetback } /// The rotation of the profile around the sweep's curve. - [JsonPropertyName("ProfileRotation")] public double ProfileRotation { get { return _profileRotation; } diff --git a/Elements/src/Geometry/Transform.cs b/Elements/src/Geometry/Transform.cs index 47135daac..aef8239bd 100644 --- a/Elements/src/Geometry/Transform.cs +++ b/Elements/src/Geometry/Transform.cs @@ -37,7 +37,6 @@ public partial class Transform : IEquatable public Vector3 ZAxis => this.Matrix.ZAxis; /// The transform's matrix. - [JsonPropertyName("Matrix")] [System.ComponentModel.DataAnnotations.Required] public Matrix Matrix { get; set; } = new Matrix(); diff --git a/Elements/src/Geometry/Triangle.cs b/Elements/src/Geometry/Triangle.cs index 55e453608..128995d8e 100644 --- a/Elements/src/Geometry/Triangle.cs +++ b/Elements/src/Geometry/Triangle.cs @@ -12,12 +12,10 @@ namespace Elements.Geometry public class Triangle { /// The triangle's vertices. - [JsonPropertyName("Vertices")] [System.ComponentModel.DataAnnotations.Required] public IList Vertices { get; set; } = new List(); /// The triangle's normal. - [JsonPropertyName("Normal")] public Vector3 Normal { get; set; } /// diff --git a/Elements/src/Geometry/UV.cs b/Elements/src/Geometry/UV.cs index 13c38c384..d952e6df7 100644 --- a/Elements/src/Geometry/UV.cs +++ b/Elements/src/Geometry/UV.cs @@ -8,11 +8,9 @@ namespace Elements.Geometry public struct UV { /// The U coordinate. - [JsonPropertyName("U")] public double U { get; set; } /// The V coordinate. - [JsonPropertyName("V")] public double V { get; set; } /// diff --git a/Elements/src/Geometry/Vector3.cs b/Elements/src/Geometry/Vector3.cs index bd0d9b611..dce8ddcdb 100644 --- a/Elements/src/Geometry/Vector3.cs +++ b/Elements/src/Geometry/Vector3.cs @@ -48,15 +48,12 @@ public Vector3(double @x, double @y, double @z) } /// The X component of the vector. - [JsonPropertyName("X")] public double X { get; set; } /// The Y component of the vector. - [JsonPropertyName("Y")] public double Y { get; set; } /// The Z component of the vector. - [JsonPropertyName("Z")] public double Z { get; set; } /// diff --git a/Elements/src/Geometry/Vertex.cs b/Elements/src/Geometry/Vertex.cs index 0a1339fde..92e05d515 100644 --- a/Elements/src/Geometry/Vertex.cs +++ b/Elements/src/Geometry/Vertex.cs @@ -9,24 +9,19 @@ namespace Elements.Geometry public class Vertex { /// The vertex's position. - [JsonPropertyName("Position")] public Vector3 Position { get; set; } /// The vertex's normal. - [JsonPropertyName("Normal")] public Vector3 Normal { get; set; } /// The vertex's color. - [JsonPropertyName("Color")] [System.ComponentModel.DataAnnotations.Required] public Color Color { get; set; } = new Color(); /// The index of the vertex within a mesh. - [JsonPropertyName("Index")] public int Index { get; set; } /// The vertex's texture coordinate. - [JsonPropertyName("UV")] [System.ComponentModel.DataAnnotations.Required] public UV UV { get; set; } = new UV(); @@ -53,7 +48,6 @@ public Vertex(Vector3 @position, Vector3 @normal, Color @color, int @index, UV @ // during serialization. /// The triangles associated with this vertex. - [JsonPropertyName("Triangles")] [System.ComponentModel.DataAnnotations.Required] [JsonIgnore] public IList Triangles { get; set; } = new List(); diff --git a/Elements/src/GeometryReference.cs b/Elements/src/GeometryReference.cs index 08fb8f95b..058aeabc4 100644 --- a/Elements/src/GeometryReference.cs +++ b/Elements/src/GeometryReference.cs @@ -9,11 +9,9 @@ namespace Elements public partial class GeometryReference { /// The URL where the referenced geometry is hosted. - [JsonPropertyName("GeometryUrl")] public string GeometryUrl { get; set; } /// Any geometric data directly contained in this reference. - [JsonPropertyName("InternalGeometry")] public IList InternalGeometry { get; set; } /// diff --git a/Elements/src/Material.cs b/Elements/src/Material.cs index bac4ef50e..720f9536f 100644 --- a/Elements/src/Material.cs +++ b/Elements/src/Material.cs @@ -16,52 +16,41 @@ namespace Elements public class Material : Element { /// The material's color. - [JsonPropertyName("Color")] [System.ComponentModel.DataAnnotations.Required] public Color Color { get; set; } = new Color(); /// The specular factor between 0.0 and 1.0. - [JsonPropertyName("SpecularFactor")] [System.ComponentModel.DataAnnotations.Range(0.0D, 1.0D)] public double SpecularFactor { get; set; } = 0.1D; /// The glossiness factor between 0.0 and 1.0. - [JsonPropertyName("GlossinessFactor")] [System.ComponentModel.DataAnnotations.Range(0.0D, 1.0D)] public double GlossinessFactor { get; set; } = 0.1D; /// Is this material affected by lights? - [JsonPropertyName("Unlit")] public bool Unlit { get; set; } = false; /// A relative file path to an image file to be used as a texture. - [JsonPropertyName("Texture")] public string Texture { get; set; } /// Is this material to be rendered from both sides? - [JsonPropertyName("DoubleSided")] public bool DoubleSided { get; set; } = false; /// Should the texture be repeated? The RepeatTexture property determines whether textures are clamped in the [0,0]->[1,1] range or repeat continuously. - [JsonPropertyName("RepeatTexture")] public bool RepeatTexture { get; set; } = true; /// A relative path to a jpg or png image file to be used as a normal texture. - [JsonPropertyName("NormalTexture")] public string NormalTexture { get; set; } /// Should the texture colors be interpolated between pixels? If false, renders hard pixels in the texture rather than fading between adjacent pixels. - [JsonPropertyName("InterpolateTexture")] public bool InterpolateTexture { get; set; } = true; /// A relative path to a jpg or png image file to be used as an emissive texture. - [JsonPropertyName("EmissiveTexture")] public string EmissiveTexture { get; set; } /// /// The scale, between 0.0 and 1.0, of the emissive texture's components. /// - [JsonPropertyName("EmissiveFactor")] public double EmissiveFactor { get; set; } /// diff --git a/Elements/src/Model.cs b/Elements/src/Model.cs index 7b5a49e75..b171cc1d0 100644 --- a/Elements/src/Model.cs +++ b/Elements/src/Model.cs @@ -23,16 +23,13 @@ namespace Elements public class Model { /// The origin of the model. - [JsonPropertyName("Origin")] [Obsolete("Use Transform instead.")] public Position Origin { get; set; } /// The transform of the model. - [JsonPropertyName("Transform")] public Transform Transform { get; set; } /// A collection of Elements keyed by their identifiers. - [JsonPropertyName("Elements")] [System.ComponentModel.DataAnnotations.Required] public IDictionary Elements { get; set; } = new System.Collections.Generic.Dictionary(); diff --git a/Elements/src/Symbol.cs b/Elements/src/Symbol.cs index a4db6055a..71b8172b1 100644 --- a/Elements/src/Symbol.cs +++ b/Elements/src/Symbol.cs @@ -17,11 +17,9 @@ public class Symbol /// /// The geometry of the symbol. /// - [JsonPropertyName("Geometry")] public GeometryReference Geometry { get; set; } /// A named camera position for this representation, indicating the direction from which the camera is looking (a top view looks from top down, a north view looks from north to south.) - [JsonPropertyName("CameraPosition")] [JsonConverter(typeof(JsonStringEnumConverter))] public SymbolCameraPosition CameraPosition { get; set; } diff --git a/Elements/src/WallByProfile.cs b/Elements/src/WallByProfile.cs index 70ddd1747..d0734fbfc 100644 --- a/Elements/src/WallByProfile.cs +++ b/Elements/src/WallByProfile.cs @@ -13,18 +13,15 @@ namespace Elements public class WallByProfile : Wall { /// The overall thickness of the Wall - [JsonPropertyName("Thickness")] public double Thickness { get; set; } /// /// The perimeter of the Wall's elevation. It is assumed to be in the same Plane as the Centerline, /// and will often be projected to that Plane during internal operations. /// - [JsonPropertyName("Perimeter")] public Polygon Perimeter { get; set; } /// The Centerline of the wall - [JsonPropertyName("Centerline")] public Line Centerline { get; set; } /// diff --git a/Elements/test/Grid2dElement.cs b/Elements/test/Grid2dElement.cs index d8d5a5d46..bf690746f 100644 --- a/Elements/test/Grid2dElement.cs +++ b/Elements/test/Grid2dElement.cs @@ -7,7 +7,6 @@ namespace Elements public partial class Grid2dElement : Element { /// contains a grid - [JsonPropertyName("Grid")] public Grid2d Grid { get; set; } [JsonConstructor] diff --git a/Elements/test/MeshTests.cs b/Elements/test/MeshTests.cs index e50823214..50121bd47 100644 --- a/Elements/test/MeshTests.cs +++ b/Elements/test/MeshTests.cs @@ -60,7 +60,6 @@ public InputsWithMesh(Mesh @mesh) this.Mesh = @mesh; } - [JsonPropertyName("Mesh")] [JsonConverter(typeof(MeshConverter))] public Mesh Mesh { get; set; } } From b3d77927585ef03f6d63c2ab8a4610de540858d8 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sat, 30 Apr 2022 10:41:38 -0400 Subject: [PATCH 067/150] Fix wall by profile test. --- Elements/src/Wall.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Elements/src/Wall.cs b/Elements/src/Wall.cs index ac5e1816f..c01724564 100644 --- a/Elements/src/Wall.cs +++ b/Elements/src/Wall.cs @@ -29,6 +29,7 @@ public class Wall : GeometricElement, IHasOpenings /// /// A collection of openings in the wall. /// + [JsonConverter(typeof(ElementConverter>))] public List Openings { get; } = new List(); /// From 557e549ea77f8f29f09dffb646f5e3ad75bcc5fd Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sat, 30 Apr 2022 11:11:32 -0400 Subject: [PATCH 068/150] Support tuple serialization. --- Elements/src/Model.cs | 6 ++++-- Elements/test/ModelTest.cs | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Elements/src/Model.cs b/Elements/src/Model.cs index b171cc1d0..3464a98d6 100644 --- a/Elements/src/Model.cs +++ b/Elements/src/Model.cs @@ -213,7 +213,8 @@ public string ToJson(bool indent = false, bool gatherSubElements = true) var serializerOptions = new JsonSerializerOptions { - WriteIndented = indent + WriteIndented = indent, + IncludeFields = true // needed for tuple support }; serializerOptions.Converters.Add(new ElementConverterFactory()); serializerOptions.Converters.Add(new SolidConverter()); @@ -275,7 +276,8 @@ public static Model FromJson(string json) var options = new JsonSerializerOptions() { PropertyNameCaseInsensitive = true, - AllowTrailingCommas = true + AllowTrailingCommas = true, + IncludeFields = true // needed for tuples }; options.Converters.Add(new SolidConverter()); diff --git a/Elements/test/ModelTest.cs b/Elements/test/ModelTest.cs index 087cb2f02..2b382f4d9 100644 --- a/Elements/test/ModelTest.cs +++ b/Elements/test/ModelTest.cs @@ -68,7 +68,8 @@ public virtual void Dispose() if (this.GenerateJson) { var jsonPath = $"models/{this._name}.json"; - File.WriteAllText(jsonPath, this._model.ToJson()); + var json = this._model.ToJson(); + File.WriteAllText(jsonPath, json); var newModel = Model.FromJson(File.ReadAllText(jsonPath)); From 73e17b5c05fa5d317c8fbabe15104b14fda63d48 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sat, 30 Apr 2022 11:12:48 -0400 Subject: [PATCH 069/150] Fix model text tests and reenable json serialization. --- Elements/src/ModelText.cs | 3 +++ Elements/test/ModelTextTests.cs | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Elements/src/ModelText.cs b/Elements/src/ModelText.cs index df3a88281..e86cc09c9 100644 --- a/Elements/src/ModelText.cs +++ b/Elements/src/ModelText.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Reflection; +using System.Text.Json.Serialization; using Elements.Geometry; using SixLabors.Fonts; using SixLabors.ImageSharp; @@ -67,11 +68,13 @@ public class ModelText : MeshElement /// A collection of text data objects which specify the location, /// direction, content, and color of the text. /// + [JsonInclude] public IList<(Vector3 location, Vector3 facingDirection, Vector3 lineDirection, string text, Geometry.Color? color)> Texts { get; set; } /// /// The font size of the model text. /// + [JsonConverter(typeof(JsonStringEnumConverter))] public FontSize FontSize { get; set; } /// diff --git a/Elements/test/ModelTextTests.cs b/Elements/test/ModelTextTests.cs index 9659a0ab7..7ec5a877a 100644 --- a/Elements/test/ModelTextTests.cs +++ b/Elements/test/ModelTextTests.cs @@ -10,7 +10,6 @@ public class ModelTextTests : ModelTest public ModelTextTests() { this.GenerateIfc = false; - this.GenerateJson = false; } [Fact, Trait("Category", "Example")] From b8486431f8f5f927a71905ba46686f2deffdd55d Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sat, 30 Apr 2022 11:13:03 -0400 Subject: [PATCH 070/150] Fix gridline. --- Elements/src/GridLine.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Elements/src/GridLine.cs b/Elements/src/GridLine.cs index d250bdf59..023c11c78 100644 --- a/Elements/src/GridLine.cs +++ b/Elements/src/GridLine.cs @@ -1,7 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Text.Json.Serialization; using Elements.Geometry; +using Elements.Serialization.JSON; namespace Elements { @@ -36,21 +38,25 @@ public Polyline Geometry /// /// Curve that runs from the start of the gridline to its end. /// + [JsonConverter(typeof(ElementConverter))] public Curve Curve { get; set; } /// /// Radius of the gridline head. /// + [JsonInclude] public double Radius = 1; /// /// How far to extend the gridline from the beginning to the start of the circle. /// + [JsonInclude] public double ExtensionBeginning = 1; /// /// How far to extend the gridline past the end of the circle. /// + [JsonInclude] public double ExtensionEnd = 1; internal override Boolean TryToGraphicsBuffers(out List graphicsBuffers, out string id, out glTFLoader.Schema.MeshPrimitive.ModeEnum? mode) From 07fdd75f4fd490a099877bff163cbb8a04d9f0a3 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sat, 30 Apr 2022 11:17:36 -0400 Subject: [PATCH 071/150] Fix solid tests. --- Elements/test/SolidTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Elements/test/SolidTests.cs b/Elements/test/SolidTests.cs index 20dfded21..a27d9f130 100644 --- a/Elements/test/SolidTests.cs +++ b/Elements/test/SolidTests.cs @@ -276,7 +276,7 @@ public void ConstructedSolidProducesValidGlb() { IncludeFields = true }; - var allPolygons = JsonSerializer.Deserialize innerLoops)>>(File.ReadAllText("../../../models/Geometry/ExampleConstructedSolidPolygons.json")); + var allPolygons = JsonSerializer.Deserialize innerLoops)>>(File.ReadAllText("../../../models/Geometry/ExampleConstructedSolidPolygons.json"), options); var solid = new Solid(); foreach (var (outerLoop, innerLoops) in allPolygons) { From 72584cf0de54d2178534ec25cb3bd982434da394 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sat, 30 Apr 2022 11:26:47 -0400 Subject: [PATCH 072/150] Remove some debug statements. --- Elements/src/Model.cs | 3 --- Elements/src/Serialization/JSON/ElementReferenceResolver.cs | 3 --- 2 files changed, 6 deletions(-) diff --git a/Elements/src/Model.cs b/Elements/src/Model.cs index 3464a98d6..8ede0ce48 100644 --- a/Elements/src/Model.cs +++ b/Elements/src/Model.cs @@ -263,9 +263,6 @@ public static Model FromJson(string json) var sw = new Stopwatch(); sw.Start(); var typeCache = AppDomainTypeCache.BuildAppDomainTypeCache(out _); -#if DEBUG - Console.WriteLine($"{sw.ElapsedMilliseconds}ms for creating type cache."); -#endif Model model = null; using (var document = JsonDocument.Parse(json)) diff --git a/Elements/src/Serialization/JSON/ElementReferenceResolver.cs b/Elements/src/Serialization/JSON/ElementReferenceResolver.cs index 8200d523f..e0555003d 100644 --- a/Elements/src/Serialization/JSON/ElementReferenceResolver.cs +++ b/Elements/src/Serialization/JSON/ElementReferenceResolver.cs @@ -22,9 +22,6 @@ internal class ElementReferenceResolver : ReferenceResolver public ElementReferenceResolver(Dictionary typeCache, JsonElement documentElements) { -#if DEBUG - Console.WriteLine("Constructing a new reference resolver."); -#endif TypeCache = typeCache; DocumentElements = documentElements; } From 2aaa26fa3f352f861b45a0628b4f512458f6304e Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sat, 30 Apr 2022 11:27:01 -0400 Subject: [PATCH 073/150] Fix parametric profile tests. --- Elements/src/Geometry/Profiles/HSSProfile.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Elements/src/Geometry/Profiles/HSSProfile.cs b/Elements/src/Geometry/Profiles/HSSProfile.cs index 11a2f56e9..000e559e3 100644 --- a/Elements/src/Geometry/Profiles/HSSProfile.cs +++ b/Elements/src/Geometry/Profiles/HSSProfile.cs @@ -12,6 +12,9 @@ public class HSSProfile : ParametricProfile public double Ht; public double h; public double B; + + // Ignore to avoid serialization clash with 'B' + [JsonIgnore] public double b; public double tnom; public double tdes; From 948714c27fe1d35492414c64416a7995bf01ea7f Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sat, 30 Apr 2022 11:31:17 -0400 Subject: [PATCH 074/150] Use the discriminated converter. --- Elements/test/Grid1dTests.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Elements/test/Grid1dTests.cs b/Elements/test/Grid1dTests.cs index 3699f5a28..b864750ac 100644 --- a/Elements/test/Grid1dTests.cs +++ b/Elements/test/Grid1dTests.cs @@ -4,7 +4,6 @@ using Xunit; using Elements.Geometry; using System.Collections.Generic; -using System.Text.Json.Serialization; using System.Text.Json; namespace Elements.Tests @@ -162,7 +161,7 @@ public void Grid1dSerializes() grid.DivideByCount(4); grid[3].DivideByFixedLength(0.4); var json = JsonSerializer.Serialize(grid); - var deserialized = JsonSerializer.Deserialize(json); + var deserialized = Element.Deserialize(json); Assert.Equal(grid.GetCells().Count, deserialized.GetCells().Count); Assert.Equal(0, (grid.Curve as Polyline).Start.DistanceTo((deserialized.Curve as Polyline).Start)); } From 2b6fde96aaed6990f41b31204c15eb025fb8f55e Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sat, 30 Apr 2022 11:41:30 -0400 Subject: [PATCH 075/150] Include attribute no longer required. --- Elements/src/ModelText.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/Elements/src/ModelText.cs b/Elements/src/ModelText.cs index e86cc09c9..30b228043 100644 --- a/Elements/src/ModelText.cs +++ b/Elements/src/ModelText.cs @@ -68,7 +68,6 @@ public class ModelText : MeshElement /// A collection of text data objects which specify the location, /// direction, content, and color of the text. /// - [JsonInclude] public IList<(Vector3 location, Vector3 facingDirection, Vector3 lineDirection, string text, Geometry.Color? color)> Texts { get; set; } /// From 032b3bbe1b9715db4c502bf5d86bcf27f5501acf Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sat, 30 Apr 2022 11:41:47 -0400 Subject: [PATCH 076/150] Add field inclusion to element serialization support method. --- Elements/src/Element.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Elements/src/Element.cs b/Elements/src/Element.cs index d84162acf..c7de315dd 100644 --- a/Elements/src/Element.cs +++ b/Elements/src/Element.cs @@ -106,7 +106,8 @@ public static T Deserialize(string json) var options = new JsonSerializerOptions() { PropertyNameCaseInsensitive = true, - AllowTrailingCommas = true + AllowTrailingCommas = true, + IncludeFields = true }; var typeCache = AppDomainTypeCache.BuildAppDomainTypeCache(out _); var refHandler = new ElementReferenceHandler(typeCache, root); From 31d29e147f3d80f3b4796b2901207ad846bcfda6 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sat, 30 Apr 2022 14:02:33 -0400 Subject: [PATCH 077/150] Remove unneccessary JsonInclude. --- Elements/src/GridLine.cs | 3 --- .../src/Spatial/AdaptiveGrid/AdaptiveGrid.cs | 7 ++----- .../src/Spatial/CellComplex/CellComplex.cs | 18 ++++++------------ Elements/src/Spatial/CellComplex/Face.cs | 6 ++---- Elements/src/Spatial/Grid1d.cs | 3 --- Elements/src/Spatial/Grid2d.cs | 8 -------- 6 files changed, 10 insertions(+), 35 deletions(-) diff --git a/Elements/src/GridLine.cs b/Elements/src/GridLine.cs index 023c11c78..e97d6b36a 100644 --- a/Elements/src/GridLine.cs +++ b/Elements/src/GridLine.cs @@ -44,19 +44,16 @@ public Polyline Geometry /// /// Radius of the gridline head. /// - [JsonInclude] public double Radius = 1; /// /// How far to extend the gridline from the beginning to the start of the circle. /// - [JsonInclude] public double ExtensionBeginning = 1; /// /// How far to extend the gridline past the end of the circle. /// - [JsonInclude] public double ExtensionEnd = 1; internal override Boolean TryToGraphicsBuffers(out List graphicsBuffers, out string id, out glTFLoader.Schema.MeshPrimitive.ModeEnum? mode) diff --git a/Elements/src/Spatial/AdaptiveGrid/AdaptiveGrid.cs b/Elements/src/Spatial/AdaptiveGrid/AdaptiveGrid.cs index 645f44893..ad07feb33 100644 --- a/Elements/src/Spatial/AdaptiveGrid/AdaptiveGrid.cs +++ b/Elements/src/Spatial/AdaptiveGrid/AdaptiveGrid.cs @@ -2,7 +2,6 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text.Json.Serialization; namespace Elements.Spatial.AdaptiveGrid { @@ -26,14 +25,12 @@ public class AdaptiveGrid /// /// Vertices by ID. /// - [JsonInclude] - private Dictionary _vertices = new Dictionary(); + public Dictionary _vertices = new Dictionary(); /// /// Edges by ID. /// - [JsonInclude] - private Dictionary _edges = new Dictionary(); + public Dictionary _edges = new Dictionary(); // See Edge.GetHash for how edges are identified as unique. private Dictionary _edgesLookup = new Dictionary(); diff --git a/Elements/src/Spatial/CellComplex/CellComplex.cs b/Elements/src/Spatial/CellComplex/CellComplex.cs index 22ca94bdc..318bddaf5 100644 --- a/Elements/src/Spatial/CellComplex/CellComplex.cs +++ b/Elements/src/Spatial/CellComplex/CellComplex.cs @@ -35,38 +35,32 @@ public class CellComplex : Elements.Element /// /// Vertices by ID. /// - [JsonInclude] - private Dictionary _vertices = new Dictionary(); + public Dictionary _vertices = new Dictionary(); /// /// U or V directions by ID. /// - [JsonInclude] - private Dictionary _orientations = new Dictionary(); + public Dictionary _orientations = new Dictionary(); /// /// Edges by ID. /// - [JsonInclude] - private Dictionary _edges = new Dictionary(); + public Dictionary _edges = new Dictionary(); /// /// DirectedEdges by ID. /// - [JsonInclude] - private Dictionary _directedEdges = new Dictionary(); + public Dictionary _directedEdges = new Dictionary(); /// /// Faces by ID. /// - [JsonInclude] - private Dictionary _faces = new Dictionary(); + public Dictionary _faces = new Dictionary(); /// /// Cells by ID. /// - [JsonInclude] - private Dictionary _cells = new Dictionary(); + public Dictionary _cells = new Dictionary(); // Vertex lookup by x, y, z coordinate. private Dictionary>> _verticesLookup = new Dictionary>>(); diff --git a/Elements/src/Spatial/CellComplex/Face.cs b/Elements/src/Spatial/CellComplex/Face.cs index e01e4d866..7fe1d83b9 100644 --- a/Elements/src/Spatial/CellComplex/Face.cs +++ b/Elements/src/Spatial/CellComplex/Face.cs @@ -19,14 +19,12 @@ public class Face : ChildBase, Interfaces.IHasNeighbors /// ID of U orientation. /// - [JsonInclude] - private ulong? _orientationUId; + public ulong? _orientationUId; /// /// ID of V orientation. /// - [JsonInclude] - private ulong? _orientationVId; + public ulong? _orientationVId; /// /// Cells that reference this Face. diff --git a/Elements/src/Spatial/Grid1d.cs b/Elements/src/Spatial/Grid1d.cs index 1fdd3f7dd..a0cad7e51 100644 --- a/Elements/src/Spatial/Grid1d.cs +++ b/Elements/src/Spatial/Grid1d.cs @@ -43,7 +43,6 @@ public List Cells /// /// Numerical domain of this Grid /// - [JsonInclude] public Domain1d Domain { get; } /// @@ -89,7 +88,6 @@ public Curve Curve // we have to maintain an internal curve domain because subsequent subdivisions of a grid // based on a curve retain the entire curve; this domain allows us to map from the subdivided // domain back to the original curve. - [JsonInclude] [JsonPropertyName("CurveDomain")] public readonly Domain1d curveDomain; @@ -100,7 +98,6 @@ public Curve Curve // is useful in serialization so we only store the base curve once. private Grid1d topLevelParentGrid; - [JsonInclude] [JsonPropertyName("TopLevelParentCurve")] public Curve topLevelParentCurve { diff --git a/Elements/src/Spatial/Grid2d.cs b/Elements/src/Spatial/Grid2d.cs index ee7ddc59f..b2565971e 100644 --- a/Elements/src/Spatial/Grid2d.cs +++ b/Elements/src/Spatial/Grid2d.cs @@ -27,13 +27,11 @@ public class Grid2d /// /// The 1d Grid along the U dimension /// - [JsonInclude] public Grid1d U { get; private set; } /// /// The 1d grid along the V dimension /// - [JsonInclude] public Grid1d V { get; private set; } /// @@ -51,33 +49,27 @@ public string Type /// /// A transform from grid space to world space /// - [JsonInclude] [JsonPropertyName("FromGrid")] public Transform fromGrid = new Transform(); /// /// A transform from world space to grid space /// - [JsonInclude] [JsonPropertyName("ToGrid")] public Transform toGrid = new Transform(); - [JsonInclude] public Domain1d UDomainInternal = new Domain1d(0, 0); - [JsonInclude] public Domain1d VDomainInternal = new Domain1d(0, 0); /// /// Any boundary curves, transformed to grid space. /// - [JsonInclude] [JsonPropertyName("BoundariesInGridSpace")] public IList boundariesInGridSpace; private List> cells; - [JsonInclude] public List ModifiedChildCells => GetModifiedChildCells(); // for serialization purposes, we store only those cells that are not a natural consequence of the U and V 1d grids composing this grid. From 677fb8f86152e65e32436d82702319555b6091e4 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sun, 1 May 2022 20:19:49 -0400 Subject: [PATCH 078/150] Fix content element. --- Elements/src/ContentElement.cs | 60 ++++++++++++++++++++++++++++++---- 1 file changed, 53 insertions(+), 7 deletions(-) diff --git a/Elements/src/ContentElement.cs b/Elements/src/ContentElement.cs index 6db21412e..b6a23bc06 100644 --- a/Elements/src/ContentElement.cs +++ b/Elements/src/ContentElement.cs @@ -2,7 +2,6 @@ using Elements.Geometry; using Elements.Geometry.Solids; using System.Text.Json.Serialization; -using Elements.Serialization.JSON; using System.Text.Json; namespace Elements @@ -81,10 +80,34 @@ public ContentElement(string @gltfLocation, /// The guid of this element. /// The name of this element. /// The string json serialization of a dictionary of additional parameters. - public ContentElement(string @gltfLocation, BBox3 @boundingBox, double @gltfScaleToMeters, Vector3 @sourceDirection, IList symbols, Transform @transform, Material @material, Representation @representation, bool @isElementDefinition, System.Guid @id, string @name, string @additionalProperties) - : this(@gltfLocation, @boundingBox, @gltfScaleToMeters, @sourceDirection, symbols, @transform, @material, @representation, @isElementDefinition, @id, @name) + public ContentElement(string @gltfLocation, + BBox3 @boundingBox, + double @gltfScaleToMeters, + Vector3 @sourceDirection, + IList symbols, + Transform @transform, + Material @material, + Representation @representation, + bool @isElementDefinition, + System.Guid @id, + string @name, + string @additionalProperties) + : this(@gltfLocation, + @boundingBox, + @gltfScaleToMeters, + @sourceDirection, + symbols, + @transform, + @material, + @representation, + @isElementDefinition, + @id, + @name) { - this.AdditionalProperties = JsonSerializer.Deserialize>(@additionalProperties); + if (additionalProperties != null && additionalProperties != string.Empty) + { + this.AdditionalProperties = JsonSerializer.Deserialize>(@additionalProperties); + } } /// @@ -103,10 +126,33 @@ public ContentElement(string @gltfLocation, BBox3 @boundingBox, double @gltfScal /// The guid of this element. /// The name of this element. /// The string json serialization of a dictionary of additional parameters. - public ContentElement(string @gltfLocation, BBox3 @boundingBox, double @gltfScaleToMeters, Vector3 @sourceDirection, Transform @transform, Material @material, Representation @representation, bool @isElementDefinition, System.Guid @id, string @name, string @additionalProperties) - : this(@gltfLocation, @boundingBox, @gltfScaleToMeters, @sourceDirection, null, @transform, @material, @representation, @isElementDefinition, @id, @name) + public ContentElement(string @gltfLocation, + BBox3 @boundingBox, + double @gltfScaleToMeters, + Vector3 @sourceDirection, + Transform @transform, + Material @material, + Representation @representation, + bool @isElementDefinition, + System.Guid @id, + string @name, + string @additionalProperties) + : this(@gltfLocation, + @boundingBox, + @gltfScaleToMeters, + @sourceDirection, + null, + @transform, + @material, + @representation, + @isElementDefinition, + @id, + @name) { - this.AdditionalProperties = JsonSerializer.Deserialize>(@additionalProperties); + if (additionalProperties != null && additionalProperties != string.Empty) + { + this.AdditionalProperties = JsonSerializer.Deserialize>(@additionalProperties); + } } /// From 260ba9d5c36d860ee97ebb8767d2be06088e09ee Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sun, 1 May 2022 21:47:09 -0400 Subject: [PATCH 079/150] Fix network tests. --- .../Serialization/JSON/PropertySerializationExtensions.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs b/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs index 23cd244fd..c6f65a84b 100644 --- a/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs +++ b/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs @@ -56,10 +56,11 @@ public static void DeserializeElementProperties(Type derivedType, foreach (var elementProperty in elementProperties) { - var prop = root.GetProperty(elementProperty.Name); - if (prop.ValueKind == JsonValueKind.Null) + if (!root.TryGetProperty(elementProperty.Name, out var prop) || + prop.ValueKind == JsonValueKind.Null) { - // You'll get here when you've got a null reference to an element. + // You'll get here when you've got a null reference to an element, + // or you've got no element at all in the json. // Resolve to an empty id, causing the resolver to return null. elementReferenceResolver.ResolveReference(string.Empty); continue; From d1d1a2a5c33e13f2306eefa17ab38eea3e1496b9 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Mon, 2 May 2022 21:27:44 -0700 Subject: [PATCH 080/150] Don't use model converter and ignore nulls on serialize. --- Elements/src/Model.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Elements/src/Model.cs b/Elements/src/Model.cs index 8ede0ce48..f7d01bd6c 100644 --- a/Elements/src/Model.cs +++ b/Elements/src/Model.cs @@ -214,7 +214,8 @@ public string ToJson(bool indent = false, bool gatherSubElements = true) var serializerOptions = new JsonSerializerOptions { WriteIndented = indent, - IncludeFields = true // needed for tuple support + IncludeFields = true, // needed for tuple support + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull }; serializerOptions.Converters.Add(new ElementConverterFactory()); serializerOptions.Converters.Add(new SolidConverter()); @@ -286,7 +287,7 @@ public static Model FromJson(string json) // Use the model converter here so that we have a chance to // intercept the creation of elements when things go wrong. - options.Converters.Add(new ModelConverter()); + // options.Converters.Add(new ModelConverter()); model = JsonSerializer.Deserialize(json, options); From 5c0946e02bdd45b343853ae212bd067f62fb1552 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Tue, 3 May 2022 23:01:18 -0700 Subject: [PATCH 081/150] Fix ElementProxy tests. --- Elements/src/ElementProxy.cs | 7 +- .../Serialization/JSON/AppDomainTypeCache.cs | 8 +- .../Serialization/JSON/ElementConverter.cs | 88 +++++++++++++++---- .../JSON/PropertySerializationExtensions.cs | 9 +- Elements/test/ElementProxyTests.cs | 2 - 5 files changed, 85 insertions(+), 29 deletions(-) diff --git a/Elements/src/ElementProxy.cs b/Elements/src/ElementProxy.cs index 37020b108..b229db6d4 100644 --- a/Elements/src/ElementProxy.cs +++ b/Elements/src/ElementProxy.cs @@ -52,7 +52,6 @@ internal static ElementProxy GetProxy(T element, string dependencyName) wh /// public class ElementProxy : Element where T : Element { - [JsonIgnore] private T _element = null; /// @@ -82,18 +81,16 @@ public T Element /// /// JSON constructor only for deserializing other models. /// - /// [JsonConstructor] - internal ElementProxy(Guid elementId, string dependencyName, Guid id = default(Guid), string name = null) : base(id, name) + public ElementProxy(Guid elementId, string dependencyName, Guid id = default(Guid), string name = null) : base(id, name) { this.ElementId = elementId; this.Dependency = dependencyName; } /// - /// Create a new proxy within this function. Not intended to be used anywhere outside of ELementProxy.GetProxy(). + /// Create a new proxy within this function. Not intended to be used anywhere outside of ElementProxy.GetProxy(). /// - /// internal ElementProxy(T element, string dependencyName, Guid id = default(Guid), string name = null) : base(id, name) { this.ElementId = element.Id; diff --git a/Elements/src/Serialization/JSON/AppDomainTypeCache.cs b/Elements/src/Serialization/JSON/AppDomainTypeCache.cs index 6852387aa..cce811c10 100644 --- a/Elements/src/Serialization/JSON/AppDomainTypeCache.cs +++ b/Elements/src/Serialization/JSON/AppDomainTypeCache.cs @@ -48,7 +48,13 @@ internal static Dictionary BuildAppDomainTypeCache(out List + // Later, when we set the discriminator, we include the + // type argument like Elements.ProxyElement, and + // we do some string deconstruction to match the two and to + // extract the type arguments. + typeCache.Add(t.IsGenericType ? $"{t.FullName.Split('`').First()}<>" : t.FullName, t.IsGenericType ? t.GetGenericTypeDefinition() : t); } } catch (TypeLoadException) diff --git a/Elements/src/Serialization/JSON/ElementConverter.cs b/Elements/src/Serialization/JSON/ElementConverter.cs index 8cf2aa91c..036323d5b 100644 --- a/Elements/src/Serialization/JSON/ElementConverter.cs +++ b/Elements/src/Serialization/JSON/ElementConverter.cs @@ -100,42 +100,94 @@ public override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerial } else { - using (var doc = JsonDocument.ParseValue(ref reader)) { // Deserialize an element. var root = doc.RootElement; var discriminator = root.GetProperty("discriminator").GetString(); + Type derivedType; - if (!resolver.TypeCache.TryGetValue(discriminator, out var derivedType)) + // Handle discriminators like ElementProxy + if (discriminator.Contains("<")) { - // The type could not be found. See if it has the hallmarks - // of a geometric element and deserialize it as such if possible. - if (root.TryGetProperty("Representation", out _)) + // Strip the element type from the discriminator. + int start = discriminator.LastIndexOf("<") + 1; + int end = discriminator.IndexOf(">", start); + string result = discriminator.Remove(start, end - start); + if (!resolver.TypeCache.TryGetValue(result, out derivedType)) { - derivedType = typeof(GeometricElement); + if (root.TryGetProperty("Representation", out _)) + { + derivedType = typeof(GeometricElement); + } + else + { + return default; + } } - else + } + else + { + if (!resolver.TypeCache.TryGetValue(discriminator, out derivedType)) { - return default; + // The type could not be found. See if it has the hallmarks + // of a geometric element and deserialize it as such if possible. + if (root.TryGetProperty("Representation", out _)) + { + derivedType = typeof(GeometricElement); + } + else + { + return default; + } } } - // Use the type info to get all properties which are Element - // references, and deserialize those first. + if (derivedType.IsGenericType) + { + // Recover the type argument from the discriminator. + // TODO: Support multiple type arguments. + int start = discriminator.LastIndexOf("<") + 1; + int end = discriminator.IndexOf(">", start); + string elementType = discriminator.Substring(start, end - start); + if (!resolver.TypeCache.TryGetValue(elementType, out var genericType)) + { + throw new Exception($"The type {elementType} could not be found in the type cache. It can not be used as a generic type argument."); + } + var typeArgs = new[] { genericType }; + var genericElementType = derivedType.MakeGenericType(typeArgs); - // TODO: This *should* support serialization of elements in - // any order, removing the requirement to do any kind of recursive - // sub-element searching. We can remove that code from the model. - PropertySerializationExtensions.DeserializeElementProperties(derivedType, root, resolver, resolver.DocumentElements); + if (discriminator.Contains("Elements.ElementProxy")) + { + var id = root.GetProperty("Id").GetGuid(); + var name = root.GetProperty("Name").GetString(); + var elementId = root.GetProperty("elementId").GetGuid(); + var dependency = root.GetProperty("dependency").GetString(); + var genericElement = (T)Activator.CreateInstance(genericElementType, new object[] { elementId, dependency, id, name }); + + return genericElement; + } - T e = (T)root.Deserialize(derivedType, options); - if (typeof(Element).IsAssignableFrom(derivedType)) + throw new Exception("Generic element types other than ElementProxy are not currently supported."); + } + else { - resolver.AddReference(((Element)(object)e).Id.ToString(), e); + // Use the type info to get all properties which are Element + // references, and deserialize those first. + + // TODO: This *should* support serialization of elements in + // any order, removing the requirement to do any kind of recursive + // sub-element searching. We can remove that code from the model. + PropertySerializationExtensions.DeserializeElementProperties(derivedType, root, resolver, resolver.DocumentElements); + + T e = (T)root.Deserialize(derivedType, options); + if (typeof(Element).IsAssignableFrom(derivedType)) + { + resolver.AddReference(((Element)(object)e).Id.ToString(), e); + } + return e; } - return e; } } } diff --git a/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs b/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs index c6f65a84b..35099e93a 100644 --- a/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs +++ b/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs @@ -25,13 +25,16 @@ public static void WriteProperties(this object value, Utf8JsonWriter writer, Jso foreach (var pinfo in pinfos) { // Skip ignored properties - var attrib = pinfo.GetCustomAttribute(); - if (attrib != null) + var ignoreAttrib = pinfo.GetCustomAttribute(); + if (ignoreAttrib != null) { continue; } - writer.WritePropertyName(pinfo.Name); + // Honor the renaming of a property + var nameAttrib = pinfo.GetCustomAttribute(); + + writer.WritePropertyName(nameAttrib != null ? nameAttrib.Name : pinfo.Name); JsonSerializer.Serialize(writer, pinfo.GetValue(value), pinfo.PropertyType, options); } } diff --git a/Elements/test/ElementProxyTests.cs b/Elements/test/ElementProxyTests.cs index 7841210ba..ca164fcab 100644 --- a/Elements/test/ElementProxyTests.cs +++ b/Elements/test/ElementProxyTests.cs @@ -1,6 +1,4 @@ -using Elements.Spatial; using Xunit; -using System.Text.Json.Serialization; using Elements.Geometry; namespace Elements.Tests From 5ee367d9d513ebb0603963129310781fb9301f05 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sat, 7 May 2022 16:25:44 -0700 Subject: [PATCH 082/150] Add serializer options to all ToJson. --- Elements/src/Model.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Elements/src/Model.cs b/Elements/src/Model.cs index f7d01bd6c..024f54cad 100644 --- a/Elements/src/Model.cs +++ b/Elements/src/Model.cs @@ -233,7 +233,11 @@ public void ToJson(string path, bool gatherSubElements = true) using (FileStream s = File.Create(path)) { - var serializerOptions = new JsonSerializerOptions(); + var serializerOptions = new JsonSerializerOptions() + { + IncludeFields = true, // needed for tuple support + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + }; serializerOptions.Converters.Add(new ElementConverterFactory()); serializerOptions.Converters.Add(new SolidConverter()); JsonSerializer.Serialize(s, exportModel, serializerOptions); From fd2afe1a7b121ebc82890ef5c7ecc89dc35baed3 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sat, 7 May 2022 18:36:02 -0700 Subject: [PATCH 083/150] Support writing public fields. --- .../JSON/PropertySerializationExtensions.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs b/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs index 35099e93a..0ad7ba8dd 100644 --- a/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs +++ b/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs @@ -37,6 +37,16 @@ public static void WriteProperties(this object value, Utf8JsonWriter writer, Jso writer.WritePropertyName(nameAttrib != null ? nameAttrib.Name : pinfo.Name); JsonSerializer.Serialize(writer, pinfo.GetValue(value), pinfo.PropertyType, options); } + + // Support public fields. + var finfos = value.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance); + foreach (var finfo in finfos) + { + var nameAttrib = finfo.GetCustomAttribute(); + + writer.WritePropertyName(nameAttrib != null ? nameAttrib.Name : finfo.Name); + JsonSerializer.Serialize(writer, finfo.GetValue(value), finfo.FieldType, options); + } } public static void DeserializeElementProperties(Type derivedType, From 8ea5a0887df7d0b8eb7fb2e7a2754c6d52e84b54 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sat, 7 May 2022 18:36:12 -0700 Subject: [PATCH 084/150] Fix cell complex. --- Elements/src/Spatial/CellComplex/Cell.cs | 2 +- .../src/Spatial/CellComplex/CellComplex.cs | 131 ++++++++++-------- .../src/Spatial/CellComplex/DirectedEdge.cs | 2 +- Elements/src/Spatial/CellComplex/Edge.cs | 3 +- Elements/src/Spatial/CellComplex/Face.cs | 16 +-- .../src/Spatial/CellComplex/Orientation.cs | 14 +- Elements/src/Spatial/CellComplex/Vertex.cs | 9 +- .../src/Spatial/CellComplex/VertexBase.cs | 9 +- 8 files changed, 101 insertions(+), 85 deletions(-) diff --git a/Elements/src/Spatial/CellComplex/Cell.cs b/Elements/src/Spatial/CellComplex/Cell.cs index e55d9d2a2..1954f0b53 100644 --- a/Elements/src/Spatial/CellComplex/Cell.cs +++ b/Elements/src/Spatial/CellComplex/Cell.cs @@ -68,7 +68,7 @@ internal Cell(CellComplex cellComplex, ulong id, List faces, Face bottomFa /// Used for deserialization only! /// [JsonConstructor] - internal Cell(ulong id, List faceIds, ulong? bottomFaceId, ulong? topFaceId) : base(id, null) + public Cell(ulong id, List faceIds, ulong? bottomFaceId, ulong? topFaceId) : base(id, null) { this.FaceIds = faceIds; this.BottomFaceId = bottomFaceId; diff --git a/Elements/src/Spatial/CellComplex/CellComplex.cs b/Elements/src/Spatial/CellComplex/CellComplex.cs index 318bddaf5..b99d3da1f 100644 --- a/Elements/src/Spatial/CellComplex/CellComplex.cs +++ b/Elements/src/Spatial/CellComplex/CellComplex.cs @@ -12,7 +12,7 @@ namespace Elements.Spatial.CellComplex /// /// [!code-csharp[Main](../../Elements/test/CellComplexTests.cs?name=example)] /// - public class CellComplex : Elements.Element + public class CellComplex : Element { /// /// Tolerance for points being considered the same. @@ -35,32 +35,32 @@ public class CellComplex : Elements.Element /// /// Vertices by ID. /// - public Dictionary _vertices = new Dictionary(); + public Dictionary Vertices = new Dictionary(); /// /// U or V directions by ID. /// - public Dictionary _orientations = new Dictionary(); + public Dictionary Orientations = new Dictionary(); /// /// Edges by ID. /// - public Dictionary _edges = new Dictionary(); + public Dictionary Edges = new Dictionary(); /// /// DirectedEdges by ID. /// - public Dictionary _directedEdges = new Dictionary(); + public Dictionary DirectedEdges = new Dictionary(); /// /// Faces by ID. /// - public Dictionary _faces = new Dictionary(); + public Dictionary Faces = new Dictionary(); /// /// Cells by ID. /// - public Dictionary _cells = new Dictionary(); + public Dictionary Cells = new Dictionary(); // Vertex lookup by x, y, z coordinate. private Dictionary>> _verticesLookup = new Dictionary>>(); @@ -72,7 +72,7 @@ public class CellComplex : Elements.Element private Dictionary _edgesLookup = new Dictionary(); // Same as edgesLookup, with an addition level of dictionary for whether lesserVertexId is the start point or not - private Dictionary<(ulong, ulong), Dictionary> _directedEdgesLookup = new Dictionary<(ulong, ulong), Dictionary>(); + private Dictionary<(ulong, ulong), Dictionary> _directedEdgesLookup = new Dictionary<(ulong, ulong), Dictionary>(); // See Face.GetHash for how faces are identified as unique. private Dictionary _facesLookup = new Dictionary(); @@ -82,45 +82,56 @@ public class CellComplex : Elements.Element /// /// Optional ID: If blank, a new Guid will be created. /// Optional name of your CellComplex. - /// - public CellComplex(Guid id = default(Guid), string name = null) : base(id != default(Guid) ? id : Guid.NewGuid(), name) { } + public CellComplex(Guid id = default(Guid), + string name = null) : base(id != default(Guid) ? id : Guid.NewGuid(), + name) + { } + + // [JsonConstructor] + // public CellComplex( + // Dictionary vertices, + // Dictionary orientations, + // Dictionary edges, + // Dictionary directedEdges, + // Dictionary faces, + // Dictionary cells + // ) : this(Guid.NewGuid(), "Foo", vertices, orientations, edges, directedEdges, faces, cells) { } /// /// This constructor is intended for serialization and deserialization only. /// /// /// - /// - /// - /// - /// - /// - /// - /// + /// + /// + /// + /// + /// + /// [JsonConstructor] - internal CellComplex( + public CellComplex( Guid id, string name, - Dictionary _vertices, - Dictionary _orientations, - Dictionary _edges, - Dictionary _directedEdges, - Dictionary _faces, - Dictionary _cells + Dictionary vertices, + Dictionary orientations, + Dictionary edges, + Dictionary directedEdges, + Dictionary faces, + Dictionary cells ) : base(id, name) { - foreach (var vertex in _vertices.Values) + foreach (var vertex in vertices.Values) { var added = this.AddVertexOrOrientation(vertex.Value, vertex.Id); added.Name = vertex.Name; } - foreach (var orientation in _orientations.Values) + foreach (var orientation in orientations.Values) { this.AddVertexOrOrientation(orientation.Value, orientation.Id); } - foreach (var edge in _edges.Values) + foreach (var edge in edges.Values) { if (!this.AddEdge(new List() { edge.StartVertexId, edge.EndVertexId }, edge.Id, out var addedEdge)) { @@ -128,7 +139,7 @@ Dictionary _cells } } - foreach (var directedEdge in _directedEdges.Values) + foreach (var directedEdge in directedEdges.Values) { var edge = this.GetEdge(directedEdge.EdgeId); if (!this.AddDirectedEdge(edge, edge.StartVertexId == directedEdge.StartVertexId, directedEdge.Id, out var addedDirectedEdge)) @@ -137,7 +148,7 @@ Dictionary _cells } } - foreach (var face in _faces.Values) + foreach (var face in faces.Values) { face.CellComplex = this; // CellComplex not included on deserialization, add it back for processing even though we will discard this and create a new one var polygon = face.GetGeometry(); @@ -148,7 +159,7 @@ Dictionary _cells } } - foreach (var cell in _cells.Values) + foreach (var cell in cells.Values) { var cellFaces = cell.FaceIds.Select(fId => this.GetFace(fId)).ToList(); var bottomFace = this.GetFace(cell.BottomFaceId); @@ -249,16 +260,16 @@ private DirectedEdge AddDirectedEdge(Line line) /// /// /// Whether the cell was successfully added. Will be false if cellId already exists. - private Boolean AddCell(ulong cellId, List faces, Face bottomFace, Face topFace, out Cell cell) + private bool AddCell(ulong cellId, List faces, Face bottomFace, Face topFace, out Cell cell) { - if (this._cells.ContainsKey(cellId)) + if (this.Cells.ContainsKey(cellId)) { cell = null; return false; } cell = new Cell(this, cellId, faces, bottomFace, topFace); - this._cells.Add(cell.Id, cell); + this.Cells.Add(cell.Id, cell); foreach (var face in faces) { @@ -278,7 +289,7 @@ private Boolean AddCell(ulong cellId, List faces, Face bottomFace, Face to /// /// /// Whether the face was successfully added. Will be false if idIfNew already exists - private Boolean AddFace(Polygon polygon, ulong idIfNew, Orientation u, Orientation v, out Face face) + private bool AddFace(Polygon polygon, ulong idIfNew, Orientation u, Orientation v, out Face face) { var lines = polygon.Segments(); var directedEdges = new List(); @@ -294,7 +305,7 @@ private Boolean AddFace(Polygon polygon, ulong idIfNew, Orientation u, Orientati face = new Face(this, idIfNew, directedEdges, u, v); faceId = face.Id; this._facesLookup.Add(hash, faceId); - this._faces.Add(faceId, face); + this.Faces.Add(faceId, face); foreach (var directedEdge in directedEdges) { @@ -306,7 +317,7 @@ private Boolean AddFace(Polygon polygon, ulong idIfNew, Orientation u, Orientati } else { - this._faces.TryGetValue(faceId, out face); + this.Faces.TryGetValue(faceId, out face); return false; } } @@ -319,7 +330,7 @@ private Boolean AddFace(Polygon polygon, ulong idIfNew, Orientation u, Orientati /// /// /// Whether the directedEdge was successfully added. Will be false if idIfNew already exists. - private Boolean AddDirectedEdge(Edge edge, Boolean edgeTupleIsInOrder, ulong idIfNew, out DirectedEdge directedEdge) + private bool AddDirectedEdge(Edge edge, bool edgeTupleIsInOrder, ulong idIfNew, out DirectedEdge directedEdge) { var edgeTuple = (edge.StartVertexId, edge.EndVertexId); @@ -335,7 +346,7 @@ private Boolean AddDirectedEdge(Edge edge, Boolean edgeTupleIsInOrder, ulong idI directedEdgeId = directedEdge.Id; directedEdgeDict.Add(edgeTupleIsInOrder, directedEdgeId); - this._directedEdges.Add(directedEdgeId, directedEdge); + this.DirectedEdges.Add(directedEdgeId, directedEdge); edge.DirectedEdges.Add(directedEdge); @@ -345,7 +356,7 @@ private Boolean AddDirectedEdge(Edge edge, Boolean edgeTupleIsInOrder, ulong idI } else { - this._directedEdges.TryGetValue(directedEdgeId, out directedEdge); + this.DirectedEdges.TryGetValue(directedEdgeId, out directedEdge); return false; } @@ -358,7 +369,7 @@ private Boolean AddDirectedEdge(Edge edge, Boolean edgeTupleIsInOrder, ulong idI /// /// /// Whether the edge was successfully added. Will be false if idIfNew already exists. - private Boolean AddEdge(List vertexIds, ulong idIfNew, out Edge edge) + private bool AddEdge(List vertexIds, ulong idIfNew, out Edge edge) { var hash = Edge.GetHash(vertexIds); @@ -368,7 +379,7 @@ private Boolean AddEdge(List vertexIds, ulong idIfNew, out Edge edge) edgeId = edge.Id; this._edgesLookup[hash] = edgeId; - this._edges.Add(edgeId, edge); + this.Edges.Add(edgeId, edge); this.GetVertex(edge.StartVertexId).Edges.Add(edge); this.GetVertex(edge.EndVertexId).Edges.Add(edge); @@ -379,7 +390,7 @@ private Boolean AddEdge(List vertexIds, ulong idIfNew, out Edge edge) } else { - this._edges.TryGetValue(edgeId, out edge); + this.Edges.TryGetValue(edgeId, out edge); return false; } } @@ -395,7 +406,7 @@ private Dictionary GetVertexOrOrientationDictionary() where T : Ver { throw new Exception("Unsupported type provided, expected Vertex or Orientation"); } - return typeof(T) == typeof(Orientation) ? this._orientations as Dictionary : this._vertices as Dictionary; + return typeof(T) == typeof(Orientation) ? this.Orientations as Dictionary : this.Vertices as Dictionary; } /// @@ -456,7 +467,7 @@ private T AddVertexOrOrientation(Vector3 point, ulong id) where T : VertexBas /// ID of created or existing item. /// Vertex or Orientation. /// Whether the item was successfully added. Will be false if idIfNew already exists. - private Boolean AddVertexOrOrientation(Vector3 point, ulong idIfNew, out ulong id) where T : VertexBase + private bool AddVertexOrOrientation(Vector3 point, ulong idIfNew, out ulong id) where T : VertexBase { var lookups = this.GetVertexOrOrientationLookup(); var dict = this.GetVertexOrOrientationDictionary(); @@ -490,7 +501,7 @@ private Boolean AddVertexOrOrientation(Vector3 point, ulong idIfNew, out ulon /// public Vertex GetVertex(ulong vertexId) { - this._vertices.TryGetValue(vertexId, out var vertex); + this.Vertices.TryGetValue(vertexId, out var vertex); return vertex; } @@ -500,7 +511,7 @@ public Vertex GetVertex(ulong vertexId) /// public List GetVertices() { - return this._vertices.Values.ToList(); + return this.Vertices.Values.ToList(); } /// @@ -514,7 +525,7 @@ public Orientation GetOrientation(ulong? orientationId) { return null; } - this._orientations.TryGetValue((ulong)orientationId, out var orientation); + this.Orientations.TryGetValue((ulong)orientationId, out var orientation); return orientation; } @@ -524,7 +535,7 @@ public Orientation GetOrientation(ulong? orientationId) /// internal List GetOrientations() { - return this._orientations.Values.ToList(); + return this.Orientations.Values.ToList(); } /// @@ -534,7 +545,7 @@ internal List GetOrientations() /// public Edge GetEdge(ulong edgeId) { - this._edges.TryGetValue(edgeId, out var edge); + this.Edges.TryGetValue(edgeId, out var edge); return edge; } @@ -544,7 +555,7 @@ public Edge GetEdge(ulong edgeId) /// public List GetEdges() { - return this._edges.Values.ToList(); + return this.Edges.Values.ToList(); } /// @@ -558,7 +569,7 @@ public Face GetFace(ulong? faceId) { return null; } - this._faces.TryGetValue((ulong)faceId, out var face); + this.Faces.TryGetValue((ulong)faceId, out var face); return face; } @@ -568,7 +579,7 @@ public Face GetFace(ulong? faceId) /// public List GetFaces() { - return this._faces.Values.ToList(); + return this.Faces.Values.ToList(); } /// @@ -578,7 +589,7 @@ public List GetFaces() /// public Cell GetCell(ulong cellId) { - this._cells.TryGetValue(cellId, out var cell); + this.Cells.TryGetValue(cellId, out var cell); return cell; } @@ -588,7 +599,7 @@ public Cell GetCell(ulong cellId) /// public List GetCells() { - return this._cells.Values.ToList(); + return this.Cells.Values.ToList(); } /// @@ -638,7 +649,7 @@ public Cell GetClosestCell(Vector3 point) /// internal DirectedEdge GetDirectedEdge(ulong directedEdgeId) { - this._directedEdges.TryGetValue(directedEdgeId, out var directedEdge); + this.DirectedEdges.TryGetValue(directedEdgeId, out var directedEdge); return directedEdge; } @@ -648,7 +659,7 @@ internal DirectedEdge GetDirectedEdge(ulong directedEdgeId) /// internal List GetDirectedEdges() { - return this._directedEdges.Values.ToList(); + return this.DirectedEdges.Values.ToList(); } /// @@ -676,7 +687,7 @@ public List GetVerticesMatchingXY(double x, double y, Nullable f /// The ID of the Vertex, if a match is found. /// Amount of tolerance in the search against each component of the coordinate. /// - public Boolean VertexExists(Vector3 point, out ulong id, Nullable fuzzyFactor = null) + public bool VertexExists(Vector3 point, out ulong id, Nullable fuzzyFactor = null) { return ValueExists(this._verticesLookup, point, out id, fuzzyFactor); } @@ -707,7 +718,7 @@ private static HashSet AddValue(Dictionary> dict, u /// Whether to create the dictionary address if it didn't previously exist. /// Amount of tolerance in the search against each component of the coordinate. /// The created or existing last level of values. This can be null if the dictionary address didn't exist previously, and we chose not to add it. - private static Dictionary GetAddressParent(Dictionary>> dict, Vector3 point, Boolean addAddressIfNonExistent = false, Nullable fuzzyFactor = null) + private static Dictionary GetAddressParent(Dictionary>> dict, Vector3 point, bool addAddressIfNonExistent = false, Nullable fuzzyFactor = null) { if (!TryGetValue>>(dict, point.X, out var yzDict, fuzzyFactor)) { @@ -746,7 +757,7 @@ private static Dictionary GetAddressParent(DictionaryID of the found vertex or orientation, if found. /// Amount of tolerance in the search against each component of the coordinate. /// - private static Boolean ValueExists(Dictionary>> dict, Vector3 point, out ulong id, Nullable fuzzyFactor = null) + private static bool ValueExists(Dictionary>> dict, Vector3 point, out ulong id, Nullable fuzzyFactor = null) { var zDict = GetAddressParent(dict, point, fuzzyFactor: fuzzyFactor); if (zDict == null) @@ -766,7 +777,7 @@ private static Boolean ValueExists(DictionaryAmount of tolerance in the search for the key. /// The type of the dictionary values. /// Whether a match was found. - private static Boolean TryGetValue(Dictionary dict, double key, out T value, Nullable fuzzyFactor = null) + private static bool TryGetValue(Dictionary dict, double key, out T value, Nullable fuzzyFactor = null) { if (dict.TryGetValue(key, out value)) { diff --git a/Elements/src/Spatial/CellComplex/DirectedEdge.cs b/Elements/src/Spatial/CellComplex/DirectedEdge.cs index e5a25795e..802dbadea 100644 --- a/Elements/src/Spatial/CellComplex/DirectedEdge.cs +++ b/Elements/src/Spatial/CellComplex/DirectedEdge.cs @@ -54,7 +54,7 @@ internal DirectedEdge(CellComplex cellComplex, ulong id, Edge edge, bool edgeOrd /// Used for deserialization only! /// [JsonConstructor] - internal DirectedEdge(ulong id, ulong edgeId, ulong startVertexId, ulong endVertexId) : base(id, null) + public DirectedEdge(ulong id, ulong edgeId, ulong startVertexId, ulong endVertexId) : base(id, null) { this.EdgeId = edgeId; this.StartVertexId = startVertexId; diff --git a/Elements/src/Spatial/CellComplex/Edge.cs b/Elements/src/Spatial/CellComplex/Edge.cs index 9546f3065..68615843e 100644 --- a/Elements/src/Spatial/CellComplex/Edge.cs +++ b/Elements/src/Spatial/CellComplex/Edge.cs @@ -39,9 +39,8 @@ internal Edge(CellComplex cellComplex, ulong id, ulong vertexId1, ulong vertexId /// /// /// - /// [JsonConstructor] - internal Edge(ulong id, ulong startVertexId, ulong endVertexId) : base(id, null) + public Edge(ulong id, ulong startVertexId, ulong endVertexId) : base(id, null) { this.SetVerticesFromIds(startVertexId, endVertexId); } diff --git a/Elements/src/Spatial/CellComplex/Face.cs b/Elements/src/Spatial/CellComplex/Face.cs index 7fe1d83b9..3d7c885d8 100644 --- a/Elements/src/Spatial/CellComplex/Face.cs +++ b/Elements/src/Spatial/CellComplex/Face.cs @@ -19,12 +19,12 @@ public class Face : ChildBase, Interfaces.IHasNeighbors /// ID of U orientation. /// - public ulong? _orientationUId; + public ulong? OrientationUId; /// /// ID of V orientation. /// - public ulong? _orientationVId; + public ulong? OrientationVId; /// /// Cells that reference this Face. @@ -46,11 +46,11 @@ internal Face(CellComplex cellComplex, ulong id, List directedEdge this.DirectedEdgeIds = directedEdges.Select(ds => ds.Id).ToList(); if (u != null) { - this._orientationUId = u.Id; + this.OrientationUId = u.Id; } if (v != null) { - this._orientationVId = v.Id; + this.OrientationVId = v.Id; } } @@ -58,12 +58,12 @@ internal Face(CellComplex cellComplex, ulong id, List directedEdge /// Used for deserialization only! /// [JsonConstructor] - internal Face(ulong id, List directedEdgeIds, ulong? _orientationUId = null, ulong? _orientationVId = null) : base(id, null) + public Face(ulong id, List directedEdgeIds, ulong? orientationUId, ulong? orientationVId) : base(id, null) { this.Id = id; this.DirectedEdgeIds = directedEdgeIds; - this._orientationUId = _orientationUId; - this._orientationVId = _orientationVId; + this.OrientationUId = orientationUId; + this.OrientationVId = orientationVId; } /// @@ -190,7 +190,7 @@ public Cell GetClosestCell(Vector3 point) /// public (Orientation U, Orientation V) GetOrientation() { - return (U: this.CellComplex.GetOrientation(this._orientationUId), V: this.CellComplex.GetOrientation(this._orientationVId)); + return (U: this.CellComplex.GetOrientation(this.OrientationUId), V: this.CellComplex.GetOrientation(this.OrientationVId)); } /// diff --git a/Elements/src/Spatial/CellComplex/Orientation.cs b/Elements/src/Spatial/CellComplex/Orientation.cs index da235e192..fc01fc55a 100644 --- a/Elements/src/Spatial/CellComplex/Orientation.cs +++ b/Elements/src/Spatial/CellComplex/Orientation.cs @@ -1,3 +1,4 @@ +using System.Text.Json.Serialization; using Elements.Geometry; namespace Elements.Spatial.CellComplex @@ -7,6 +8,16 @@ namespace Elements.Spatial.CellComplex /// public class Orientation : VertexBase { + /// + /// Create an orientation. + /// + /// + /// + /// + /// + [JsonConstructor] + public Orientation(ulong id, Vector3 value, string name = null) : base(id, value, name) { } + /// /// Represents a unique orientation direction within a CellComplex. /// Is not intended to be created or modified outside of the CellComplex class code. @@ -15,8 +26,7 @@ public class Orientation : VertexBase /// /// The orientation direction /// Optional name - /// - internal Orientation(CellComplex cellComplex, ulong id, Vector3 orientation, string name = null) : base(cellComplex, id, orientation, name) { } + public Orientation(CellComplex cellComplex, ulong id, Vector3 orientation, string name = null) : base(cellComplex, id, orientation, name) { } /// /// Do not use this method: it just throws an exception. diff --git a/Elements/src/Spatial/CellComplex/Vertex.cs b/Elements/src/Spatial/CellComplex/Vertex.cs index e806ae130..4b0f2edc9 100644 --- a/Elements/src/Spatial/CellComplex/Vertex.cs +++ b/Elements/src/Spatial/CellComplex/Vertex.cs @@ -22,19 +22,18 @@ public class Vertex : VertexBase /// /// CellComplex that this belongs to /// - /// Location of the vertex + /// Location of the vertex /// Optional name - internal Vertex(CellComplex cellComplex, ulong id, Vector3 point, string name = null) : base(cellComplex, id, point, name) { } + internal Vertex(CellComplex cellComplex, ulong id, Vector3 value, string name = null) : base(cellComplex, id, value, name) { } /// /// For deserialization only! /// /// - /// + /// /// - /// [JsonConstructor] - internal Vertex(ulong id, Vector3 point, string name = null) : base(id, point, name) { } + public Vertex(ulong id, Vector3 value, string name = null) : base(id, value, name) { } /// /// Get associated Edges. diff --git a/Elements/src/Spatial/CellComplex/VertexBase.cs b/Elements/src/Spatial/CellComplex/VertexBase.cs index 407db34f2..639cc9ced 100644 --- a/Elements/src/Spatial/CellComplex/VertexBase.cs +++ b/Elements/src/Spatial/CellComplex/VertexBase.cs @@ -36,20 +36,18 @@ internal VertexBase(CellComplex cellComplex, ulong id, Vector3 point, string nam /// For deserialization only! /// /// - /// + /// /// - /// [JsonConstructor] - internal VertexBase(ulong id, Vector3 point, string name = null) : base(id, null) + public VertexBase(ulong id, Vector3 value, string name = null) : base(id, null) { - this.Value = point; + this.Value = value; this.Name = name; } /// /// Get the Vector3 that represents this Vertex or Orientation. /// - /// public override Vector3 GetGeometry() { return this.Value; @@ -59,7 +57,6 @@ public override Vector3 GetGeometry() /// Get the shortest distance from a point to the geometry representing this vertex. /// /// - /// public override double DistanceTo(Vector3 point) { return point.DistanceTo(this.GetGeometry()); From 65bfd3ca21accc153eb353ddb5d1fb40c2f3e6eb Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sat, 7 May 2022 18:40:31 -0700 Subject: [PATCH 085/150] Rename public fields in adaptive grid for consistency. --- .../src/Spatial/AdaptiveGrid/AdaptiveGrid.cs | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Elements/src/Spatial/AdaptiveGrid/AdaptiveGrid.cs b/Elements/src/Spatial/AdaptiveGrid/AdaptiveGrid.cs index ad07feb33..c717c06de 100644 --- a/Elements/src/Spatial/AdaptiveGrid/AdaptiveGrid.cs +++ b/Elements/src/Spatial/AdaptiveGrid/AdaptiveGrid.cs @@ -25,12 +25,12 @@ public class AdaptiveGrid /// /// Vertices by ID. /// - public Dictionary _vertices = new Dictionary(); + public Dictionary Vertices = new Dictionary(); /// /// Edges by ID. /// - public Dictionary _edges = new Dictionary(); + public Dictionary Edges = new Dictionary(); // See Edge.GetHash for how edges are identified as unique. private Dictionary _edgesLookup = new Dictionary(); @@ -258,7 +258,7 @@ public void SubtractBox(BBox3 box) /// public Vertex GetVertex(ulong vertexId) { - this._vertices.TryGetValue(vertexId, out var vertex); + this.Vertices.TryGetValue(vertexId, out var vertex); return vertex; } @@ -268,7 +268,7 @@ public Vertex GetVertex(ulong vertexId) /// public List GetVertices() { - return this._vertices.Values.ToList(); + return this.Vertices.Values.ToList(); } /// @@ -277,7 +277,7 @@ public List GetVertices() /// public List GetEdges() { - return this._edges.Values.ToList(); + return this.Edges.Values.ToList(); } /// @@ -463,7 +463,7 @@ public Edge AddEdge(ulong vertexId1, ulong vertexId2) edgeId = edge.Id; this._edgesLookup[hash] = edgeId; - this._edges.Add(edgeId, edge); + this.Edges.Add(edgeId, edge); this.GetVertex(edge.StartId).Edges.Add(edge); this.GetVertex(edge.EndId).Edges.Add(edge); @@ -473,7 +473,7 @@ public Edge AddEdge(ulong vertexId1, ulong vertexId2) } else { - this._edges.TryGetValue(edgeId, out var edge); + this.Edges.TryGetValue(edgeId, out var edge); return edge; } } @@ -508,7 +508,7 @@ public void RemoveEdge(Edge edge) { var hash = Edge.GetHash(new List { edge.StartId, edge.EndId }); this._edgesLookup.Remove(hash); - this._edges.Remove(edge.Id); + this.Edges.Remove(edge.Id); var startVertexEdges = this.GetVertex(edge.StartId).Edges; startVertexEdges.Remove(edge); @@ -542,7 +542,7 @@ private Vertex AddVertex(Vector3 point) id = this._vertexId; var vertex = new Vertex(id, point); zDict[point.Z] = id; - _vertices[id] = vertex; + Vertices[id] = vertex; this._vertexId++; } @@ -551,8 +551,8 @@ private Vertex AddVertex(Vector3 point) private void DeleteVertex(ulong id) { - var vertex = _vertices[id]; - _vertices.Remove(id); + var vertex = Vertices[id]; + Vertices.Remove(id); var zDict = GetAddressParent(_verticesLookup, vertex.Point, tolerance: Tolerance); if (zDict == null) { From d6f3183bdd0ba4fb4b6c06c3c2969b4cdc5bc571 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sat, 7 May 2022 19:55:34 -0700 Subject: [PATCH 086/150] Fix dxf tests. --- Elements/src/GeometryReference.cs | 1 - Elements/src/Serialization/MappingConfiguration.cs | 5 +++++ Elements/src/Symbol.cs | 2 ++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Elements/src/GeometryReference.cs b/Elements/src/GeometryReference.cs index 058aeabc4..c1494c113 100644 --- a/Elements/src/GeometryReference.cs +++ b/Elements/src/GeometryReference.cs @@ -5,7 +5,6 @@ namespace Elements { /// A reference to a model, hosted at a URL. - [JsonConverter(typeof(ElementConverter))] public partial class GeometryReference { /// The URL where the referenced geometry is hosted. diff --git a/Elements/src/Serialization/MappingConfiguration.cs b/Elements/src/Serialization/MappingConfiguration.cs index 5a25af398..21803cab5 100644 --- a/Elements/src/Serialization/MappingConfiguration.cs +++ b/Elements/src/Serialization/MappingConfiguration.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Text.Json.Serialization; using Elements.Geometry; namespace Elements.Serialization @@ -16,6 +17,7 @@ public MappingConfiguration() { this.Layers = new List(); } + /// /// The layer configurations for this model. /// @@ -33,6 +35,7 @@ public class Layer public Layer() { } + /// /// The name of the layer. /// @@ -47,6 +50,8 @@ public Layer() /// /// How items on this layer should have their colors determined. /// + [JsonConverter(typeof(JsonStringEnumConverter))] + public ElementColorSetting ElementColorSetting { get; set; } = ElementColorSetting.ByLayer; /// diff --git a/Elements/src/Symbol.cs b/Elements/src/Symbol.cs index 71b8172b1..7794c6f42 100644 --- a/Elements/src/Symbol.cs +++ b/Elements/src/Symbol.cs @@ -6,6 +6,7 @@ using System.Threading.Tasks; using System.Text.Json.Serialization; using System.Text.Json; +using Elements.Serialization.JSON; namespace Elements { @@ -17,6 +18,7 @@ public class Symbol /// /// The geometry of the symbol. /// + [JsonConverter(typeof(ElementConverter))] public GeometryReference Geometry { get; set; } /// A named camera position for this representation, indicating the direction from which the camera is looking (a top view looks from top down, a north view looks from north to south.) From 0492621f89d33b7aa8897e66aa596fc7f088aaa7 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sun, 8 May 2022 06:36:02 -0700 Subject: [PATCH 087/150] Cleanup. --- Elements/src/GeometryReference.cs | 1 - Elements/src/Serialization/JSON/ElementConverter.cs | 6 ++++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Elements/src/GeometryReference.cs b/Elements/src/GeometryReference.cs index c1494c113..111c9d9cd 100644 --- a/Elements/src/GeometryReference.cs +++ b/Elements/src/GeometryReference.cs @@ -1,6 +1,5 @@ using System.Collections.Generic; using System.Text.Json.Serialization; -using Elements.Serialization.JSON; namespace Elements { diff --git a/Elements/src/Serialization/JSON/ElementConverter.cs b/Elements/src/Serialization/JSON/ElementConverter.cs index 036323d5b..1e599f117 100644 --- a/Elements/src/Serialization/JSON/ElementConverter.cs +++ b/Elements/src/Serialization/JSON/ElementConverter.cs @@ -181,6 +181,12 @@ public override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerial // sub-element searching. We can remove that code from the model. PropertySerializationExtensions.DeserializeElementProperties(derivedType, root, resolver, resolver.DocumentElements); + // if (root.TryGetProperty("Id", out var id)) + // { + // var strId = id.GetString(); + // Console.WriteLine($"Deserializing element {strId}"); + // } + T e = (T)root.Deserialize(derivedType, options); if (typeof(Element).IsAssignableFrom(derivedType)) { From d466b3bf982d3d28e7c43963be3be3b952aec3d4 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Mon, 9 May 2022 19:03:04 -0700 Subject: [PATCH 088/150] Make sure we use an enum converter. --- Elements.CodeGeneration/src/Templates/Class.liquid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Elements.CodeGeneration/src/Templates/Class.liquid b/Elements.CodeGeneration/src/Templates/Class.liquid index 5824400eb..e8da5126e 100644 --- a/Elements.CodeGeneration/src/Templates/Class.liquid +++ b/Elements.CodeGeneration/src/Templates/Class.liquid @@ -50,7 +50,7 @@ [System.ComponentModel.DataAnnotations.RegularExpression(@"{{ property.RegularExpressionValue }}")] {% endif -%} {% if property.IsStringEnum -%} - [JsonConverter(typeof(Converters.StringEnumConverter))] + [JsonConverter(typeof(JsonStringEnumConverter))] {% endif -%} {% if property.IsDate and UseDateFormatConverter -%} [JsonConverter(typeof(DateFormatConverter))] From 93220974edd63a41b4806072fc0d8d021cc26e55 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Mon, 9 May 2022 19:03:23 -0700 Subject: [PATCH 089/150] Remove last element reference to Newtonsoft. --- Elements/src/Elements.csproj | 1 - 1 file changed, 1 deletion(-) diff --git a/Elements/src/Elements.csproj b/Elements/src/Elements.csproj index 2b986c40b..483006d93 100644 --- a/Elements/src/Elements.csproj +++ b/Elements/src/Elements.csproj @@ -17,7 +17,6 @@ - From a94e8f0d49b61f767a9f997ced9f15a900aaeefc Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Mon, 9 May 2022 19:04:28 -0700 Subject: [PATCH 090/150] Refactor the element converter and factory into separate files. --- .../Serialization/JSON/ElementConverter.cs | 244 +++++++++++++++--- .../JSON/ElementConverterFactory.cs | 37 +++ .../JSON/PropertySerializationExtensions.cs | 206 --------------- 3 files changed, 246 insertions(+), 241 deletions(-) create mode 100644 Elements/src/Serialization/JSON/ElementConverterFactory.cs delete mode 100644 Elements/src/Serialization/JSON/PropertySerializationExtensions.cs diff --git a/Elements/src/Serialization/JSON/ElementConverter.cs b/Elements/src/Serialization/JSON/ElementConverter.cs index 1e599f117..e0026177e 100644 --- a/Elements/src/Serialization/JSON/ElementConverter.cs +++ b/Elements/src/Serialization/JSON/ElementConverter.cs @@ -1,42 +1,16 @@ using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; using System.Text.Json; using System.Text.Json.Serialization; namespace Elements.Serialization.JSON { - internal class ElementConverterFactory : JsonConverterFactory - { - private readonly bool _elementwiseSerialization; - - /// - /// Should the elements be serialized completely? If this option is false, - /// elements will be serialized to ids. - /// - /// - public ElementConverterFactory(bool elementwiseSerialization = false) - { - _elementwiseSerialization = elementwiseSerialization; - } - - public override bool CanConvert(Type typeToConvert) - { - return typeof(Element).IsAssignableFrom(typeToConvert); - } - - public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options) - { - var elementConverter = typeof(ElementConverter<>); - var typeArgs = new[] { typeToConvert }; - var converterType = elementConverter.MakeGenericType(typeArgs); - var converter = Activator.CreateInstance(converterType) as JsonConverter; - var pi = converterType.GetProperty("ElementwiseSerialization"); - pi.SetValue(converter, _elementwiseSerialization); - return converter; - } - } - /// - /// Convert elements, lists of elements and dictionaries of elements. + /// Convert elements, lists of elements, and dictionaries of elements, + /// and elements with generic type parameters. + /// /// /// internal class ElementConverter : JsonConverter @@ -60,7 +34,7 @@ public override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerial } else { - if (PropertySerializationExtensions.IsAcceptedCollectionType(typeToConvert, out var collectionType)) + if (IsAcceptedCollectionType(typeToConvert, out var collectionType)) { var elements = Activator.CreateInstance(typeToConvert); var mi = typeToConvert.GetMethod("Add"); @@ -179,8 +153,15 @@ public override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerial // TODO: This *should* support serialization of elements in // any order, removing the requirement to do any kind of recursive // sub-element searching. We can remove that code from the model. - PropertySerializationExtensions.DeserializeElementProperties(derivedType, root, resolver, resolver.DocumentElements); + DeserializeElementProperties(derivedType, root, resolver, resolver.DocumentElements); + // Use this for debugging. If you can't figure out + // where serialization is going bezerk, it'll print + // the element ids as they serialize. This is useful + // when things like stack overflows happen, to identify + // the last element entered before the overflow. Then you + // can go and look at that element in the JSON and + // try to understand what's happening. // if (root.TryGetProperty("Id", out var id)) // { // var strId = id.GetString(); @@ -209,9 +190,202 @@ public override void Write(Utf8JsonWriter writer, T value, JsonSerializerOptions else { writer.WriteStartObject(); - value.WriteProperties(writer, options); + WriteProperties(value, writer, options); writer.WriteEndObject(); } } + + public void WriteProperties(object value, Utf8JsonWriter writer, JsonSerializerOptions options) + { + // Inject the discriminator into the serialized JSON. + writer.WriteString("discriminator", GetDiscriminatorName(value)); + + var pinfos = value.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance); + foreach (var pinfo in pinfos) + { + // Skip ignored properties + var ignoreAttrib = pinfo.GetCustomAttribute(); + if (ignoreAttrib != null) + { + continue; + } + + // Honor the renaming of a property + var nameAttrib = pinfo.GetCustomAttribute(); + + writer.WritePropertyName(nameAttrib != null ? nameAttrib.Name : pinfo.Name); + JsonSerializer.Serialize(writer, pinfo.GetValue(value), pinfo.PropertyType, options); + } + + // Support public fields. + var finfos = value.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance); + foreach (var finfo in finfos) + { + var nameAttrib = finfo.GetCustomAttribute(); + + writer.WritePropertyName(nameAttrib != null ? nameAttrib.Name : finfo.Name); + JsonSerializer.Serialize(writer, finfo.GetValue(value), finfo.FieldType, options); + } + } + + private void DeserializeElementProperties(Type derivedType, + JsonElement root, + ReferenceResolver resolver, + JsonElement documentElements) + { + var elementReferenceResolver = resolver as ElementReferenceResolver; + + var elementProperties = derivedType.GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(p => + { + // Properties which are elements. + if (typeof(Element).IsAssignableFrom(p.PropertyType)) + { + return true; + }; + + return IsAcceptedCollectionType(p.PropertyType, out _); + }); + + foreach (var elementProperty in elementProperties) + { + if (!root.TryGetProperty(elementProperty.Name, out var prop) || + prop.ValueKind == JsonValueKind.Null) + { + // You'll get here when you've got a null reference to an element, + // or you've got no element at all in the json. + // Resolve to an empty id, causing the resolver to return null. + elementReferenceResolver.ResolveReference(string.Empty); + continue; + } + else if (prop.ValueKind == JsonValueKind.Array) + { + foreach (var value in prop.EnumerateArray()) + { + if (value.TryGetGuid(out var referenceId)) + { + if (documentElements.TryGetProperty(referenceId.ToString(), out var foundElement)) + { + if (foundElement.TryGetProperty("discriminator", out var discriminatorProp)) + { + if (elementReferenceResolver.TypeCache.TryGetValue(discriminatorProp.GetString(), out var discriminatorValue)) + { + HandleReferenceId(value, referenceId, resolver, documentElements, discriminatorValue); + } + } + } + } + else + { + // The array element is not an element. + // Just deserialize it. + } + } + continue; + } + else if (prop.ValueKind == JsonValueKind.Object) + { + foreach (var innerProp in prop.EnumerateObject()) + { + if (innerProp.Value.TryGetGuid(out var referenceId)) + { + if (documentElements.TryGetProperty(referenceId.ToString(), out var foundElement)) + { + if (foundElement.TryGetProperty("discriminator", out var discriminatorProp)) + { + if (elementReferenceResolver.TypeCache.TryGetValue(discriminatorProp.GetString(), out var discriminatorValue)) + { + HandleReferenceId(innerProp.Value, referenceId, resolver, documentElements, discriminatorValue); + } + } + } + } + } + continue; + } + + if (prop.TryGetGuid(out var referencedId)) + { + HandleReferenceId(prop, referencedId, resolver, documentElements, elementProperty.PropertyType); + } + } + } + + private bool IsAcceptedCollectionType(Type propertyType, out CollectionType collectionType) + { + if (propertyType.IsGenericType) + { + var def = propertyType.GetGenericTypeDefinition(); + var args = propertyType.GetGenericArguments(); + + // Properties which are List + if (def == typeof(List<>)) + { + if (typeof(Element).IsAssignableFrom(args[0])) + { + collectionType = CollectionType.List; + return true; + } + } + // Properties which are Dictionary or Dictionary + else if (def == typeof(Dictionary<,>)) + { + if ((args[0] == typeof(Guid) || args[0] == typeof(string)) && typeof(Element).IsAssignableFrom(args[1])) + { + collectionType = CollectionType.Dictionary; + return true; + } + } + } + collectionType = CollectionType.None; + return false; + } + + private void HandleReferenceId(JsonElement elementToDeserialize, + Guid referencedId, + ReferenceResolver resolver, + JsonElement documentElements, + Type propertyType) + { + if (resolver.ResolveReference(referencedId.ToString()) != null) + { + return; + } + + if (documentElements.TryGetProperty(referencedId.ToString(), out var propertyBody)) + { + if (propertyBody.TryGetProperty("discriminator", out _)) + { + var referencedElement = (Element)elementToDeserialize.Deserialize(propertyType); + resolver.AddReference(referencedId.ToString(), referencedElement); + } + } + else + { + // The reference cannot be found. It's either not + // a direct reference, as in the case of a cross-model + // reference, or it's just broken. + resolver.AddReference(referencedId.ToString(), null); + } + } + + private string GetDiscriminatorName(object value) + { + var t = value.GetType(); + if (t.IsGenericType) + { + return $"{t.FullName.Split('`').First()}<{string.Join(",", t.GenericTypeArguments.Select(arg => arg.FullName))}>"; + } + else + { + return t.FullName.Split('`').First(); + } + } + } + + internal enum CollectionType + { + None, + List, + Dictionary } } \ No newline at end of file diff --git a/Elements/src/Serialization/JSON/ElementConverterFactory.cs b/Elements/src/Serialization/JSON/ElementConverterFactory.cs new file mode 100644 index 000000000..a1aceb15e --- /dev/null +++ b/Elements/src/Serialization/JSON/ElementConverterFactory.cs @@ -0,0 +1,37 @@ +using System; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace Elements.Serialization.JSON +{ + internal class ElementConverterFactory : JsonConverterFactory + { + private readonly bool _elementwiseSerialization; + + /// + /// Should the elements be serialized completely? If this option is false, + /// elements will be serialized to ids. + /// + /// + public ElementConverterFactory(bool elementwiseSerialization = false) + { + _elementwiseSerialization = elementwiseSerialization; + } + + public override bool CanConvert(Type typeToConvert) + { + return typeof(Element).IsAssignableFrom(typeToConvert); + } + + public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options) + { + var elementConverter = typeof(ElementConverter<>); + var typeArgs = new[] { typeToConvert }; + var converterType = elementConverter.MakeGenericType(typeArgs); + var converter = Activator.CreateInstance(converterType) as JsonConverter; + var pi = converterType.GetProperty("ElementwiseSerialization"); + pi.SetValue(converter, _elementwiseSerialization); + return converter; + } + } +} \ No newline at end of file diff --git a/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs b/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs deleted file mode 100644 index 0ad7ba8dd..000000000 --- a/Elements/src/Serialization/JSON/PropertySerializationExtensions.cs +++ /dev/null @@ -1,206 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace Elements.Serialization.JSON -{ - internal enum CollectionType - { - None, - List, - Dictionary - } - - internal static class PropertySerializationExtensions - { - public static void WriteProperties(this object value, Utf8JsonWriter writer, JsonSerializerOptions options) - { - // Inject the discriminator into the serialized JSON. - writer.WriteString("discriminator", value.GetDiscriminatorName()); - - var pinfos = value.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance); - foreach (var pinfo in pinfos) - { - // Skip ignored properties - var ignoreAttrib = pinfo.GetCustomAttribute(); - if (ignoreAttrib != null) - { - continue; - } - - // Honor the renaming of a property - var nameAttrib = pinfo.GetCustomAttribute(); - - writer.WritePropertyName(nameAttrib != null ? nameAttrib.Name : pinfo.Name); - JsonSerializer.Serialize(writer, pinfo.GetValue(value), pinfo.PropertyType, options); - } - - // Support public fields. - var finfos = value.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance); - foreach (var finfo in finfos) - { - var nameAttrib = finfo.GetCustomAttribute(); - - writer.WritePropertyName(nameAttrib != null ? nameAttrib.Name : finfo.Name); - JsonSerializer.Serialize(writer, finfo.GetValue(value), finfo.FieldType, options); - } - } - - public static void DeserializeElementProperties(Type derivedType, - JsonElement root, - ReferenceResolver resolver, - JsonElement documentElements) - { - var elementReferenceResolver = resolver as ElementReferenceResolver; - - var elementProperties = derivedType.GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(p => - { - // Properties which are elements. - if (typeof(Element).IsAssignableFrom(p.PropertyType)) - { - return true; - }; - - return IsAcceptedCollectionType(p.PropertyType, out _); - }); - - foreach (var elementProperty in elementProperties) - { - if (!root.TryGetProperty(elementProperty.Name, out var prop) || - prop.ValueKind == JsonValueKind.Null) - { - // You'll get here when you've got a null reference to an element, - // or you've got no element at all in the json. - // Resolve to an empty id, causing the resolver to return null. - elementReferenceResolver.ResolveReference(string.Empty); - continue; - } - else if (prop.ValueKind == JsonValueKind.Array) - { - foreach (var value in prop.EnumerateArray()) - { - if (value.TryGetGuid(out var referenceId)) - { - if (documentElements.TryGetProperty(referenceId.ToString(), out var foundElement)) - { - if (foundElement.TryGetProperty("discriminator", out var discriminatorProp)) - { - if (elementReferenceResolver.TypeCache.TryGetValue(discriminatorProp.GetString(), out var discriminatorValue)) - { - HandleReferenceId(value, referenceId, resolver, documentElements, discriminatorValue); - } - } - } - } - else - { - // The array element is not an element. - // Just deserialize it. - } - } - continue; - } - else if (prop.ValueKind == JsonValueKind.Object) - { - foreach (var innerProp in prop.EnumerateObject()) - { - if (innerProp.Value.TryGetGuid(out var referenceId)) - { - if (documentElements.TryGetProperty(referenceId.ToString(), out var foundElement)) - { - if (foundElement.TryGetProperty("discriminator", out var discriminatorProp)) - { - if (elementReferenceResolver.TypeCache.TryGetValue(discriminatorProp.GetString(), out var discriminatorValue)) - { - HandleReferenceId(innerProp.Value, referenceId, resolver, documentElements, discriminatorValue); - } - } - } - } - } - continue; - } - - if (prop.TryGetGuid(out var referencedId)) - { - HandleReferenceId(prop, referencedId, resolver, documentElements, elementProperty.PropertyType); - } - } - } - - - internal static bool IsAcceptedCollectionType(Type propertyType, out CollectionType collectionType) - { - if (propertyType.IsGenericType) - { - var def = propertyType.GetGenericTypeDefinition(); - var args = propertyType.GetGenericArguments(); - - // Properties which are List - if (def == typeof(List<>)) - { - if (typeof(Element).IsAssignableFrom(args[0])) - { - collectionType = CollectionType.List; - return true; - } - } - // Properties which are Dictionary or Dictionary - else if (def == typeof(Dictionary<,>)) - { - if ((args[0] == typeof(Guid) || args[0] == typeof(string)) && typeof(Element).IsAssignableFrom(args[1])) - { - collectionType = CollectionType.Dictionary; - return true; - } - } - } - collectionType = CollectionType.None; - return false; - } - - private static void HandleReferenceId(JsonElement elementToDeserialize, - Guid referencedId, - ReferenceResolver resolver, - JsonElement documentElements, - Type propertyType) - { - if (resolver.ResolveReference(referencedId.ToString()) != null) - { - return; - } - - if (documentElements.TryGetProperty(referencedId.ToString(), out var propertyBody)) - { - if (propertyBody.TryGetProperty("discriminator", out _)) - { - var referencedElement = (Element)elementToDeserialize.Deserialize(propertyType); - resolver.AddReference(referencedId.ToString(), referencedElement); - } - } - else - { - // The reference cannot be found. It's either not - // a direct reference, as in the case of a cross-model - // reference, or it's just broken. - resolver.AddReference(referencedId.ToString(), null); - } - } - - private static string GetDiscriminatorName(this object value) - { - var t = value.GetType(); - if (t.IsGenericType) - { - return $"{t.FullName.Split('`').First()}<{string.Join(",", t.GenericTypeArguments.Select(arg => arg.FullName))}>"; - } - else - { - return t.FullName.Split('`').First(); - } - } - } -} \ No newline at end of file From 351b8ff5f9efb5b1f132856397514fdea94333be Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Mon, 9 May 2022 19:04:49 -0700 Subject: [PATCH 091/150] Cleanup null elements, fixing last test. --- Elements/src/Model.cs | 10 ++++++++++ Elements/test/ModelTests.cs | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Elements/src/Model.cs b/Elements/src/Model.cs index 024f54cad..462a2a70a 100644 --- a/Elements/src/Model.cs +++ b/Elements/src/Model.cs @@ -291,6 +291,9 @@ public static Model FromJson(string json) // Use the model converter here so that we have a chance to // intercept the creation of elements when things go wrong. + // Using the model converter adds 100ms because it has to + // call deserialize for each element and trap if the element + // is null and report an error. // options.Converters.Add(new ModelConverter()); model = JsonSerializer.Deserialize(json, options); @@ -300,6 +303,13 @@ public static Model FromJson(string json) refHandler.Reset(typeCache, elementsElement); } + // Remove null elements that are the result of the deserializer + // not being able to handle an element. + foreach (var nullElement in model.Elements.Where(e => e.Value == null).ToList()) + { + model.Elements.Remove(nullElement); + } + return model; } diff --git a/Elements/test/ModelTests.cs b/Elements/test/ModelTests.cs index d92c952f8..575226ced 100644 --- a/Elements/test/ModelTests.cs +++ b/Elements/test/ModelTests.cs @@ -69,7 +69,7 @@ public void HasOriginAfterSerialization() [Fact] public void SkipsUnknownTypesDuringDeserialization() { - // We've changed an Elements.Beam to Elements.Foo + // We've put in an Elements.Baz with nothing but a discriminator. var modelStr = "{\"Transform\":{\"Matrix\":{\"Components\":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0]}},\"Elements\":{\"c6d1dc68-f800-47c1-9190-745b525ad569\":{\"discriminator\":\"Elements.Baz\"}, \"37f161d6-a892-4588-ad65-457b04b97236\":{\"discriminator\":\"Elements.Geometry.Profiles.WideFlangeProfile\",\"d\":1.1176,\"tw\":0.025908,\"bf\":0.4064,\"tf\":0.044958,\"Perimeter\":{\"discriminator\":\"Elements.Geometry.Polygon\",\"Vertices\":[{\"X\":-0.2032,\"Y\":0.5588,\"Z\":0.0},{\"X\":-0.2032,\"Y\":0.51384199999999991,\"Z\":0.0},{\"X\":-0.012954,\"Y\":0.51384199999999991,\"Z\":0.0},{\"X\":-0.012954,\"Y\":-0.51384199999999991,\"Z\":0.0},{\"X\":-0.2032,\"Y\":-0.51384199999999991,\"Z\":0.0},{\"X\":-0.2032,\"Y\":-0.5588,\"Z\":0.0},{\"X\":0.2032,\"Y\":-0.5588,\"Z\":0.0},{\"X\":0.2032,\"Y\":-0.51384199999999991,\"Z\":0.0},{\"X\":0.012954,\"Y\":-0.51384199999999991,\"Z\":0.0},{\"X\":0.012954,\"Y\":0.51384199999999991,\"Z\":0.0},{\"X\":0.2032,\"Y\":0.51384199999999991,\"Z\":0.0},{\"X\":0.2032,\"Y\":0.5588,\"Z\":0.0}]},\"Voids\":null,\"Id\":\"37f161d6-a892-4588-ad65-457b04b97236\",\"Name\":\"W44x335\"},\"6b77d69a-204e-40f9-bc1f-ed84683e64c6\":{\"discriminator\":\"Elements.Material\",\"Color\":{\"Red\":0.60000002384185791,\"Green\":0.5,\"Blue\":0.5,\"Alpha\":1.0},\"SpecularFactor\":0.0,\"GlossinessFactor\":0.0,\"Id\":\"6b77d69a-204e-40f9-bc1f-ed84683e64c6\",\"Name\":\"steel\"},\"fd35bd2c-0108-47df-8e6d-42cc43e4eed0\":{\"discriminator\":\"Elements.Foo\",\"Curve\":{\"discriminator\":\"Elements.Geometry.Arc\",\"Center\":{\"X\":0.0,\"Y\":0.0,\"Z\":0.0},\"Radius\":2.0,\"StartAngle\":0.0,\"EndAngle\":90.0},\"StartSetback\":0.25,\"EndSetback\":0.25,\"Profile\":\"37f161d6-a892-4588-ad65-457b04b97236\",\"Transform\":{\"Matrix\":{\"Components\":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0]}},\"Material\":\"6b77d69a-204e-40f9-bc1f-ed84683e64c6\",\"Representation\":{\"SolidOperations\":[{\"discriminator\":\"Elements.Geometry.Solids.Sweep\",\"Profile\":\"37f161d6-a892-4588-ad65-457b04b97236\",\"Curve\":{\"discriminator\":\"Elements.Geometry.Arc\",\"Center\":{\"X\":0.0,\"Y\":0.0,\"Z\":0.0},\"Radius\":2.0,\"StartAngle\":0.0,\"EndAngle\":90.0},\"StartSetback\":0.25,\"EndSetback\":0.25,\"Rotation\":0.0,\"IsVoid\":false}]},\"Id\":\"fd35bd2c-0108-47df-8e6d-42cc43e4eed0\",\"Name\":null}}}"; var model = Model.FromJson(modelStr); From 0565e4775c61cb9364771d233b39452e525ff48e Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Wed, 11 May 2022 18:52:50 -0700 Subject: [PATCH 092/150] Use a slider in the test app. --- Elements.Wasm/ElementsAPI.cs | 48 ++++++++++++++-------------- Elements.Wasm/wwwroot/index.html | 12 ++++--- Elements.Wasm/wwwroot/js/Elements.js | 4 +-- 3 files changed, 33 insertions(+), 31 deletions(-) diff --git a/Elements.Wasm/ElementsAPI.cs b/Elements.Wasm/ElementsAPI.cs index 650cc2bc0..f603bcb0f 100644 --- a/Elements.Wasm/ElementsAPI.cs +++ b/Elements.Wasm/ElementsAPI.cs @@ -27,7 +27,22 @@ public static Task ModelToGlbBase64(string json) } [JSInvokable] - public static Task Test() + public static Task ModelToGlbBytes(string json) + { + Validator.DisableValidationOnConstruction = true; + + var sw = new Stopwatch(); + sw.Start(); + var model = Model.FromJson(json); + Console.WriteLine($"{sw.ElapsedMilliseconds}ms for creating the model from json."); + sw.Restart(); + var result = Task.FromResult(model.ToGlTF()); + Console.WriteLine($"{sw.ElapsedMilliseconds}ms for creating the glb from json."); + return result; + } + + [JSInvokable] + public static Task Test(int value) { Validator.DisableValidationOnConstruction = true; @@ -39,7 +54,7 @@ public static Task Test() var r = new Random(); var size = 10; var profile = new Profile(Polygon.L(0.1, 0.1, 0.05)); - for (var i = 0; i < 100; i++) + for (var i = 0; i < value; i++) { var start = new Vector3(r.NextDouble() * size, r.NextDouble() * size, r.NextDouble() * size); var end = new Vector3(r.NextDouble() * size, r.NextDouble() * size, r.NextDouble() * size); @@ -52,15 +67,15 @@ public static Task Test() sb.AppendLine($"{sw.ElapsedMilliseconds}ms for creating test beams."); sw.Restart(); - var json = model.ToJson(); - sb.AppendLine($"{sw.ElapsedMilliseconds}ms for serializing model."); - sw.Restart(); + // var json = model.ToJson(); + // sb.AppendLine($"{sw.ElapsedMilliseconds}ms for serializing model."); + // sw.Restart(); - var newModel = Model.FromJson(json); - sb.AppendLine($"{sw.ElapsedMilliseconds}ms for deserializing model."); - sw.Restart(); + // var newModel = Model.FromJson(json); + // sb.AppendLine($"{sw.ElapsedMilliseconds}ms for deserializing model."); + // sw.Restart(); - var result = newModel.ToGlTF(); + var result = model.ToGlTF(); sb.AppendLine($"{sw.ElapsedMilliseconds}ms for creating the glb."); return Task.FromResult(new TestResult() { @@ -74,19 +89,4 @@ public class TestResult public byte[]? Glb { get; set; } public string? Results { get; set; } } - - [JSInvokable] - public static Task ModelToGlbBytes(string json) - { - Validator.DisableValidationOnConstruction = true; - - var sw = new Stopwatch(); - sw.Start(); - var model = Model.FromJson(json); - Console.WriteLine($"{sw.ElapsedMilliseconds}ms for creating the model from json."); - sw.Restart(); - var result = Task.FromResult(model.ToGlTF()); - Console.WriteLine($"{sw.ElapsedMilliseconds}ms for creating the glb from json."); - return result; - } } diff --git a/Elements.Wasm/wwwroot/index.html b/Elements.Wasm/wwwroot/index.html index 5c964f8c1..4c069e8fe 100644 --- a/Elements.Wasm/wwwroot/index.html +++ b/Elements.Wasm/wwwroot/index.html @@ -56,8 +56,8 @@ document.getElementById("result").innerHTML = ""; }; - function runTest() { - elements.test().then((result) => { + function runTest(value) { + elements.test(value).then((result) => { document.getElementById("result").innerHTML = result.results model.loadModel(result.glb) }); @@ -65,7 +65,7 @@ window.model = { reset: () => { reset(); }, - runTest: () => { runTest(); }, + runTest: (value) => { runTest(value); }, loadModel: (glb) => { loadModel(glb) }, }; @@ -96,8 +96,10 @@ animate(); - + +
diff --git a/Elements.Wasm/wwwroot/js/Elements.js b/Elements.Wasm/wwwroot/js/Elements.js index 988568f8c..a93f9d828 100644 --- a/Elements.Wasm/wwwroot/js/Elements.js +++ b/Elements.Wasm/wwwroot/js/Elements.js @@ -11,8 +11,8 @@ class Elements { return DotNet.invokeMethodAsync('Elements.Wasm', 'ModelToGlbBytes', json) } - async test() { - return DotNet.invokeMethodAsync('Elements.Wasm', 'Test') + async test(value) { + return DotNet.invokeMethodAsync('Elements.Wasm', 'Test', value) } } From 02d4cea5e1d87c02dfb9e7481cdf3c671488ce27 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Fri, 13 May 2022 21:42:30 -0700 Subject: [PATCH 093/150] Use the right converter. --- Elements.CodeGeneration/src/Templates/Class.liquid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Elements.CodeGeneration/src/Templates/Class.liquid b/Elements.CodeGeneration/src/Templates/Class.liquid index e8da5126e..82fdfe95a 100644 --- a/Elements.CodeGeneration/src/Templates/Class.liquid +++ b/Elements.CodeGeneration/src/Templates/Class.liquid @@ -2,7 +2,7 @@ /// {{ Description | csharpdocs }} {% endif -%} {% if HasDiscriminator -%} -[JsonConverter(typeof(Elements.Serialization.JSON.JsonInheritanceConverter), "{{ Discriminator }}")] +[JsonConverter(typeof(ElementConverter<{{ClassName}}>))] {% endif -%} [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "{{ ToolchainVersion }}")] {% if InheritsExceptionSchema -%} From 9db1f48f41089f3156d8d49dc4e78ed5d7d626c4 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Tue, 17 May 2022 10:24:28 -0700 Subject: [PATCH 094/150] Make elements loadable from sub directory. --- Elements.Wasm/.gitignore | 1 + Elements.Wasm/Elements.Wasm.csproj | 2 + Elements.Wasm/README.md | 7 +- Elements.Wasm/deploy.sh | 19 + Elements.Wasm/wwwroot/elements.js | 37 + Elements.Wasm/wwwroot/index.html | 6 +- Elements.Wasm/wwwroot/js/Elements.js | 19 - Elements.Wasm/wwwroot/js/GLTFLoader.js | 3186 -- Elements.Wasm/wwwroot/js/three.js | 49160 ----------------------- 9 files changed, 62 insertions(+), 52375 deletions(-) create mode 100644 Elements.Wasm/.gitignore create mode 100755 Elements.Wasm/deploy.sh create mode 100644 Elements.Wasm/wwwroot/elements.js delete mode 100644 Elements.Wasm/wwwroot/js/Elements.js delete mode 100644 Elements.Wasm/wwwroot/js/GLTFLoader.js delete mode 100644 Elements.Wasm/wwwroot/js/three.js diff --git a/Elements.Wasm/.gitignore b/Elements.Wasm/.gitignore new file mode 100644 index 000000000..3c6742f8d --- /dev/null +++ b/Elements.Wasm/.gitignore @@ -0,0 +1 @@ +deploy \ No newline at end of file diff --git a/Elements.Wasm/Elements.Wasm.csproj b/Elements.Wasm/Elements.Wasm.csproj index 6a0fcb715..2c7565b3b 100644 --- a/Elements.Wasm/Elements.Wasm.csproj +++ b/Elements.Wasm/Elements.Wasm.csproj @@ -6,6 +6,8 @@ enable en true + + false diff --git a/Elements.Wasm/README.md b/Elements.Wasm/README.md index 61ecbbbc3..5c65d3a80 100644 --- a/Elements.Wasm/README.md +++ b/Elements.Wasm/README.md @@ -2,13 +2,8 @@ This is a minimal web assembly project. ### Run -`dotnet watch run` - -### Publish ``` -dotnet publish -c release -cd bin/release/net6.0/publish/wwwroot -python3 -m http.server +./deploy.sh ``` ### Files diff --git a/Elements.Wasm/deploy.sh b/Elements.Wasm/deploy.sh new file mode 100755 index 000000000..3f3df8492 --- /dev/null +++ b/Elements.Wasm/deploy.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +echo 'Building the app.' +dotnet build -c Release + +echo 'Echo creating deploy directory.' +rm -r deploy +mkdir deploy +mkdir deploy/elements +mkdir deploy/elements/_framework + +echo 'Copying assets.' +rsync -av --exclude=*.gz --exclude=*.br ./bin/Release/net6.0/wwwroot/_framework deploy/elements +cp ./wwwroot/elements.js deploy/elements/elements.js +cp ./wwwroot/index.html deploy/index.html + +echo 'Running the test application.' +cd deploy +python3 -m http.server \ No newline at end of file diff --git a/Elements.Wasm/wwwroot/elements.js b/Elements.Wasm/wwwroot/elements.js new file mode 100644 index 000000000..cc8a5a9f5 --- /dev/null +++ b/Elements.Wasm/wwwroot/elements.js @@ -0,0 +1,37 @@ +class Elements { + async modelFromJson(json) { + return DotNet.invokeMethodAsync('Elements.Wasm', 'ModelFromJson', json) + } + + async modelToGlbBase64(json) { + return DotNet.invokeMethodAsync('Elements.Wasm', 'ModelToGlbBase64', json) + } + + async modelToGlbBytes(json) { + return DotNet.invokeMethodAsync('Elements.Wasm', 'ModelToGlbBytes', json) + } + + async test(value) { + return DotNet.invokeMethodAsync('Elements.Wasm', 'Test', value) + } +} + +// We don't autostart blazor so that we can capture +// the load paths and redirect them to the correct location. +// https://docs.microsoft.com/en-us/aspnet/core/blazor/fundamentals/startup?view=aspnetcore-6.0 +Blazor.start({ + loadBootResource: function (type, name, defaultUri, integrity) { + // console.log(`Loading: '${type}', '${name}', '${defaultUri}', '${integrity}'`); + switch (type) { + case 'manifest': + case 'assembly': + case 'globalization': + case 'dotnetjs': + case 'dotnetwasm': + case 'timezonedata': + return `elements/_framework/${name}`; + } + } +}); + +window.elements = new Elements(); \ No newline at end of file diff --git a/Elements.Wasm/wwwroot/index.html b/Elements.Wasm/wwwroot/index.html index 4c069e8fe..1b9c29333 100644 --- a/Elements.Wasm/wwwroot/index.html +++ b/Elements.Wasm/wwwroot/index.html @@ -18,8 +18,8 @@ - - + + -
diff --git a/Elements.Wasm/wwwroot/js/Elements.js b/Elements.Wasm/wwwroot/js/Elements.js deleted file mode 100644 index a93f9d828..000000000 --- a/Elements.Wasm/wwwroot/js/Elements.js +++ /dev/null @@ -1,19 +0,0 @@ -class Elements { - async modelFromJson(json) { - return DotNet.invokeMethodAsync('Elements.Wasm', 'ModelFromJson', json) - } - - async modelToGlbBase64(json) { - return DotNet.invokeMethodAsync('Elements.Wasm', 'ModelToGlbBase64', json) - } - - async modelToGlbBytes(json) { - return DotNet.invokeMethodAsync('Elements.Wasm', 'ModelToGlbBytes', json) - } - - async test(value) { - return DotNet.invokeMethodAsync('Elements.Wasm', 'Test', value) - } -} - -window.elements = new Elements(); \ No newline at end of file diff --git a/Elements.Wasm/wwwroot/js/GLTFLoader.js b/Elements.Wasm/wwwroot/js/GLTFLoader.js deleted file mode 100644 index b39fa42c6..000000000 --- a/Elements.Wasm/wwwroot/js/GLTFLoader.js +++ /dev/null @@ -1,3186 +0,0 @@ -/** - * @author Rich Tibbett / https://github.com/richtr - * @author mrdoob / http://mrdoob.com/ - * @author Tony Parisi / http://www.tonyparisi.com/ - * @author Takahiro / https://github.com/takahirox - * @author Don McCurdy / https://www.donmccurdy.com - */ - -THREE.GLTFLoader = ( function () { - - function GLTFLoader( manager ) { - - this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager; - this.dracoLoader = null; - - } - - GLTFLoader.prototype = { - - constructor: GLTFLoader, - - crossOrigin: 'anonymous', - - load: function ( url, onLoad, onProgress, onError ) { - - var scope = this; - - var resourcePath; - - if ( this.resourcePath !== undefined ) { - - resourcePath = this.resourcePath; - - } else if ( this.path !== undefined ) { - - resourcePath = this.path; - - } else { - - resourcePath = THREE.LoaderUtils.extractUrlBase( url ); - - } - - // Tells the LoadingManager to track an extra item, which resolves after - // the model is fully loaded. This means the count of items loaded will - // be incorrect, but ensures manager.onLoad() does not fire early. - scope.manager.itemStart( url ); - - var _onError = function ( e ) { - - if ( onError ) { - - onError( e ); - - } else { - - console.error( e ); - - } - - scope.manager.itemError( url ); - scope.manager.itemEnd( url ); - - }; - - var loader = new THREE.FileLoader( scope.manager ); - - loader.setPath( this.path ); - loader.setResponseType( 'arraybuffer' ); - - loader.load( url, function ( data ) { - - try { - - scope.parse( data, resourcePath, function ( gltf ) { - - onLoad( gltf ); - - scope.manager.itemEnd( url ); - - }, _onError ); - - } catch ( e ) { - - _onError( e ); - - } - - }, onProgress, _onError ); - - }, - - setCrossOrigin: function ( value ) { - - this.crossOrigin = value; - return this; - - }, - - setPath: function ( value ) { - - this.path = value; - return this; - - }, - - setResourcePath: function ( value ) { - - this.resourcePath = value; - return this; - - }, - - setDRACOLoader: function ( dracoLoader ) { - - this.dracoLoader = dracoLoader; - return this; - - }, - - parse: function ( data, path, onLoad, onError ) { - - var content; - var extensions = {}; - - if ( typeof data === 'string' ) { - - content = data; - - } else { - - var magic = THREE.LoaderUtils.decodeText( new Uint8Array( data, 0, 4 ) ); - - if ( magic === BINARY_EXTENSION_HEADER_MAGIC ) { - - try { - - extensions[ EXTENSIONS.KHR_BINARY_GLTF ] = new GLTFBinaryExtension( data ); - - } catch ( error ) { - - if ( onError ) onError( error ); - return; - - } - - content = extensions[ EXTENSIONS.KHR_BINARY_GLTF ].content; - - } else { - - content = THREE.LoaderUtils.decodeText( new Uint8Array( data ) ); - - } - - } - - var json = JSON.parse( content ); - - if ( json.asset === undefined || json.asset.version[ 0 ] < 2 ) { - - if ( onError ) onError( new Error( 'THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported. Use LegacyGLTFLoader instead.' ) ); - return; - - } - - if ( json.extensionsUsed ) { - - for ( var i = 0; i < json.extensionsUsed.length; ++ i ) { - - var extensionName = json.extensionsUsed[ i ]; - var extensionsRequired = json.extensionsRequired || []; - - switch ( extensionName ) { - - case EXTENSIONS.KHR_LIGHTS_PUNCTUAL: - extensions[ extensionName ] = new GLTFLightsExtension( json ); - break; - - case EXTENSIONS.KHR_MATERIALS_UNLIT: - extensions[ extensionName ] = new GLTFMaterialsUnlitExtension( json ); - break; - - case EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: - extensions[ extensionName ] = new GLTFMaterialsPbrSpecularGlossinessExtension( json ); - break; - - case EXTENSIONS.KHR_DRACO_MESH_COMPRESSION: - extensions[ extensionName ] = new GLTFDracoMeshCompressionExtension( json, this.dracoLoader ); - break; - - case EXTENSIONS.MSFT_TEXTURE_DDS: - extensions[ EXTENSIONS.MSFT_TEXTURE_DDS ] = new GLTFTextureDDSExtension(); - break; - - case EXTENSIONS.KHR_TEXTURE_TRANSFORM: - extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] = new GLTFTextureTransformExtension( json ); - break; - - default: - - if ( extensionsRequired.indexOf( extensionName ) >= 0 ) { - - console.warn( 'THREE.GLTFLoader: Unknown extension "' + extensionName + '".' ); - - } - - } - - } - - } - - var parser = new GLTFParser( json, extensions, { - - path: path || this.resourcePath || '', - crossOrigin: this.crossOrigin, - manager: this.manager - - } ); - - parser.parse( onLoad, onError ); - - } - - }; - - /* GLTFREGISTRY */ - - function GLTFRegistry() { - - var objects = {}; - - return { - - get: function ( key ) { - - return objects[ key ]; - - }, - - add: function ( key, object ) { - - objects[ key ] = object; - - }, - - remove: function ( key ) { - - delete objects[ key ]; - - }, - - removeAll: function () { - - objects = {}; - - } - - }; - - } - - /*********************************/ - /********** EXTENSIONS ***********/ - /*********************************/ - - var EXTENSIONS = { - KHR_BINARY_GLTF: 'KHR_binary_glTF', - KHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression', - KHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual', - KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: 'KHR_materials_pbrSpecularGlossiness', - KHR_MATERIALS_UNLIT: 'KHR_materials_unlit', - KHR_TEXTURE_TRANSFORM: 'KHR_texture_transform', - MSFT_TEXTURE_DDS: 'MSFT_texture_dds' - }; - - /** - * DDS Texture Extension - * - * Specification: - * https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/MSFT_texture_dds - * - */ - function GLTFTextureDDSExtension() { - - if ( ! THREE.DDSLoader ) { - - throw new Error( 'THREE.GLTFLoader: Attempting to load .dds texture without importing THREE.DDSLoader' ); - - } - - this.name = EXTENSIONS.MSFT_TEXTURE_DDS; - this.ddsLoader = new THREE.DDSLoader(); - - } - - /** - * Lights Extension - * - * Specification: PENDING - */ - function GLTFLightsExtension( json ) { - - this.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL; - - var extension = ( json.extensions && json.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ] ) || {}; - this.lightDefs = extension.lights || []; - - } - - GLTFLightsExtension.prototype.loadLight = function ( lightIndex ) { - - var lightDef = this.lightDefs[ lightIndex ]; - var lightNode; - - var color = new THREE.Color( 0xffffff ); - if ( lightDef.color !== undefined ) color.fromArray( lightDef.color ); - - var range = lightDef.range !== undefined ? lightDef.range : 0; - - switch ( lightDef.type ) { - - case 'directional': - lightNode = new THREE.DirectionalLight( color ); - lightNode.target.position.set( 0, 0, - 1 ); - lightNode.add( lightNode.target ); - break; - - case 'point': - lightNode = new THREE.PointLight( color ); - lightNode.distance = range; - break; - - case 'spot': - lightNode = new THREE.SpotLight( color ); - lightNode.distance = range; - // Handle spotlight properties. - lightDef.spot = lightDef.spot || {}; - lightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== undefined ? lightDef.spot.innerConeAngle : 0; - lightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== undefined ? lightDef.spot.outerConeAngle : Math.PI / 4.0; - lightNode.angle = lightDef.spot.outerConeAngle; - lightNode.penumbra = 1.0 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle; - lightNode.target.position.set( 0, 0, - 1 ); - lightNode.add( lightNode.target ); - break; - - default: - throw new Error( 'THREE.GLTFLoader: Unexpected light type, "' + lightDef.type + '".' ); - - } - - // Some lights (e.g. spot) default to a position other than the origin. Reset the position - // here, because node-level parsing will only override position if explicitly specified. - lightNode.position.set( 0, 0, 0 ); - - lightNode.decay = 2; - - if ( lightDef.intensity !== undefined ) lightNode.intensity = lightDef.intensity; - - lightNode.name = lightDef.name || ( 'light_' + lightIndex ); - - return Promise.resolve( lightNode ); - - }; - - /** - * Unlit Materials Extension (pending) - * - * PR: https://github.com/KhronosGroup/glTF/pull/1163 - */ - function GLTFMaterialsUnlitExtension() { - - this.name = EXTENSIONS.KHR_MATERIALS_UNLIT; - - } - - GLTFMaterialsUnlitExtension.prototype.getMaterialType = function () { - - return THREE.MeshBasicMaterial; - - }; - - GLTFMaterialsUnlitExtension.prototype.extendParams = function ( materialParams, materialDef, parser ) { - - var pending = []; - - materialParams.color = new THREE.Color( 1.0, 1.0, 1.0 ); - materialParams.opacity = 1.0; - - var metallicRoughness = materialDef.pbrMetallicRoughness; - - if ( metallicRoughness ) { - - if ( Array.isArray( metallicRoughness.baseColorFactor ) ) { - - var array = metallicRoughness.baseColorFactor; - - materialParams.color.fromArray( array ); - materialParams.opacity = array[ 3 ]; - - } - - if ( metallicRoughness.baseColorTexture !== undefined ) { - - pending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture ) ); - - } - - } - - return Promise.all( pending ); - - }; - - /* BINARY EXTENSION */ - - var BINARY_EXTENSION_BUFFER_NAME = 'binary_glTF'; - var BINARY_EXTENSION_HEADER_MAGIC = 'glTF'; - var BINARY_EXTENSION_HEADER_LENGTH = 12; - var BINARY_EXTENSION_CHUNK_TYPES = { JSON: 0x4E4F534A, BIN: 0x004E4942 }; - - function GLTFBinaryExtension( data ) { - - this.name = EXTENSIONS.KHR_BINARY_GLTF; - this.content = null; - this.body = null; - - var headerView = new DataView( data, 0, BINARY_EXTENSION_HEADER_LENGTH ); - - this.header = { - magic: THREE.LoaderUtils.decodeText( new Uint8Array( data.slice( 0, 4 ) ) ), - version: headerView.getUint32( 4, true ), - length: headerView.getUint32( 8, true ) - }; - - if ( this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC ) { - - throw new Error( 'THREE.GLTFLoader: Unsupported glTF-Binary header.' ); - - } else if ( this.header.version < 2.0 ) { - - throw new Error( 'THREE.GLTFLoader: Legacy binary file detected. Use LegacyGLTFLoader instead.' ); - - } - - var chunkView = new DataView( data, BINARY_EXTENSION_HEADER_LENGTH ); - var chunkIndex = 0; - - while ( chunkIndex < chunkView.byteLength ) { - - var chunkLength = chunkView.getUint32( chunkIndex, true ); - chunkIndex += 4; - - var chunkType = chunkView.getUint32( chunkIndex, true ); - chunkIndex += 4; - - if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON ) { - - var contentArray = new Uint8Array( data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength ); - this.content = THREE.LoaderUtils.decodeText( contentArray ); - - } else if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN ) { - - var byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex; - this.body = data.slice( byteOffset, byteOffset + chunkLength ); - - } - - // Clients must ignore chunks with unknown types. - - chunkIndex += chunkLength; - - } - - if ( this.content === null ) { - - throw new Error( 'THREE.GLTFLoader: JSON content not found.' ); - - } - - } - - /** - * DRACO Mesh Compression Extension - * - * Specification: https://github.com/KhronosGroup/glTF/pull/874 - */ - function GLTFDracoMeshCompressionExtension( json, dracoLoader ) { - - if ( ! dracoLoader ) { - - throw new Error( 'THREE.GLTFLoader: No DRACOLoader instance provided.' ); - - } - - this.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION; - this.json = json; - this.dracoLoader = dracoLoader; - - } - - GLTFDracoMeshCompressionExtension.prototype.decodePrimitive = function ( primitive, parser ) { - - var json = this.json; - var dracoLoader = this.dracoLoader; - var bufferViewIndex = primitive.extensions[ this.name ].bufferView; - var gltfAttributeMap = primitive.extensions[ this.name ].attributes; - var threeAttributeMap = {}; - var attributeNormalizedMap = {}; - var attributeTypeMap = {}; - - for ( var attributeName in gltfAttributeMap ) { - - var threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase(); - - threeAttributeMap[ threeAttributeName ] = gltfAttributeMap[ attributeName ]; - - } - - for ( attributeName in primitive.attributes ) { - - var threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase(); - - if ( gltfAttributeMap[ attributeName ] !== undefined ) { - - var accessorDef = json.accessors[ primitive.attributes[ attributeName ] ]; - var componentType = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ]; - - attributeTypeMap[ threeAttributeName ] = componentType; - attributeNormalizedMap[ threeAttributeName ] = accessorDef.normalized === true; - - } - - } - - return parser.getDependency( 'bufferView', bufferViewIndex ).then( function ( bufferView ) { - - return new Promise( function ( resolve ) { - - dracoLoader.decodeDracoFile( bufferView, function ( geometry ) { - - for ( var attributeName in geometry.attributes ) { - - var attribute = geometry.attributes[ attributeName ]; - var normalized = attributeNormalizedMap[ attributeName ]; - - if ( normalized !== undefined ) attribute.normalized = normalized; - - } - - resolve( geometry ); - - }, threeAttributeMap, attributeTypeMap ); - - } ); - - } ); - - }; - - /** - * Texture Transform Extension - * - * Specification: - */ - function GLTFTextureTransformExtension() { - - this.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM; - - } - - GLTFTextureTransformExtension.prototype.extendTexture = function ( texture, transform ) { - - texture = texture.clone(); - - if ( transform.offset !== undefined ) { - - texture.offset.fromArray( transform.offset ); - - } - - if ( transform.rotation !== undefined ) { - - texture.rotation = transform.rotation; - - } - - if ( transform.scale !== undefined ) { - - texture.repeat.fromArray( transform.scale ); - - } - - if ( transform.texCoord !== undefined ) { - - console.warn( 'THREE.GLTFLoader: Custom UV sets in "' + this.name + '" extension not yet supported.' ); - - } - - texture.needsUpdate = true; - - return texture; - - }; - - /** - * Specular-Glossiness Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_pbrSpecularGlossiness - */ - function GLTFMaterialsPbrSpecularGlossinessExtension() { - - return { - - name: EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS, - - specularGlossinessParams: [ - 'color', - 'map', - 'lightMap', - 'lightMapIntensity', - 'aoMap', - 'aoMapIntensity', - 'emissive', - 'emissiveIntensity', - 'emissiveMap', - 'bumpMap', - 'bumpScale', - 'normalMap', - 'displacementMap', - 'displacementScale', - 'displacementBias', - 'specularMap', - 'specular', - 'glossinessMap', - 'glossiness', - 'alphaMap', - 'envMap', - 'envMapIntensity', - 'refractionRatio', - ], - - getMaterialType: function () { - - return THREE.ShaderMaterial; - - }, - - extendParams: function ( materialParams, materialDef, parser ) { - - var pbrSpecularGlossiness = materialDef.extensions[ this.name ]; - - var shader = THREE.ShaderLib[ 'standard' ]; - - var uniforms = THREE.UniformsUtils.clone( shader.uniforms ); - - var specularMapParsFragmentChunk = [ - '#ifdef USE_SPECULARMAP', - ' uniform sampler2D specularMap;', - '#endif' - ].join( '\n' ); - - var glossinessMapParsFragmentChunk = [ - '#ifdef USE_GLOSSINESSMAP', - ' uniform sampler2D glossinessMap;', - '#endif' - ].join( '\n' ); - - var specularMapFragmentChunk = [ - 'vec3 specularFactor = specular;', - '#ifdef USE_SPECULARMAP', - ' vec4 texelSpecular = texture2D( specularMap, vUv );', - ' texelSpecular = sRGBToLinear( texelSpecular );', - ' // reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture', - ' specularFactor *= texelSpecular.rgb;', - '#endif' - ].join( '\n' ); - - var glossinessMapFragmentChunk = [ - 'float glossinessFactor = glossiness;', - '#ifdef USE_GLOSSINESSMAP', - ' vec4 texelGlossiness = texture2D( glossinessMap, vUv );', - ' // reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture', - ' glossinessFactor *= texelGlossiness.a;', - '#endif' - ].join( '\n' ); - - var lightPhysicalFragmentChunk = [ - 'PhysicalMaterial material;', - 'material.diffuseColor = diffuseColor.rgb;', - 'material.specularRoughness = clamp( 1.0 - glossinessFactor, 0.04, 1.0 );', - 'material.specularColor = specularFactor.rgb;', - ].join( '\n' ); - - var fragmentShader = shader.fragmentShader - .replace( 'uniform float roughness;', 'uniform vec3 specular;' ) - .replace( 'uniform float metalness;', 'uniform float glossiness;' ) - .replace( '#include ', specularMapParsFragmentChunk ) - .replace( '#include ', glossinessMapParsFragmentChunk ) - .replace( '#include ', specularMapFragmentChunk ) - .replace( '#include ', glossinessMapFragmentChunk ) - .replace( '#include ', lightPhysicalFragmentChunk ); - - delete uniforms.roughness; - delete uniforms.metalness; - delete uniforms.roughnessMap; - delete uniforms.metalnessMap; - - uniforms.specular = { value: new THREE.Color().setHex( 0x111111 ) }; - uniforms.glossiness = { value: 0.5 }; - uniforms.specularMap = { value: null }; - uniforms.glossinessMap = { value: null }; - - materialParams.vertexShader = shader.vertexShader; - materialParams.fragmentShader = fragmentShader; - materialParams.uniforms = uniforms; - materialParams.defines = { 'STANDARD': '' }; - - materialParams.color = new THREE.Color( 1.0, 1.0, 1.0 ); - materialParams.opacity = 1.0; - - var pending = []; - - if ( Array.isArray( pbrSpecularGlossiness.diffuseFactor ) ) { - - var array = pbrSpecularGlossiness.diffuseFactor; - - materialParams.color.fromArray( array ); - materialParams.opacity = array[ 3 ]; - - } - - if ( pbrSpecularGlossiness.diffuseTexture !== undefined ) { - - pending.push( parser.assignTexture( materialParams, 'map', pbrSpecularGlossiness.diffuseTexture ) ); - - } - - materialParams.emissive = new THREE.Color( 0.0, 0.0, 0.0 ); - materialParams.glossiness = pbrSpecularGlossiness.glossinessFactor !== undefined ? pbrSpecularGlossiness.glossinessFactor : 1.0; - materialParams.specular = new THREE.Color( 1.0, 1.0, 1.0 ); - - if ( Array.isArray( pbrSpecularGlossiness.specularFactor ) ) { - - materialParams.specular.fromArray( pbrSpecularGlossiness.specularFactor ); - - } - - if ( pbrSpecularGlossiness.specularGlossinessTexture !== undefined ) { - - var specGlossMapDef = pbrSpecularGlossiness.specularGlossinessTexture; - pending.push( parser.assignTexture( materialParams, 'glossinessMap', specGlossMapDef ) ); - pending.push( parser.assignTexture( materialParams, 'specularMap', specGlossMapDef ) ); - - } - - return Promise.all( pending ); - - }, - - createMaterial: function ( params ) { - - // setup material properties based on MeshStandardMaterial for Specular-Glossiness - - var material = new THREE.ShaderMaterial( { - defines: params.defines, - vertexShader: params.vertexShader, - fragmentShader: params.fragmentShader, - uniforms: params.uniforms, - fog: true, - lights: true, - opacity: params.opacity, - transparent: params.transparent - } ); - - material.isGLTFSpecularGlossinessMaterial = true; - - material.color = params.color; - - material.map = params.map === undefined ? null : params.map; - - material.lightMap = null; - material.lightMapIntensity = 1.0; - - material.aoMap = params.aoMap === undefined ? null : params.aoMap; - material.aoMapIntensity = 1.0; - - material.emissive = params.emissive; - material.emissiveIntensity = 1.0; - material.emissiveMap = params.emissiveMap === undefined ? null : params.emissiveMap; - - material.bumpMap = params.bumpMap === undefined ? null : params.bumpMap; - material.bumpScale = 1; - - material.normalMap = params.normalMap === undefined ? null : params.normalMap; - - if ( params.normalScale ) material.normalScale = params.normalScale; - - material.displacementMap = null; - material.displacementScale = 1; - material.displacementBias = 0; - - material.specularMap = params.specularMap === undefined ? null : params.specularMap; - material.specular = params.specular; - - material.glossinessMap = params.glossinessMap === undefined ? null : params.glossinessMap; - material.glossiness = params.glossiness; - - material.alphaMap = null; - - material.envMap = params.envMap === undefined ? null : params.envMap; - material.envMapIntensity = 1.0; - - material.refractionRatio = 0.98; - - material.extensions.derivatives = true; - - return material; - - }, - - /** - * Clones a GLTFSpecularGlossinessMaterial instance. The ShaderMaterial.copy() method can - * copy only properties it knows about or inherits, and misses many properties that would - * normally be defined by MeshStandardMaterial. - * - * This method allows GLTFSpecularGlossinessMaterials to be cloned in the process of - * loading a glTF model, but cloning later (e.g. by the user) would require these changes - * AND also updating `.onBeforeRender` on the parent mesh. - * - * @param {THREE.ShaderMaterial} source - * @return {THREE.ShaderMaterial} - */ - cloneMaterial: function ( source ) { - - var target = source.clone(); - - target.isGLTFSpecularGlossinessMaterial = true; - - var params = this.specularGlossinessParams; - - for ( var i = 0, il = params.length; i < il; i ++ ) { - - var value = source[ params[ i ] ]; - target[ params[ i ] ] = ( value && value.isColor ) ? value.clone() : value; - - } - - return target; - - }, - - // Here's based on refreshUniformsCommon() and refreshUniformsStandard() in WebGLRenderer. - refreshUniforms: function ( renderer, scene, camera, geometry, material, group ) { - - if ( material.isGLTFSpecularGlossinessMaterial !== true ) { - - return; - - } - - var uniforms = material.uniforms; - var defines = material.defines; - - uniforms.opacity.value = material.opacity; - - uniforms.diffuse.value.copy( material.color ); - uniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity ); - - uniforms.map.value = material.map; - uniforms.specularMap.value = material.specularMap; - uniforms.alphaMap.value = material.alphaMap; - - uniforms.lightMap.value = material.lightMap; - uniforms.lightMapIntensity.value = material.lightMapIntensity; - - uniforms.aoMap.value = material.aoMap; - uniforms.aoMapIntensity.value = material.aoMapIntensity; - - // uv repeat and offset setting priorities - // 1. color map - // 2. specular map - // 3. normal map - // 4. bump map - // 5. alpha map - // 6. emissive map - - var uvScaleMap; - - if ( material.map ) { - - uvScaleMap = material.map; - - } else if ( material.specularMap ) { - - uvScaleMap = material.specularMap; - - } else if ( material.displacementMap ) { - - uvScaleMap = material.displacementMap; - - } else if ( material.normalMap ) { - - uvScaleMap = material.normalMap; - - } else if ( material.bumpMap ) { - - uvScaleMap = material.bumpMap; - - } else if ( material.glossinessMap ) { - - uvScaleMap = material.glossinessMap; - - } else if ( material.alphaMap ) { - - uvScaleMap = material.alphaMap; - - } else if ( material.emissiveMap ) { - - uvScaleMap = material.emissiveMap; - - } - - if ( uvScaleMap !== undefined ) { - - // backwards compatibility - if ( uvScaleMap.isWebGLRenderTarget ) { - - uvScaleMap = uvScaleMap.texture; - - } - - if ( uvScaleMap.matrixAutoUpdate === true ) { - - uvScaleMap.updateMatrix(); - - } - - uniforms.uvTransform.value.copy( uvScaleMap.matrix ); - - } - - if ( material.envMap ) { - - uniforms.envMap.value = material.envMap; - uniforms.envMapIntensity.value = material.envMapIntensity; - - // don't flip CubeTexture envMaps, flip everything else: - // WebGLRenderTargetCube will be flipped for backwards compatibility - // WebGLRenderTargetCube.texture will be flipped because it's a Texture and NOT a CubeTexture - // this check must be handled differently, or removed entirely, if WebGLRenderTargetCube uses a CubeTexture in the future - uniforms.flipEnvMap.value = material.envMap.isCubeTexture ? - 1 : 1; - - uniforms.reflectivity.value = material.reflectivity; - uniforms.refractionRatio.value = material.refractionRatio; - - uniforms.maxMipLevel.value = renderer.properties.get( material.envMap ).__maxMipLevel; - - } - - uniforms.specular.value.copy( material.specular ); - uniforms.glossiness.value = material.glossiness; - - uniforms.glossinessMap.value = material.glossinessMap; - - uniforms.emissiveMap.value = material.emissiveMap; - uniforms.bumpMap.value = material.bumpMap; - uniforms.normalMap.value = material.normalMap; - - uniforms.displacementMap.value = material.displacementMap; - uniforms.displacementScale.value = material.displacementScale; - uniforms.displacementBias.value = material.displacementBias; - - if ( uniforms.glossinessMap.value !== null && defines.USE_GLOSSINESSMAP === undefined ) { - - defines.USE_GLOSSINESSMAP = ''; - // set USE_ROUGHNESSMAP to enable vUv - defines.USE_ROUGHNESSMAP = ''; - - } - - if ( uniforms.glossinessMap.value === null && defines.USE_GLOSSINESSMAP !== undefined ) { - - delete defines.USE_GLOSSINESSMAP; - delete defines.USE_ROUGHNESSMAP; - - } - - } - - }; - - } - - /*********************************/ - /********** INTERPOLATION ********/ - /*********************************/ - - // Spline Interpolation - // Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation - function GLTFCubicSplineInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { - - THREE.Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); - - } - - GLTFCubicSplineInterpolant.prototype = Object.create( THREE.Interpolant.prototype ); - GLTFCubicSplineInterpolant.prototype.constructor = GLTFCubicSplineInterpolant; - - GLTFCubicSplineInterpolant.prototype.copySampleValue_ = function ( index ) { - - // Copies a sample value to the result buffer. See description of glTF - // CUBICSPLINE values layout in interpolate_() function below. - - var result = this.resultBuffer, - values = this.sampleValues, - valueSize = this.valueSize, - offset = index * valueSize * 3 + valueSize; - - for ( var i = 0; i !== valueSize; i ++ ) { - - result[ i ] = values[ offset + i ]; - - } - - return result; - - }; - - GLTFCubicSplineInterpolant.prototype.beforeStart_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_; - - GLTFCubicSplineInterpolant.prototype.afterEnd_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_; - - GLTFCubicSplineInterpolant.prototype.interpolate_ = function ( i1, t0, t, t1 ) { - - var result = this.resultBuffer; - var values = this.sampleValues; - var stride = this.valueSize; - - var stride2 = stride * 2; - var stride3 = stride * 3; - - var td = t1 - t0; - - var p = ( t - t0 ) / td; - var pp = p * p; - var ppp = pp * p; - - var offset1 = i1 * stride3; - var offset0 = offset1 - stride3; - - var s2 = - 2 * ppp + 3 * pp; - var s3 = ppp - pp; - var s0 = 1 - s2; - var s1 = s3 - pp + p; - - // Layout of keyframe output values for CUBICSPLINE animations: - // [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ] - for ( var i = 0; i !== stride; i ++ ) { - - var p0 = values[ offset0 + i + stride ]; // splineVertex_k - var m0 = values[ offset0 + i + stride2 ] * td; // outTangent_k * (t_k+1 - t_k) - var p1 = values[ offset1 + i + stride ]; // splineVertex_k+1 - var m1 = values[ offset1 + i ] * td; // inTangent_k+1 * (t_k+1 - t_k) - - result[ i ] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1; - - } - - return result; - - }; - - /*********************************/ - /********** INTERNALS ************/ - /*********************************/ - - /* CONSTANTS */ - - var WEBGL_CONSTANTS = { - FLOAT: 5126, - //FLOAT_MAT2: 35674, - FLOAT_MAT3: 35675, - FLOAT_MAT4: 35676, - FLOAT_VEC2: 35664, - FLOAT_VEC3: 35665, - FLOAT_VEC4: 35666, - LINEAR: 9729, - REPEAT: 10497, - SAMPLER_2D: 35678, - POINTS: 0, - LINES: 1, - LINE_LOOP: 2, - LINE_STRIP: 3, - TRIANGLES: 4, - TRIANGLE_STRIP: 5, - TRIANGLE_FAN: 6, - UNSIGNED_BYTE: 5121, - UNSIGNED_SHORT: 5123 - }; - - var WEBGL_TYPE = { - 5126: Number, - //35674: THREE.Matrix2, - 35675: THREE.Matrix3, - 35676: THREE.Matrix4, - 35664: THREE.Vector2, - 35665: THREE.Vector3, - 35666: THREE.Vector4, - 35678: THREE.Texture - }; - - var WEBGL_COMPONENT_TYPES = { - 5120: Int8Array, - 5121: Uint8Array, - 5122: Int16Array, - 5123: Uint16Array, - 5125: Uint32Array, - 5126: Float32Array - }; - - var WEBGL_FILTERS = { - 9728: THREE.NearestFilter, - 9729: THREE.LinearFilter, - 9984: THREE.NearestMipMapNearestFilter, - 9985: THREE.LinearMipMapNearestFilter, - 9986: THREE.NearestMipMapLinearFilter, - 9987: THREE.LinearMipMapLinearFilter - }; - - var WEBGL_WRAPPINGS = { - 33071: THREE.ClampToEdgeWrapping, - 33648: THREE.MirroredRepeatWrapping, - 10497: THREE.RepeatWrapping - }; - - var WEBGL_SIDES = { - 1028: THREE.BackSide, // Culling front - 1029: THREE.FrontSide // Culling back - //1032: THREE.NoSide // Culling front and back, what to do? - }; - - var WEBGL_DEPTH_FUNCS = { - 512: THREE.NeverDepth, - 513: THREE.LessDepth, - 514: THREE.EqualDepth, - 515: THREE.LessEqualDepth, - 516: THREE.GreaterEqualDepth, - 517: THREE.NotEqualDepth, - 518: THREE.GreaterEqualDepth, - 519: THREE.AlwaysDepth - }; - - var WEBGL_BLEND_EQUATIONS = { - 32774: THREE.AddEquation, - 32778: THREE.SubtractEquation, - 32779: THREE.ReverseSubtractEquation - }; - - var WEBGL_BLEND_FUNCS = { - 0: THREE.ZeroFactor, - 1: THREE.OneFactor, - 768: THREE.SrcColorFactor, - 769: THREE.OneMinusSrcColorFactor, - 770: THREE.SrcAlphaFactor, - 771: THREE.OneMinusSrcAlphaFactor, - 772: THREE.DstAlphaFactor, - 773: THREE.OneMinusDstAlphaFactor, - 774: THREE.DstColorFactor, - 775: THREE.OneMinusDstColorFactor, - 776: THREE.SrcAlphaSaturateFactor - // The followings are not supported by Three.js yet - //32769: CONSTANT_COLOR, - //32770: ONE_MINUS_CONSTANT_COLOR, - //32771: CONSTANT_ALPHA, - //32772: ONE_MINUS_CONSTANT_COLOR - }; - - var WEBGL_TYPE_SIZES = { - 'SCALAR': 1, - 'VEC2': 2, - 'VEC3': 3, - 'VEC4': 4, - 'MAT2': 4, - 'MAT3': 9, - 'MAT4': 16 - }; - - var ATTRIBUTES = { - POSITION: 'position', - NORMAL: 'normal', - TANGENT: 'tangent', - TEXCOORD_0: 'uv', - TEXCOORD_1: 'uv2', - COLOR_0: 'color', - WEIGHTS_0: 'skinWeight', - JOINTS_0: 'skinIndex', - }; - - var PATH_PROPERTIES = { - scale: 'scale', - translation: 'position', - rotation: 'quaternion', - weights: 'morphTargetInfluences' - }; - - var INTERPOLATION = { - CUBICSPLINE: undefined, // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each - // keyframe track will be initialized with a default interpolation type, then modified. - LINEAR: THREE.InterpolateLinear, - STEP: THREE.InterpolateDiscrete - }; - - var STATES_ENABLES = { - 2884: 'CULL_FACE', - 2929: 'DEPTH_TEST', - 3042: 'BLEND', - 3089: 'SCISSOR_TEST', - 32823: 'POLYGON_OFFSET_FILL', - 32926: 'SAMPLE_ALPHA_TO_COVERAGE' - }; - - var ALPHA_MODES = { - OPAQUE: 'OPAQUE', - MASK: 'MASK', - BLEND: 'BLEND' - }; - - var MIME_TYPE_FORMATS = { - 'image/png': THREE.RGBAFormat, - 'image/jpeg': THREE.RGBFormat - }; - - /* UTILITY FUNCTIONS */ - - function resolveURL( url, path ) { - - // Invalid URL - if ( typeof url !== 'string' || url === '' ) return ''; - - // Absolute URL http://,https://,// - if ( /^(https?:)?\/\//i.test( url ) ) return url; - - // Data URI - if ( /^data:.*,.*$/i.test( url ) ) return url; - - // Blob URL - if ( /^blob:.*$/i.test( url ) ) return url; - - // Relative URL - return path + url; - - } - - var defaultMaterial; - - /** - * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material - */ - function createDefaultMaterial() { - - defaultMaterial = defaultMaterial || new THREE.MeshStandardMaterial( { - color: 0xFFFFFF, - emissive: 0x000000, - metalness: 1, - roughness: 1, - transparent: false, - depthTest: true, - side: THREE.FrontSide - } ); - - return defaultMaterial; - - } - - function addUnknownExtensionsToUserData( knownExtensions, object, objectDef ) { - - // Add unknown glTF extensions to an object's userData. - - for ( var name in objectDef.extensions ) { - - if ( knownExtensions[ name ] === undefined ) { - - object.userData.gltfExtensions = object.userData.gltfExtensions || {}; - object.userData.gltfExtensions[ name ] = objectDef.extensions[ name ]; - - } - - } - - } - - /** - * @param {THREE.Object3D|THREE.Material|THREE.BufferGeometry} object - * @param {GLTF.definition} gltfDef - */ - function assignExtrasToUserData( object, gltfDef ) { - - if ( gltfDef.extras !== undefined ) { - - if ( typeof gltfDef.extras === 'object' ) { - - Object.assign( object.userData, gltfDef.extras ); - - } else { - - console.warn( 'THREE.GLTFLoader: Ignoring primitive type .extras, ' + gltfDef.extras ); - - } - - } - - } - - /** - * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets - * - * @param {THREE.BufferGeometry} geometry - * @param {Array} targets - * @param {GLTFParser} parser - * @return {Promise} - */ - function addMorphTargets( geometry, targets, parser ) { - - var hasMorphPosition = false; - var hasMorphNormal = false; - - for ( var i = 0, il = targets.length; i < il; i ++ ) { - - var target = targets[ i ]; - - if ( target.POSITION !== undefined ) hasMorphPosition = true; - if ( target.NORMAL !== undefined ) hasMorphNormal = true; - - if ( hasMorphPosition && hasMorphNormal ) break; - - } - - if ( ! hasMorphPosition && ! hasMorphNormal ) return Promise.resolve( geometry ); - - var pendingPositionAccessors = []; - var pendingNormalAccessors = []; - - for ( var i = 0, il = targets.length; i < il; i ++ ) { - - var target = targets[ i ]; - - if ( hasMorphPosition ) { - - var pendingAccessor = target.POSITION !== undefined - ? parser.getDependency( 'accessor', target.POSITION ) - : geometry.attributes.position; - - pendingPositionAccessors.push( pendingAccessor ); - - } - - if ( hasMorphNormal ) { - - var pendingAccessor = target.NORMAL !== undefined - ? parser.getDependency( 'accessor', target.NORMAL ) - : geometry.attributes.normal; - - pendingNormalAccessors.push( pendingAccessor ); - - } - - } - - return Promise.all( [ - Promise.all( pendingPositionAccessors ), - Promise.all( pendingNormalAccessors ) - ] ).then( function ( accessors ) { - - var morphPositions = accessors[ 0 ]; - var morphNormals = accessors[ 1 ]; - - // Clone morph target accessors before modifying them. - - for ( var i = 0, il = morphPositions.length; i < il; i ++ ) { - - if ( geometry.attributes.position === morphPositions[ i ] ) continue; - - morphPositions[ i ] = cloneBufferAttribute( morphPositions[ i ] ); - - } - - for ( var i = 0, il = morphNormals.length; i < il; i ++ ) { - - if ( geometry.attributes.normal === morphNormals[ i ] ) continue; - - morphNormals[ i ] = cloneBufferAttribute( morphNormals[ i ] ); - - } - - for ( var i = 0, il = targets.length; i < il; i ++ ) { - - var target = targets[ i ]; - var attributeName = 'morphTarget' + i; - - if ( hasMorphPosition ) { - - // Three.js morph position is absolute value. The formula is - // basePosition - // + weight0 * ( morphPosition0 - basePosition ) - // + weight1 * ( morphPosition1 - basePosition ) - // ... - // while the glTF one is relative - // basePosition - // + weight0 * glTFmorphPosition0 - // + weight1 * glTFmorphPosition1 - // ... - // then we need to convert from relative to absolute here. - - if ( target.POSITION !== undefined ) { - - var positionAttribute = morphPositions[ i ]; - positionAttribute.name = attributeName; - - var position = geometry.attributes.position; - - for ( var j = 0, jl = positionAttribute.count; j < jl; j ++ ) { - - positionAttribute.setXYZ( - j, - positionAttribute.getX( j ) + position.getX( j ), - positionAttribute.getY( j ) + position.getY( j ), - positionAttribute.getZ( j ) + position.getZ( j ) - ); - - } - - } - - } - - if ( hasMorphNormal ) { - - // see target.POSITION's comment - - if ( target.NORMAL !== undefined ) { - - var normalAttribute = morphNormals[ i ]; - normalAttribute.name = attributeName; - - var normal = geometry.attributes.normal; - - for ( var j = 0, jl = normalAttribute.count; j < jl; j ++ ) { - - normalAttribute.setXYZ( - j, - normalAttribute.getX( j ) + normal.getX( j ), - normalAttribute.getY( j ) + normal.getY( j ), - normalAttribute.getZ( j ) + normal.getZ( j ) - ); - - } - - } - - } - - } - - if ( hasMorphPosition ) geometry.morphAttributes.position = morphPositions; - if ( hasMorphNormal ) geometry.morphAttributes.normal = morphNormals; - - return geometry; - - } ); - - } - - /** - * @param {THREE.Mesh} mesh - * @param {GLTF.Mesh} meshDef - */ - function updateMorphTargets( mesh, meshDef ) { - - mesh.updateMorphTargets(); - - if ( meshDef.weights !== undefined ) { - - for ( var i = 0, il = meshDef.weights.length; i < il; i ++ ) { - - mesh.morphTargetInfluences[ i ] = meshDef.weights[ i ]; - - } - - } - - // .extras has user-defined data, so check that .extras.targetNames is an array. - if ( meshDef.extras && Array.isArray( meshDef.extras.targetNames ) ) { - - var targetNames = meshDef.extras.targetNames; - - if ( mesh.morphTargetInfluences.length === targetNames.length ) { - - mesh.morphTargetDictionary = {}; - - for ( var i = 0, il = targetNames.length; i < il; i ++ ) { - - mesh.morphTargetDictionary[ targetNames[ i ] ] = i; - - } - - } else { - - console.warn( 'THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.' ); - - } - - } - - } - function isObjectEqual( a, b ) { - - if ( Object.keys( a ).length !== Object.keys( b ).length ) return false; - - for ( var key in a ) { - - if ( a[ key ] !== b[ key ] ) return false; - - } - - return true; - - } - - function createPrimitiveKey( primitiveDef ) { - - var dracoExtension = primitiveDef.extensions && primitiveDef.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ]; - var geometryKey; - - if ( dracoExtension ) { - - geometryKey = 'draco:' + dracoExtension.bufferView - + ':' + dracoExtension.indices - + ':' + createAttributesKey( dracoExtension.attributes ); - - } else { - - geometryKey = primitiveDef.indices + ':' + createAttributesKey( primitiveDef.attributes ) + ':' + primitiveDef.mode; - - } - - return geometryKey; - - } - - function createAttributesKey( attributes ) { - - var attributesKey = ''; - - var keys = Object.keys( attributes ).sort(); - - for ( var i = 0, il = keys.length; i < il; i ++ ) { - - attributesKey += keys[ i ] + ':' + attributes[ keys[ i ] ] + ';'; - - } - - return attributesKey; - - } - - function cloneBufferAttribute( attribute ) { - - if ( attribute.isInterleavedBufferAttribute ) { - - var count = attribute.count; - var itemSize = attribute.itemSize; - var array = attribute.array.slice( 0, count * itemSize ); - - for ( var i = 0, j = 0; i < count; ++ i ) { - - array[ j ++ ] = attribute.getX( i ); - if ( itemSize >= 2 ) array[ j ++ ] = attribute.getY( i ); - if ( itemSize >= 3 ) array[ j ++ ] = attribute.getZ( i ); - if ( itemSize >= 4 ) array[ j ++ ] = attribute.getW( i ); - - } - - return new THREE.BufferAttribute( array, itemSize, attribute.normalized ); - - } - - return attribute.clone(); - - } - - /* GLTF PARSER */ - - function GLTFParser( json, extensions, options ) { - - this.json = json || {}; - this.extensions = extensions || {}; - this.options = options || {}; - - // loader object cache - this.cache = new GLTFRegistry(); - - // BufferGeometry caching - this.primitiveCache = {}; - - this.textureLoader = new THREE.TextureLoader( this.options.manager ); - this.textureLoader.setCrossOrigin( this.options.crossOrigin ); - - this.fileLoader = new THREE.FileLoader( this.options.manager ); - this.fileLoader.setResponseType( 'arraybuffer' ); - - } - - GLTFParser.prototype.parse = function ( onLoad, onError ) { - - var parser = this; - var json = this.json; - var extensions = this.extensions; - - // Clear the loader cache - this.cache.removeAll(); - - // Mark the special nodes/meshes in json for efficient parse - this.markDefs(); - - Promise.all( [ - - this.getDependencies( 'scene' ), - this.getDependencies( 'animation' ), - this.getDependencies( 'camera' ), - - ] ).then( function ( dependencies ) { - - var result = { - scene: dependencies[ 0 ][ json.scene || 0 ], - scenes: dependencies[ 0 ], - animations: dependencies[ 1 ], - cameras: dependencies[ 2 ], - asset: json.asset, - parser: parser, - userData: {} - }; - - addUnknownExtensionsToUserData( extensions, result, json ); - - onLoad( result ); - - } ).catch( onError ); - - }; - - /** - * Marks the special nodes/meshes in json for efficient parse. - */ - GLTFParser.prototype.markDefs = function () { - - var nodeDefs = this.json.nodes || []; - var skinDefs = this.json.skins || []; - var meshDefs = this.json.meshes || []; - - var meshReferences = {}; - var meshUses = {}; - - // Nothing in the node definition indicates whether it is a Bone or an - // Object3D. Use the skins' joint references to mark bones. - for ( var skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex ++ ) { - - var joints = skinDefs[ skinIndex ].joints; - - for ( var i = 0, il = joints.length; i < il; i ++ ) { - - nodeDefs[ joints[ i ] ].isBone = true; - - } - - } - - // Meshes can (and should) be reused by multiple nodes in a glTF asset. To - // avoid having more than one THREE.Mesh with the same name, count - // references and rename instances below. - // - // Example: CesiumMilkTruck sample model reuses "Wheel" meshes. - for ( var nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) { - - var nodeDef = nodeDefs[ nodeIndex ]; - - if ( nodeDef.mesh !== undefined ) { - - if ( meshReferences[ nodeDef.mesh ] === undefined ) { - - meshReferences[ nodeDef.mesh ] = meshUses[ nodeDef.mesh ] = 0; - - } - - meshReferences[ nodeDef.mesh ] ++; - - // Nothing in the mesh definition indicates whether it is - // a SkinnedMesh or Mesh. Use the node's mesh reference - // to mark SkinnedMesh if node has skin. - if ( nodeDef.skin !== undefined ) { - - meshDefs[ nodeDef.mesh ].isSkinnedMesh = true; - - } - - } - - } - - this.json.meshReferences = meshReferences; - this.json.meshUses = meshUses; - - }; - - /** - * Requests the specified dependency asynchronously, with caching. - * @param {string} type - * @param {number} index - * @return {Promise} - */ - GLTFParser.prototype.getDependency = function ( type, index ) { - - var cacheKey = type + ':' + index; - var dependency = this.cache.get( cacheKey ); - - if ( ! dependency ) { - - switch ( type ) { - - case 'scene': - dependency = this.loadScene( index ); - break; - - case 'node': - dependency = this.loadNode( index ); - break; - - case 'mesh': - dependency = this.loadMesh( index ); - break; - - case 'accessor': - dependency = this.loadAccessor( index ); - break; - - case 'bufferView': - dependency = this.loadBufferView( index ); - break; - - case 'buffer': - dependency = this.loadBuffer( index ); - break; - - case 'material': - dependency = this.loadMaterial( index ); - break; - - case 'texture': - dependency = this.loadTexture( index ); - break; - - case 'skin': - dependency = this.loadSkin( index ); - break; - - case 'animation': - dependency = this.loadAnimation( index ); - break; - - case 'camera': - dependency = this.loadCamera( index ); - break; - - case 'light': - dependency = this.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].loadLight( index ); - break; - - default: - throw new Error( 'Unknown type: ' + type ); - - } - - this.cache.add( cacheKey, dependency ); - - } - - return dependency; - - }; - - /** - * Requests all dependencies of the specified type asynchronously, with caching. - * @param {string} type - * @return {Promise>} - */ - GLTFParser.prototype.getDependencies = function ( type ) { - - var dependencies = this.cache.get( type ); - - if ( ! dependencies ) { - - var parser = this; - var defs = this.json[ type + ( type === 'mesh' ? 'es' : 's' ) ] || []; - - dependencies = Promise.all( defs.map( function ( def, index ) { - - return parser.getDependency( type, index ); - - } ) ); - - this.cache.add( type, dependencies ); - - } - - return dependencies; - - }; - - /** - * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views - * @param {number} bufferIndex - * @return {Promise} - */ - GLTFParser.prototype.loadBuffer = function ( bufferIndex ) { - - var bufferDef = this.json.buffers[ bufferIndex ]; - var loader = this.fileLoader; - - if ( bufferDef.type && bufferDef.type !== 'arraybuffer' ) { - - throw new Error( 'THREE.GLTFLoader: ' + bufferDef.type + ' buffer type is not supported.' ); - - } - - // If present, GLB container is required to be the first buffer. - if ( bufferDef.uri === undefined && bufferIndex === 0 ) { - - return Promise.resolve( this.extensions[ EXTENSIONS.KHR_BINARY_GLTF ].body ); - - } - - var options = this.options; - - return new Promise( function ( resolve, reject ) { - - loader.load( resolveURL( bufferDef.uri, options.path ), resolve, undefined, function () { - - reject( new Error( 'THREE.GLTFLoader: Failed to load buffer "' + bufferDef.uri + '".' ) ); - - } ); - - } ); - - }; - - /** - * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views - * @param {number} bufferViewIndex - * @return {Promise} - */ - GLTFParser.prototype.loadBufferView = function ( bufferViewIndex ) { - - var bufferViewDef = this.json.bufferViews[ bufferViewIndex ]; - - return this.getDependency( 'buffer', bufferViewDef.buffer ).then( function ( buffer ) { - - var byteLength = bufferViewDef.byteLength || 0; - var byteOffset = bufferViewDef.byteOffset || 0; - return buffer.slice( byteOffset, byteOffset + byteLength ); - - } ); - - }; - - /** - * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors - * @param {number} accessorIndex - * @return {Promise} - */ - GLTFParser.prototype.loadAccessor = function ( accessorIndex ) { - - var parser = this; - var json = this.json; - - var accessorDef = this.json.accessors[ accessorIndex ]; - - if ( accessorDef.bufferView === undefined && accessorDef.sparse === undefined ) { - - // Ignore empty accessors, which may be used to declare runtime - // information about attributes coming from another source (e.g. Draco - // compression extension). - return Promise.resolve( null ); - - } - - var pendingBufferViews = []; - - if ( accessorDef.bufferView !== undefined ) { - - pendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.bufferView ) ); - - } else { - - pendingBufferViews.push( null ); - - } - - if ( accessorDef.sparse !== undefined ) { - - pendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.indices.bufferView ) ); - pendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.values.bufferView ) ); - - } - - return Promise.all( pendingBufferViews ).then( function ( bufferViews ) { - - var bufferView = bufferViews[ 0 ]; - - var itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ]; - var TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ]; - - // For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12. - var elementBytes = TypedArray.BYTES_PER_ELEMENT; - var itemBytes = elementBytes * itemSize; - var byteOffset = accessorDef.byteOffset || 0; - var byteStride = accessorDef.bufferView !== undefined ? json.bufferViews[ accessorDef.bufferView ].byteStride : undefined; - var normalized = accessorDef.normalized === true; - var array, bufferAttribute; - - // The buffer is not interleaved if the stride is the item size in bytes. - if ( byteStride && byteStride !== itemBytes ) { - - var ibCacheKey = 'InterleavedBuffer:' + accessorDef.bufferView + ':' + accessorDef.componentType; - var ib = parser.cache.get( ibCacheKey ); - - if ( ! ib ) { - - // Use the full buffer if it's interleaved. - array = new TypedArray( bufferView ); - - // Integer parameters to IB/IBA are in array elements, not bytes. - ib = new THREE.InterleavedBuffer( array, byteStride / elementBytes ); - - parser.cache.add( ibCacheKey, ib ); - - } - - bufferAttribute = new THREE.InterleavedBufferAttribute( ib, itemSize, byteOffset / elementBytes, normalized ); - - } else { - - if ( bufferView === null ) { - - array = new TypedArray( accessorDef.count * itemSize ); - - } else { - - array = new TypedArray( bufferView, byteOffset, accessorDef.count * itemSize ); - - } - - bufferAttribute = new THREE.BufferAttribute( array, itemSize, normalized ); - - } - - // https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors - if ( accessorDef.sparse !== undefined ) { - - var itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR; - var TypedArrayIndices = WEBGL_COMPONENT_TYPES[ accessorDef.sparse.indices.componentType ]; - - var byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0; - var byteOffsetValues = accessorDef.sparse.values.byteOffset || 0; - - var sparseIndices = new TypedArrayIndices( bufferViews[ 1 ], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices ); - var sparseValues = new TypedArray( bufferViews[ 2 ], byteOffsetValues, accessorDef.sparse.count * itemSize ); - - if ( bufferView !== null ) { - - // Avoid modifying the original ArrayBuffer, if the bufferView wasn't initialized with zeroes. - bufferAttribute.setArray( bufferAttribute.array.slice() ); - - } - - for ( var i = 0, il = sparseIndices.length; i < il; i ++ ) { - - var index = sparseIndices[ i ]; - - bufferAttribute.setX( index, sparseValues[ i * itemSize ] ); - if ( itemSize >= 2 ) bufferAttribute.setY( index, sparseValues[ i * itemSize + 1 ] ); - if ( itemSize >= 3 ) bufferAttribute.setZ( index, sparseValues[ i * itemSize + 2 ] ); - if ( itemSize >= 4 ) bufferAttribute.setW( index, sparseValues[ i * itemSize + 3 ] ); - if ( itemSize >= 5 ) throw new Error( 'THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.' ); - - } - - } - - return bufferAttribute; - - } ); - - }; - - /** - * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures - * @param {number} textureIndex - * @return {Promise} - */ - GLTFParser.prototype.loadTexture = function ( textureIndex ) { - - var parser = this; - var json = this.json; - var options = this.options; - var textureLoader = this.textureLoader; - - var URL = window.URL || window.webkitURL; - - var textureDef = json.textures[ textureIndex ]; - - var textureExtensions = textureDef.extensions || {}; - - var source; - - if ( textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ] ) { - - source = json.images[ textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ].source ]; - - } else { - - source = json.images[ textureDef.source ]; - - } - - var sourceURI = source.uri; - var isObjectURL = false; - - if ( source.bufferView !== undefined ) { - - // Load binary image data from bufferView, if provided. - - sourceURI = parser.getDependency( 'bufferView', source.bufferView ).then( function ( bufferView ) { - - isObjectURL = true; - var blob = new Blob( [ bufferView ], { type: source.mimeType } ); - sourceURI = URL.createObjectURL( blob ); - return sourceURI; - - } ); - - } - - return Promise.resolve( sourceURI ).then( function ( sourceURI ) { - - // Load Texture resource. - - var loader = THREE.Loader.Handlers.get( sourceURI ); - - if ( ! loader ) { - - loader = textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ] - ? parser.extensions[ EXTENSIONS.MSFT_TEXTURE_DDS ].ddsLoader - : textureLoader; - - } - - return new Promise( function ( resolve, reject ) { - - loader.load( resolveURL( sourceURI, options.path ), resolve, undefined, reject ); - - } ); - - } ).then( function ( texture ) { - - // Clean up resources and configure Texture. - - if ( isObjectURL === true ) { - - URL.revokeObjectURL( sourceURI ); - - } - - texture.flipY = false; - - if ( textureDef.name !== undefined ) texture.name = textureDef.name; - - // Ignore unknown mime types, like DDS files. - if ( source.mimeType in MIME_TYPE_FORMATS ) { - - texture.format = MIME_TYPE_FORMATS[ source.mimeType ]; - - } - - var samplers = json.samplers || {}; - var sampler = samplers[ textureDef.sampler ] || {}; - - texture.magFilter = WEBGL_FILTERS[ sampler.magFilter ] || THREE.LinearFilter; - texture.minFilter = WEBGL_FILTERS[ sampler.minFilter ] || THREE.LinearMipMapLinearFilter; - texture.wrapS = WEBGL_WRAPPINGS[ sampler.wrapS ] || THREE.RepeatWrapping; - texture.wrapT = WEBGL_WRAPPINGS[ sampler.wrapT ] || THREE.RepeatWrapping; - - return texture; - - } ); - - }; - - /** - * Asynchronously assigns a texture to the given material parameters. - * @param {Object} materialParams - * @param {string} mapName - * @param {Object} mapDef - * @return {Promise} - */ - GLTFParser.prototype.assignTexture = function ( materialParams, mapName, mapDef ) { - - var parser = this; - - return this.getDependency( 'texture', mapDef.index ).then( function ( texture ) { - - if ( ! texture.isCompressedTexture ) { - - switch ( mapName ) { - - case 'aoMap': - case 'emissiveMap': - case 'metalnessMap': - case 'normalMap': - case 'roughnessMap': - texture.format = THREE.RGBFormat; - break; - - } - - } - - if ( parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] ) { - - var transform = mapDef.extensions !== undefined ? mapDef.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] : undefined; - - if ( transform ) { - - texture = parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ].extendTexture( texture, transform ); - - } - - } - - materialParams[ mapName ] = texture; - - } ); - - }; - - /** - * Assigns final material to a Mesh, Line, or Points instance. The instance - * already has a material (generated from the glTF material options alone) - * but reuse of the same glTF material may require multiple threejs materials - * to accomodate different primitive types, defines, etc. New materials will - * be created if necessary, and reused from a cache. - * @param {THREE.Object3D} mesh Mesh, Line, or Points instance. - */ - GLTFParser.prototype.assignFinalMaterial = function ( mesh ) { - - var geometry = mesh.geometry; - var material = mesh.material; - var extensions = this.extensions; - - var useVertexTangents = geometry.attributes.tangent !== undefined; - var useVertexColors = geometry.attributes.color !== undefined; - var useFlatShading = geometry.attributes.normal === undefined; - var useSkinning = mesh.isSkinnedMesh === true; - var useMorphTargets = Object.keys( geometry.morphAttributes ).length > 0; - var useMorphNormals = useMorphTargets && geometry.morphAttributes.normal !== undefined; - - if ( mesh.isPoints ) { - - var cacheKey = 'PointsMaterial:' + material.uuid; - - var pointsMaterial = this.cache.get( cacheKey ); - - if ( ! pointsMaterial ) { - - pointsMaterial = new THREE.PointsMaterial(); - THREE.Material.prototype.copy.call( pointsMaterial, material ); - pointsMaterial.color.copy( material.color ); - pointsMaterial.map = material.map; - pointsMaterial.lights = false; // PointsMaterial doesn't support lights yet - - this.cache.add( cacheKey, pointsMaterial ); - - } - - material = pointsMaterial; - - } else if ( mesh.isLine ) { - - var cacheKey = 'LineBasicMaterial:' + material.uuid; - - var lineMaterial = this.cache.get( cacheKey ); - - if ( ! lineMaterial ) { - - lineMaterial = new THREE.LineBasicMaterial(); - THREE.Material.prototype.copy.call( lineMaterial, material ); - lineMaterial.color.copy( material.color ); - lineMaterial.lights = false; // LineBasicMaterial doesn't support lights yet - - this.cache.add( cacheKey, lineMaterial ); - - } - - material = lineMaterial; - - } - - // Clone the material if it will be modified - if ( useVertexTangents || useVertexColors || useFlatShading || useSkinning || useMorphTargets ) { - - var cacheKey = 'ClonedMaterial:' + material.uuid + ':'; - - if ( material.isGLTFSpecularGlossinessMaterial ) cacheKey += 'specular-glossiness:'; - if ( useSkinning ) cacheKey += 'skinning:'; - if ( useVertexTangents ) cacheKey += 'vertex-tangents:'; - if ( useVertexColors ) cacheKey += 'vertex-colors:'; - if ( useFlatShading ) cacheKey += 'flat-shading:'; - if ( useMorphTargets ) cacheKey += 'morph-targets:'; - if ( useMorphNormals ) cacheKey += 'morph-normals:'; - - var cachedMaterial = this.cache.get( cacheKey ); - - if ( ! cachedMaterial ) { - - cachedMaterial = material.isGLTFSpecularGlossinessMaterial - ? extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].cloneMaterial( material ) - : material.clone(); - - if ( useSkinning ) cachedMaterial.skinning = true; - if ( useVertexTangents ) cachedMaterial.vertexTangents = true; - if ( useVertexColors ) cachedMaterial.vertexColors = THREE.VertexColors; - if ( useFlatShading ) cachedMaterial.flatShading = true; - if ( useMorphTargets ) cachedMaterial.morphTargets = true; - if ( useMorphNormals ) cachedMaterial.morphNormals = true; - - this.cache.add( cacheKey, cachedMaterial ); - - } - - material = cachedMaterial; - - } - - // workarounds for mesh and geometry - - if ( material.aoMap && geometry.attributes.uv2 === undefined && geometry.attributes.uv !== undefined ) { - - console.log( 'THREE.GLTFLoader: Duplicating UVs to support aoMap.' ); - geometry.addAttribute( 'uv2', new THREE.BufferAttribute( geometry.attributes.uv.array, 2 ) ); - - } - - if ( material.isGLTFSpecularGlossinessMaterial ) { - - // for GLTFSpecularGlossinessMaterial(ShaderMaterial) uniforms runtime update - mesh.onBeforeRender = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].refreshUniforms; - - } - - mesh.material = material; - - }; - - /** - * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials - * @param {number} materialIndex - * @return {Promise} - */ - GLTFParser.prototype.loadMaterial = function ( materialIndex ) { - - var parser = this; - var json = this.json; - var extensions = this.extensions; - var materialDef = json.materials[ materialIndex ]; - - var materialType; - var materialParams = {}; - var materialExtensions = materialDef.extensions || {}; - - var pending = []; - - if ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ] ) { - - var sgExtension = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ]; - materialType = sgExtension.getMaterialType(); - pending.push( sgExtension.extendParams( materialParams, materialDef, parser ) ); - - } else if ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ] ) { - - var kmuExtension = extensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ]; - materialType = kmuExtension.getMaterialType(); - pending.push( kmuExtension.extendParams( materialParams, materialDef, parser ) ); - - } else { - - // Specification: - // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material - - materialType = THREE.MeshStandardMaterial; - - var metallicRoughness = materialDef.pbrMetallicRoughness || {}; - - materialParams.color = new THREE.Color( 1.0, 1.0, 1.0 ); - materialParams.opacity = 1.0; - - if ( Array.isArray( metallicRoughness.baseColorFactor ) ) { - - var array = metallicRoughness.baseColorFactor; - - materialParams.color.fromArray( array ); - materialParams.opacity = array[ 3 ]; - - } - - if ( metallicRoughness.baseColorTexture !== undefined ) { - - pending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture ) ); - - } - - materialParams.metalness = metallicRoughness.metallicFactor !== undefined ? metallicRoughness.metallicFactor : 1.0; - materialParams.roughness = metallicRoughness.roughnessFactor !== undefined ? metallicRoughness.roughnessFactor : 1.0; - - if ( metallicRoughness.metallicRoughnessTexture !== undefined ) { - - pending.push( parser.assignTexture( materialParams, 'metalnessMap', metallicRoughness.metallicRoughnessTexture ) ); - pending.push( parser.assignTexture( materialParams, 'roughnessMap', metallicRoughness.metallicRoughnessTexture ) ); - - } - - } - - if ( materialDef.doubleSided === true ) { - - materialParams.side = THREE.DoubleSide; - - } - - var alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE; - - if ( alphaMode === ALPHA_MODES.BLEND ) { - - materialParams.transparent = true; - - } else { - - materialParams.transparent = false; - - if ( alphaMode === ALPHA_MODES.MASK ) { - - materialParams.alphaTest = materialDef.alphaCutoff !== undefined ? materialDef.alphaCutoff : 0.5; - - } - - } - - if ( materialDef.normalTexture !== undefined && materialType !== THREE.MeshBasicMaterial ) { - - pending.push( parser.assignTexture( materialParams, 'normalMap', materialDef.normalTexture ) ); - - materialParams.normalScale = new THREE.Vector2( 1, 1 ); - - if ( materialDef.normalTexture.scale !== undefined ) { - - materialParams.normalScale.set( materialDef.normalTexture.scale, materialDef.normalTexture.scale ); - - } - - } - - if ( materialDef.occlusionTexture !== undefined && materialType !== THREE.MeshBasicMaterial ) { - - pending.push( parser.assignTexture( materialParams, 'aoMap', materialDef.occlusionTexture ) ); - - if ( materialDef.occlusionTexture.strength !== undefined ) { - - materialParams.aoMapIntensity = materialDef.occlusionTexture.strength; - - } - - } - - if ( materialDef.emissiveFactor !== undefined && materialType !== THREE.MeshBasicMaterial ) { - - materialParams.emissive = new THREE.Color().fromArray( materialDef.emissiveFactor ); - - } - - if ( materialDef.emissiveTexture !== undefined && materialType !== THREE.MeshBasicMaterial ) { - - pending.push( parser.assignTexture( materialParams, 'emissiveMap', materialDef.emissiveTexture ) ); - - } - - return Promise.all( pending ).then( function () { - - var material; - - if ( materialType === THREE.ShaderMaterial ) { - - material = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].createMaterial( materialParams ); - - } else { - - material = new materialType( materialParams ); - - } - - if ( materialDef.name !== undefined ) material.name = materialDef.name; - - // baseColorTexture, emissiveTexture, and specularGlossinessTexture use sRGB encoding. - if ( material.map ) material.map.encoding = THREE.sRGBEncoding; - if ( material.emissiveMap ) material.emissiveMap.encoding = THREE.sRGBEncoding; - if ( material.specularMap ) material.specularMap.encoding = THREE.sRGBEncoding; - - assignExtrasToUserData( material, materialDef ); - - if ( materialDef.extensions ) addUnknownExtensionsToUserData( extensions, material, materialDef ); - - return material; - - } ); - - }; - - /** - * @param {THREE.BufferGeometry} geometry - * @param {GLTF.Primitive} primitiveDef - * @param {GLTFParser} parser - * @return {Promise} - */ - function addPrimitiveAttributes( geometry, primitiveDef, parser ) { - - var attributes = primitiveDef.attributes; - - var pending = []; - - function assignAttributeAccessor( accessorIndex, attributeName ) { - - return parser.getDependency( 'accessor', accessorIndex ) - .then( function ( accessor ) { - - geometry.addAttribute( attributeName, accessor ); - - } ); - - } - - for ( var gltfAttributeName in attributes ) { - - var threeAttributeName = ATTRIBUTES[ gltfAttributeName ] || gltfAttributeName.toLowerCase(); - - // Skip attributes already provided by e.g. Draco extension. - if ( threeAttributeName in geometry.attributes ) continue; - - pending.push( assignAttributeAccessor( attributes[ gltfAttributeName ], threeAttributeName ) ); - - } - - if ( primitiveDef.indices !== undefined && ! geometry.index ) { - - var accessor = parser.getDependency( 'accessor', primitiveDef.indices ).then( function ( accessor ) { - - geometry.setIndex( accessor ); - - } ); - - pending.push( accessor ); - - } - - assignExtrasToUserData( geometry, primitiveDef ); - - return Promise.all( pending ).then( function () { - - return primitiveDef.targets !== undefined - ? addMorphTargets( geometry, primitiveDef.targets, parser ) - : geometry; - - } ); - - } - - /** - * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry - * - * Creates BufferGeometries from primitives. - * - * @param {Array} primitives - * @return {Promise>} - */ - GLTFParser.prototype.loadGeometries = function ( primitives ) { - - var parser = this; - var extensions = this.extensions; - var cache = this.primitiveCache; - - function createDracoPrimitive( primitive ) { - - return extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] - .decodePrimitive( primitive, parser ) - .then( function ( geometry ) { - - return addPrimitiveAttributes( geometry, primitive, parser ); - - } ); - - } - - var pending = []; - - for ( var i = 0, il = primitives.length; i < il; i ++ ) { - - var primitive = primitives[ i ]; - var cacheKey = createPrimitiveKey( primitive ); - - // See if we've already created this geometry - var cached = cache[ cacheKey ]; - - if ( cached ) { - - // Use the cached geometry if it exists - pending.push( cached.promise ); - - } else { - - var geometryPromise; - - if ( primitive.extensions && primitive.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] ) { - - // Use DRACO geometry if available - geometryPromise = createDracoPrimitive( primitive ); - - } else { - - // Otherwise create a new geometry - geometryPromise = addPrimitiveAttributes( new THREE.BufferGeometry(), primitive, parser ); - - } - - // Cache this geometry - cache[ cacheKey ] = { primitive: primitive, promise: geometryPromise }; - - pending.push( geometryPromise ); - - } - - } - - return Promise.all( pending ); - - }; - - /** - * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes - * @param {number} meshIndex - * @return {Promise} - */ - GLTFParser.prototype.loadMesh = function ( meshIndex ) { - - var parser = this; - var json = this.json; - var extensions = this.extensions; - - var meshDef = json.meshes[ meshIndex ]; - var primitives = meshDef.primitives; - - var pending = []; - - for ( var i = 0, il = primitives.length; i < il; i ++ ) { - - var material = primitives[ i ].material === undefined - ? createDefaultMaterial() - : this.getDependency( 'material', primitives[ i ].material ); - - pending.push( material ); - - } - - return Promise.all( pending ).then( function ( originalMaterials ) { - - return parser.loadGeometries( primitives ).then( function ( geometries ) { - - var meshes = []; - - for ( var i = 0, il = geometries.length; i < il; i ++ ) { - - var geometry = geometries[ i ]; - var primitive = primitives[ i ]; - - // 1. create Mesh - - var mesh; - - var material = originalMaterials[ i ]; - - if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLES || - primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP || - primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN || - primitive.mode === undefined ) { - - // .isSkinnedMesh isn't in glTF spec. See .markDefs() - mesh = meshDef.isSkinnedMesh === true - ? new THREE.SkinnedMesh( geometry, material ) - : new THREE.Mesh( geometry, material ); - - if ( mesh.isSkinnedMesh === true ) mesh.normalizeSkinWeights(); // #15319 - - if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ) { - - mesh.drawMode = THREE.TriangleStripDrawMode; - - } else if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ) { - - mesh.drawMode = THREE.TriangleFanDrawMode; - - } - - } else if ( primitive.mode === WEBGL_CONSTANTS.LINES ) { - - mesh = new THREE.LineSegments( geometry, material ); - - } else if ( primitive.mode === WEBGL_CONSTANTS.LINE_STRIP ) { - - mesh = new THREE.Line( geometry, material ); - - } else if ( primitive.mode === WEBGL_CONSTANTS.LINE_LOOP ) { - - mesh = new THREE.LineLoop( geometry, material ); - - } else if ( primitive.mode === WEBGL_CONSTANTS.POINTS ) { - - mesh = new THREE.Points( geometry, material ); - - } else { - - throw new Error( 'THREE.GLTFLoader: Primitive mode unsupported: ' + primitive.mode ); - - } - - if ( Object.keys( mesh.geometry.morphAttributes ).length > 0 ) { - - updateMorphTargets( mesh, meshDef ); - - } - - mesh.name = meshDef.name || ( 'mesh_' + meshIndex ); - - if ( geometries.length > 1 ) mesh.name += '_' + i; - - assignExtrasToUserData( mesh, meshDef ); - - parser.assignFinalMaterial( mesh ); - - meshes.push( mesh ); - - } - - if ( meshes.length === 1 ) { - - return meshes[ 0 ]; - - } - - var group = new THREE.Group(); - - for ( var i = 0, il = meshes.length; i < il; i ++ ) { - - group.add( meshes[ i ] ); - - } - - return group; - - } ); - - } ); - - }; - - /** - * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras - * @param {number} cameraIndex - * @return {Promise} - */ - GLTFParser.prototype.loadCamera = function ( cameraIndex ) { - - var camera; - var cameraDef = this.json.cameras[ cameraIndex ]; - var params = cameraDef[ cameraDef.type ]; - - if ( ! params ) { - - console.warn( 'THREE.GLTFLoader: Missing camera parameters.' ); - return; - - } - - if ( cameraDef.type === 'perspective' ) { - - camera = new THREE.PerspectiveCamera( THREE.Math.radToDeg( params.yfov ), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6 ); - - } else if ( cameraDef.type === 'orthographic' ) { - - camera = new THREE.OrthographicCamera( params.xmag / - 2, params.xmag / 2, params.ymag / 2, params.ymag / - 2, params.znear, params.zfar ); - - } - - if ( cameraDef.name !== undefined ) camera.name = cameraDef.name; - - assignExtrasToUserData( camera, cameraDef ); - - return Promise.resolve( camera ); - - }; - - /** - * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins - * @param {number} skinIndex - * @return {Promise} - */ - GLTFParser.prototype.loadSkin = function ( skinIndex ) { - - var skinDef = this.json.skins[ skinIndex ]; - - var skinEntry = { joints: skinDef.joints }; - - if ( skinDef.inverseBindMatrices === undefined ) { - - return Promise.resolve( skinEntry ); - - } - - return this.getDependency( 'accessor', skinDef.inverseBindMatrices ).then( function ( accessor ) { - - skinEntry.inverseBindMatrices = accessor; - - return skinEntry; - - } ); - - }; - - /** - * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations - * @param {number} animationIndex - * @return {Promise} - */ - GLTFParser.prototype.loadAnimation = function ( animationIndex ) { - - var json = this.json; - - var animationDef = json.animations[ animationIndex ]; - - var pendingNodes = []; - var pendingInputAccessors = []; - var pendingOutputAccessors = []; - var pendingSamplers = []; - var pendingTargets = []; - - for ( var i = 0, il = animationDef.channels.length; i < il; i ++ ) { - - var channel = animationDef.channels[ i ]; - var sampler = animationDef.samplers[ channel.sampler ]; - var target = channel.target; - var name = target.node !== undefined ? target.node : target.id; // NOTE: target.id is deprecated. - var input = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.input ] : sampler.input; - var output = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.output ] : sampler.output; - - pendingNodes.push( this.getDependency( 'node', name ) ); - pendingInputAccessors.push( this.getDependency( 'accessor', input ) ); - pendingOutputAccessors.push( this.getDependency( 'accessor', output ) ); - pendingSamplers.push( sampler ); - pendingTargets.push( target ); - - } - - return Promise.all( [ - - Promise.all( pendingNodes ), - Promise.all( pendingInputAccessors ), - Promise.all( pendingOutputAccessors ), - Promise.all( pendingSamplers ), - Promise.all( pendingTargets ) - - ] ).then( function ( dependencies ) { - - var nodes = dependencies[ 0 ]; - var inputAccessors = dependencies[ 1 ]; - var outputAccessors = dependencies[ 2 ]; - var samplers = dependencies[ 3 ]; - var targets = dependencies[ 4 ]; - - var tracks = []; - - for ( var i = 0, il = nodes.length; i < il; i ++ ) { - - var node = nodes[ i ]; - var inputAccessor = inputAccessors[ i ]; - var outputAccessor = outputAccessors[ i ]; - var sampler = samplers[ i ]; - var target = targets[ i ]; - - if ( node === undefined ) continue; - - node.updateMatrix(); - node.matrixAutoUpdate = true; - - var TypedKeyframeTrack; - - switch ( PATH_PROPERTIES[ target.path ] ) { - - case PATH_PROPERTIES.weights: - - TypedKeyframeTrack = THREE.NumberKeyframeTrack; - break; - - case PATH_PROPERTIES.rotation: - - TypedKeyframeTrack = THREE.QuaternionKeyframeTrack; - break; - - case PATH_PROPERTIES.position: - case PATH_PROPERTIES.scale: - default: - - TypedKeyframeTrack = THREE.VectorKeyframeTrack; - break; - - } - - var targetName = node.name ? node.name : node.uuid; - - var interpolation = sampler.interpolation !== undefined ? INTERPOLATION[ sampler.interpolation ] : THREE.InterpolateLinear; - - var targetNames = []; - - if ( PATH_PROPERTIES[ target.path ] === PATH_PROPERTIES.weights ) { - - // Node may be a THREE.Group (glTF mesh with several primitives) or a THREE.Mesh. - node.traverse( function ( object ) { - - if ( object.isMesh === true && object.morphTargetInfluences ) { - - targetNames.push( object.name ? object.name : object.uuid ); - - } - - } ); - - } else { - - targetNames.push( targetName ); - - } - - for ( var j = 0, jl = targetNames.length; j < jl; j ++ ) { - - var track = new TypedKeyframeTrack( - targetNames[ j ] + '.' + PATH_PROPERTIES[ target.path ], - inputAccessor.array, - outputAccessor.array, - interpolation - ); - - // Override interpolation with custom factory method. - if ( sampler.interpolation === 'CUBICSPLINE' ) { - - track.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline( result ) { - - // A CUBICSPLINE keyframe in glTF has three output values for each input value, - // representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize() - // must be divided by three to get the interpolant's sampleSize argument. - - return new GLTFCubicSplineInterpolant( this.times, this.values, this.getValueSize() / 3, result ); - - }; - - // Mark as CUBICSPLINE. `track.getInterpolation()` doesn't support custom interpolants. - track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true; - - } - - tracks.push( track ); - - } - - } - - var name = animationDef.name !== undefined ? animationDef.name : 'animation_' + animationIndex; - - return new THREE.AnimationClip( name, undefined, tracks ); - - } ); - - }; - - /** - * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy - * @param {number} nodeIndex - * @return {Promise} - */ - GLTFParser.prototype.loadNode = function ( nodeIndex ) { - - var json = this.json; - var extensions = this.extensions; - var parser = this; - - var meshReferences = json.meshReferences; - var meshUses = json.meshUses; - - var nodeDef = json.nodes[ nodeIndex ]; - - return ( function () { - - // .isBone isn't in glTF spec. See .markDefs - if ( nodeDef.isBone === true ) { - - return Promise.resolve( new THREE.Bone() ); - - } else if ( nodeDef.mesh !== undefined ) { - - return parser.getDependency( 'mesh', nodeDef.mesh ).then( function ( mesh ) { - - var node; - - if ( meshReferences[ nodeDef.mesh ] > 1 ) { - - var instanceNum = meshUses[ nodeDef.mesh ] ++; - - node = mesh.clone(); - node.name += '_instance_' + instanceNum; - - // onBeforeRender copy for Specular-Glossiness - node.onBeforeRender = mesh.onBeforeRender; - - for ( var i = 0, il = node.children.length; i < il; i ++ ) { - - node.children[ i ].name += '_instance_' + instanceNum; - node.children[ i ].onBeforeRender = mesh.children[ i ].onBeforeRender; - - } - - } else { - - node = mesh; - - } - - // if weights are provided on the node, override weights on the mesh. - if ( nodeDef.weights !== undefined ) { - - node.traverse( function ( o ) { - - if ( ! o.isMesh ) return; - - for ( var i = 0, il = nodeDef.weights.length; i < il; i ++ ) { - - o.morphTargetInfluences[ i ] = nodeDef.weights[ i ]; - - } - - } ); - - } - - return node; - - } ); - - } else if ( nodeDef.camera !== undefined ) { - - return parser.getDependency( 'camera', nodeDef.camera ); - - } else if ( nodeDef.extensions - && nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ] - && nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light !== undefined ) { - - return parser.getDependency( 'light', nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light ); - - } else { - - return Promise.resolve( new THREE.Object3D() ); - - } - - }() ).then( function ( node ) { - - if ( nodeDef.name !== undefined ) { - - node.userData.name = nodeDef.name; - node.name = THREE.PropertyBinding.sanitizeNodeName( nodeDef.name ); - - } - - assignExtrasToUserData( node, nodeDef ); - - if ( nodeDef.extensions ) addUnknownExtensionsToUserData( extensions, node, nodeDef ); - - if ( nodeDef.matrix !== undefined ) { - - var matrix = new THREE.Matrix4(); - matrix.fromArray( nodeDef.matrix ); - node.applyMatrix( matrix ); - - } else { - - if ( nodeDef.translation !== undefined ) { - - node.position.fromArray( nodeDef.translation ); - - } - - if ( nodeDef.rotation !== undefined ) { - - node.quaternion.fromArray( nodeDef.rotation ); - - } - - if ( nodeDef.scale !== undefined ) { - - node.scale.fromArray( nodeDef.scale ); - - } - - } - - return node; - - } ); - - }; - - /** - * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes - * @param {number} sceneIndex - * @return {Promise} - */ - GLTFParser.prototype.loadScene = function () { - - // scene node hierachy builder - - function buildNodeHierachy( nodeId, parentObject, json, parser ) { - - var nodeDef = json.nodes[ nodeId ]; - - return parser.getDependency( 'node', nodeId ).then( function ( node ) { - - if ( nodeDef.skin === undefined ) return node; - - // build skeleton here as well - - var skinEntry; - - return parser.getDependency( 'skin', nodeDef.skin ).then( function ( skin ) { - - skinEntry = skin; - - var pendingJoints = []; - - for ( var i = 0, il = skinEntry.joints.length; i < il; i ++ ) { - - pendingJoints.push( parser.getDependency( 'node', skinEntry.joints[ i ] ) ); - - } - - return Promise.all( pendingJoints ); - - } ).then( function ( jointNodes ) { - - var meshes = node.isGroup === true ? node.children : [ node ]; - - for ( var i = 0, il = meshes.length; i < il; i ++ ) { - - var mesh = meshes[ i ]; - - var bones = []; - var boneInverses = []; - - for ( var j = 0, jl = jointNodes.length; j < jl; j ++ ) { - - var jointNode = jointNodes[ j ]; - - if ( jointNode ) { - - bones.push( jointNode ); - - var mat = new THREE.Matrix4(); - - if ( skinEntry.inverseBindMatrices !== undefined ) { - - mat.fromArray( skinEntry.inverseBindMatrices.array, j * 16 ); - - } - - boneInverses.push( mat ); - - } else { - - console.warn( 'THREE.GLTFLoader: Joint "%s" could not be found.', skinEntry.joints[ j ] ); - - } - - } - - mesh.bind( new THREE.Skeleton( bones, boneInverses ), mesh.matrixWorld ); - - } - - return node; - - } ); - - } ).then( function ( node ) { - - // build node hierachy - - parentObject.add( node ); - - var pending = []; - - if ( nodeDef.children ) { - - var children = nodeDef.children; - - for ( var i = 0, il = children.length; i < il; i ++ ) { - - var child = children[ i ]; - pending.push( buildNodeHierachy( child, node, json, parser ) ); - - } - - } - - return Promise.all( pending ); - - } ); - - } - - return function loadScene( sceneIndex ) { - - var json = this.json; - var extensions = this.extensions; - var sceneDef = this.json.scenes[ sceneIndex ]; - var parser = this; - - var scene = new THREE.Scene(); - if ( sceneDef.name !== undefined ) scene.name = sceneDef.name; - - assignExtrasToUserData( scene, sceneDef ); - - if ( sceneDef.extensions ) addUnknownExtensionsToUserData( extensions, scene, sceneDef ); - - var nodeIds = sceneDef.nodes || []; - - var pending = []; - - for ( var i = 0, il = nodeIds.length; i < il; i ++ ) { - - pending.push( buildNodeHierachy( nodeIds[ i ], scene, json, parser ) ); - - } - - return Promise.all( pending ).then( function () { - - return scene; - - } ); - - }; - - }(); - - return GLTFLoader; - -} )(); diff --git a/Elements.Wasm/wwwroot/js/three.js b/Elements.Wasm/wwwroot/js/three.js deleted file mode 100644 index d54e44fb7..000000000 --- a/Elements.Wasm/wwwroot/js/three.js +++ /dev/null @@ -1,49160 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (global = global || self, factory(global.THREE = {})); -}(this, function (exports) { 'use strict'; - - // Polyfills - - if ( Number.EPSILON === undefined ) { - - Number.EPSILON = Math.pow( 2, - 52 ); - - } - - if ( Number.isInteger === undefined ) { - - // Missing in IE - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger - - Number.isInteger = function ( value ) { - - return typeof value === 'number' && isFinite( value ) && Math.floor( value ) === value; - - }; - - } - - // - - if ( Math.sign === undefined ) { - - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign - - Math.sign = function ( x ) { - - return ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x; - - }; - - } - - if ( 'name' in Function.prototype === false ) { - - // Missing in IE - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name - - Object.defineProperty( Function.prototype, 'name', { - - get: function () { - - return this.toString().match( /^\s*function\s*([^\(\s]*)/ )[ 1 ]; - - } - - } ); - - } - - if ( Object.assign === undefined ) { - - // Missing in IE - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign - - ( function () { - - Object.assign = function ( target ) { - - if ( target === undefined || target === null ) { - - throw new TypeError( 'Cannot convert undefined or null to object' ); - - } - - var output = Object( target ); - - for ( var index = 1; index < arguments.length; index ++ ) { - - var source = arguments[ index ]; - - if ( source !== undefined && source !== null ) { - - for ( var nextKey in source ) { - - if ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) { - - output[ nextKey ] = source[ nextKey ]; - - } - - } - - } - - } - - return output; - - }; - - } )(); - - } - - /** - * https://github.com/mrdoob/eventdispatcher.js/ - */ - - function EventDispatcher() {} - - Object.assign( EventDispatcher.prototype, { - - addEventListener: function ( type, listener ) { - - if ( this._listeners === undefined ) this._listeners = {}; - - var listeners = this._listeners; - - if ( listeners[ type ] === undefined ) { - - listeners[ type ] = []; - - } - - if ( listeners[ type ].indexOf( listener ) === - 1 ) { - - listeners[ type ].push( listener ); - - } - - }, - - hasEventListener: function ( type, listener ) { - - if ( this._listeners === undefined ) return false; - - var listeners = this._listeners; - - return listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1; - - }, - - removeEventListener: function ( type, listener ) { - - if ( this._listeners === undefined ) return; - - var listeners = this._listeners; - var listenerArray = listeners[ type ]; - - if ( listenerArray !== undefined ) { - - var index = listenerArray.indexOf( listener ); - - if ( index !== - 1 ) { - - listenerArray.splice( index, 1 ); - - } - - } - - }, - - dispatchEvent: function ( event ) { - - if ( this._listeners === undefined ) return; - - var listeners = this._listeners; - var listenerArray = listeners[ event.type ]; - - if ( listenerArray !== undefined ) { - - event.target = this; - - var array = listenerArray.slice( 0 ); - - for ( var i = 0, l = array.length; i < l; i ++ ) { - - array[ i ].call( this, event ); - - } - - } - - } - - } ); - - var REVISION = '105'; - var MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2 }; - var CullFaceNone = 0; - var CullFaceBack = 1; - var CullFaceFront = 2; - var CullFaceFrontBack = 3; - var FrontFaceDirectionCW = 0; - var FrontFaceDirectionCCW = 1; - var BasicShadowMap = 0; - var PCFShadowMap = 1; - var PCFSoftShadowMap = 2; - var FrontSide = 0; - var BackSide = 1; - var DoubleSide = 2; - var FlatShading = 1; - var SmoothShading = 2; - var NoColors = 0; - var FaceColors = 1; - var VertexColors = 2; - var NoBlending = 0; - var NormalBlending = 1; - var AdditiveBlending = 2; - var SubtractiveBlending = 3; - var MultiplyBlending = 4; - var CustomBlending = 5; - var AddEquation = 100; - var SubtractEquation = 101; - var ReverseSubtractEquation = 102; - var MinEquation = 103; - var MaxEquation = 104; - var ZeroFactor = 200; - var OneFactor = 201; - var SrcColorFactor = 202; - var OneMinusSrcColorFactor = 203; - var SrcAlphaFactor = 204; - var OneMinusSrcAlphaFactor = 205; - var DstAlphaFactor = 206; - var OneMinusDstAlphaFactor = 207; - var DstColorFactor = 208; - var OneMinusDstColorFactor = 209; - var SrcAlphaSaturateFactor = 210; - var NeverDepth = 0; - var AlwaysDepth = 1; - var LessDepth = 2; - var LessEqualDepth = 3; - var EqualDepth = 4; - var GreaterEqualDepth = 5; - var GreaterDepth = 6; - var NotEqualDepth = 7; - var MultiplyOperation = 0; - var MixOperation = 1; - var AddOperation = 2; - var NoToneMapping = 0; - var LinearToneMapping = 1; - var ReinhardToneMapping = 2; - var Uncharted2ToneMapping = 3; - var CineonToneMapping = 4; - var ACESFilmicToneMapping = 5; - - var UVMapping = 300; - var CubeReflectionMapping = 301; - var CubeRefractionMapping = 302; - var EquirectangularReflectionMapping = 303; - var EquirectangularRefractionMapping = 304; - var SphericalReflectionMapping = 305; - var CubeUVReflectionMapping = 306; - var CubeUVRefractionMapping = 307; - var RepeatWrapping = 1000; - var ClampToEdgeWrapping = 1001; - var MirroredRepeatWrapping = 1002; - var NearestFilter = 1003; - var NearestMipMapNearestFilter = 1004; - var NearestMipMapLinearFilter = 1005; - var LinearFilter = 1006; - var LinearMipMapNearestFilter = 1007; - var LinearMipMapLinearFilter = 1008; - var UnsignedByteType = 1009; - var ByteType = 1010; - var ShortType = 1011; - var UnsignedShortType = 1012; - var IntType = 1013; - var UnsignedIntType = 1014; - var FloatType = 1015; - var HalfFloatType = 1016; - var UnsignedShort4444Type = 1017; - var UnsignedShort5551Type = 1018; - var UnsignedShort565Type = 1019; - var UnsignedInt248Type = 1020; - var AlphaFormat = 1021; - var RGBFormat = 1022; - var RGBAFormat = 1023; - var LuminanceFormat = 1024; - var LuminanceAlphaFormat = 1025; - var RGBEFormat = RGBAFormat; - var DepthFormat = 1026; - var DepthStencilFormat = 1027; - var RedFormat = 1028; - var RGB_S3TC_DXT1_Format = 33776; - var RGBA_S3TC_DXT1_Format = 33777; - var RGBA_S3TC_DXT3_Format = 33778; - var RGBA_S3TC_DXT5_Format = 33779; - var RGB_PVRTC_4BPPV1_Format = 35840; - var RGB_PVRTC_2BPPV1_Format = 35841; - var RGBA_PVRTC_4BPPV1_Format = 35842; - var RGBA_PVRTC_2BPPV1_Format = 35843; - var RGB_ETC1_Format = 36196; - var RGBA_ASTC_4x4_Format = 37808; - var RGBA_ASTC_5x4_Format = 37809; - var RGBA_ASTC_5x5_Format = 37810; - var RGBA_ASTC_6x5_Format = 37811; - var RGBA_ASTC_6x6_Format = 37812; - var RGBA_ASTC_8x5_Format = 37813; - var RGBA_ASTC_8x6_Format = 37814; - var RGBA_ASTC_8x8_Format = 37815; - var RGBA_ASTC_10x5_Format = 37816; - var RGBA_ASTC_10x6_Format = 37817; - var RGBA_ASTC_10x8_Format = 37818; - var RGBA_ASTC_10x10_Format = 37819; - var RGBA_ASTC_12x10_Format = 37820; - var RGBA_ASTC_12x12_Format = 37821; - var LoopOnce = 2200; - var LoopRepeat = 2201; - var LoopPingPong = 2202; - var InterpolateDiscrete = 2300; - var InterpolateLinear = 2301; - var InterpolateSmooth = 2302; - var ZeroCurvatureEnding = 2400; - var ZeroSlopeEnding = 2401; - var WrapAroundEnding = 2402; - var TrianglesDrawMode = 0; - var TriangleStripDrawMode = 1; - var TriangleFanDrawMode = 2; - var LinearEncoding = 3000; - var sRGBEncoding = 3001; - var GammaEncoding = 3007; - var RGBEEncoding = 3002; - var LogLuvEncoding = 3003; - var RGBM7Encoding = 3004; - var RGBM16Encoding = 3005; - var RGBDEncoding = 3006; - var BasicDepthPacking = 3200; - var RGBADepthPacking = 3201; - var TangentSpaceNormalMap = 0; - var ObjectSpaceNormalMap = 1; - - /** - * @author alteredq / http://alteredqualia.com/ - * @author mrdoob / http://mrdoob.com/ - */ - - var _Math = { - - DEG2RAD: Math.PI / 180, - RAD2DEG: 180 / Math.PI, - - generateUUID: ( function () { - - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136 - - var lut = []; - - for ( var i = 0; i < 256; i ++ ) { - - lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 ); - - } - - return function generateUUID() { - - var d0 = Math.random() * 0xffffffff | 0; - var d1 = Math.random() * 0xffffffff | 0; - var d2 = Math.random() * 0xffffffff | 0; - var d3 = Math.random() * 0xffffffff | 0; - var uuid = lut[ d0 & 0xff ] + lut[ d0 >> 8 & 0xff ] + lut[ d0 >> 16 & 0xff ] + lut[ d0 >> 24 & 0xff ] + '-' + - lut[ d1 & 0xff ] + lut[ d1 >> 8 & 0xff ] + '-' + lut[ d1 >> 16 & 0x0f | 0x40 ] + lut[ d1 >> 24 & 0xff ] + '-' + - lut[ d2 & 0x3f | 0x80 ] + lut[ d2 >> 8 & 0xff ] + '-' + lut[ d2 >> 16 & 0xff ] + lut[ d2 >> 24 & 0xff ] + - lut[ d3 & 0xff ] + lut[ d3 >> 8 & 0xff ] + lut[ d3 >> 16 & 0xff ] + lut[ d3 >> 24 & 0xff ]; - - // .toUpperCase() here flattens concatenated strings to save heap memory space. - return uuid.toUpperCase(); - - }; - - } )(), - - clamp: function ( value, min, max ) { - - return Math.max( min, Math.min( max, value ) ); - - }, - - // compute euclidian modulo of m % n - // https://en.wikipedia.org/wiki/Modulo_operation - - euclideanModulo: function ( n, m ) { - - return ( ( n % m ) + m ) % m; - - }, - - // Linear mapping from range to range - - mapLinear: function ( x, a1, a2, b1, b2 ) { - - return b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 ); - - }, - - // https://en.wikipedia.org/wiki/Linear_interpolation - - lerp: function ( x, y, t ) { - - return ( 1 - t ) * x + t * y; - - }, - - // http://en.wikipedia.org/wiki/Smoothstep - - smoothstep: function ( x, min, max ) { - - if ( x <= min ) return 0; - if ( x >= max ) return 1; - - x = ( x - min ) / ( max - min ); - - return x * x * ( 3 - 2 * x ); - - }, - - smootherstep: function ( x, min, max ) { - - if ( x <= min ) return 0; - if ( x >= max ) return 1; - - x = ( x - min ) / ( max - min ); - - return x * x * x * ( x * ( x * 6 - 15 ) + 10 ); - - }, - - // Random integer from interval - - randInt: function ( low, high ) { - - return low + Math.floor( Math.random() * ( high - low + 1 ) ); - - }, - - // Random float from interval - - randFloat: function ( low, high ) { - - return low + Math.random() * ( high - low ); - - }, - - // Random float from <-range/2, range/2> interval - - randFloatSpread: function ( range ) { - - return range * ( 0.5 - Math.random() ); - - }, - - degToRad: function ( degrees ) { - - return degrees * _Math.DEG2RAD; - - }, - - radToDeg: function ( radians ) { - - return radians * _Math.RAD2DEG; - - }, - - isPowerOfTwo: function ( value ) { - - return ( value & ( value - 1 ) ) === 0 && value !== 0; - - }, - - ceilPowerOfTwo: function ( value ) { - - return Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) ); - - }, - - floorPowerOfTwo: function ( value ) { - - return Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) ); - - } - - }; - - /** - * @author mrdoob / http://mrdoob.com/ - * @author philogb / http://blog.thejit.org/ - * @author egraether / http://egraether.com/ - * @author zz85 / http://www.lab4games.net/zz85/blog - */ - - function Vector2( x, y ) { - - this.x = x || 0; - this.y = y || 0; - - } - - Object.defineProperties( Vector2.prototype, { - - "width": { - - get: function () { - - return this.x; - - }, - - set: function ( value ) { - - this.x = value; - - } - - }, - - "height": { - - get: function () { - - return this.y; - - }, - - set: function ( value ) { - - this.y = value; - - } - - } - - } ); - - Object.assign( Vector2.prototype, { - - isVector2: true, - - set: function ( x, y ) { - - this.x = x; - this.y = y; - - return this; - - }, - - setScalar: function ( scalar ) { - - this.x = scalar; - this.y = scalar; - - return this; - - }, - - setX: function ( x ) { - - this.x = x; - - return this; - - }, - - setY: function ( y ) { - - this.y = y; - - return this; - - }, - - setComponent: function ( index, value ) { - - switch ( index ) { - - case 0: this.x = value; break; - case 1: this.y = value; break; - default: throw new Error( 'index is out of range: ' + index ); - - } - - return this; - - }, - - getComponent: function ( index ) { - - switch ( index ) { - - case 0: return this.x; - case 1: return this.y; - default: throw new Error( 'index is out of range: ' + index ); - - } - - }, - - clone: function () { - - return new this.constructor( this.x, this.y ); - - }, - - copy: function ( v ) { - - this.x = v.x; - this.y = v.y; - - return this; - - }, - - add: function ( v, w ) { - - if ( w !== undefined ) { - - console.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' ); - return this.addVectors( v, w ); - - } - - this.x += v.x; - this.y += v.y; - - return this; - - }, - - addScalar: function ( s ) { - - this.x += s; - this.y += s; - - return this; - - }, - - addVectors: function ( a, b ) { - - this.x = a.x + b.x; - this.y = a.y + b.y; - - return this; - - }, - - addScaledVector: function ( v, s ) { - - this.x += v.x * s; - this.y += v.y * s; - - return this; - - }, - - sub: function ( v, w ) { - - if ( w !== undefined ) { - - console.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' ); - return this.subVectors( v, w ); - - } - - this.x -= v.x; - this.y -= v.y; - - return this; - - }, - - subScalar: function ( s ) { - - this.x -= s; - this.y -= s; - - return this; - - }, - - subVectors: function ( a, b ) { - - this.x = a.x - b.x; - this.y = a.y - b.y; - - return this; - - }, - - multiply: function ( v ) { - - this.x *= v.x; - this.y *= v.y; - - return this; - - }, - - multiplyScalar: function ( scalar ) { - - this.x *= scalar; - this.y *= scalar; - - return this; - - }, - - divide: function ( v ) { - - this.x /= v.x; - this.y /= v.y; - - return this; - - }, - - divideScalar: function ( scalar ) { - - return this.multiplyScalar( 1 / scalar ); - - }, - - applyMatrix3: function ( m ) { - - var x = this.x, y = this.y; - var e = m.elements; - - this.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ]; - this.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ]; - - return this; - - }, - - min: function ( v ) { - - this.x = Math.min( this.x, v.x ); - this.y = Math.min( this.y, v.y ); - - return this; - - }, - - max: function ( v ) { - - this.x = Math.max( this.x, v.x ); - this.y = Math.max( this.y, v.y ); - - return this; - - }, - - clamp: function ( min, max ) { - - // assumes min < max, componentwise - - this.x = Math.max( min.x, Math.min( max.x, this.x ) ); - this.y = Math.max( min.y, Math.min( max.y, this.y ) ); - - return this; - - }, - - clampScalar: function ( minVal, maxVal ) { - - this.x = Math.max( minVal, Math.min( maxVal, this.x ) ); - this.y = Math.max( minVal, Math.min( maxVal, this.y ) ); - - return this; - - }, - - clampLength: function ( min, max ) { - - var length = this.length(); - - return this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) ); - - }, - - floor: function () { - - this.x = Math.floor( this.x ); - this.y = Math.floor( this.y ); - - return this; - - }, - - ceil: function () { - - this.x = Math.ceil( this.x ); - this.y = Math.ceil( this.y ); - - return this; - - }, - - round: function () { - - this.x = Math.round( this.x ); - this.y = Math.round( this.y ); - - return this; - - }, - - roundToZero: function () { - - this.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x ); - this.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y ); - - return this; - - }, - - negate: function () { - - this.x = - this.x; - this.y = - this.y; - - return this; - - }, - - dot: function ( v ) { - - return this.x * v.x + this.y * v.y; - - }, - - cross: function ( v ) { - - return this.x * v.y - this.y * v.x; - - }, - - lengthSq: function () { - - return this.x * this.x + this.y * this.y; - - }, - - length: function () { - - return Math.sqrt( this.x * this.x + this.y * this.y ); - - }, - - manhattanLength: function () { - - return Math.abs( this.x ) + Math.abs( this.y ); - - }, - - normalize: function () { - - return this.divideScalar( this.length() || 1 ); - - }, - - angle: function () { - - // computes the angle in radians with respect to the positive x-axis - - var angle = Math.atan2( this.y, this.x ); - - if ( angle < 0 ) angle += 2 * Math.PI; - - return angle; - - }, - - distanceTo: function ( v ) { - - return Math.sqrt( this.distanceToSquared( v ) ); - - }, - - distanceToSquared: function ( v ) { - - var dx = this.x - v.x, dy = this.y - v.y; - return dx * dx + dy * dy; - - }, - - manhattanDistanceTo: function ( v ) { - - return Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ); - - }, - - setLength: function ( length ) { - - return this.normalize().multiplyScalar( length ); - - }, - - lerp: function ( v, alpha ) { - - this.x += ( v.x - this.x ) * alpha; - this.y += ( v.y - this.y ) * alpha; - - return this; - - }, - - lerpVectors: function ( v1, v2, alpha ) { - - return this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 ); - - }, - - equals: function ( v ) { - - return ( ( v.x === this.x ) && ( v.y === this.y ) ); - - }, - - fromArray: function ( array, offset ) { - - if ( offset === undefined ) offset = 0; - - this.x = array[ offset ]; - this.y = array[ offset + 1 ]; - - return this; - - }, - - toArray: function ( array, offset ) { - - if ( array === undefined ) array = []; - if ( offset === undefined ) offset = 0; - - array[ offset ] = this.x; - array[ offset + 1 ] = this.y; - - return array; - - }, - - fromBufferAttribute: function ( attribute, index, offset ) { - - if ( offset !== undefined ) { - - console.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' ); - - } - - this.x = attribute.getX( index ); - this.y = attribute.getY( index ); - - return this; - - }, - - rotateAround: function ( center, angle ) { - - var c = Math.cos( angle ), s = Math.sin( angle ); - - var x = this.x - center.x; - var y = this.y - center.y; - - this.x = x * c - y * s + center.x; - this.y = x * s + y * c + center.y; - - return this; - - } - - } ); - - /** - * @author mikael emtinger / http://gomo.se/ - * @author alteredq / http://alteredqualia.com/ - * @author WestLangley / http://github.com/WestLangley - * @author bhouston / http://clara.io - */ - - function Quaternion( x, y, z, w ) { - - this._x = x || 0; - this._y = y || 0; - this._z = z || 0; - this._w = ( w !== undefined ) ? w : 1; - - } - - Object.assign( Quaternion, { - - slerp: function ( qa, qb, qm, t ) { - - return qm.copy( qa ).slerp( qb, t ); - - }, - - slerpFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) { - - // fuzz-free, array-based Quaternion SLERP operation - - var x0 = src0[ srcOffset0 + 0 ], - y0 = src0[ srcOffset0 + 1 ], - z0 = src0[ srcOffset0 + 2 ], - w0 = src0[ srcOffset0 + 3 ], - - x1 = src1[ srcOffset1 + 0 ], - y1 = src1[ srcOffset1 + 1 ], - z1 = src1[ srcOffset1 + 2 ], - w1 = src1[ srcOffset1 + 3 ]; - - if ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) { - - var s = 1 - t, - - cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1, - - dir = ( cos >= 0 ? 1 : - 1 ), - sqrSin = 1 - cos * cos; - - // Skip the Slerp for tiny steps to avoid numeric problems: - if ( sqrSin > Number.EPSILON ) { - - var sin = Math.sqrt( sqrSin ), - len = Math.atan2( sin, cos * dir ); - - s = Math.sin( s * len ) / sin; - t = Math.sin( t * len ) / sin; - - } - - var tDir = t * dir; - - x0 = x0 * s + x1 * tDir; - y0 = y0 * s + y1 * tDir; - z0 = z0 * s + z1 * tDir; - w0 = w0 * s + w1 * tDir; - - // Normalize in case we just did a lerp: - if ( s === 1 - t ) { - - var f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 ); - - x0 *= f; - y0 *= f; - z0 *= f; - w0 *= f; - - } - - } - - dst[ dstOffset ] = x0; - dst[ dstOffset + 1 ] = y0; - dst[ dstOffset + 2 ] = z0; - dst[ dstOffset + 3 ] = w0; - - } - - } ); - - Object.defineProperties( Quaternion.prototype, { - - x: { - - get: function () { - - return this._x; - - }, - - set: function ( value ) { - - this._x = value; - this.onChangeCallback(); - - } - - }, - - y: { - - get: function () { - - return this._y; - - }, - - set: function ( value ) { - - this._y = value; - this.onChangeCallback(); - - } - - }, - - z: { - - get: function () { - - return this._z; - - }, - - set: function ( value ) { - - this._z = value; - this.onChangeCallback(); - - } - - }, - - w: { - - get: function () { - - return this._w; - - }, - - set: function ( value ) { - - this._w = value; - this.onChangeCallback(); - - } - - } - - } ); - - Object.assign( Quaternion.prototype, { - - isQuaternion: true, - - set: function ( x, y, z, w ) { - - this._x = x; - this._y = y; - this._z = z; - this._w = w; - - this.onChangeCallback(); - - return this; - - }, - - clone: function () { - - return new this.constructor( this._x, this._y, this._z, this._w ); - - }, - - copy: function ( quaternion ) { - - this._x = quaternion.x; - this._y = quaternion.y; - this._z = quaternion.z; - this._w = quaternion.w; - - this.onChangeCallback(); - - return this; - - }, - - setFromEuler: function ( euler, update ) { - - if ( ! ( euler && euler.isEuler ) ) { - - throw new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' ); - - } - - var x = euler._x, y = euler._y, z = euler._z, order = euler.order; - - // http://www.mathworks.com/matlabcentral/fileexchange/ - // 20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/ - // content/SpinCalc.m - - var cos = Math.cos; - var sin = Math.sin; - - var c1 = cos( x / 2 ); - var c2 = cos( y / 2 ); - var c3 = cos( z / 2 ); - - var s1 = sin( x / 2 ); - var s2 = sin( y / 2 ); - var s3 = sin( z / 2 ); - - if ( order === 'XYZ' ) { - - this._x = s1 * c2 * c3 + c1 * s2 * s3; - this._y = c1 * s2 * c3 - s1 * c2 * s3; - this._z = c1 * c2 * s3 + s1 * s2 * c3; - this._w = c1 * c2 * c3 - s1 * s2 * s3; - - } else if ( order === 'YXZ' ) { - - this._x = s1 * c2 * c3 + c1 * s2 * s3; - this._y = c1 * s2 * c3 - s1 * c2 * s3; - this._z = c1 * c2 * s3 - s1 * s2 * c3; - this._w = c1 * c2 * c3 + s1 * s2 * s3; - - } else if ( order === 'ZXY' ) { - - this._x = s1 * c2 * c3 - c1 * s2 * s3; - this._y = c1 * s2 * c3 + s1 * c2 * s3; - this._z = c1 * c2 * s3 + s1 * s2 * c3; - this._w = c1 * c2 * c3 - s1 * s2 * s3; - - } else if ( order === 'ZYX' ) { - - this._x = s1 * c2 * c3 - c1 * s2 * s3; - this._y = c1 * s2 * c3 + s1 * c2 * s3; - this._z = c1 * c2 * s3 - s1 * s2 * c3; - this._w = c1 * c2 * c3 + s1 * s2 * s3; - - } else if ( order === 'YZX' ) { - - this._x = s1 * c2 * c3 + c1 * s2 * s3; - this._y = c1 * s2 * c3 + s1 * c2 * s3; - this._z = c1 * c2 * s3 - s1 * s2 * c3; - this._w = c1 * c2 * c3 - s1 * s2 * s3; - - } else if ( order === 'XZY' ) { - - this._x = s1 * c2 * c3 - c1 * s2 * s3; - this._y = c1 * s2 * c3 - s1 * c2 * s3; - this._z = c1 * c2 * s3 + s1 * s2 * c3; - this._w = c1 * c2 * c3 + s1 * s2 * s3; - - } - - if ( update !== false ) this.onChangeCallback(); - - return this; - - }, - - setFromAxisAngle: function ( axis, angle ) { - - // http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm - - // assumes axis is normalized - - var halfAngle = angle / 2, s = Math.sin( halfAngle ); - - this._x = axis.x * s; - this._y = axis.y * s; - this._z = axis.z * s; - this._w = Math.cos( halfAngle ); - - this.onChangeCallback(); - - return this; - - }, - - setFromRotationMatrix: function ( m ) { - - // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm - - // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) - - var te = m.elements, - - m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ], - m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ], - m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ], - - trace = m11 + m22 + m33, - s; - - if ( trace > 0 ) { - - s = 0.5 / Math.sqrt( trace + 1.0 ); - - this._w = 0.25 / s; - this._x = ( m32 - m23 ) * s; - this._y = ( m13 - m31 ) * s; - this._z = ( m21 - m12 ) * s; - - } else if ( m11 > m22 && m11 > m33 ) { - - s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 ); - - this._w = ( m32 - m23 ) / s; - this._x = 0.25 * s; - this._y = ( m12 + m21 ) / s; - this._z = ( m13 + m31 ) / s; - - } else if ( m22 > m33 ) { - - s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 ); - - this._w = ( m13 - m31 ) / s; - this._x = ( m12 + m21 ) / s; - this._y = 0.25 * s; - this._z = ( m23 + m32 ) / s; - - } else { - - s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 ); - - this._w = ( m21 - m12 ) / s; - this._x = ( m13 + m31 ) / s; - this._y = ( m23 + m32 ) / s; - this._z = 0.25 * s; - - } - - this.onChangeCallback(); - - return this; - - }, - - setFromUnitVectors: function ( vFrom, vTo ) { - - // assumes direction vectors vFrom and vTo are normalized - - var EPS = 0.000001; - - var r = vFrom.dot( vTo ) + 1; - - if ( r < EPS ) { - - r = 0; - - if ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) { - - this._x = - vFrom.y; - this._y = vFrom.x; - this._z = 0; - this._w = r; - - } else { - - this._x = 0; - this._y = - vFrom.z; - this._z = vFrom.y; - this._w = r; - - } - - } else { - - // crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3 - - this._x = vFrom.y * vTo.z - vFrom.z * vTo.y; - this._y = vFrom.z * vTo.x - vFrom.x * vTo.z; - this._z = vFrom.x * vTo.y - vFrom.y * vTo.x; - this._w = r; - - } - - return this.normalize(); - - }, - - angleTo: function ( q ) { - - return 2 * Math.acos( Math.abs( _Math.clamp( this.dot( q ), - 1, 1 ) ) ); - - }, - - rotateTowards: function ( q, step ) { - - var angle = this.angleTo( q ); - - if ( angle === 0 ) return this; - - var t = Math.min( 1, step / angle ); - - this.slerp( q, t ); - - return this; - - }, - - inverse: function () { - - // quaternion is assumed to have unit length - - return this.conjugate(); - - }, - - conjugate: function () { - - this._x *= - 1; - this._y *= - 1; - this._z *= - 1; - - this.onChangeCallback(); - - return this; - - }, - - dot: function ( v ) { - - return this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w; - - }, - - lengthSq: function () { - - return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w; - - }, - - length: function () { - - return Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w ); - - }, - - normalize: function () { - - var l = this.length(); - - if ( l === 0 ) { - - this._x = 0; - this._y = 0; - this._z = 0; - this._w = 1; - - } else { - - l = 1 / l; - - this._x = this._x * l; - this._y = this._y * l; - this._z = this._z * l; - this._w = this._w * l; - - } - - this.onChangeCallback(); - - return this; - - }, - - multiply: function ( q, p ) { - - if ( p !== undefined ) { - - console.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' ); - return this.multiplyQuaternions( q, p ); - - } - - return this.multiplyQuaternions( this, q ); - - }, - - premultiply: function ( q ) { - - return this.multiplyQuaternions( q, this ); - - }, - - multiplyQuaternions: function ( a, b ) { - - // from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm - - var qax = a._x, qay = a._y, qaz = a._z, qaw = a._w; - var qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w; - - this._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby; - this._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz; - this._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx; - this._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz; - - this.onChangeCallback(); - - return this; - - }, - - slerp: function ( qb, t ) { - - if ( t === 0 ) return this; - if ( t === 1 ) return this.copy( qb ); - - var x = this._x, y = this._y, z = this._z, w = this._w; - - // http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/ - - var cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z; - - if ( cosHalfTheta < 0 ) { - - this._w = - qb._w; - this._x = - qb._x; - this._y = - qb._y; - this._z = - qb._z; - - cosHalfTheta = - cosHalfTheta; - - } else { - - this.copy( qb ); - - } - - if ( cosHalfTheta >= 1.0 ) { - - this._w = w; - this._x = x; - this._y = y; - this._z = z; - - return this; - - } - - var sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta; - - if ( sqrSinHalfTheta <= Number.EPSILON ) { - - var s = 1 - t; - this._w = s * w + t * this._w; - this._x = s * x + t * this._x; - this._y = s * y + t * this._y; - this._z = s * z + t * this._z; - - return this.normalize(); - - } - - var sinHalfTheta = Math.sqrt( sqrSinHalfTheta ); - var halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta ); - var ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta, - ratioB = Math.sin( t * halfTheta ) / sinHalfTheta; - - this._w = ( w * ratioA + this._w * ratioB ); - this._x = ( x * ratioA + this._x * ratioB ); - this._y = ( y * ratioA + this._y * ratioB ); - this._z = ( z * ratioA + this._z * ratioB ); - - this.onChangeCallback(); - - return this; - - }, - - equals: function ( quaternion ) { - - return ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w ); - - }, - - fromArray: function ( array, offset ) { - - if ( offset === undefined ) offset = 0; - - this._x = array[ offset ]; - this._y = array[ offset + 1 ]; - this._z = array[ offset + 2 ]; - this._w = array[ offset + 3 ]; - - this.onChangeCallback(); - - return this; - - }, - - toArray: function ( array, offset ) { - - if ( array === undefined ) array = []; - if ( offset === undefined ) offset = 0; - - array[ offset ] = this._x; - array[ offset + 1 ] = this._y; - array[ offset + 2 ] = this._z; - array[ offset + 3 ] = this._w; - - return array; - - }, - - onChange: function ( callback ) { - - this.onChangeCallback = callback; - - return this; - - }, - - onChangeCallback: function () {} - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author kile / http://kile.stravaganza.org/ - * @author philogb / http://blog.thejit.org/ - * @author mikael emtinger / http://gomo.se/ - * @author egraether / http://egraether.com/ - * @author WestLangley / http://github.com/WestLangley - */ - - function Vector3( x, y, z ) { - - this.x = x || 0; - this.y = y || 0; - this.z = z || 0; - - } - - Object.assign( Vector3.prototype, { - - isVector3: true, - - set: function ( x, y, z ) { - - this.x = x; - this.y = y; - this.z = z; - - return this; - - }, - - setScalar: function ( scalar ) { - - this.x = scalar; - this.y = scalar; - this.z = scalar; - - return this; - - }, - - setX: function ( x ) { - - this.x = x; - - return this; - - }, - - setY: function ( y ) { - - this.y = y; - - return this; - - }, - - setZ: function ( z ) { - - this.z = z; - - return this; - - }, - - setComponent: function ( index, value ) { - - switch ( index ) { - - case 0: this.x = value; break; - case 1: this.y = value; break; - case 2: this.z = value; break; - default: throw new Error( 'index is out of range: ' + index ); - - } - - return this; - - }, - - getComponent: function ( index ) { - - switch ( index ) { - - case 0: return this.x; - case 1: return this.y; - case 2: return this.z; - default: throw new Error( 'index is out of range: ' + index ); - - } - - }, - - clone: function () { - - return new this.constructor( this.x, this.y, this.z ); - - }, - - copy: function ( v ) { - - this.x = v.x; - this.y = v.y; - this.z = v.z; - - return this; - - }, - - add: function ( v, w ) { - - if ( w !== undefined ) { - - console.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' ); - return this.addVectors( v, w ); - - } - - this.x += v.x; - this.y += v.y; - this.z += v.z; - - return this; - - }, - - addScalar: function ( s ) { - - this.x += s; - this.y += s; - this.z += s; - - return this; - - }, - - addVectors: function ( a, b ) { - - this.x = a.x + b.x; - this.y = a.y + b.y; - this.z = a.z + b.z; - - return this; - - }, - - addScaledVector: function ( v, s ) { - - this.x += v.x * s; - this.y += v.y * s; - this.z += v.z * s; - - return this; - - }, - - sub: function ( v, w ) { - - if ( w !== undefined ) { - - console.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' ); - return this.subVectors( v, w ); - - } - - this.x -= v.x; - this.y -= v.y; - this.z -= v.z; - - return this; - - }, - - subScalar: function ( s ) { - - this.x -= s; - this.y -= s; - this.z -= s; - - return this; - - }, - - subVectors: function ( a, b ) { - - this.x = a.x - b.x; - this.y = a.y - b.y; - this.z = a.z - b.z; - - return this; - - }, - - multiply: function ( v, w ) { - - if ( w !== undefined ) { - - console.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' ); - return this.multiplyVectors( v, w ); - - } - - this.x *= v.x; - this.y *= v.y; - this.z *= v.z; - - return this; - - }, - - multiplyScalar: function ( scalar ) { - - this.x *= scalar; - this.y *= scalar; - this.z *= scalar; - - return this; - - }, - - multiplyVectors: function ( a, b ) { - - this.x = a.x * b.x; - this.y = a.y * b.y; - this.z = a.z * b.z; - - return this; - - }, - - applyEuler: function () { - - var quaternion = new Quaternion(); - - return function applyEuler( euler ) { - - if ( ! ( euler && euler.isEuler ) ) { - - console.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' ); - - } - - return this.applyQuaternion( quaternion.setFromEuler( euler ) ); - - }; - - }(), - - applyAxisAngle: function () { - - var quaternion = new Quaternion(); - - return function applyAxisAngle( axis, angle ) { - - return this.applyQuaternion( quaternion.setFromAxisAngle( axis, angle ) ); - - }; - - }(), - - applyMatrix3: function ( m ) { - - var x = this.x, y = this.y, z = this.z; - var e = m.elements; - - this.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z; - this.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z; - this.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z; - - return this; - - }, - - applyMatrix4: function ( m ) { - - var x = this.x, y = this.y, z = this.z; - var e = m.elements; - - var w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] ); - - this.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w; - this.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w; - this.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w; - - return this; - - }, - - applyQuaternion: function ( q ) { - - var x = this.x, y = this.y, z = this.z; - var qx = q.x, qy = q.y, qz = q.z, qw = q.w; - - // calculate quat * vector - - var ix = qw * x + qy * z - qz * y; - var iy = qw * y + qz * x - qx * z; - var iz = qw * z + qx * y - qy * x; - var iw = - qx * x - qy * y - qz * z; - - // calculate result * inverse quat - - this.x = ix * qw + iw * - qx + iy * - qz - iz * - qy; - this.y = iy * qw + iw * - qy + iz * - qx - ix * - qz; - this.z = iz * qw + iw * - qz + ix * - qy - iy * - qx; - - return this; - - }, - - project: function ( camera ) { - - return this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix ); - - }, - - unproject: function ( camera ) { - - return this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld ); - - }, - - transformDirection: function ( m ) { - - // input: THREE.Matrix4 affine matrix - // vector interpreted as a direction - - var x = this.x, y = this.y, z = this.z; - var e = m.elements; - - this.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z; - this.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z; - this.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z; - - return this.normalize(); - - }, - - divide: function ( v ) { - - this.x /= v.x; - this.y /= v.y; - this.z /= v.z; - - return this; - - }, - - divideScalar: function ( scalar ) { - - return this.multiplyScalar( 1 / scalar ); - - }, - - min: function ( v ) { - - this.x = Math.min( this.x, v.x ); - this.y = Math.min( this.y, v.y ); - this.z = Math.min( this.z, v.z ); - - return this; - - }, - - max: function ( v ) { - - this.x = Math.max( this.x, v.x ); - this.y = Math.max( this.y, v.y ); - this.z = Math.max( this.z, v.z ); - - return this; - - }, - - clamp: function ( min, max ) { - - // assumes min < max, componentwise - - this.x = Math.max( min.x, Math.min( max.x, this.x ) ); - this.y = Math.max( min.y, Math.min( max.y, this.y ) ); - this.z = Math.max( min.z, Math.min( max.z, this.z ) ); - - return this; - - }, - - clampScalar: function ( minVal, maxVal ) { - - this.x = Math.max( minVal, Math.min( maxVal, this.x ) ); - this.y = Math.max( minVal, Math.min( maxVal, this.y ) ); - this.z = Math.max( minVal, Math.min( maxVal, this.z ) ); - - return this; - - }, - - clampLength: function ( min, max ) { - - var length = this.length(); - - return this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) ); - - }, - - floor: function () { - - this.x = Math.floor( this.x ); - this.y = Math.floor( this.y ); - this.z = Math.floor( this.z ); - - return this; - - }, - - ceil: function () { - - this.x = Math.ceil( this.x ); - this.y = Math.ceil( this.y ); - this.z = Math.ceil( this.z ); - - return this; - - }, - - round: function () { - - this.x = Math.round( this.x ); - this.y = Math.round( this.y ); - this.z = Math.round( this.z ); - - return this; - - }, - - roundToZero: function () { - - this.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x ); - this.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y ); - this.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z ); - - return this; - - }, - - negate: function () { - - this.x = - this.x; - this.y = - this.y; - this.z = - this.z; - - return this; - - }, - - dot: function ( v ) { - - return this.x * v.x + this.y * v.y + this.z * v.z; - - }, - - // TODO lengthSquared? - - lengthSq: function () { - - return this.x * this.x + this.y * this.y + this.z * this.z; - - }, - - length: function () { - - return Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z ); - - }, - - manhattanLength: function () { - - return Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ); - - }, - - normalize: function () { - - return this.divideScalar( this.length() || 1 ); - - }, - - setLength: function ( length ) { - - return this.normalize().multiplyScalar( length ); - - }, - - lerp: function ( v, alpha ) { - - this.x += ( v.x - this.x ) * alpha; - this.y += ( v.y - this.y ) * alpha; - this.z += ( v.z - this.z ) * alpha; - - return this; - - }, - - lerpVectors: function ( v1, v2, alpha ) { - - return this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 ); - - }, - - cross: function ( v, w ) { - - if ( w !== undefined ) { - - console.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' ); - return this.crossVectors( v, w ); - - } - - return this.crossVectors( this, v ); - - }, - - crossVectors: function ( a, b ) { - - var ax = a.x, ay = a.y, az = a.z; - var bx = b.x, by = b.y, bz = b.z; - - this.x = ay * bz - az * by; - this.y = az * bx - ax * bz; - this.z = ax * by - ay * bx; - - return this; - - }, - - projectOnVector: function ( vector ) { - - var scalar = vector.dot( this ) / vector.lengthSq(); - - return this.copy( vector ).multiplyScalar( scalar ); - - }, - - projectOnPlane: function () { - - var v1 = new Vector3(); - - return function projectOnPlane( planeNormal ) { - - v1.copy( this ).projectOnVector( planeNormal ); - - return this.sub( v1 ); - - }; - - }(), - - reflect: function () { - - // reflect incident vector off plane orthogonal to normal - // normal is assumed to have unit length - - var v1 = new Vector3(); - - return function reflect( normal ) { - - return this.sub( v1.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) ); - - }; - - }(), - - angleTo: function ( v ) { - - var theta = this.dot( v ) / ( Math.sqrt( this.lengthSq() * v.lengthSq() ) ); - - // clamp, to handle numerical problems - - return Math.acos( _Math.clamp( theta, - 1, 1 ) ); - - }, - - distanceTo: function ( v ) { - - return Math.sqrt( this.distanceToSquared( v ) ); - - }, - - distanceToSquared: function ( v ) { - - var dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z; - - return dx * dx + dy * dy + dz * dz; - - }, - - manhattanDistanceTo: function ( v ) { - - return Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z ); - - }, - - setFromSpherical: function ( s ) { - - return this.setFromSphericalCoords( s.radius, s.phi, s.theta ); - - }, - - setFromSphericalCoords: function ( radius, phi, theta ) { - - var sinPhiRadius = Math.sin( phi ) * radius; - - this.x = sinPhiRadius * Math.sin( theta ); - this.y = Math.cos( phi ) * radius; - this.z = sinPhiRadius * Math.cos( theta ); - - return this; - - }, - - setFromCylindrical: function ( c ) { - - return this.setFromCylindricalCoords( c.radius, c.theta, c.y ); - - }, - - setFromCylindricalCoords: function ( radius, theta, y ) { - - this.x = radius * Math.sin( theta ); - this.y = y; - this.z = radius * Math.cos( theta ); - - return this; - - }, - - setFromMatrixPosition: function ( m ) { - - var e = m.elements; - - this.x = e[ 12 ]; - this.y = e[ 13 ]; - this.z = e[ 14 ]; - - return this; - - }, - - setFromMatrixScale: function ( m ) { - - var sx = this.setFromMatrixColumn( m, 0 ).length(); - var sy = this.setFromMatrixColumn( m, 1 ).length(); - var sz = this.setFromMatrixColumn( m, 2 ).length(); - - this.x = sx; - this.y = sy; - this.z = sz; - - return this; - - }, - - setFromMatrixColumn: function ( m, index ) { - - return this.fromArray( m.elements, index * 4 ); - - }, - - equals: function ( v ) { - - return ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) ); - - }, - - fromArray: function ( array, offset ) { - - if ( offset === undefined ) offset = 0; - - this.x = array[ offset ]; - this.y = array[ offset + 1 ]; - this.z = array[ offset + 2 ]; - - return this; - - }, - - toArray: function ( array, offset ) { - - if ( array === undefined ) array = []; - if ( offset === undefined ) offset = 0; - - array[ offset ] = this.x; - array[ offset + 1 ] = this.y; - array[ offset + 2 ] = this.z; - - return array; - - }, - - fromBufferAttribute: function ( attribute, index, offset ) { - - if ( offset !== undefined ) { - - console.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' ); - - } - - this.x = attribute.getX( index ); - this.y = attribute.getY( index ); - this.z = attribute.getZ( index ); - - return this; - - } - - } ); - - /** - * @author alteredq / http://alteredqualia.com/ - * @author WestLangley / http://github.com/WestLangley - * @author bhouston / http://clara.io - * @author tschw - */ - - function Matrix3() { - - this.elements = [ - - 1, 0, 0, - 0, 1, 0, - 0, 0, 1 - - ]; - - if ( arguments.length > 0 ) { - - console.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' ); - - } - - } - - Object.assign( Matrix3.prototype, { - - isMatrix3: true, - - set: function ( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) { - - var te = this.elements; - - te[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31; - te[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32; - te[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33; - - return this; - - }, - - identity: function () { - - this.set( - - 1, 0, 0, - 0, 1, 0, - 0, 0, 1 - - ); - - return this; - - }, - - clone: function () { - - return new this.constructor().fromArray( this.elements ); - - }, - - copy: function ( m ) { - - var te = this.elements; - var me = m.elements; - - te[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; - te[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; - te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ]; - - return this; - - }, - - setFromMatrix4: function ( m ) { - - var me = m.elements; - - this.set( - - me[ 0 ], me[ 4 ], me[ 8 ], - me[ 1 ], me[ 5 ], me[ 9 ], - me[ 2 ], me[ 6 ], me[ 10 ] - - ); - - return this; - - }, - - applyToBufferAttribute: function () { - - var v1 = new Vector3(); - - return function applyToBufferAttribute( attribute ) { - - for ( var i = 0, l = attribute.count; i < l; i ++ ) { - - v1.x = attribute.getX( i ); - v1.y = attribute.getY( i ); - v1.z = attribute.getZ( i ); - - v1.applyMatrix3( this ); - - attribute.setXYZ( i, v1.x, v1.y, v1.z ); - - } - - return attribute; - - }; - - }(), - - multiply: function ( m ) { - - return this.multiplyMatrices( this, m ); - - }, - - premultiply: function ( m ) { - - return this.multiplyMatrices( m, this ); - - }, - - multiplyMatrices: function ( a, b ) { - - var ae = a.elements; - var be = b.elements; - var te = this.elements; - - var a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ]; - var a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ]; - var a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ]; - - var b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ]; - var b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ]; - var b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ]; - - te[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31; - te[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32; - te[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33; - - te[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31; - te[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32; - te[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33; - - te[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31; - te[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32; - te[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33; - - return this; - - }, - - multiplyScalar: function ( s ) { - - var te = this.elements; - - te[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s; - te[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s; - te[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s; - - return this; - - }, - - determinant: function () { - - var te = this.elements; - - var a = te[ 0 ], b = te[ 1 ], c = te[ 2 ], - d = te[ 3 ], e = te[ 4 ], f = te[ 5 ], - g = te[ 6 ], h = te[ 7 ], i = te[ 8 ]; - - return a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g; - - }, - - getInverse: function ( matrix, throwOnDegenerate ) { - - if ( matrix && matrix.isMatrix4 ) { - - console.error( "THREE.Matrix3: .getInverse() no longer takes a Matrix4 argument." ); - - } - - var me = matrix.elements, - te = this.elements, - - n11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], - n12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ], - n13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 8 ], - - t11 = n33 * n22 - n32 * n23, - t12 = n32 * n13 - n33 * n12, - t13 = n23 * n12 - n22 * n13, - - det = n11 * t11 + n21 * t12 + n31 * t13; - - if ( det === 0 ) { - - var msg = "THREE.Matrix3: .getInverse() can't invert matrix, determinant is 0"; - - if ( throwOnDegenerate === true ) { - - throw new Error( msg ); - - } else { - - console.warn( msg ); - - } - - return this.identity(); - - } - - var detInv = 1 / det; - - te[ 0 ] = t11 * detInv; - te[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv; - te[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv; - - te[ 3 ] = t12 * detInv; - te[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv; - te[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv; - - te[ 6 ] = t13 * detInv; - te[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv; - te[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv; - - return this; - - }, - - transpose: function () { - - var tmp, m = this.elements; - - tmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp; - tmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp; - tmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp; - - return this; - - }, - - getNormalMatrix: function ( matrix4 ) { - - return this.setFromMatrix4( matrix4 ).getInverse( this ).transpose(); - - }, - - transposeIntoArray: function ( r ) { - - var m = this.elements; - - r[ 0 ] = m[ 0 ]; - r[ 1 ] = m[ 3 ]; - r[ 2 ] = m[ 6 ]; - r[ 3 ] = m[ 1 ]; - r[ 4 ] = m[ 4 ]; - r[ 5 ] = m[ 7 ]; - r[ 6 ] = m[ 2 ]; - r[ 7 ] = m[ 5 ]; - r[ 8 ] = m[ 8 ]; - - return this; - - }, - - setUvTransform: function ( tx, ty, sx, sy, rotation, cx, cy ) { - - var c = Math.cos( rotation ); - var s = Math.sin( rotation ); - - this.set( - sx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx, - - sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty, - 0, 0, 1 - ); - - }, - - scale: function ( sx, sy ) { - - var te = this.elements; - - te[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx; - te[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy; - - return this; - - }, - - rotate: function ( theta ) { - - var c = Math.cos( theta ); - var s = Math.sin( theta ); - - var te = this.elements; - - var a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ]; - var a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ]; - - te[ 0 ] = c * a11 + s * a21; - te[ 3 ] = c * a12 + s * a22; - te[ 6 ] = c * a13 + s * a23; - - te[ 1 ] = - s * a11 + c * a21; - te[ 4 ] = - s * a12 + c * a22; - te[ 7 ] = - s * a13 + c * a23; - - return this; - - }, - - translate: function ( tx, ty ) { - - var te = this.elements; - - te[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ]; - te[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ]; - - return this; - - }, - - equals: function ( matrix ) { - - var te = this.elements; - var me = matrix.elements; - - for ( var i = 0; i < 9; i ++ ) { - - if ( te[ i ] !== me[ i ] ) return false; - - } - - return true; - - }, - - fromArray: function ( array, offset ) { - - if ( offset === undefined ) offset = 0; - - for ( var i = 0; i < 9; i ++ ) { - - this.elements[ i ] = array[ i + offset ]; - - } - - return this; - - }, - - toArray: function ( array, offset ) { - - if ( array === undefined ) array = []; - if ( offset === undefined ) offset = 0; - - var te = this.elements; - - array[ offset ] = te[ 0 ]; - array[ offset + 1 ] = te[ 1 ]; - array[ offset + 2 ] = te[ 2 ]; - - array[ offset + 3 ] = te[ 3 ]; - array[ offset + 4 ] = te[ 4 ]; - array[ offset + 5 ] = te[ 5 ]; - - array[ offset + 6 ] = te[ 6 ]; - array[ offset + 7 ] = te[ 7 ]; - array[ offset + 8 ] = te[ 8 ]; - - return array; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - * @author szimek / https://github.com/szimek/ - */ - - var _canvas; - - var ImageUtils = { - - getDataURL: function ( image ) { - - var canvas; - - if ( typeof HTMLCanvasElement == 'undefined' ) { - - return image.src; - - } else if ( image instanceof HTMLCanvasElement ) { - - canvas = image; - - } else { - - if ( _canvas === undefined ) _canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ); - - _canvas.width = image.width; - _canvas.height = image.height; - - var context = _canvas.getContext( '2d' ); - - if ( image instanceof ImageData ) { - - context.putImageData( image, 0, 0 ); - - } else { - - context.drawImage( image, 0, 0, image.width, image.height ); - - } - - canvas = _canvas; - - } - - if ( canvas.width > 2048 || canvas.height > 2048 ) { - - return canvas.toDataURL( 'image/jpeg', 0.6 ); - - } else { - - return canvas.toDataURL( 'image/png' ); - - } - - } - - }; - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - * @author szimek / https://github.com/szimek/ - */ - - var textureId = 0; - - function Texture( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) { - - Object.defineProperty( this, 'id', { value: textureId ++ } ); - - this.uuid = _Math.generateUUID(); - - this.name = ''; - - this.image = image !== undefined ? image : Texture.DEFAULT_IMAGE; - this.mipmaps = []; - - this.mapping = mapping !== undefined ? mapping : Texture.DEFAULT_MAPPING; - - this.wrapS = wrapS !== undefined ? wrapS : ClampToEdgeWrapping; - this.wrapT = wrapT !== undefined ? wrapT : ClampToEdgeWrapping; - - this.magFilter = magFilter !== undefined ? magFilter : LinearFilter; - this.minFilter = minFilter !== undefined ? minFilter : LinearMipMapLinearFilter; - - this.anisotropy = anisotropy !== undefined ? anisotropy : 1; - - this.format = format !== undefined ? format : RGBAFormat; - this.type = type !== undefined ? type : UnsignedByteType; - - this.offset = new Vector2( 0, 0 ); - this.repeat = new Vector2( 1, 1 ); - this.center = new Vector2( 0, 0 ); - this.rotation = 0; - - this.matrixAutoUpdate = true; - this.matrix = new Matrix3(); - - this.generateMipmaps = true; - this.premultiplyAlpha = false; - this.flipY = true; - this.unpackAlignment = 4; // valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml) - - // Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap. - // - // Also changing the encoding after already used by a Material will not automatically make the Material - // update. You need to explicitly call Material.needsUpdate to trigger it to recompile. - this.encoding = encoding !== undefined ? encoding : LinearEncoding; - - this.version = 0; - this.onUpdate = null; - - } - - Texture.DEFAULT_IMAGE = undefined; - Texture.DEFAULT_MAPPING = UVMapping; - - Texture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { - - constructor: Texture, - - isTexture: true, - - updateMatrix: function () { - - this.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y ); - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( source ) { - - this.name = source.name; - - this.image = source.image; - this.mipmaps = source.mipmaps.slice( 0 ); - - this.mapping = source.mapping; - - this.wrapS = source.wrapS; - this.wrapT = source.wrapT; - - this.magFilter = source.magFilter; - this.minFilter = source.minFilter; - - this.anisotropy = source.anisotropy; - - this.format = source.format; - this.type = source.type; - - this.offset.copy( source.offset ); - this.repeat.copy( source.repeat ); - this.center.copy( source.center ); - this.rotation = source.rotation; - - this.matrixAutoUpdate = source.matrixAutoUpdate; - this.matrix.copy( source.matrix ); - - this.generateMipmaps = source.generateMipmaps; - this.premultiplyAlpha = source.premultiplyAlpha; - this.flipY = source.flipY; - this.unpackAlignment = source.unpackAlignment; - this.encoding = source.encoding; - - return this; - - }, - - toJSON: function ( meta ) { - - var isRootObject = ( meta === undefined || typeof meta === 'string' ); - - if ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) { - - return meta.textures[ this.uuid ]; - - } - - var output = { - - metadata: { - version: 4.5, - type: 'Texture', - generator: 'Texture.toJSON' - }, - - uuid: this.uuid, - name: this.name, - - mapping: this.mapping, - - repeat: [ this.repeat.x, this.repeat.y ], - offset: [ this.offset.x, this.offset.y ], - center: [ this.center.x, this.center.y ], - rotation: this.rotation, - - wrap: [ this.wrapS, this.wrapT ], - - format: this.format, - type: this.type, - encoding: this.encoding, - - minFilter: this.minFilter, - magFilter: this.magFilter, - anisotropy: this.anisotropy, - - flipY: this.flipY, - - premultiplyAlpha: this.premultiplyAlpha, - unpackAlignment: this.unpackAlignment - - }; - - if ( this.image !== undefined ) { - - // TODO: Move to THREE.Image - - var image = this.image; - - if ( image.uuid === undefined ) { - - image.uuid = _Math.generateUUID(); // UGH - - } - - if ( ! isRootObject && meta.images[ image.uuid ] === undefined ) { - - var url; - - if ( Array.isArray( image ) ) { - - // process array of images e.g. CubeTexture - - url = []; - - for ( var i = 0, l = image.length; i < l; i ++ ) { - - url.push( ImageUtils.getDataURL( image[ i ] ) ); - - } - - } else { - - // process single image - - url = ImageUtils.getDataURL( image ); - - } - - meta.images[ image.uuid ] = { - uuid: image.uuid, - url: url - }; - - } - - output.image = image.uuid; - - } - - if ( ! isRootObject ) { - - meta.textures[ this.uuid ] = output; - - } - - return output; - - }, - - dispose: function () { - - this.dispatchEvent( { type: 'dispose' } ); - - }, - - transformUv: function ( uv ) { - - if ( this.mapping !== UVMapping ) return uv; - - uv.applyMatrix3( this.matrix ); - - if ( uv.x < 0 || uv.x > 1 ) { - - switch ( this.wrapS ) { - - case RepeatWrapping: - - uv.x = uv.x - Math.floor( uv.x ); - break; - - case ClampToEdgeWrapping: - - uv.x = uv.x < 0 ? 0 : 1; - break; - - case MirroredRepeatWrapping: - - if ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) { - - uv.x = Math.ceil( uv.x ) - uv.x; - - } else { - - uv.x = uv.x - Math.floor( uv.x ); - - } - break; - - } - - } - - if ( uv.y < 0 || uv.y > 1 ) { - - switch ( this.wrapT ) { - - case RepeatWrapping: - - uv.y = uv.y - Math.floor( uv.y ); - break; - - case ClampToEdgeWrapping: - - uv.y = uv.y < 0 ? 0 : 1; - break; - - case MirroredRepeatWrapping: - - if ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) { - - uv.y = Math.ceil( uv.y ) - uv.y; - - } else { - - uv.y = uv.y - Math.floor( uv.y ); - - } - break; - - } - - } - - if ( this.flipY ) { - - uv.y = 1 - uv.y; - - } - - return uv; - - } - - } ); - - Object.defineProperty( Texture.prototype, "needsUpdate", { - - set: function ( value ) { - - if ( value === true ) this.version ++; - - } - - } ); - - /** - * @author supereggbert / http://www.paulbrunt.co.uk/ - * @author philogb / http://blog.thejit.org/ - * @author mikael emtinger / http://gomo.se/ - * @author egraether / http://egraether.com/ - * @author WestLangley / http://github.com/WestLangley - */ - - function Vector4( x, y, z, w ) { - - this.x = x || 0; - this.y = y || 0; - this.z = z || 0; - this.w = ( w !== undefined ) ? w : 1; - - } - - Object.assign( Vector4.prototype, { - - isVector4: true, - - set: function ( x, y, z, w ) { - - this.x = x; - this.y = y; - this.z = z; - this.w = w; - - return this; - - }, - - setScalar: function ( scalar ) { - - this.x = scalar; - this.y = scalar; - this.z = scalar; - this.w = scalar; - - return this; - - }, - - setX: function ( x ) { - - this.x = x; - - return this; - - }, - - setY: function ( y ) { - - this.y = y; - - return this; - - }, - - setZ: function ( z ) { - - this.z = z; - - return this; - - }, - - setW: function ( w ) { - - this.w = w; - - return this; - - }, - - setComponent: function ( index, value ) { - - switch ( index ) { - - case 0: this.x = value; break; - case 1: this.y = value; break; - case 2: this.z = value; break; - case 3: this.w = value; break; - default: throw new Error( 'index is out of range: ' + index ); - - } - - return this; - - }, - - getComponent: function ( index ) { - - switch ( index ) { - - case 0: return this.x; - case 1: return this.y; - case 2: return this.z; - case 3: return this.w; - default: throw new Error( 'index is out of range: ' + index ); - - } - - }, - - clone: function () { - - return new this.constructor( this.x, this.y, this.z, this.w ); - - }, - - copy: function ( v ) { - - this.x = v.x; - this.y = v.y; - this.z = v.z; - this.w = ( v.w !== undefined ) ? v.w : 1; - - return this; - - }, - - add: function ( v, w ) { - - if ( w !== undefined ) { - - console.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' ); - return this.addVectors( v, w ); - - } - - this.x += v.x; - this.y += v.y; - this.z += v.z; - this.w += v.w; - - return this; - - }, - - addScalar: function ( s ) { - - this.x += s; - this.y += s; - this.z += s; - this.w += s; - - return this; - - }, - - addVectors: function ( a, b ) { - - this.x = a.x + b.x; - this.y = a.y + b.y; - this.z = a.z + b.z; - this.w = a.w + b.w; - - return this; - - }, - - addScaledVector: function ( v, s ) { - - this.x += v.x * s; - this.y += v.y * s; - this.z += v.z * s; - this.w += v.w * s; - - return this; - - }, - - sub: function ( v, w ) { - - if ( w !== undefined ) { - - console.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' ); - return this.subVectors( v, w ); - - } - - this.x -= v.x; - this.y -= v.y; - this.z -= v.z; - this.w -= v.w; - - return this; - - }, - - subScalar: function ( s ) { - - this.x -= s; - this.y -= s; - this.z -= s; - this.w -= s; - - return this; - - }, - - subVectors: function ( a, b ) { - - this.x = a.x - b.x; - this.y = a.y - b.y; - this.z = a.z - b.z; - this.w = a.w - b.w; - - return this; - - }, - - multiplyScalar: function ( scalar ) { - - this.x *= scalar; - this.y *= scalar; - this.z *= scalar; - this.w *= scalar; - - return this; - - }, - - applyMatrix4: function ( m ) { - - var x = this.x, y = this.y, z = this.z, w = this.w; - var e = m.elements; - - this.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w; - this.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w; - this.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w; - this.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w; - - return this; - - }, - - divideScalar: function ( scalar ) { - - return this.multiplyScalar( 1 / scalar ); - - }, - - setAxisAngleFromQuaternion: function ( q ) { - - // http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm - - // q is assumed to be normalized - - this.w = 2 * Math.acos( q.w ); - - var s = Math.sqrt( 1 - q.w * q.w ); - - if ( s < 0.0001 ) { - - this.x = 1; - this.y = 0; - this.z = 0; - - } else { - - this.x = q.x / s; - this.y = q.y / s; - this.z = q.z / s; - - } - - return this; - - }, - - setAxisAngleFromRotationMatrix: function ( m ) { - - // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm - - // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) - - var angle, x, y, z, // variables for result - epsilon = 0.01, // margin to allow for rounding errors - epsilon2 = 0.1, // margin to distinguish between 0 and 180 degrees - - te = m.elements, - - m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ], - m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ], - m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ]; - - if ( ( Math.abs( m12 - m21 ) < epsilon ) && - ( Math.abs( m13 - m31 ) < epsilon ) && - ( Math.abs( m23 - m32 ) < epsilon ) ) { - - // singularity found - // first check for identity matrix which must have +1 for all terms - // in leading diagonal and zero in other terms - - if ( ( Math.abs( m12 + m21 ) < epsilon2 ) && - ( Math.abs( m13 + m31 ) < epsilon2 ) && - ( Math.abs( m23 + m32 ) < epsilon2 ) && - ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) { - - // this singularity is identity matrix so angle = 0 - - this.set( 1, 0, 0, 0 ); - - return this; // zero angle, arbitrary axis - - } - - // otherwise this singularity is angle = 180 - - angle = Math.PI; - - var xx = ( m11 + 1 ) / 2; - var yy = ( m22 + 1 ) / 2; - var zz = ( m33 + 1 ) / 2; - var xy = ( m12 + m21 ) / 4; - var xz = ( m13 + m31 ) / 4; - var yz = ( m23 + m32 ) / 4; - - if ( ( xx > yy ) && ( xx > zz ) ) { - - // m11 is the largest diagonal term - - if ( xx < epsilon ) { - - x = 0; - y = 0.707106781; - z = 0.707106781; - - } else { - - x = Math.sqrt( xx ); - y = xy / x; - z = xz / x; - - } - - } else if ( yy > zz ) { - - // m22 is the largest diagonal term - - if ( yy < epsilon ) { - - x = 0.707106781; - y = 0; - z = 0.707106781; - - } else { - - y = Math.sqrt( yy ); - x = xy / y; - z = yz / y; - - } - - } else { - - // m33 is the largest diagonal term so base result on this - - if ( zz < epsilon ) { - - x = 0.707106781; - y = 0.707106781; - z = 0; - - } else { - - z = Math.sqrt( zz ); - x = xz / z; - y = yz / z; - - } - - } - - this.set( x, y, z, angle ); - - return this; // return 180 deg rotation - - } - - // as we have reached here there are no singularities so we can handle normally - - var s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) + - ( m13 - m31 ) * ( m13 - m31 ) + - ( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize - - if ( Math.abs( s ) < 0.001 ) s = 1; - - // prevent divide by zero, should not happen if matrix is orthogonal and should be - // caught by singularity test above, but I've left it in just in case - - this.x = ( m32 - m23 ) / s; - this.y = ( m13 - m31 ) / s; - this.z = ( m21 - m12 ) / s; - this.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 ); - - return this; - - }, - - min: function ( v ) { - - this.x = Math.min( this.x, v.x ); - this.y = Math.min( this.y, v.y ); - this.z = Math.min( this.z, v.z ); - this.w = Math.min( this.w, v.w ); - - return this; - - }, - - max: function ( v ) { - - this.x = Math.max( this.x, v.x ); - this.y = Math.max( this.y, v.y ); - this.z = Math.max( this.z, v.z ); - this.w = Math.max( this.w, v.w ); - - return this; - - }, - - clamp: function ( min, max ) { - - // assumes min < max, componentwise - - this.x = Math.max( min.x, Math.min( max.x, this.x ) ); - this.y = Math.max( min.y, Math.min( max.y, this.y ) ); - this.z = Math.max( min.z, Math.min( max.z, this.z ) ); - this.w = Math.max( min.w, Math.min( max.w, this.w ) ); - - return this; - - }, - - clampScalar: function () { - - var min, max; - - return function clampScalar( minVal, maxVal ) { - - if ( min === undefined ) { - - min = new Vector4(); - max = new Vector4(); - - } - - min.set( minVal, minVal, minVal, minVal ); - max.set( maxVal, maxVal, maxVal, maxVal ); - - return this.clamp( min, max ); - - }; - - }(), - - clampLength: function ( min, max ) { - - var length = this.length(); - - return this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) ); - - }, - - floor: function () { - - this.x = Math.floor( this.x ); - this.y = Math.floor( this.y ); - this.z = Math.floor( this.z ); - this.w = Math.floor( this.w ); - - return this; - - }, - - ceil: function () { - - this.x = Math.ceil( this.x ); - this.y = Math.ceil( this.y ); - this.z = Math.ceil( this.z ); - this.w = Math.ceil( this.w ); - - return this; - - }, - - round: function () { - - this.x = Math.round( this.x ); - this.y = Math.round( this.y ); - this.z = Math.round( this.z ); - this.w = Math.round( this.w ); - - return this; - - }, - - roundToZero: function () { - - this.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x ); - this.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y ); - this.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z ); - this.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w ); - - return this; - - }, - - negate: function () { - - this.x = - this.x; - this.y = - this.y; - this.z = - this.z; - this.w = - this.w; - - return this; - - }, - - dot: function ( v ) { - - return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w; - - }, - - lengthSq: function () { - - return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w; - - }, - - length: function () { - - return Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w ); - - }, - - manhattanLength: function () { - - return Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w ); - - }, - - normalize: function () { - - return this.divideScalar( this.length() || 1 ); - - }, - - setLength: function ( length ) { - - return this.normalize().multiplyScalar( length ); - - }, - - lerp: function ( v, alpha ) { - - this.x += ( v.x - this.x ) * alpha; - this.y += ( v.y - this.y ) * alpha; - this.z += ( v.z - this.z ) * alpha; - this.w += ( v.w - this.w ) * alpha; - - return this; - - }, - - lerpVectors: function ( v1, v2, alpha ) { - - return this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 ); - - }, - - equals: function ( v ) { - - return ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) ); - - }, - - fromArray: function ( array, offset ) { - - if ( offset === undefined ) offset = 0; - - this.x = array[ offset ]; - this.y = array[ offset + 1 ]; - this.z = array[ offset + 2 ]; - this.w = array[ offset + 3 ]; - - return this; - - }, - - toArray: function ( array, offset ) { - - if ( array === undefined ) array = []; - if ( offset === undefined ) offset = 0; - - array[ offset ] = this.x; - array[ offset + 1 ] = this.y; - array[ offset + 2 ] = this.z; - array[ offset + 3 ] = this.w; - - return array; - - }, - - fromBufferAttribute: function ( attribute, index, offset ) { - - if ( offset !== undefined ) { - - console.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' ); - - } - - this.x = attribute.getX( index ); - this.y = attribute.getY( index ); - this.z = attribute.getZ( index ); - this.w = attribute.getW( index ); - - return this; - - } - - } ); - - /** - * @author szimek / https://github.com/szimek/ - * @author alteredq / http://alteredqualia.com/ - * @author Marius Kintel / https://github.com/kintel - */ - - /* - In options, we can specify: - * Texture parameters for an auto-generated target texture - * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers - */ - function WebGLRenderTarget( width, height, options ) { - - this.width = width; - this.height = height; - - this.scissor = new Vector4( 0, 0, width, height ); - this.scissorTest = false; - - this.viewport = new Vector4( 0, 0, width, height ); - - options = options || {}; - - this.texture = new Texture( undefined, undefined, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding ); - - this.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false; - this.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter; - - this.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true; - this.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true; - this.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null; - - } - - WebGLRenderTarget.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { - - constructor: WebGLRenderTarget, - - isWebGLRenderTarget: true, - - setSize: function ( width, height ) { - - if ( this.width !== width || this.height !== height ) { - - this.width = width; - this.height = height; - - this.dispose(); - - } - - this.viewport.set( 0, 0, width, height ); - this.scissor.set( 0, 0, width, height ); - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( source ) { - - this.width = source.width; - this.height = source.height; - - this.viewport.copy( source.viewport ); - - this.texture = source.texture.clone(); - - this.depthBuffer = source.depthBuffer; - this.stencilBuffer = source.stencilBuffer; - this.depthTexture = source.depthTexture; - - return this; - - }, - - dispose: function () { - - this.dispatchEvent( { type: 'dispose' } ); - - } - - } ); - - /** - * @author Mugen87 / https://github.com/Mugen87 - * @author Matt DesLauriers / @mattdesl - */ - - function WebGLMultisampleRenderTarget( width, height, options ) { - - WebGLRenderTarget.call( this, width, height, options ); - - this.samples = 4; - - } - - WebGLMultisampleRenderTarget.prototype = Object.assign( Object.create( WebGLRenderTarget.prototype ), { - - constructor: WebGLMultisampleRenderTarget, - - isWebGLMultisampleRenderTarget: true, - - copy: function ( source ) { - - WebGLRenderTarget.prototype.copy.call( this, source ); - - this.samples = source.samples; - - return this; - - } - - } ); - - /** - * @author alteredq / http://alteredqualia.com - */ - - function WebGLRenderTargetCube( width, height, options ) { - - WebGLRenderTarget.call( this, width, height, options ); - - } - - WebGLRenderTargetCube.prototype = Object.create( WebGLRenderTarget.prototype ); - WebGLRenderTargetCube.prototype.constructor = WebGLRenderTargetCube; - - WebGLRenderTargetCube.prototype.isWebGLRenderTargetCube = true; - - /** - * @author alteredq / http://alteredqualia.com/ - */ - - function DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) { - - Texture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ); - - this.image = { data: data, width: width, height: height }; - - this.magFilter = magFilter !== undefined ? magFilter : NearestFilter; - this.minFilter = minFilter !== undefined ? minFilter : NearestFilter; - - this.generateMipmaps = false; - this.flipY = false; - this.unpackAlignment = 1; - - } - - DataTexture.prototype = Object.create( Texture.prototype ); - DataTexture.prototype.constructor = DataTexture; - - DataTexture.prototype.isDataTexture = true; - - /** - * @author bhouston / http://clara.io - * @author WestLangley / http://github.com/WestLangley - */ - - function Box3( min, max ) { - - this.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity ); - this.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity ); - - } - - Object.assign( Box3.prototype, { - - isBox3: true, - - set: function ( min, max ) { - - this.min.copy( min ); - this.max.copy( max ); - - return this; - - }, - - setFromArray: function ( array ) { - - var minX = + Infinity; - var minY = + Infinity; - var minZ = + Infinity; - - var maxX = - Infinity; - var maxY = - Infinity; - var maxZ = - Infinity; - - for ( var i = 0, l = array.length; i < l; i += 3 ) { - - var x = array[ i ]; - var y = array[ i + 1 ]; - var z = array[ i + 2 ]; - - if ( x < minX ) minX = x; - if ( y < minY ) minY = y; - if ( z < minZ ) minZ = z; - - if ( x > maxX ) maxX = x; - if ( y > maxY ) maxY = y; - if ( z > maxZ ) maxZ = z; - - } - - this.min.set( minX, minY, minZ ); - this.max.set( maxX, maxY, maxZ ); - - return this; - - }, - - setFromBufferAttribute: function ( attribute ) { - - var minX = + Infinity; - var minY = + Infinity; - var minZ = + Infinity; - - var maxX = - Infinity; - var maxY = - Infinity; - var maxZ = - Infinity; - - for ( var i = 0, l = attribute.count; i < l; i ++ ) { - - var x = attribute.getX( i ); - var y = attribute.getY( i ); - var z = attribute.getZ( i ); - - if ( x < minX ) minX = x; - if ( y < minY ) minY = y; - if ( z < minZ ) minZ = z; - - if ( x > maxX ) maxX = x; - if ( y > maxY ) maxY = y; - if ( z > maxZ ) maxZ = z; - - } - - this.min.set( minX, minY, minZ ); - this.max.set( maxX, maxY, maxZ ); - - return this; - - }, - - setFromPoints: function ( points ) { - - this.makeEmpty(); - - for ( var i = 0, il = points.length; i < il; i ++ ) { - - this.expandByPoint( points[ i ] ); - - } - - return this; - - }, - - setFromCenterAndSize: function () { - - var v1 = new Vector3(); - - return function setFromCenterAndSize( center, size ) { - - var halfSize = v1.copy( size ).multiplyScalar( 0.5 ); - - this.min.copy( center ).sub( halfSize ); - this.max.copy( center ).add( halfSize ); - - return this; - - }; - - }(), - - setFromObject: function ( object ) { - - this.makeEmpty(); - - return this.expandByObject( object ); - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( box ) { - - this.min.copy( box.min ); - this.max.copy( box.max ); - - return this; - - }, - - makeEmpty: function () { - - this.min.x = this.min.y = this.min.z = + Infinity; - this.max.x = this.max.y = this.max.z = - Infinity; - - return this; - - }, - - isEmpty: function () { - - // this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes - - return ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z ); - - }, - - getCenter: function ( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Box3: .getCenter() target is now required' ); - target = new Vector3(); - - } - - return this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 ); - - }, - - getSize: function ( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Box3: .getSize() target is now required' ); - target = new Vector3(); - - } - - return this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min ); - - }, - - expandByPoint: function ( point ) { - - this.min.min( point ); - this.max.max( point ); - - return this; - - }, - - expandByVector: function ( vector ) { - - this.min.sub( vector ); - this.max.add( vector ); - - return this; - - }, - - expandByScalar: function ( scalar ) { - - this.min.addScalar( - scalar ); - this.max.addScalar( scalar ); - - return this; - - }, - - expandByObject: function () { - - // Computes the world-axis-aligned bounding box of an object (including its children), - // accounting for both the object's, and children's, world transforms - - var scope, i, l; - - var v1 = new Vector3(); - - function traverse( node ) { - - var geometry = node.geometry; - - if ( geometry !== undefined ) { - - if ( geometry.isGeometry ) { - - var vertices = geometry.vertices; - - for ( i = 0, l = vertices.length; i < l; i ++ ) { - - v1.copy( vertices[ i ] ); - v1.applyMatrix4( node.matrixWorld ); - - scope.expandByPoint( v1 ); - - } - - } else if ( geometry.isBufferGeometry ) { - - var attribute = geometry.attributes.position; - - if ( attribute !== undefined ) { - - for ( i = 0, l = attribute.count; i < l; i ++ ) { - - v1.fromBufferAttribute( attribute, i ).applyMatrix4( node.matrixWorld ); - - scope.expandByPoint( v1 ); - - } - - } - - } - - } - - } - - return function expandByObject( object ) { - - scope = this; - - object.updateMatrixWorld( true ); - - object.traverse( traverse ); - - return this; - - }; - - }(), - - containsPoint: function ( point ) { - - return point.x < this.min.x || point.x > this.max.x || - point.y < this.min.y || point.y > this.max.y || - point.z < this.min.z || point.z > this.max.z ? false : true; - - }, - - containsBox: function ( box ) { - - return this.min.x <= box.min.x && box.max.x <= this.max.x && - this.min.y <= box.min.y && box.max.y <= this.max.y && - this.min.z <= box.min.z && box.max.z <= this.max.z; - - }, - - getParameter: function ( point, target ) { - - // This can potentially have a divide by zero if the box - // has a size dimension of 0. - - if ( target === undefined ) { - - console.warn( 'THREE.Box3: .getParameter() target is now required' ); - target = new Vector3(); - - } - - return target.set( - ( point.x - this.min.x ) / ( this.max.x - this.min.x ), - ( point.y - this.min.y ) / ( this.max.y - this.min.y ), - ( point.z - this.min.z ) / ( this.max.z - this.min.z ) - ); - - }, - - intersectsBox: function ( box ) { - - // using 6 splitting planes to rule out intersections. - return box.max.x < this.min.x || box.min.x > this.max.x || - box.max.y < this.min.y || box.min.y > this.max.y || - box.max.z < this.min.z || box.min.z > this.max.z ? false : true; - - }, - - intersectsSphere: ( function () { - - var closestPoint = new Vector3(); - - return function intersectsSphere( sphere ) { - - // Find the point on the AABB closest to the sphere center. - this.clampPoint( sphere.center, closestPoint ); - - // If that point is inside the sphere, the AABB and sphere intersect. - return closestPoint.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius ); - - }; - - } )(), - - intersectsPlane: function ( plane ) { - - // We compute the minimum and maximum dot product values. If those values - // are on the same side (back or front) of the plane, then there is no intersection. - - var min, max; - - if ( plane.normal.x > 0 ) { - - min = plane.normal.x * this.min.x; - max = plane.normal.x * this.max.x; - - } else { - - min = plane.normal.x * this.max.x; - max = plane.normal.x * this.min.x; - - } - - if ( plane.normal.y > 0 ) { - - min += plane.normal.y * this.min.y; - max += plane.normal.y * this.max.y; - - } else { - - min += plane.normal.y * this.max.y; - max += plane.normal.y * this.min.y; - - } - - if ( plane.normal.z > 0 ) { - - min += plane.normal.z * this.min.z; - max += plane.normal.z * this.max.z; - - } else { - - min += plane.normal.z * this.max.z; - max += plane.normal.z * this.min.z; - - } - - return ( min <= - plane.constant && max >= - plane.constant ); - - }, - - intersectsTriangle: ( function () { - - // triangle centered vertices - var v0 = new Vector3(); - var v1 = new Vector3(); - var v2 = new Vector3(); - - // triangle edge vectors - var f0 = new Vector3(); - var f1 = new Vector3(); - var f2 = new Vector3(); - - var testAxis = new Vector3(); - - var center = new Vector3(); - var extents = new Vector3(); - - var triangleNormal = new Vector3(); - - function satForAxes( axes ) { - - var i, j; - - for ( i = 0, j = axes.length - 3; i <= j; i += 3 ) { - - testAxis.fromArray( axes, i ); - // project the aabb onto the seperating axis - var r = extents.x * Math.abs( testAxis.x ) + extents.y * Math.abs( testAxis.y ) + extents.z * Math.abs( testAxis.z ); - // project all 3 vertices of the triangle onto the seperating axis - var p0 = v0.dot( testAxis ); - var p1 = v1.dot( testAxis ); - var p2 = v2.dot( testAxis ); - // actual test, basically see if either of the most extreme of the triangle points intersects r - if ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) { - - // points of the projected triangle are outside the projected half-length of the aabb - // the axis is seperating and we can exit - return false; - - } - - } - - return true; - - } - - return function intersectsTriangle( triangle ) { - - if ( this.isEmpty() ) { - - return false; - - } - - // compute box center and extents - this.getCenter( center ); - extents.subVectors( this.max, center ); - - // translate triangle to aabb origin - v0.subVectors( triangle.a, center ); - v1.subVectors( triangle.b, center ); - v2.subVectors( triangle.c, center ); - - // compute edge vectors for triangle - f0.subVectors( v1, v0 ); - f1.subVectors( v2, v1 ); - f2.subVectors( v0, v2 ); - - // test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb - // make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation - // axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned) - var axes = [ - 0, - f0.z, f0.y, 0, - f1.z, f1.y, 0, - f2.z, f2.y, - f0.z, 0, - f0.x, f1.z, 0, - f1.x, f2.z, 0, - f2.x, - - f0.y, f0.x, 0, - f1.y, f1.x, 0, - f2.y, f2.x, 0 - ]; - if ( ! satForAxes( axes ) ) { - - return false; - - } - - // test 3 face normals from the aabb - axes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ]; - if ( ! satForAxes( axes ) ) { - - return false; - - } - - // finally testing the face normal of the triangle - // use already existing triangle edge vectors here - triangleNormal.crossVectors( f0, f1 ); - axes = [ triangleNormal.x, triangleNormal.y, triangleNormal.z ]; - return satForAxes( axes ); - - }; - - } )(), - - clampPoint: function ( point, target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Box3: .clampPoint() target is now required' ); - target = new Vector3(); - - } - - return target.copy( point ).clamp( this.min, this.max ); - - }, - - distanceToPoint: function () { - - var v1 = new Vector3(); - - return function distanceToPoint( point ) { - - var clampedPoint = v1.copy( point ).clamp( this.min, this.max ); - return clampedPoint.sub( point ).length(); - - }; - - }(), - - getBoundingSphere: function () { - - var v1 = new Vector3(); - - return function getBoundingSphere( target ) { - - if ( target === undefined ) { - - console.error( 'THREE.Box3: .getBoundingSphere() target is now required' ); - //target = new Sphere(); // removed to avoid cyclic dependency - - } - - this.getCenter( target.center ); - - target.radius = this.getSize( v1 ).length() * 0.5; - - return target; - - }; - - }(), - - intersect: function ( box ) { - - this.min.max( box.min ); - this.max.min( box.max ); - - // ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values. - if ( this.isEmpty() ) this.makeEmpty(); - - return this; - - }, - - union: function ( box ) { - - this.min.min( box.min ); - this.max.max( box.max ); - - return this; - - }, - - applyMatrix4: function () { - - var points = [ - new Vector3(), - new Vector3(), - new Vector3(), - new Vector3(), - new Vector3(), - new Vector3(), - new Vector3(), - new Vector3() - ]; - - return function applyMatrix4( matrix ) { - - // transform of empty box is an empty box. - if ( this.isEmpty() ) return this; - - // NOTE: I am using a binary pattern to specify all 2^3 combinations below - points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000 - points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001 - points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010 - points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011 - points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100 - points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101 - points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110 - points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111 - - this.setFromPoints( points ); - - return this; - - }; - - }(), - - translate: function ( offset ) { - - this.min.add( offset ); - this.max.add( offset ); - - return this; - - }, - - equals: function ( box ) { - - return box.min.equals( this.min ) && box.max.equals( this.max ); - - } - - } ); - - /** - * @author bhouston / http://clara.io - * @author mrdoob / http://mrdoob.com/ - */ - - function Sphere( center, radius ) { - - this.center = ( center !== undefined ) ? center : new Vector3(); - this.radius = ( radius !== undefined ) ? radius : 0; - - } - - Object.assign( Sphere.prototype, { - - set: function ( center, radius ) { - - this.center.copy( center ); - this.radius = radius; - - return this; - - }, - - setFromPoints: function () { - - var box = new Box3(); - - return function setFromPoints( points, optionalCenter ) { - - var center = this.center; - - if ( optionalCenter !== undefined ) { - - center.copy( optionalCenter ); - - } else { - - box.setFromPoints( points ).getCenter( center ); - - } - - var maxRadiusSq = 0; - - for ( var i = 0, il = points.length; i < il; i ++ ) { - - maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) ); - - } - - this.radius = Math.sqrt( maxRadiusSq ); - - return this; - - }; - - }(), - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( sphere ) { - - this.center.copy( sphere.center ); - this.radius = sphere.radius; - - return this; - - }, - - empty: function () { - - return ( this.radius <= 0 ); - - }, - - containsPoint: function ( point ) { - - return ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) ); - - }, - - distanceToPoint: function ( point ) { - - return ( point.distanceTo( this.center ) - this.radius ); - - }, - - intersectsSphere: function ( sphere ) { - - var radiusSum = this.radius + sphere.radius; - - return sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum ); - - }, - - intersectsBox: function ( box ) { - - return box.intersectsSphere( this ); - - }, - - intersectsPlane: function ( plane ) { - - return Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius; - - }, - - clampPoint: function ( point, target ) { - - var deltaLengthSq = this.center.distanceToSquared( point ); - - if ( target === undefined ) { - - console.warn( 'THREE.Sphere: .clampPoint() target is now required' ); - target = new Vector3(); - - } - - target.copy( point ); - - if ( deltaLengthSq > ( this.radius * this.radius ) ) { - - target.sub( this.center ).normalize(); - target.multiplyScalar( this.radius ).add( this.center ); - - } - - return target; - - }, - - getBoundingBox: function ( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Sphere: .getBoundingBox() target is now required' ); - target = new Box3(); - - } - - target.set( this.center, this.center ); - target.expandByScalar( this.radius ); - - return target; - - }, - - applyMatrix4: function ( matrix ) { - - this.center.applyMatrix4( matrix ); - this.radius = this.radius * matrix.getMaxScaleOnAxis(); - - return this; - - }, - - translate: function ( offset ) { - - this.center.add( offset ); - - return this; - - }, - - equals: function ( sphere ) { - - return sphere.center.equals( this.center ) && ( sphere.radius === this.radius ); - - } - - } ); - - /** - * @author bhouston / http://clara.io - */ - - function Plane( normal, constant ) { - - // normal is assumed to be normalized - - this.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 ); - this.constant = ( constant !== undefined ) ? constant : 0; - - } - - Object.assign( Plane.prototype, { - - set: function ( normal, constant ) { - - this.normal.copy( normal ); - this.constant = constant; - - return this; - - }, - - setComponents: function ( x, y, z, w ) { - - this.normal.set( x, y, z ); - this.constant = w; - - return this; - - }, - - setFromNormalAndCoplanarPoint: function ( normal, point ) { - - this.normal.copy( normal ); - this.constant = - point.dot( this.normal ); - - return this; - - }, - - setFromCoplanarPoints: function () { - - var v1 = new Vector3(); - var v2 = new Vector3(); - - return function setFromCoplanarPoints( a, b, c ) { - - var normal = v1.subVectors( c, b ).cross( v2.subVectors( a, b ) ).normalize(); - - // Q: should an error be thrown if normal is zero (e.g. degenerate plane)? - - this.setFromNormalAndCoplanarPoint( normal, a ); - - return this; - - }; - - }(), - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( plane ) { - - this.normal.copy( plane.normal ); - this.constant = plane.constant; - - return this; - - }, - - normalize: function () { - - // Note: will lead to a divide by zero if the plane is invalid. - - var inverseNormalLength = 1.0 / this.normal.length(); - this.normal.multiplyScalar( inverseNormalLength ); - this.constant *= inverseNormalLength; - - return this; - - }, - - negate: function () { - - this.constant *= - 1; - this.normal.negate(); - - return this; - - }, - - distanceToPoint: function ( point ) { - - return this.normal.dot( point ) + this.constant; - - }, - - distanceToSphere: function ( sphere ) { - - return this.distanceToPoint( sphere.center ) - sphere.radius; - - }, - - projectPoint: function ( point, target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Plane: .projectPoint() target is now required' ); - target = new Vector3(); - - } - - return target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point ); - - }, - - intersectLine: function () { - - var v1 = new Vector3(); - - return function intersectLine( line, target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Plane: .intersectLine() target is now required' ); - target = new Vector3(); - - } - - var direction = line.delta( v1 ); - - var denominator = this.normal.dot( direction ); - - if ( denominator === 0 ) { - - // line is coplanar, return origin - if ( this.distanceToPoint( line.start ) === 0 ) { - - return target.copy( line.start ); - - } - - // Unsure if this is the correct method to handle this case. - return undefined; - - } - - var t = - ( line.start.dot( this.normal ) + this.constant ) / denominator; - - if ( t < 0 || t > 1 ) { - - return undefined; - - } - - return target.copy( direction ).multiplyScalar( t ).add( line.start ); - - }; - - }(), - - intersectsLine: function ( line ) { - - // Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it. - - var startSign = this.distanceToPoint( line.start ); - var endSign = this.distanceToPoint( line.end ); - - return ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 ); - - }, - - intersectsBox: function ( box ) { - - return box.intersectsPlane( this ); - - }, - - intersectsSphere: function ( sphere ) { - - return sphere.intersectsPlane( this ); - - }, - - coplanarPoint: function ( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Plane: .coplanarPoint() target is now required' ); - target = new Vector3(); - - } - - return target.copy( this.normal ).multiplyScalar( - this.constant ); - - }, - - applyMatrix4: function () { - - var v1 = new Vector3(); - var m1 = new Matrix3(); - - return function applyMatrix4( matrix, optionalNormalMatrix ) { - - var normalMatrix = optionalNormalMatrix || m1.getNormalMatrix( matrix ); - - var referencePoint = this.coplanarPoint( v1 ).applyMatrix4( matrix ); - - var normal = this.normal.applyMatrix3( normalMatrix ).normalize(); - - this.constant = - referencePoint.dot( normal ); - - return this; - - }; - - }(), - - translate: function ( offset ) { - - this.constant -= offset.dot( this.normal ); - - return this; - - }, - - equals: function ( plane ) { - - return plane.normal.equals( this.normal ) && ( plane.constant === this.constant ); - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - * @author bhouston / http://clara.io - */ - - function Frustum( p0, p1, p2, p3, p4, p5 ) { - - this.planes = [ - - ( p0 !== undefined ) ? p0 : new Plane(), - ( p1 !== undefined ) ? p1 : new Plane(), - ( p2 !== undefined ) ? p2 : new Plane(), - ( p3 !== undefined ) ? p3 : new Plane(), - ( p4 !== undefined ) ? p4 : new Plane(), - ( p5 !== undefined ) ? p5 : new Plane() - - ]; - - } - - Object.assign( Frustum.prototype, { - - set: function ( p0, p1, p2, p3, p4, p5 ) { - - var planes = this.planes; - - planes[ 0 ].copy( p0 ); - planes[ 1 ].copy( p1 ); - planes[ 2 ].copy( p2 ); - planes[ 3 ].copy( p3 ); - planes[ 4 ].copy( p4 ); - planes[ 5 ].copy( p5 ); - - return this; - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( frustum ) { - - var planes = this.planes; - - for ( var i = 0; i < 6; i ++ ) { - - planes[ i ].copy( frustum.planes[ i ] ); - - } - - return this; - - }, - - setFromMatrix: function ( m ) { - - var planes = this.planes; - var me = m.elements; - var me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ]; - var me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ]; - var me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ]; - var me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ]; - - planes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize(); - planes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize(); - planes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize(); - planes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize(); - planes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize(); - planes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize(); - - return this; - - }, - - intersectsObject: function () { - - var sphere = new Sphere(); - - return function intersectsObject( object ) { - - var geometry = object.geometry; - - if ( geometry.boundingSphere === null ) - geometry.computeBoundingSphere(); - - sphere.copy( geometry.boundingSphere ) - .applyMatrix4( object.matrixWorld ); - - return this.intersectsSphere( sphere ); - - }; - - }(), - - intersectsSprite: function () { - - var sphere = new Sphere(); - - return function intersectsSprite( sprite ) { - - sphere.center.set( 0, 0, 0 ); - sphere.radius = 0.7071067811865476; - sphere.applyMatrix4( sprite.matrixWorld ); - - return this.intersectsSphere( sphere ); - - }; - - }(), - - intersectsSphere: function ( sphere ) { - - var planes = this.planes; - var center = sphere.center; - var negRadius = - sphere.radius; - - for ( var i = 0; i < 6; i ++ ) { - - var distance = planes[ i ].distanceToPoint( center ); - - if ( distance < negRadius ) { - - return false; - - } - - } - - return true; - - }, - - intersectsBox: function () { - - var p = new Vector3(); - - return function intersectsBox( box ) { - - var planes = this.planes; - - for ( var i = 0; i < 6; i ++ ) { - - var plane = planes[ i ]; - - // corner at max distance - - p.x = plane.normal.x > 0 ? box.max.x : box.min.x; - p.y = plane.normal.y > 0 ? box.max.y : box.min.y; - p.z = plane.normal.z > 0 ? box.max.z : box.min.z; - - if ( plane.distanceToPoint( p ) < 0 ) { - - return false; - - } - - } - - return true; - - }; - - }(), - - containsPoint: function ( point ) { - - var planes = this.planes; - - for ( var i = 0; i < 6; i ++ ) { - - if ( planes[ i ].distanceToPoint( point ) < 0 ) { - - return false; - - } - - } - - return true; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author supereggbert / http://www.paulbrunt.co.uk/ - * @author philogb / http://blog.thejit.org/ - * @author jordi_ros / http://plattsoft.com - * @author D1plo1d / http://github.com/D1plo1d - * @author alteredq / http://alteredqualia.com/ - * @author mikael emtinger / http://gomo.se/ - * @author timknip / http://www.floorplanner.com/ - * @author bhouston / http://clara.io - * @author WestLangley / http://github.com/WestLangley - */ - - function Matrix4() { - - this.elements = [ - - 1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1 - - ]; - - if ( arguments.length > 0 ) { - - console.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' ); - - } - - } - - Object.assign( Matrix4.prototype, { - - isMatrix4: true, - - set: function ( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) { - - var te = this.elements; - - te[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14; - te[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24; - te[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34; - te[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44; - - return this; - - }, - - identity: function () { - - this.set( - - 1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1 - - ); - - return this; - - }, - - clone: function () { - - return new Matrix4().fromArray( this.elements ); - - }, - - copy: function ( m ) { - - var te = this.elements; - var me = m.elements; - - te[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ]; - te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; - te[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ]; - te[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ]; - - return this; - - }, - - copyPosition: function ( m ) { - - var te = this.elements, me = m.elements; - - te[ 12 ] = me[ 12 ]; - te[ 13 ] = me[ 13 ]; - te[ 14 ] = me[ 14 ]; - - return this; - - }, - - extractBasis: function ( xAxis, yAxis, zAxis ) { - - xAxis.setFromMatrixColumn( this, 0 ); - yAxis.setFromMatrixColumn( this, 1 ); - zAxis.setFromMatrixColumn( this, 2 ); - - return this; - - }, - - makeBasis: function ( xAxis, yAxis, zAxis ) { - - this.set( - xAxis.x, yAxis.x, zAxis.x, 0, - xAxis.y, yAxis.y, zAxis.y, 0, - xAxis.z, yAxis.z, zAxis.z, 0, - 0, 0, 0, 1 - ); - - return this; - - }, - - extractRotation: function () { - - var v1 = new Vector3(); - - return function extractRotation( m ) { - - // this method does not support reflection matrices - - var te = this.elements; - var me = m.elements; - - var scaleX = 1 / v1.setFromMatrixColumn( m, 0 ).length(); - var scaleY = 1 / v1.setFromMatrixColumn( m, 1 ).length(); - var scaleZ = 1 / v1.setFromMatrixColumn( m, 2 ).length(); - - te[ 0 ] = me[ 0 ] * scaleX; - te[ 1 ] = me[ 1 ] * scaleX; - te[ 2 ] = me[ 2 ] * scaleX; - te[ 3 ] = 0; - - te[ 4 ] = me[ 4 ] * scaleY; - te[ 5 ] = me[ 5 ] * scaleY; - te[ 6 ] = me[ 6 ] * scaleY; - te[ 7 ] = 0; - - te[ 8 ] = me[ 8 ] * scaleZ; - te[ 9 ] = me[ 9 ] * scaleZ; - te[ 10 ] = me[ 10 ] * scaleZ; - te[ 11 ] = 0; - - te[ 12 ] = 0; - te[ 13 ] = 0; - te[ 14 ] = 0; - te[ 15 ] = 1; - - return this; - - }; - - }(), - - makeRotationFromEuler: function ( euler ) { - - if ( ! ( euler && euler.isEuler ) ) { - - console.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' ); - - } - - var te = this.elements; - - var x = euler.x, y = euler.y, z = euler.z; - var a = Math.cos( x ), b = Math.sin( x ); - var c = Math.cos( y ), d = Math.sin( y ); - var e = Math.cos( z ), f = Math.sin( z ); - - if ( euler.order === 'XYZ' ) { - - var ae = a * e, af = a * f, be = b * e, bf = b * f; - - te[ 0 ] = c * e; - te[ 4 ] = - c * f; - te[ 8 ] = d; - - te[ 1 ] = af + be * d; - te[ 5 ] = ae - bf * d; - te[ 9 ] = - b * c; - - te[ 2 ] = bf - ae * d; - te[ 6 ] = be + af * d; - te[ 10 ] = a * c; - - } else if ( euler.order === 'YXZ' ) { - - var ce = c * e, cf = c * f, de = d * e, df = d * f; - - te[ 0 ] = ce + df * b; - te[ 4 ] = de * b - cf; - te[ 8 ] = a * d; - - te[ 1 ] = a * f; - te[ 5 ] = a * e; - te[ 9 ] = - b; - - te[ 2 ] = cf * b - de; - te[ 6 ] = df + ce * b; - te[ 10 ] = a * c; - - } else if ( euler.order === 'ZXY' ) { - - var ce = c * e, cf = c * f, de = d * e, df = d * f; - - te[ 0 ] = ce - df * b; - te[ 4 ] = - a * f; - te[ 8 ] = de + cf * b; - - te[ 1 ] = cf + de * b; - te[ 5 ] = a * e; - te[ 9 ] = df - ce * b; - - te[ 2 ] = - a * d; - te[ 6 ] = b; - te[ 10 ] = a * c; - - } else if ( euler.order === 'ZYX' ) { - - var ae = a * e, af = a * f, be = b * e, bf = b * f; - - te[ 0 ] = c * e; - te[ 4 ] = be * d - af; - te[ 8 ] = ae * d + bf; - - te[ 1 ] = c * f; - te[ 5 ] = bf * d + ae; - te[ 9 ] = af * d - be; - - te[ 2 ] = - d; - te[ 6 ] = b * c; - te[ 10 ] = a * c; - - } else if ( euler.order === 'YZX' ) { - - var ac = a * c, ad = a * d, bc = b * c, bd = b * d; - - te[ 0 ] = c * e; - te[ 4 ] = bd - ac * f; - te[ 8 ] = bc * f + ad; - - te[ 1 ] = f; - te[ 5 ] = a * e; - te[ 9 ] = - b * e; - - te[ 2 ] = - d * e; - te[ 6 ] = ad * f + bc; - te[ 10 ] = ac - bd * f; - - } else if ( euler.order === 'XZY' ) { - - var ac = a * c, ad = a * d, bc = b * c, bd = b * d; - - te[ 0 ] = c * e; - te[ 4 ] = - f; - te[ 8 ] = d * e; - - te[ 1 ] = ac * f + bd; - te[ 5 ] = a * e; - te[ 9 ] = ad * f - bc; - - te[ 2 ] = bc * f - ad; - te[ 6 ] = b * e; - te[ 10 ] = bd * f + ac; - - } - - // bottom row - te[ 3 ] = 0; - te[ 7 ] = 0; - te[ 11 ] = 0; - - // last column - te[ 12 ] = 0; - te[ 13 ] = 0; - te[ 14 ] = 0; - te[ 15 ] = 1; - - return this; - - }, - - makeRotationFromQuaternion: function () { - - var zero = new Vector3( 0, 0, 0 ); - var one = new Vector3( 1, 1, 1 ); - - return function makeRotationFromQuaternion( q ) { - - return this.compose( zero, q, one ); - - }; - - }(), - - lookAt: function () { - - var x = new Vector3(); - var y = new Vector3(); - var z = new Vector3(); - - return function lookAt( eye, target, up ) { - - var te = this.elements; - - z.subVectors( eye, target ); - - if ( z.lengthSq() === 0 ) { - - // eye and target are in the same position - - z.z = 1; - - } - - z.normalize(); - x.crossVectors( up, z ); - - if ( x.lengthSq() === 0 ) { - - // up and z are parallel - - if ( Math.abs( up.z ) === 1 ) { - - z.x += 0.0001; - - } else { - - z.z += 0.0001; - - } - - z.normalize(); - x.crossVectors( up, z ); - - } - - x.normalize(); - y.crossVectors( z, x ); - - te[ 0 ] = x.x; te[ 4 ] = y.x; te[ 8 ] = z.x; - te[ 1 ] = x.y; te[ 5 ] = y.y; te[ 9 ] = z.y; - te[ 2 ] = x.z; te[ 6 ] = y.z; te[ 10 ] = z.z; - - return this; - - }; - - }(), - - multiply: function ( m, n ) { - - if ( n !== undefined ) { - - console.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' ); - return this.multiplyMatrices( m, n ); - - } - - return this.multiplyMatrices( this, m ); - - }, - - premultiply: function ( m ) { - - return this.multiplyMatrices( m, this ); - - }, - - multiplyMatrices: function ( a, b ) { - - var ae = a.elements; - var be = b.elements; - var te = this.elements; - - var a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ]; - var a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ]; - var a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ]; - var a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ]; - - var b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ]; - var b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ]; - var b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ]; - var b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ]; - - te[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41; - te[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42; - te[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43; - te[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44; - - te[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41; - te[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42; - te[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43; - te[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44; - - te[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41; - te[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42; - te[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43; - te[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44; - - te[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41; - te[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42; - te[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43; - te[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44; - - return this; - - }, - - multiplyScalar: function ( s ) { - - var te = this.elements; - - te[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s; - te[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s; - te[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s; - te[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s; - - return this; - - }, - - applyToBufferAttribute: function () { - - var v1 = new Vector3(); - - return function applyToBufferAttribute( attribute ) { - - for ( var i = 0, l = attribute.count; i < l; i ++ ) { - - v1.x = attribute.getX( i ); - v1.y = attribute.getY( i ); - v1.z = attribute.getZ( i ); - - v1.applyMatrix4( this ); - - attribute.setXYZ( i, v1.x, v1.y, v1.z ); - - } - - return attribute; - - }; - - }(), - - determinant: function () { - - var te = this.elements; - - var n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ]; - var n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ]; - var n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ]; - var n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ]; - - //TODO: make this more efficient - //( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm ) - - return ( - n41 * ( - + n14 * n23 * n32 - - n13 * n24 * n32 - - n14 * n22 * n33 - + n12 * n24 * n33 - + n13 * n22 * n34 - - n12 * n23 * n34 - ) + - n42 * ( - + n11 * n23 * n34 - - n11 * n24 * n33 - + n14 * n21 * n33 - - n13 * n21 * n34 - + n13 * n24 * n31 - - n14 * n23 * n31 - ) + - n43 * ( - + n11 * n24 * n32 - - n11 * n22 * n34 - - n14 * n21 * n32 - + n12 * n21 * n34 - + n14 * n22 * n31 - - n12 * n24 * n31 - ) + - n44 * ( - - n13 * n22 * n31 - - n11 * n23 * n32 - + n11 * n22 * n33 - + n13 * n21 * n32 - - n12 * n21 * n33 - + n12 * n23 * n31 - ) - - ); - - }, - - transpose: function () { - - var te = this.elements; - var tmp; - - tmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp; - tmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp; - tmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp; - - tmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp; - tmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp; - tmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp; - - return this; - - }, - - setPosition: function ( x, y, z ) { - - var te = this.elements; - - if ( x.isVector3 ) { - - te[ 12 ] = x.x; - te[ 13 ] = x.y; - te[ 14 ] = x.z; - - } else { - - te[ 12 ] = x; - te[ 13 ] = y; - te[ 14 ] = z; - - } - - return this; - - }, - - getInverse: function ( m, throwOnDegenerate ) { - - // based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm - var te = this.elements, - me = m.elements, - - n11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ], - n12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ], - n13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ], - n14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ], - - t11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44, - t12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44, - t13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44, - t14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34; - - var det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14; - - if ( det === 0 ) { - - var msg = "THREE.Matrix4: .getInverse() can't invert matrix, determinant is 0"; - - if ( throwOnDegenerate === true ) { - - throw new Error( msg ); - - } else { - - console.warn( msg ); - - } - - return this.identity(); - - } - - var detInv = 1 / det; - - te[ 0 ] = t11 * detInv; - te[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv; - te[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv; - te[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv; - - te[ 4 ] = t12 * detInv; - te[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv; - te[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv; - te[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv; - - te[ 8 ] = t13 * detInv; - te[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv; - te[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv; - te[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv; - - te[ 12 ] = t14 * detInv; - te[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv; - te[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv; - te[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv; - - return this; - - }, - - scale: function ( v ) { - - var te = this.elements; - var x = v.x, y = v.y, z = v.z; - - te[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z; - te[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z; - te[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z; - te[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z; - - return this; - - }, - - getMaxScaleOnAxis: function () { - - var te = this.elements; - - var scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ]; - var scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ]; - var scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ]; - - return Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) ); - - }, - - makeTranslation: function ( x, y, z ) { - - this.set( - - 1, 0, 0, x, - 0, 1, 0, y, - 0, 0, 1, z, - 0, 0, 0, 1 - - ); - - return this; - - }, - - makeRotationX: function ( theta ) { - - var c = Math.cos( theta ), s = Math.sin( theta ); - - this.set( - - 1, 0, 0, 0, - 0, c, - s, 0, - 0, s, c, 0, - 0, 0, 0, 1 - - ); - - return this; - - }, - - makeRotationY: function ( theta ) { - - var c = Math.cos( theta ), s = Math.sin( theta ); - - this.set( - - c, 0, s, 0, - 0, 1, 0, 0, - - s, 0, c, 0, - 0, 0, 0, 1 - - ); - - return this; - - }, - - makeRotationZ: function ( theta ) { - - var c = Math.cos( theta ), s = Math.sin( theta ); - - this.set( - - c, - s, 0, 0, - s, c, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1 - - ); - - return this; - - }, - - makeRotationAxis: function ( axis, angle ) { - - // Based on http://www.gamedev.net/reference/articles/article1199.asp - - var c = Math.cos( angle ); - var s = Math.sin( angle ); - var t = 1 - c; - var x = axis.x, y = axis.y, z = axis.z; - var tx = t * x, ty = t * y; - - this.set( - - tx * x + c, tx * y - s * z, tx * z + s * y, 0, - tx * y + s * z, ty * y + c, ty * z - s * x, 0, - tx * z - s * y, ty * z + s * x, t * z * z + c, 0, - 0, 0, 0, 1 - - ); - - return this; - - }, - - makeScale: function ( x, y, z ) { - - this.set( - - x, 0, 0, 0, - 0, y, 0, 0, - 0, 0, z, 0, - 0, 0, 0, 1 - - ); - - return this; - - }, - - makeShear: function ( x, y, z ) { - - this.set( - - 1, y, z, 0, - x, 1, z, 0, - x, y, 1, 0, - 0, 0, 0, 1 - - ); - - return this; - - }, - - compose: function ( position, quaternion, scale ) { - - var te = this.elements; - - var x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w; - var x2 = x + x, y2 = y + y, z2 = z + z; - var xx = x * x2, xy = x * y2, xz = x * z2; - var yy = y * y2, yz = y * z2, zz = z * z2; - var wx = w * x2, wy = w * y2, wz = w * z2; - - var sx = scale.x, sy = scale.y, sz = scale.z; - - te[ 0 ] = ( 1 - ( yy + zz ) ) * sx; - te[ 1 ] = ( xy + wz ) * sx; - te[ 2 ] = ( xz - wy ) * sx; - te[ 3 ] = 0; - - te[ 4 ] = ( xy - wz ) * sy; - te[ 5 ] = ( 1 - ( xx + zz ) ) * sy; - te[ 6 ] = ( yz + wx ) * sy; - te[ 7 ] = 0; - - te[ 8 ] = ( xz + wy ) * sz; - te[ 9 ] = ( yz - wx ) * sz; - te[ 10 ] = ( 1 - ( xx + yy ) ) * sz; - te[ 11 ] = 0; - - te[ 12 ] = position.x; - te[ 13 ] = position.y; - te[ 14 ] = position.z; - te[ 15 ] = 1; - - return this; - - }, - - decompose: function () { - - var vector = new Vector3(); - var matrix = new Matrix4(); - - return function decompose( position, quaternion, scale ) { - - var te = this.elements; - - var sx = vector.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length(); - var sy = vector.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length(); - var sz = vector.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length(); - - // if determine is negative, we need to invert one scale - var det = this.determinant(); - if ( det < 0 ) sx = - sx; - - position.x = te[ 12 ]; - position.y = te[ 13 ]; - position.z = te[ 14 ]; - - // scale the rotation part - matrix.copy( this ); - - var invSX = 1 / sx; - var invSY = 1 / sy; - var invSZ = 1 / sz; - - matrix.elements[ 0 ] *= invSX; - matrix.elements[ 1 ] *= invSX; - matrix.elements[ 2 ] *= invSX; - - matrix.elements[ 4 ] *= invSY; - matrix.elements[ 5 ] *= invSY; - matrix.elements[ 6 ] *= invSY; - - matrix.elements[ 8 ] *= invSZ; - matrix.elements[ 9 ] *= invSZ; - matrix.elements[ 10 ] *= invSZ; - - quaternion.setFromRotationMatrix( matrix ); - - scale.x = sx; - scale.y = sy; - scale.z = sz; - - return this; - - }; - - }(), - - makePerspective: function ( left, right, top, bottom, near, far ) { - - if ( far === undefined ) { - - console.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' ); - - } - - var te = this.elements; - var x = 2 * near / ( right - left ); - var y = 2 * near / ( top - bottom ); - - var a = ( right + left ) / ( right - left ); - var b = ( top + bottom ) / ( top - bottom ); - var c = - ( far + near ) / ( far - near ); - var d = - 2 * far * near / ( far - near ); - - te[ 0 ] = x; te[ 4 ] = 0; te[ 8 ] = a; te[ 12 ] = 0; - te[ 1 ] = 0; te[ 5 ] = y; te[ 9 ] = b; te[ 13 ] = 0; - te[ 2 ] = 0; te[ 6 ] = 0; te[ 10 ] = c; te[ 14 ] = d; - te[ 3 ] = 0; te[ 7 ] = 0; te[ 11 ] = - 1; te[ 15 ] = 0; - - return this; - - }, - - makeOrthographic: function ( left, right, top, bottom, near, far ) { - - var te = this.elements; - var w = 1.0 / ( right - left ); - var h = 1.0 / ( top - bottom ); - var p = 1.0 / ( far - near ); - - var x = ( right + left ) * w; - var y = ( top + bottom ) * h; - var z = ( far + near ) * p; - - te[ 0 ] = 2 * w; te[ 4 ] = 0; te[ 8 ] = 0; te[ 12 ] = - x; - te[ 1 ] = 0; te[ 5 ] = 2 * h; te[ 9 ] = 0; te[ 13 ] = - y; - te[ 2 ] = 0; te[ 6 ] = 0; te[ 10 ] = - 2 * p; te[ 14 ] = - z; - te[ 3 ] = 0; te[ 7 ] = 0; te[ 11 ] = 0; te[ 15 ] = 1; - - return this; - - }, - - equals: function ( matrix ) { - - var te = this.elements; - var me = matrix.elements; - - for ( var i = 0; i < 16; i ++ ) { - - if ( te[ i ] !== me[ i ] ) return false; - - } - - return true; - - }, - - fromArray: function ( array, offset ) { - - if ( offset === undefined ) offset = 0; - - for ( var i = 0; i < 16; i ++ ) { - - this.elements[ i ] = array[ i + offset ]; - - } - - return this; - - }, - - toArray: function ( array, offset ) { - - if ( array === undefined ) array = []; - if ( offset === undefined ) offset = 0; - - var te = this.elements; - - array[ offset ] = te[ 0 ]; - array[ offset + 1 ] = te[ 1 ]; - array[ offset + 2 ] = te[ 2 ]; - array[ offset + 3 ] = te[ 3 ]; - - array[ offset + 4 ] = te[ 4 ]; - array[ offset + 5 ] = te[ 5 ]; - array[ offset + 6 ] = te[ 6 ]; - array[ offset + 7 ] = te[ 7 ]; - - array[ offset + 8 ] = te[ 8 ]; - array[ offset + 9 ] = te[ 9 ]; - array[ offset + 10 ] = te[ 10 ]; - array[ offset + 11 ] = te[ 11 ]; - - array[ offset + 12 ] = te[ 12 ]; - array[ offset + 13 ] = te[ 13 ]; - array[ offset + 14 ] = te[ 14 ]; - array[ offset + 15 ] = te[ 15 ]; - - return array; - - } - - } ); - - var alphamap_fragment = "#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\n#endif"; - - var alphamap_pars_fragment = "#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif"; - - var alphatest_fragment = "#ifdef ALPHATEST\n\tif ( diffuseColor.a < ALPHATEST ) discard;\n#endif"; - - var aomap_fragment = "#ifdef USE_AOMAP\n\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\n\treflectedLight.indirectDiffuse *= ambientOcclusion;\n\t#if defined( USE_ENVMAP ) && defined( PHYSICAL )\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\n\t#endif\n#endif"; - - var aomap_pars_fragment = "#ifdef USE_AOMAP\n\tuniform sampler2D aoMap;\n\tuniform float aoMapIntensity;\n#endif"; - - var begin_vertex = "vec3 transformed = vec3( position );"; - - var beginnormal_vertex = "vec3 objectNormal = vec3( normal );\n#ifdef USE_TANGENT\n\tvec3 objectTangent = vec3( tangent.xyz );\n#endif"; - - var bsdfs = "vec2 integrateSpecularBRDF( const in float dotNV, const in float roughness ) {\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\treturn vec2( -1.04, 1.04 ) * a004 + r.zw;\n}\nfloat punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\tif( cutoffDistance > 0.0 ) {\n\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t}\n\treturn distanceFalloff;\n#else\n\tif( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t}\n\treturn 1.0;\n#endif\n}\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\n\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\n}\nvec3 F_Schlick_RoughnessDependent( const in vec3 F0, const in float dotNV, const in float roughness ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotNV - 6.98316 ) * dotNV );\n\tvec3 Fr = max( vec3( 1.0 - roughness ), F0 ) - F0;\n\treturn Fr * fresnel + F0;\n}\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\treturn 1.0 / ( gl * gv );\n}\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNL = saturate( dot( geometry.normal, incidentLight.direction ) );\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\tfloat D = D_GGX( alpha, dotNH );\n\treturn F * ( G * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\nvec3 BRDF_Specular_GGX_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\treturn specularColor * brdf.x + brdf.y;\n}\nvoid BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tvec3 F = F_Schlick_RoughnessDependent( specularColor, dotNV, roughness );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\tvec3 FssEss = F * brdf.x + brdf.y;\n\tfloat Ess = brdf.x + brdf.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\n\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\n}\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\n\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\n}"; - - var bumpmap_pars_fragment = "#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\n\t\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\n\t\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 );\n\t\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif"; - - var clipping_planes_fragment = "#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vViewPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\tif ( clipped ) discard;\n\t#endif\n#endif"; - - var clipping_planes_pars_fragment = "#if NUM_CLIPPING_PLANES > 0\n\t#if ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\n\t\tvarying vec3 vViewPosition;\n\t#endif\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif"; - - var clipping_planes_pars_vertex = "#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\n\tvarying vec3 vViewPosition;\n#endif"; - - var clipping_planes_vertex = "#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif"; - - var color_fragment = "#ifdef USE_COLOR\n\tdiffuseColor.rgb *= vColor;\n#endif"; - - var color_pars_fragment = "#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif"; - - var color_pars_vertex = "#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif"; - - var color_vertex = "#ifdef USE_COLOR\n\tvColor.xyz = color.xyz;\n#endif"; - - var common = "#define PI 3.14159265359\n#define PI2 6.28318530718\n#define PI_HALF 1.5707963267949\n#define RECIPROCAL_PI 0.31830988618\n#define RECIPROCAL_PI2 0.15915494\n#define LOG2 1.442695\n#define EPSILON 1e-6\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#define whiteCompliment(a) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract(sin(sn) * c);\n}\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\tfloat distance = dot( planeNormal, point - pointOnPlane );\n\treturn - distance * planeNormal + point;\n}\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn sign( dot( point - pointOnPlane, planeNormal ) );\n}\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat linearToRelativeLuminance( const in vec3 color ) {\n\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\n\treturn dot( weights, color.rgb );\n}"; - - var cube_uv_reflection_fragment = "#ifdef ENVMAP_TYPE_CUBE_UV\n#define cubeUV_textureSize (1024.0)\nint getFaceFromDirection(vec3 direction) {\n\tvec3 absDirection = abs(direction);\n\tint face = -1;\n\tif( absDirection.x > absDirection.z ) {\n\t\tif(absDirection.x > absDirection.y )\n\t\t\tface = direction.x > 0.0 ? 0 : 3;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\telse {\n\t\tif(absDirection.z > absDirection.y )\n\t\t\tface = direction.z > 0.0 ? 2 : 5;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\treturn face;\n}\n#define cubeUV_maxLods1 (log2(cubeUV_textureSize*0.25) - 1.0)\n#define cubeUV_rangeClamp (exp2((6.0 - 1.0) * 2.0))\nvec2 MipLevelInfo( vec3 vec, float roughnessLevel, float roughness ) {\n\tfloat scale = exp2(cubeUV_maxLods1 - roughnessLevel);\n\tfloat dxRoughness = dFdx(roughness);\n\tfloat dyRoughness = dFdy(roughness);\n\tvec3 dx = dFdx( vec * scale * dxRoughness );\n\tvec3 dy = dFdy( vec * scale * dyRoughness );\n\tfloat d = max( dot( dx, dx ), dot( dy, dy ) );\n\td = clamp(d, 1.0, cubeUV_rangeClamp);\n\tfloat mipLevel = 0.5 * log2(d);\n\treturn vec2(floor(mipLevel), fract(mipLevel));\n}\n#define cubeUV_maxLods2 (log2(cubeUV_textureSize*0.25) - 2.0)\n#define cubeUV_rcpTextureSize (1.0 / cubeUV_textureSize)\nvec2 getCubeUV(vec3 direction, float roughnessLevel, float mipLevel) {\n\tmipLevel = roughnessLevel > cubeUV_maxLods2 - 3.0 ? 0.0 : mipLevel;\n\tfloat a = 16.0 * cubeUV_rcpTextureSize;\n\tvec2 exp2_packed = exp2( vec2( roughnessLevel, mipLevel ) );\n\tvec2 rcp_exp2_packed = vec2( 1.0 ) / exp2_packed;\n\tfloat powScale = exp2_packed.x * exp2_packed.y;\n\tfloat scale = rcp_exp2_packed.x * rcp_exp2_packed.y * 0.25;\n\tfloat mipOffset = 0.75*(1.0 - rcp_exp2_packed.y) * rcp_exp2_packed.x;\n\tbool bRes = mipLevel == 0.0;\n\tscale = bRes && (scale < a) ? a : scale;\n\tvec3 r;\n\tvec2 offset;\n\tint face = getFaceFromDirection(direction);\n\tfloat rcpPowScale = 1.0 / powScale;\n\tif( face == 0) {\n\t\tr = vec3(direction.x, -direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 1) {\n\t\tr = vec3(direction.y, direction.x, direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 2) {\n\t\tr = vec3(direction.z, direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 3) {\n\t\tr = vec3(direction.x, direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse if( face == 4) {\n\t\tr = vec3(direction.y, direction.x, -direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse {\n\t\tr = vec3(direction.z, -direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\tr = normalize(r);\n\tfloat texelOffset = 0.5 * cubeUV_rcpTextureSize;\n\tvec2 s = ( r.yz / abs( r.x ) + vec2( 1.0 ) ) * 0.5;\n\tvec2 base = offset + vec2( texelOffset );\n\treturn base + s * ( scale - 2.0 * texelOffset );\n}\n#define cubeUV_maxLods3 (log2(cubeUV_textureSize*0.25) - 3.0)\nvec4 textureCubeUV( sampler2D envMap, vec3 reflectedDirection, float roughness ) {\n\tfloat roughnessVal = roughness* cubeUV_maxLods3;\n\tfloat r1 = floor(roughnessVal);\n\tfloat r2 = r1 + 1.0;\n\tfloat t = fract(roughnessVal);\n\tvec2 mipInfo = MipLevelInfo(reflectedDirection, r1, roughness);\n\tfloat s = mipInfo.y;\n\tfloat level0 = mipInfo.x;\n\tfloat level1 = level0 + 1.0;\n\tlevel1 = level1 > 5.0 ? 5.0 : level1;\n\tlevel0 += min( floor( s + 0.5 ), 5.0 );\n\tvec2 uv_10 = getCubeUV(reflectedDirection, r1, level0);\n\tvec4 color10 = envMapTexelToLinear(texture2D(envMap, uv_10));\n\tvec2 uv_20 = getCubeUV(reflectedDirection, r2, level0);\n\tvec4 color20 = envMapTexelToLinear(texture2D(envMap, uv_20));\n\tvec4 result = mix(color10, color20, t);\n\treturn vec4(result.rgb, 1.0);\n}\n#endif"; - - var defaultnormal_vertex = "vec3 transformedNormal = normalMatrix * objectNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = normalMatrix * objectTangent;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif"; - - var displacementmap_pars_vertex = "#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif"; - - var displacementmap_vertex = "#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, uv ).x * displacementScale + displacementBias );\n#endif"; - - var emissivemap_fragment = "#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif"; - - var emissivemap_pars_fragment = "#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif"; - - var encodings_fragment = "gl_FragColor = linearToOutputTexel( gl_FragColor );"; - - var encodings_pars_fragment = "\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\n}\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\n}\nvec4 sRGBToLinear( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}\nvec4 RGBEToLinear( in vec4 value ) {\n\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\n}\nvec4 LinearToRGBE( in vec4 value ) {\n\tfloat maxComponent = max( max( value.r, value.g ), value.b );\n\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\n\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\n}\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\n}\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\n\tM = ceil( M * 255.0 ) / 255.0;\n\treturn vec4( value.rgb / ( M * maxRange ), M );\n}\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\n}\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat D = max( maxRange / maxRGB, 1.0 );\n\tD = min( floor( D ) / 255.0, 1.0 );\n\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\n}\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\nvec4 LinearToLogLuv( in vec4 value ) {\n\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\n\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\n\tvec4 vResult;\n\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\n\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\n\tvResult.w = fract( Le );\n\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\n\treturn vResult;\n}\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\nvec4 LogLuvToLinear( in vec4 value ) {\n\tfloat Le = value.z * 255.0 + value.w;\n\tvec3 Xp_Y_XYZp;\n\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\n\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\n\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\n\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\n\treturn vec4( max( vRGB, 0.0 ), 1.0 );\n}"; - - var envmap_fragment = "#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\tvec2 sampleUV;\n\t\treflectVec = normalize( reflectVec );\n\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\tvec4 envColor = texture2D( envMap, sampleUV );\n\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\treflectVec = normalize( reflectVec );\n\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\n\t\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\tenvColor = envMapTexelToLinear( envColor );\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif"; - - var envmap_pars_fragment = "#if defined( USE_ENVMAP ) || defined( PHYSICAL )\n\tuniform float reflectivity;\n\tuniform float envMapIntensity;\n#endif\n#ifdef USE_ENVMAP\n\t#if ! defined( PHYSICAL ) && ( defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) )\n\t\tvarying vec3 vWorldPosition;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\tuniform float flipEnvMap;\n\tuniform int maxMipLevel;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( PHYSICAL )\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif"; - - var envmap_pars_vertex = "#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif"; - - var envmap_vertex = "#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif"; - - var fog_vertex = "#ifdef USE_FOG\n\tfogDepth = -mvPosition.z;\n#endif"; - - var fog_pars_vertex = "#ifdef USE_FOG\n\tvarying float fogDepth;\n#endif"; - - var fog_fragment = "#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = whiteCompliment( exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 ) );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif"; - - var fog_pars_fragment = "#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float fogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif"; - - var gradientmap_pars_fragment = "#ifdef TOON\n\tuniform sampler2D gradientMap;\n\tvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\t\tfloat dotNL = dot( normal, lightDirection );\n\t\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t\t#ifdef USE_GRADIENTMAP\n\t\t\treturn texture2D( gradientMap, coord ).rgb;\n\t\t#else\n\t\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\n\t\t#endif\n\t}\n#endif"; - - var lightmap_fragment = "#ifdef USE_LIGHTMAP\n\treflectedLight.indirectDiffuse += PI * texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n#endif"; - - var lightmap_pars_fragment = "#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif"; - - var lights_lambert_vertex = "vec3 diffuse = vec3( 1.0 );\nGeometricContext geometry;\ngeometry.position = mvPosition.xyz;\ngeometry.normal = normalize( transformedNormal );\ngeometry.viewDir = normalize( -mvPosition.xyz );\nGeometricContext backGeometry;\nbackGeometry.position = geometry.position;\nbackGeometry.normal = -geometry.normal;\nbackGeometry.viewDir = geometry.viewDir;\nvLightFront = vec3( 0.0 );\nvIndirectFront = vec3( 0.0 );\n#ifdef DOUBLE_SIDED\n\tvLightBack = vec3( 0.0 );\n\tvIndirectBack = vec3( 0.0 );\n#endif\nIncidentLight directLight;\nfloat dotNL;\nvec3 directLightColor_Diffuse;\n#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\n\t\t#endif\n\t}\n#endif"; - - var lights_pars_begin = "uniform vec3 ambientLightColor;\nuniform vec3 lightProbe[ 9 ];\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in GeometricContext geometry ) {\n\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treturn irradiance;\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tdirectLight.color = directionalLight.color;\n\t\tdirectLight.direction = directionalLight.direction;\n\t\tdirectLight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t\tfloat shadowCameraNear;\n\t\tfloat shadowCameraFar;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tdirectLight.color = pointLight.color;\n\t\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\n\t\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tfloat angleCos = dot( directLight.direction, spotLight.direction );\n\t\tif ( angleCos > spotLight.coneCos ) {\n\t\t\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\t\tdirectLight.color = spotLight.color;\n\t\t\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tdirectLight.visible = true;\n\t\t} else {\n\t\t\tdirectLight.color = vec3( 0.0 );\n\t\t\tdirectLight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\n\t\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tirradiance *= PI;\n\t\t#endif\n\t\treturn irradiance;\n\t}\n#endif"; - - var envmap_physical_pars_fragment = "#if defined( USE_ENVMAP ) && defined( PHYSICAL )\n\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\n\t\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, queryVec, 1.0 );\n\t\t#else\n\t\t\tvec4 envMapColor = vec4( 0.0 );\n\t\t#endif\n\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t}\n\tfloat getSpecularMIPLevel( const in float blinnShininessExponent, const in int maxMIPLevel ) {\n\t\tfloat maxMIPLevelScalar = float( maxMIPLevel );\n\t\tfloat desiredMIPLevel = maxMIPLevelScalar + 0.79248 - 0.5 * log2( pow2( blinnShininessExponent ) + 1.0 );\n\t\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\n\t}\n\tvec3 getLightProbeIndirectRadiance( const in GeometricContext geometry, const in float blinnShininessExponent, const in int maxMIPLevel ) {\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( -geometry.viewDir, geometry.normal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( -geometry.viewDir, geometry.normal, refractionRatio );\n\t\t#endif\n\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\tfloat specularMIPLevel = getSpecularMIPLevel( blinnShininessExponent, maxMIPLevel );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, queryReflectVec, BlinnExponentToGGXRoughness(blinnShininessExponent ));\n\t\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\t\tvec2 sampleUV;\n\t\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#endif\n\t\treturn envMapColor.rgb * envMapIntensity;\n\t}\n#endif"; - - var lights_phong_fragment = "BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;"; - - var lights_phong_pars_fragment = "varying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\nstruct BlinnPhongMaterial {\n\tvec3\tdiffuseColor;\n\tvec3\tspecularColor;\n\tfloat\tspecularShininess;\n\tfloat\tspecularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\t#ifdef TOON\n\t\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\t#else\n\t\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\t\tvec3 irradiance = dotNL * directLight.color;\n\t#endif\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\n#define Material_LightProbeLOD( material )\t(0)"; - - var lights_physical_fragment = "PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nmaterial.specularRoughness = clamp( roughnessFactor, 0.04, 1.0 );\n#ifdef STANDARD\n\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.clearCoat = saturate( clearCoat );\tmaterial.clearCoatRoughness = clamp( clearCoatRoughness, 0.04, 1.0 );\n#endif"; - - var lights_physical_pars_fragment = "struct PhysicalMaterial {\n\tvec3\tdiffuseColor;\n\tfloat\tspecularRoughness;\n\tvec3\tspecularColor;\n\t#ifndef STANDARD\n\t\tfloat clearCoat;\n\t\tfloat clearCoatRoughness;\n\t#endif\n};\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\nfloat clearCoatDHRApprox( const in float roughness, const in float dotNL ) {\n\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.specularRoughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\t#ifndef STANDARD\n\t\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\n\t#else\n\t\tfloat clearCoatDHR = 0.0;\n\t#endif\n\treflectedLight.directSpecular += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry, material.specularColor, material.specularRoughness );\n\treflectedLight.directDiffuse += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\t#ifndef STANDARD\n\t\treflectedLight.directSpecular += irradiance * material.clearCoat * BRDF_Specular_GGX( directLight, geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\n\t#endif\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t#ifndef ENVMAP_TYPE_CUBE_UV\n\t\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\t#endif\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearCoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifndef STANDARD\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\tfloat dotNL = dotNV;\n\t\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\n\t#else\n\t\tfloat clearCoatDHR = 0.0;\n\t#endif\n\tfloat clearCoatInv = 1.0 - clearCoatDHR;\n\t#if defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec3 singleScattering = vec3( 0.0 );\n\t\tvec3 multiScattering = vec3( 0.0 );\n\t\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\t\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\n\t\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\n\t\treflectedLight.indirectSpecular += clearCoatInv * radiance * singleScattering;\n\t\treflectedLight.indirectDiffuse += multiScattering * cosineWeightedIrradiance;\n\t\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n\t#else\n\t\treflectedLight.indirectSpecular += clearCoatInv * radiance * BRDF_Specular_GGX_Environment( geometry, material.specularColor, material.specularRoughness );\n\t#endif\n\t#ifndef STANDARD\n\t\treflectedLight.indirectSpecular += clearCoatRadiance * material.clearCoat * BRDF_Specular_GGX_Environment( geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\n\t#endif\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\n#define Material_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.specularRoughness )\n#define Material_ClearCoat_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.clearCoatRoughness )\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}"; - - var lights_fragment_begin = "\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = normalize( vViewPosition );\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( pointLight.shadow, directLight.visible ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( spotLight.shadow, directLight.visible ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( directionalLight.shadow, directLight.visible ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\tirradiance += getLightProbeIrradiance( lightProbe, geometry );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t}\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearCoatRadiance = vec3( 0.0 );\n#endif"; - - var lights_fragment_maps = "#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec3 lightMapIrradiance = texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tlightMapIrradiance *= PI;\n\t\t#endif\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( PHYSICAL ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tirradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getLightProbeIndirectRadiance( geometry, Material_BlinnShininessExponent( material ), maxMipLevel );\n\t#ifndef STANDARD\n\t\tclearCoatRadiance += getLightProbeIndirectRadiance( geometry, Material_ClearCoat_BlinnShininessExponent( material ), maxMipLevel );\n\t#endif\n#endif"; - - var lights_fragment_end = "#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, irradiance, clearCoatRadiance, geometry, material, reflectedLight );\n#endif"; - - var logdepthbuf_fragment = "#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif"; - - var logdepthbuf_pars_fragment = "#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n#endif"; - - var logdepthbuf_pars_vertex = "#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif"; - - var logdepthbuf_vertex = "#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t#else\n\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\tgl_Position.z *= gl_Position.w;\n\t#endif\n#endif"; - - var map_fragment = "#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif"; - - var map_pars_fragment = "#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif"; - - var map_particle_fragment = "#ifdef USE_MAP\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n\tvec4 mapTexel = texture2D( map, uv );\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\n#endif"; - - var map_particle_pars_fragment = "#ifdef USE_MAP\n\tuniform mat3 uvTransform;\n\tuniform sampler2D map;\n#endif"; - - var metalnessmap_fragment = "float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif"; - - var metalnessmap_pars_fragment = "#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif"; - - var morphnormal_vertex = "#ifdef USE_MORPHNORMALS\n\tobjectNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\n\tobjectNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\n\tobjectNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\n\tobjectNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\n#endif"; - - var morphtarget_pars_vertex = "#ifdef USE_MORPHTARGETS\n\t#ifndef USE_MORPHNORMALS\n\tuniform float morphTargetInfluences[ 8 ];\n\t#else\n\tuniform float morphTargetInfluences[ 4 ];\n\t#endif\n#endif"; - - var morphtarget_vertex = "#ifdef USE_MORPHTARGETS\n\ttransformed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\n\ttransformed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\n\ttransformed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\n\ttransformed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\n\t#ifndef USE_MORPHNORMALS\n\ttransformed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\n\ttransformed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\n\ttransformed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\n\ttransformed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\n\t#endif\n#endif"; - - var normal_fragment_begin = "#ifdef FLAT_SHADED\n\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\n\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n\t#ifdef USE_TANGENT\n\t\tvec3 tangent = normalize( vTangent );\n\t\tvec3 bitangent = normalize( vBitangent );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\ttangent = tangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t\tbitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t#endif\n\t#endif\n#endif"; - - var normal_fragment_maps = "#ifdef USE_NORMALMAP\n\t#ifdef OBJECTSPACE_NORMALMAP\n\t\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\t#ifdef FLIP_SIDED\n\t\t\tnormal = - normal;\n\t\t#endif\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t#endif\n\t\tnormal = normalize( normalMatrix * normal );\n\t#else\n\t\t#ifdef USE_TANGENT\n\t\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\n\t\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\t\tmapN.xy = normalScale * mapN.xy;\n\t\t\tnormal = normalize( vTBN * mapN );\n\t\t#else\n\t\t\tnormal = perturbNormal2Arb( -vViewPosition, normal );\n\t\t#endif\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n#endif"; - - var normalmap_pars_fragment = "#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n\t#ifdef OBJECTSPACE_NORMALMAP\n\t\tuniform mat3 normalMatrix;\n\t#else\n\t\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\n\t\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n\t\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n\t\t\tvec2 st0 = dFdx( vUv.st );\n\t\t\tvec2 st1 = dFdy( vUv.st );\n\t\t\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\n\t\t\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\n\t\t\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\n\t\t\tvec3 N = normalize( surf_norm );\n\t\t\tmat3 tsn = mat3( S, T, N );\n\t\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\t\tmapN.xy *= normalScale;\n\t\t\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t\treturn normalize( tsn * mapN );\n\t\t}\n\t#endif\n#endif"; - - var packing = "vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}"; - - var premultiplied_alpha_fragment = "#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif"; - - var project_vertex = "vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );\ngl_Position = projectionMatrix * mvPosition;"; - - var dithering_fragment = "#if defined( DITHERING )\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif"; - - var dithering_pars_fragment = "#if defined( DITHERING )\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif"; - - var roughnessmap_fragment = "float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif"; - - var roughnessmap_pars_fragment = "#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif"; - - var shadowmap_pars_fragment = "#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHTS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHTS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHTS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tfloat texture2DShadowLerp( sampler2D depths, vec2 size, vec2 uv, float compare ) {\n\t\tconst vec2 offset = vec2( 0.0, 1.0 );\n\t\tvec2 texelSize = vec2( 1.0 ) / size;\n\t\tvec2 centroidUV = floor( uv * size + 0.5 ) / size;\n\t\tfloat lb = texture2DCompare( depths, centroidUV + texelSize * offset.xx, compare );\n\t\tfloat lt = texture2DCompare( depths, centroidUV + texelSize * offset.xy, compare );\n\t\tfloat rb = texture2DCompare( depths, centroidUV + texelSize * offset.yx, compare );\n\t\tfloat rt = texture2DCompare( depths, centroidUV + texelSize * offset.yy, compare );\n\t\tvec2 f = fract( uv * size + 0.5 );\n\t\tfloat a = mix( lb, lt, f.y );\n\t\tfloat b = mix( rb, rt, f.y );\n\t\tfloat c = mix( a, b, f.x );\n\t\treturn c;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n\t\tbool inFrustum = all( inFrustumVec );\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\t\tbool frustumTest = all( frustumTestVec );\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tshadow = (\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif"; - - var shadowmap_pars_vertex = "#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHTS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHTS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHTS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\n\t#endif\n#endif"; - - var shadowmap_vertex = "#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n#endif"; - - var shadowmask_pars_fragment = "float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tshadow *= bool( directionalLight.shadow ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tshadow *= bool( spotLight.shadow ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tshadow *= bool( pointLight.shadow ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#endif\n\t#endif\n\treturn shadow;\n}"; - - var skinbase_vertex = "#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif"; - - var skinning_pars_vertex = "#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\t#ifdef BONE_TEXTURE\n\t\tuniform sampler2D boneTexture;\n\t\tuniform int boneTextureSize;\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tfloat j = i * 4.0;\n\t\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\t\ty = dy * ( y + 0.5 );\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\t\treturn bone;\n\t\t}\n\t#else\n\t\tuniform mat4 boneMatrices[ MAX_BONES ];\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tmat4 bone = boneMatrices[ int(i) ];\n\t\t\treturn bone;\n\t\t}\n\t#endif\n#endif"; - - var skinning_vertex = "#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif"; - - var skinnormal_vertex = "#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif"; - - var specularmap_fragment = "float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif"; - - var specularmap_pars_fragment = "#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif"; - - var tonemapping_fragment = "#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif"; - - var tonemapping_pars_fragment = "#ifndef saturate\n\t#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nuniform float toneMappingWhitePoint;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\nvec3 Uncharted2ToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( ( color * ( 2.51 * color + 0.03 ) ) / ( color * ( 2.43 * color + 0.59 ) + 0.14 ) );\n}"; - - var uv_pars_fragment = "#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvarying vec2 vUv;\n#endif"; - - var uv_pars_vertex = "#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n#endif"; - - var uv_vertex = "#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif"; - - var uv2_pars_fragment = "#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif"; - - var uv2_pars_vertex = "#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n#endif"; - - var uv2_vertex = "#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = uv2;\n#endif"; - - var worldpos_vertex = "#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\n\tvec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );\n#endif"; - - var background_frag = "uniform sampler2D t2D;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include \n\t#include \n}"; - - var background_vert = "varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}"; - - var cube_frag = "uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\tgl_FragColor.a *= opacity;\n\t#include \n\t#include \n}"; - - var cube_vert = "varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}"; - - var depth_frag = "#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - gl_FragCoord.z ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\n\t#endif\n}"; - - var depth_vert = "#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; - - var distanceRGBA_frag = "#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#include \n\t#include \n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}"; - - var distanceRGBA_vert = "#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvWorldPosition = worldPosition.xyz;\n}"; - - var equirect_frag = "uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV;\n\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\n\tvec4 texColor = texture2D( tEquirect, sampleUV );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include \n\t#include \n}"; - - var equirect_vert = "varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}"; - - var linedashed_frag = "uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}"; - - var linedashed_vert = "uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvLineDistance = scale * lineDistance;\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}"; - - var meshbasic_frag = "uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\treflectedLight.indirectDiffuse += texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}"; - - var meshbasic_vert = "#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifdef USE_ENVMAP\n\t#include \n\t#include \n\t#include \n\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; - - var meshlambert_frag = "uniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\n\t#else\n\t\treflectedLight.indirectDiffuse += vIndirectFront;\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\n\t#else\n\t\treflectedLight.directDiffuse = vLightFront;\n\t#endif\n\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; - - var meshlambert_vert = "#define LAMBERT\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; - - var meshmatcap_frag = "#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t\tmatcapColor = matcapTexelToLinear( matcapColor );\n\t#else\n\t\tvec4 matcapColor = vec4( 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}"; - - var meshmatcap_vert = "#define MATCAP\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifndef FLAT_SHADED\n\t\tvNormal = normalize( transformedNormal );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n}"; - - var meshphong_frag = "#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; - - var meshphong_vert = "#define PHONG\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}"; - - var meshphysical_frag = "#define PHYSICAL\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifndef STANDARD\n\tuniform float clearCoat;\n\tuniform float clearCoatRoughness;\n#endif\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; - - var meshphysical_vert = "#define PHYSICAL\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}"; - - var normal_frag = "#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n}"; - - var normal_vert = "#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}"; - - var points_frag = "uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}"; - - var points_vert = "uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n}"; - - var shadow_frag = "uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include \n}"; - - var shadow_vert = "#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; - - var sprite_frag = "uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n}"; - - var sprite_vert = "uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}"; - - var ShaderChunk = { - alphamap_fragment: alphamap_fragment, - alphamap_pars_fragment: alphamap_pars_fragment, - alphatest_fragment: alphatest_fragment, - aomap_fragment: aomap_fragment, - aomap_pars_fragment: aomap_pars_fragment, - begin_vertex: begin_vertex, - beginnormal_vertex: beginnormal_vertex, - bsdfs: bsdfs, - bumpmap_pars_fragment: bumpmap_pars_fragment, - clipping_planes_fragment: clipping_planes_fragment, - clipping_planes_pars_fragment: clipping_planes_pars_fragment, - clipping_planes_pars_vertex: clipping_planes_pars_vertex, - clipping_planes_vertex: clipping_planes_vertex, - color_fragment: color_fragment, - color_pars_fragment: color_pars_fragment, - color_pars_vertex: color_pars_vertex, - color_vertex: color_vertex, - common: common, - cube_uv_reflection_fragment: cube_uv_reflection_fragment, - defaultnormal_vertex: defaultnormal_vertex, - displacementmap_pars_vertex: displacementmap_pars_vertex, - displacementmap_vertex: displacementmap_vertex, - emissivemap_fragment: emissivemap_fragment, - emissivemap_pars_fragment: emissivemap_pars_fragment, - encodings_fragment: encodings_fragment, - encodings_pars_fragment: encodings_pars_fragment, - envmap_fragment: envmap_fragment, - envmap_pars_fragment: envmap_pars_fragment, - envmap_pars_vertex: envmap_pars_vertex, - envmap_physical_pars_fragment: envmap_physical_pars_fragment, - envmap_vertex: envmap_vertex, - fog_vertex: fog_vertex, - fog_pars_vertex: fog_pars_vertex, - fog_fragment: fog_fragment, - fog_pars_fragment: fog_pars_fragment, - gradientmap_pars_fragment: gradientmap_pars_fragment, - lightmap_fragment: lightmap_fragment, - lightmap_pars_fragment: lightmap_pars_fragment, - lights_lambert_vertex: lights_lambert_vertex, - lights_pars_begin: lights_pars_begin, - lights_phong_fragment: lights_phong_fragment, - lights_phong_pars_fragment: lights_phong_pars_fragment, - lights_physical_fragment: lights_physical_fragment, - lights_physical_pars_fragment: lights_physical_pars_fragment, - lights_fragment_begin: lights_fragment_begin, - lights_fragment_maps: lights_fragment_maps, - lights_fragment_end: lights_fragment_end, - logdepthbuf_fragment: logdepthbuf_fragment, - logdepthbuf_pars_fragment: logdepthbuf_pars_fragment, - logdepthbuf_pars_vertex: logdepthbuf_pars_vertex, - logdepthbuf_vertex: logdepthbuf_vertex, - map_fragment: map_fragment, - map_pars_fragment: map_pars_fragment, - map_particle_fragment: map_particle_fragment, - map_particle_pars_fragment: map_particle_pars_fragment, - metalnessmap_fragment: metalnessmap_fragment, - metalnessmap_pars_fragment: metalnessmap_pars_fragment, - morphnormal_vertex: morphnormal_vertex, - morphtarget_pars_vertex: morphtarget_pars_vertex, - morphtarget_vertex: morphtarget_vertex, - normal_fragment_begin: normal_fragment_begin, - normal_fragment_maps: normal_fragment_maps, - normalmap_pars_fragment: normalmap_pars_fragment, - packing: packing, - premultiplied_alpha_fragment: premultiplied_alpha_fragment, - project_vertex: project_vertex, - dithering_fragment: dithering_fragment, - dithering_pars_fragment: dithering_pars_fragment, - roughnessmap_fragment: roughnessmap_fragment, - roughnessmap_pars_fragment: roughnessmap_pars_fragment, - shadowmap_pars_fragment: shadowmap_pars_fragment, - shadowmap_pars_vertex: shadowmap_pars_vertex, - shadowmap_vertex: shadowmap_vertex, - shadowmask_pars_fragment: shadowmask_pars_fragment, - skinbase_vertex: skinbase_vertex, - skinning_pars_vertex: skinning_pars_vertex, - skinning_vertex: skinning_vertex, - skinnormal_vertex: skinnormal_vertex, - specularmap_fragment: specularmap_fragment, - specularmap_pars_fragment: specularmap_pars_fragment, - tonemapping_fragment: tonemapping_fragment, - tonemapping_pars_fragment: tonemapping_pars_fragment, - uv_pars_fragment: uv_pars_fragment, - uv_pars_vertex: uv_pars_vertex, - uv_vertex: uv_vertex, - uv2_pars_fragment: uv2_pars_fragment, - uv2_pars_vertex: uv2_pars_vertex, - uv2_vertex: uv2_vertex, - worldpos_vertex: worldpos_vertex, - - background_frag: background_frag, - background_vert: background_vert, - cube_frag: cube_frag, - cube_vert: cube_vert, - depth_frag: depth_frag, - depth_vert: depth_vert, - distanceRGBA_frag: distanceRGBA_frag, - distanceRGBA_vert: distanceRGBA_vert, - equirect_frag: equirect_frag, - equirect_vert: equirect_vert, - linedashed_frag: linedashed_frag, - linedashed_vert: linedashed_vert, - meshbasic_frag: meshbasic_frag, - meshbasic_vert: meshbasic_vert, - meshlambert_frag: meshlambert_frag, - meshlambert_vert: meshlambert_vert, - meshmatcap_frag: meshmatcap_frag, - meshmatcap_vert: meshmatcap_vert, - meshphong_frag: meshphong_frag, - meshphong_vert: meshphong_vert, - meshphysical_frag: meshphysical_frag, - meshphysical_vert: meshphysical_vert, - normal_frag: normal_frag, - normal_vert: normal_vert, - points_frag: points_frag, - points_vert: points_vert, - shadow_frag: shadow_frag, - shadow_vert: shadow_vert, - sprite_frag: sprite_frag, - sprite_vert: sprite_vert - }; - - /** - * Uniform Utilities - */ - - function cloneUniforms( src ) { - - var dst = {}; - - for ( var u in src ) { - - dst[ u ] = {}; - - for ( var p in src[ u ] ) { - - var property = src[ u ][ p ]; - - if ( property && ( property.isColor || - property.isMatrix3 || property.isMatrix4 || - property.isVector2 || property.isVector3 || property.isVector4 || - property.isTexture ) ) { - - dst[ u ][ p ] = property.clone(); - - } else if ( Array.isArray( property ) ) { - - dst[ u ][ p ] = property.slice(); - - } else { - - dst[ u ][ p ] = property; - - } - - } - - } - - return dst; - - } - - function mergeUniforms( uniforms ) { - - var merged = {}; - - for ( var u = 0; u < uniforms.length; u ++ ) { - - var tmp = cloneUniforms( uniforms[ u ] ); - - for ( var p in tmp ) { - - merged[ p ] = tmp[ p ]; - - } - - } - - return merged; - - } - - // Legacy - - var UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms }; - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - var ColorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF, - 'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2, - 'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50, - 'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B, - 'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B, - 'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F, - 'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3, - 'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222, - 'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700, - 'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4, - 'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00, - 'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3, - 'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA, - 'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32, - 'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3, - 'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC, - 'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD, - 'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6, - 'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9, - 'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F, - 'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE, - 'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA, - 'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0, - 'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 }; - - function Color( r, g, b ) { - - if ( g === undefined && b === undefined ) { - - // r is THREE.Color, hex or string - return this.set( r ); - - } - - return this.setRGB( r, g, b ); - - } - - Object.assign( Color.prototype, { - - isColor: true, - - r: 1, g: 1, b: 1, - - set: function ( value ) { - - if ( value && value.isColor ) { - - this.copy( value ); - - } else if ( typeof value === 'number' ) { - - this.setHex( value ); - - } else if ( typeof value === 'string' ) { - - this.setStyle( value ); - - } - - return this; - - }, - - setScalar: function ( scalar ) { - - this.r = scalar; - this.g = scalar; - this.b = scalar; - - return this; - - }, - - setHex: function ( hex ) { - - hex = Math.floor( hex ); - - this.r = ( hex >> 16 & 255 ) / 255; - this.g = ( hex >> 8 & 255 ) / 255; - this.b = ( hex & 255 ) / 255; - - return this; - - }, - - setRGB: function ( r, g, b ) { - - this.r = r; - this.g = g; - this.b = b; - - return this; - - }, - - setHSL: function () { - - function hue2rgb( p, q, t ) { - - if ( t < 0 ) t += 1; - if ( t > 1 ) t -= 1; - if ( t < 1 / 6 ) return p + ( q - p ) * 6 * t; - if ( t < 1 / 2 ) return q; - if ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t ); - return p; - - } - - return function setHSL( h, s, l ) { - - // h,s,l ranges are in 0.0 - 1.0 - h = _Math.euclideanModulo( h, 1 ); - s = _Math.clamp( s, 0, 1 ); - l = _Math.clamp( l, 0, 1 ); - - if ( s === 0 ) { - - this.r = this.g = this.b = l; - - } else { - - var p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s ); - var q = ( 2 * l ) - p; - - this.r = hue2rgb( q, p, h + 1 / 3 ); - this.g = hue2rgb( q, p, h ); - this.b = hue2rgb( q, p, h - 1 / 3 ); - - } - - return this; - - }; - - }(), - - setStyle: function ( style ) { - - function handleAlpha( string ) { - - if ( string === undefined ) return; - - if ( parseFloat( string ) < 1 ) { - - console.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' ); - - } - - } - - - var m; - - if ( m = /^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec( style ) ) { - - // rgb / hsl - - var color; - var name = m[ 1 ]; - var components = m[ 2 ]; - - switch ( name ) { - - case 'rgb': - case 'rgba': - - if ( color = /^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec( components ) ) { - - // rgb(255,0,0) rgba(255,0,0,0.5) - this.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255; - this.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255; - this.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255; - - handleAlpha( color[ 5 ] ); - - return this; - - } - - if ( color = /^(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec( components ) ) { - - // rgb(100%,0%,0%) rgba(100%,0%,0%,0.5) - this.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100; - this.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100; - this.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100; - - handleAlpha( color[ 5 ] ); - - return this; - - } - - break; - - case 'hsl': - case 'hsla': - - if ( color = /^([0-9]*\.?[0-9]+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec( components ) ) { - - // hsl(120,50%,50%) hsla(120,50%,50%,0.5) - var h = parseFloat( color[ 1 ] ) / 360; - var s = parseInt( color[ 2 ], 10 ) / 100; - var l = parseInt( color[ 3 ], 10 ) / 100; - - handleAlpha( color[ 5 ] ); - - return this.setHSL( h, s, l ); - - } - - break; - - } - - } else if ( m = /^\#([A-Fa-f0-9]+)$/.exec( style ) ) { - - // hex color - - var hex = m[ 1 ]; - var size = hex.length; - - if ( size === 3 ) { - - // #ff0 - this.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255; - this.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255; - this.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255; - - return this; - - } else if ( size === 6 ) { - - // #ff0000 - this.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255; - this.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255; - this.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255; - - return this; - - } - - } - - if ( style && style.length > 0 ) { - - // color keywords - var hex = ColorKeywords[ style ]; - - if ( hex !== undefined ) { - - // red - this.setHex( hex ); - - } else { - - // unknown color - console.warn( 'THREE.Color: Unknown color ' + style ); - - } - - } - - return this; - - }, - - clone: function () { - - return new this.constructor( this.r, this.g, this.b ); - - }, - - copy: function ( color ) { - - this.r = color.r; - this.g = color.g; - this.b = color.b; - - return this; - - }, - - copyGammaToLinear: function ( color, gammaFactor ) { - - if ( gammaFactor === undefined ) gammaFactor = 2.0; - - this.r = Math.pow( color.r, gammaFactor ); - this.g = Math.pow( color.g, gammaFactor ); - this.b = Math.pow( color.b, gammaFactor ); - - return this; - - }, - - copyLinearToGamma: function ( color, gammaFactor ) { - - if ( gammaFactor === undefined ) gammaFactor = 2.0; - - var safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0; - - this.r = Math.pow( color.r, safeInverse ); - this.g = Math.pow( color.g, safeInverse ); - this.b = Math.pow( color.b, safeInverse ); - - return this; - - }, - - convertGammaToLinear: function ( gammaFactor ) { - - this.copyGammaToLinear( this, gammaFactor ); - - return this; - - }, - - convertLinearToGamma: function ( gammaFactor ) { - - this.copyLinearToGamma( this, gammaFactor ); - - return this; - - }, - - copySRGBToLinear: function () { - - function SRGBToLinear( c ) { - - return ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 ); - - } - - return function copySRGBToLinear( color ) { - - this.r = SRGBToLinear( color.r ); - this.g = SRGBToLinear( color.g ); - this.b = SRGBToLinear( color.b ); - - return this; - - }; - - }(), - - copyLinearToSRGB: function () { - - function LinearToSRGB( c ) { - - return ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055; - - } - - return function copyLinearToSRGB( color ) { - - this.r = LinearToSRGB( color.r ); - this.g = LinearToSRGB( color.g ); - this.b = LinearToSRGB( color.b ); - - return this; - - }; - - }(), - - convertSRGBToLinear: function () { - - this.copySRGBToLinear( this ); - - return this; - - }, - - convertLinearToSRGB: function () { - - this.copyLinearToSRGB( this ); - - return this; - - }, - - getHex: function () { - - return ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0; - - }, - - getHexString: function () { - - return ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 ); - - }, - - getHSL: function ( target ) { - - // h,s,l ranges are in 0.0 - 1.0 - - if ( target === undefined ) { - - console.warn( 'THREE.Color: .getHSL() target is now required' ); - target = { h: 0, s: 0, l: 0 }; - - } - - var r = this.r, g = this.g, b = this.b; - - var max = Math.max( r, g, b ); - var min = Math.min( r, g, b ); - - var hue, saturation; - var lightness = ( min + max ) / 2.0; - - if ( min === max ) { - - hue = 0; - saturation = 0; - - } else { - - var delta = max - min; - - saturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min ); - - switch ( max ) { - - case r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break; - case g: hue = ( b - r ) / delta + 2; break; - case b: hue = ( r - g ) / delta + 4; break; - - } - - hue /= 6; - - } - - target.h = hue; - target.s = saturation; - target.l = lightness; - - return target; - - }, - - getStyle: function () { - - return 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')'; - - }, - - offsetHSL: function () { - - var hsl = {}; - - return function ( h, s, l ) { - - this.getHSL( hsl ); - - hsl.h += h; hsl.s += s; hsl.l += l; - - this.setHSL( hsl.h, hsl.s, hsl.l ); - - return this; - - }; - - }(), - - add: function ( color ) { - - this.r += color.r; - this.g += color.g; - this.b += color.b; - - return this; - - }, - - addColors: function ( color1, color2 ) { - - this.r = color1.r + color2.r; - this.g = color1.g + color2.g; - this.b = color1.b + color2.b; - - return this; - - }, - - addScalar: function ( s ) { - - this.r += s; - this.g += s; - this.b += s; - - return this; - - }, - - sub: function ( color ) { - - this.r = Math.max( 0, this.r - color.r ); - this.g = Math.max( 0, this.g - color.g ); - this.b = Math.max( 0, this.b - color.b ); - - return this; - - }, - - multiply: function ( color ) { - - this.r *= color.r; - this.g *= color.g; - this.b *= color.b; - - return this; - - }, - - multiplyScalar: function ( s ) { - - this.r *= s; - this.g *= s; - this.b *= s; - - return this; - - }, - - lerp: function ( color, alpha ) { - - this.r += ( color.r - this.r ) * alpha; - this.g += ( color.g - this.g ) * alpha; - this.b += ( color.b - this.b ) * alpha; - - return this; - - }, - - lerpHSL: function () { - - var hslA = { h: 0, s: 0, l: 0 }; - var hslB = { h: 0, s: 0, l: 0 }; - - return function lerpHSL( color, alpha ) { - - this.getHSL( hslA ); - color.getHSL( hslB ); - - var h = _Math.lerp( hslA.h, hslB.h, alpha ); - var s = _Math.lerp( hslA.s, hslB.s, alpha ); - var l = _Math.lerp( hslA.l, hslB.l, alpha ); - - this.setHSL( h, s, l ); - - return this; - - }; - - }(), - - equals: function ( c ) { - - return ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b ); - - }, - - fromArray: function ( array, offset ) { - - if ( offset === undefined ) offset = 0; - - this.r = array[ offset ]; - this.g = array[ offset + 1 ]; - this.b = array[ offset + 2 ]; - - return this; - - }, - - toArray: function ( array, offset ) { - - if ( array === undefined ) array = []; - if ( offset === undefined ) offset = 0; - - array[ offset ] = this.r; - array[ offset + 1 ] = this.g; - array[ offset + 2 ] = this.b; - - return array; - - }, - - toJSON: function () { - - return this.getHex(); - - } - - } ); - - /** - * Uniforms library for shared webgl shaders - */ - - var UniformsLib = { - - common: { - - diffuse: { value: new Color( 0xeeeeee ) }, - opacity: { value: 1.0 }, - - map: { value: null }, - uvTransform: { value: new Matrix3() }, - - alphaMap: { value: null }, - - }, - - specularmap: { - - specularMap: { value: null }, - - }, - - envmap: { - - envMap: { value: null }, - flipEnvMap: { value: - 1 }, - reflectivity: { value: 1.0 }, - refractionRatio: { value: 0.98 }, - maxMipLevel: { value: 0 } - - }, - - aomap: { - - aoMap: { value: null }, - aoMapIntensity: { value: 1 } - - }, - - lightmap: { - - lightMap: { value: null }, - lightMapIntensity: { value: 1 } - - }, - - emissivemap: { - - emissiveMap: { value: null } - - }, - - bumpmap: { - - bumpMap: { value: null }, - bumpScale: { value: 1 } - - }, - - normalmap: { - - normalMap: { value: null }, - normalScale: { value: new Vector2( 1, 1 ) } - - }, - - displacementmap: { - - displacementMap: { value: null }, - displacementScale: { value: 1 }, - displacementBias: { value: 0 } - - }, - - roughnessmap: { - - roughnessMap: { value: null } - - }, - - metalnessmap: { - - metalnessMap: { value: null } - - }, - - gradientmap: { - - gradientMap: { value: null } - - }, - - fog: { - - fogDensity: { value: 0.00025 }, - fogNear: { value: 1 }, - fogFar: { value: 2000 }, - fogColor: { value: new Color( 0xffffff ) } - - }, - - lights: { - - ambientLightColor: { value: [] }, - - lightProbe: { value: [] }, - - directionalLights: { value: [], properties: { - direction: {}, - color: {}, - - shadow: {}, - shadowBias: {}, - shadowRadius: {}, - shadowMapSize: {} - } }, - - directionalShadowMap: { value: [] }, - directionalShadowMatrix: { value: [] }, - - spotLights: { value: [], properties: { - color: {}, - position: {}, - direction: {}, - distance: {}, - coneCos: {}, - penumbraCos: {}, - decay: {}, - - shadow: {}, - shadowBias: {}, - shadowRadius: {}, - shadowMapSize: {} - } }, - - spotShadowMap: { value: [] }, - spotShadowMatrix: { value: [] }, - - pointLights: { value: [], properties: { - color: {}, - position: {}, - decay: {}, - distance: {}, - - shadow: {}, - shadowBias: {}, - shadowRadius: {}, - shadowMapSize: {}, - shadowCameraNear: {}, - shadowCameraFar: {} - } }, - - pointShadowMap: { value: [] }, - pointShadowMatrix: { value: [] }, - - hemisphereLights: { value: [], properties: { - direction: {}, - skyColor: {}, - groundColor: {} - } }, - - // TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src - rectAreaLights: { value: [], properties: { - color: {}, - position: {}, - width: {}, - height: {} - } } - - }, - - points: { - - diffuse: { value: new Color( 0xeeeeee ) }, - opacity: { value: 1.0 }, - size: { value: 1.0 }, - scale: { value: 1.0 }, - map: { value: null }, - uvTransform: { value: new Matrix3() } - - }, - - sprite: { - - diffuse: { value: new Color( 0xeeeeee ) }, - opacity: { value: 1.0 }, - center: { value: new Vector2( 0.5, 0.5 ) }, - rotation: { value: 0.0 }, - map: { value: null }, - uvTransform: { value: new Matrix3() } - - } - - }; - - /** - * @author alteredq / http://alteredqualia.com/ - * @author mrdoob / http://mrdoob.com/ - * @author mikael emtinger / http://gomo.se/ - */ - - var ShaderLib = { - - basic: { - - uniforms: mergeUniforms( [ - UniformsLib.common, - UniformsLib.specularmap, - UniformsLib.envmap, - UniformsLib.aomap, - UniformsLib.lightmap, - UniformsLib.fog - ] ), - - vertexShader: ShaderChunk.meshbasic_vert, - fragmentShader: ShaderChunk.meshbasic_frag - - }, - - lambert: { - - uniforms: mergeUniforms( [ - UniformsLib.common, - UniformsLib.specularmap, - UniformsLib.envmap, - UniformsLib.aomap, - UniformsLib.lightmap, - UniformsLib.emissivemap, - UniformsLib.fog, - UniformsLib.lights, - { - emissive: { value: new Color( 0x000000 ) } - } - ] ), - - vertexShader: ShaderChunk.meshlambert_vert, - fragmentShader: ShaderChunk.meshlambert_frag - - }, - - phong: { - - uniforms: mergeUniforms( [ - UniformsLib.common, - UniformsLib.specularmap, - UniformsLib.envmap, - UniformsLib.aomap, - UniformsLib.lightmap, - UniformsLib.emissivemap, - UniformsLib.bumpmap, - UniformsLib.normalmap, - UniformsLib.displacementmap, - UniformsLib.gradientmap, - UniformsLib.fog, - UniformsLib.lights, - { - emissive: { value: new Color( 0x000000 ) }, - specular: { value: new Color( 0x111111 ) }, - shininess: { value: 30 } - } - ] ), - - vertexShader: ShaderChunk.meshphong_vert, - fragmentShader: ShaderChunk.meshphong_frag - - }, - - standard: { - - uniforms: mergeUniforms( [ - UniformsLib.common, - UniformsLib.envmap, - UniformsLib.aomap, - UniformsLib.lightmap, - UniformsLib.emissivemap, - UniformsLib.bumpmap, - UniformsLib.normalmap, - UniformsLib.displacementmap, - UniformsLib.roughnessmap, - UniformsLib.metalnessmap, - UniformsLib.fog, - UniformsLib.lights, - { - emissive: { value: new Color( 0x000000 ) }, - roughness: { value: 0.5 }, - metalness: { value: 0.5 }, - envMapIntensity: { value: 1 } // temporary - } - ] ), - - vertexShader: ShaderChunk.meshphysical_vert, - fragmentShader: ShaderChunk.meshphysical_frag - - }, - - matcap: { - - uniforms: mergeUniforms( [ - UniformsLib.common, - UniformsLib.bumpmap, - UniformsLib.normalmap, - UniformsLib.displacementmap, - UniformsLib.fog, - { - matcap: { value: null } - } - ] ), - - vertexShader: ShaderChunk.meshmatcap_vert, - fragmentShader: ShaderChunk.meshmatcap_frag - - }, - - points: { - - uniforms: mergeUniforms( [ - UniformsLib.points, - UniformsLib.fog - ] ), - - vertexShader: ShaderChunk.points_vert, - fragmentShader: ShaderChunk.points_frag - - }, - - dashed: { - - uniforms: mergeUniforms( [ - UniformsLib.common, - UniformsLib.fog, - { - scale: { value: 1 }, - dashSize: { value: 1 }, - totalSize: { value: 2 } - } - ] ), - - vertexShader: ShaderChunk.linedashed_vert, - fragmentShader: ShaderChunk.linedashed_frag - - }, - - depth: { - - uniforms: mergeUniforms( [ - UniformsLib.common, - UniformsLib.displacementmap - ] ), - - vertexShader: ShaderChunk.depth_vert, - fragmentShader: ShaderChunk.depth_frag - - }, - - normal: { - - uniforms: mergeUniforms( [ - UniformsLib.common, - UniformsLib.bumpmap, - UniformsLib.normalmap, - UniformsLib.displacementmap, - { - opacity: { value: 1.0 } - } - ] ), - - vertexShader: ShaderChunk.normal_vert, - fragmentShader: ShaderChunk.normal_frag - - }, - - sprite: { - - uniforms: mergeUniforms( [ - UniformsLib.sprite, - UniformsLib.fog - ] ), - - vertexShader: ShaderChunk.sprite_vert, - fragmentShader: ShaderChunk.sprite_frag - - }, - - background: { - - uniforms: { - uvTransform: { value: new Matrix3() }, - t2D: { value: null }, - }, - - vertexShader: ShaderChunk.background_vert, - fragmentShader: ShaderChunk.background_frag - - }, - /* ------------------------------------------------------------------------- - // Cube map shader - ------------------------------------------------------------------------- */ - - cube: { - - uniforms: { - tCube: { value: null }, - tFlip: { value: - 1 }, - opacity: { value: 1.0 } - }, - - vertexShader: ShaderChunk.cube_vert, - fragmentShader: ShaderChunk.cube_frag - - }, - - equirect: { - - uniforms: { - tEquirect: { value: null }, - }, - - vertexShader: ShaderChunk.equirect_vert, - fragmentShader: ShaderChunk.equirect_frag - - }, - - distanceRGBA: { - - uniforms: mergeUniforms( [ - UniformsLib.common, - UniformsLib.displacementmap, - { - referencePosition: { value: new Vector3() }, - nearDistance: { value: 1 }, - farDistance: { value: 1000 } - } - ] ), - - vertexShader: ShaderChunk.distanceRGBA_vert, - fragmentShader: ShaderChunk.distanceRGBA_frag - - }, - - shadow: { - - uniforms: mergeUniforms( [ - UniformsLib.lights, - UniformsLib.fog, - { - color: { value: new Color( 0x00000 ) }, - opacity: { value: 1.0 } - }, - ] ), - - vertexShader: ShaderChunk.shadow_vert, - fragmentShader: ShaderChunk.shadow_frag - - } - - }; - - ShaderLib.physical = { - - uniforms: mergeUniforms( [ - ShaderLib.standard.uniforms, - { - clearCoat: { value: 0 }, - clearCoatRoughness: { value: 0 } - } - ] ), - - vertexShader: ShaderChunk.meshphysical_vert, - fragmentShader: ShaderChunk.meshphysical_frag - - }; - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function WebGLAnimation() { - - var context = null; - var isAnimating = false; - var animationLoop = null; - - function onAnimationFrame( time, frame ) { - - if ( isAnimating === false ) return; - - animationLoop( time, frame ); - - context.requestAnimationFrame( onAnimationFrame ); - - } - - return { - - start: function () { - - if ( isAnimating === true ) return; - if ( animationLoop === null ) return; - - context.requestAnimationFrame( onAnimationFrame ); - - isAnimating = true; - - }, - - stop: function () { - - isAnimating = false; - - }, - - setAnimationLoop: function ( callback ) { - - animationLoop = callback; - - }, - - setContext: function ( value ) { - - context = value; - - } - - }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function WebGLAttributes( gl ) { - - var buffers = new WeakMap(); - - function createBuffer( attribute, bufferType ) { - - var array = attribute.array; - var usage = attribute.dynamic ? 35048 : 35044; - - var buffer = gl.createBuffer(); - - gl.bindBuffer( bufferType, buffer ); - gl.bufferData( bufferType, array, usage ); - - attribute.onUploadCallback(); - - var type = 5126; - - if ( array instanceof Float32Array ) { - - type = 5126; - - } else if ( array instanceof Float64Array ) { - - console.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' ); - - } else if ( array instanceof Uint16Array ) { - - type = 5123; - - } else if ( array instanceof Int16Array ) { - - type = 5122; - - } else if ( array instanceof Uint32Array ) { - - type = 5125; - - } else if ( array instanceof Int32Array ) { - - type = 5124; - - } else if ( array instanceof Int8Array ) { - - type = 5120; - - } else if ( array instanceof Uint8Array ) { - - type = 5121; - - } - - return { - buffer: buffer, - type: type, - bytesPerElement: array.BYTES_PER_ELEMENT, - version: attribute.version - }; - - } - - function updateBuffer( buffer, attribute, bufferType ) { - - var array = attribute.array; - var updateRange = attribute.updateRange; - - gl.bindBuffer( bufferType, buffer ); - - if ( attribute.dynamic === false ) { - - gl.bufferData( bufferType, array, 35044 ); - - } else if ( updateRange.count === - 1 ) { - - // Not using update ranges - - gl.bufferSubData( bufferType, 0, array ); - - } else if ( updateRange.count === 0 ) { - - console.error( 'THREE.WebGLObjects.updateBuffer: dynamic THREE.BufferAttribute marked as needsUpdate but updateRange.count is 0, ensure you are using set methods or updating manually.' ); - - } else { - - gl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT, - array.subarray( updateRange.offset, updateRange.offset + updateRange.count ) ); - - updateRange.count = - 1; // reset range - - } - - } - - // - - function get( attribute ) { - - if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data; - - return buffers.get( attribute ); - - } - - function remove( attribute ) { - - if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data; - - var data = buffers.get( attribute ); - - if ( data ) { - - gl.deleteBuffer( data.buffer ); - - buffers.delete( attribute ); - - } - - } - - function update( attribute, bufferType ) { - - if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data; - - var data = buffers.get( attribute ); - - if ( data === undefined ) { - - buffers.set( attribute, createBuffer( attribute, bufferType ) ); - - } else if ( data.version < attribute.version ) { - - updateBuffer( data.buffer, attribute, bufferType ); - - data.version = attribute.version; - - } - - } - - return { - - get: get, - remove: remove, - update: update - - }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - */ - - function Face3( a, b, c, normal, color, materialIndex ) { - - this.a = a; - this.b = b; - this.c = c; - - this.normal = ( normal && normal.isVector3 ) ? normal : new Vector3(); - this.vertexNormals = Array.isArray( normal ) ? normal : []; - - this.color = ( color && color.isColor ) ? color : new Color(); - this.vertexColors = Array.isArray( color ) ? color : []; - - this.materialIndex = materialIndex !== undefined ? materialIndex : 0; - - } - - Object.assign( Face3.prototype, { - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( source ) { - - this.a = source.a; - this.b = source.b; - this.c = source.c; - - this.normal.copy( source.normal ); - this.color.copy( source.color ); - - this.materialIndex = source.materialIndex; - - for ( var i = 0, il = source.vertexNormals.length; i < il; i ++ ) { - - this.vertexNormals[ i ] = source.vertexNormals[ i ].clone(); - - } - - for ( var i = 0, il = source.vertexColors.length; i < il; i ++ ) { - - this.vertexColors[ i ] = source.vertexColors[ i ].clone(); - - } - - return this; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author WestLangley / http://github.com/WestLangley - * @author bhouston / http://clara.io - */ - - function Euler( x, y, z, order ) { - - this._x = x || 0; - this._y = y || 0; - this._z = z || 0; - this._order = order || Euler.DefaultOrder; - - } - - Euler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ]; - - Euler.DefaultOrder = 'XYZ'; - - Object.defineProperties( Euler.prototype, { - - x: { - - get: function () { - - return this._x; - - }, - - set: function ( value ) { - - this._x = value; - this.onChangeCallback(); - - } - - }, - - y: { - - get: function () { - - return this._y; - - }, - - set: function ( value ) { - - this._y = value; - this.onChangeCallback(); - - } - - }, - - z: { - - get: function () { - - return this._z; - - }, - - set: function ( value ) { - - this._z = value; - this.onChangeCallback(); - - } - - }, - - order: { - - get: function () { - - return this._order; - - }, - - set: function ( value ) { - - this._order = value; - this.onChangeCallback(); - - } - - } - - } ); - - Object.assign( Euler.prototype, { - - isEuler: true, - - set: function ( x, y, z, order ) { - - this._x = x; - this._y = y; - this._z = z; - this._order = order || this._order; - - this.onChangeCallback(); - - return this; - - }, - - clone: function () { - - return new this.constructor( this._x, this._y, this._z, this._order ); - - }, - - copy: function ( euler ) { - - this._x = euler._x; - this._y = euler._y; - this._z = euler._z; - this._order = euler._order; - - this.onChangeCallback(); - - return this; - - }, - - setFromRotationMatrix: function ( m, order, update ) { - - var clamp = _Math.clamp; - - // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) - - var te = m.elements; - var m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ]; - var m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ]; - var m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ]; - - order = order || this._order; - - if ( order === 'XYZ' ) { - - this._y = Math.asin( clamp( m13, - 1, 1 ) ); - - if ( Math.abs( m13 ) < 0.99999 ) { - - this._x = Math.atan2( - m23, m33 ); - this._z = Math.atan2( - m12, m11 ); - - } else { - - this._x = Math.atan2( m32, m22 ); - this._z = 0; - - } - - } else if ( order === 'YXZ' ) { - - this._x = Math.asin( - clamp( m23, - 1, 1 ) ); - - if ( Math.abs( m23 ) < 0.99999 ) { - - this._y = Math.atan2( m13, m33 ); - this._z = Math.atan2( m21, m22 ); - - } else { - - this._y = Math.atan2( - m31, m11 ); - this._z = 0; - - } - - } else if ( order === 'ZXY' ) { - - this._x = Math.asin( clamp( m32, - 1, 1 ) ); - - if ( Math.abs( m32 ) < 0.99999 ) { - - this._y = Math.atan2( - m31, m33 ); - this._z = Math.atan2( - m12, m22 ); - - } else { - - this._y = 0; - this._z = Math.atan2( m21, m11 ); - - } - - } else if ( order === 'ZYX' ) { - - this._y = Math.asin( - clamp( m31, - 1, 1 ) ); - - if ( Math.abs( m31 ) < 0.99999 ) { - - this._x = Math.atan2( m32, m33 ); - this._z = Math.atan2( m21, m11 ); - - } else { - - this._x = 0; - this._z = Math.atan2( - m12, m22 ); - - } - - } else if ( order === 'YZX' ) { - - this._z = Math.asin( clamp( m21, - 1, 1 ) ); - - if ( Math.abs( m21 ) < 0.99999 ) { - - this._x = Math.atan2( - m23, m22 ); - this._y = Math.atan2( - m31, m11 ); - - } else { - - this._x = 0; - this._y = Math.atan2( m13, m33 ); - - } - - } else if ( order === 'XZY' ) { - - this._z = Math.asin( - clamp( m12, - 1, 1 ) ); - - if ( Math.abs( m12 ) < 0.99999 ) { - - this._x = Math.atan2( m32, m22 ); - this._y = Math.atan2( m13, m11 ); - - } else { - - this._x = Math.atan2( - m23, m33 ); - this._y = 0; - - } - - } else { - - console.warn( 'THREE.Euler: .setFromRotationMatrix() given unsupported order: ' + order ); - - } - - this._order = order; - - if ( update !== false ) this.onChangeCallback(); - - return this; - - }, - - setFromQuaternion: function () { - - var matrix = new Matrix4(); - - return function setFromQuaternion( q, order, update ) { - - matrix.makeRotationFromQuaternion( q ); - - return this.setFromRotationMatrix( matrix, order, update ); - - }; - - }(), - - setFromVector3: function ( v, order ) { - - return this.set( v.x, v.y, v.z, order || this._order ); - - }, - - reorder: function () { - - // WARNING: this discards revolution information -bhouston - - var q = new Quaternion(); - - return function reorder( newOrder ) { - - q.setFromEuler( this ); - - return this.setFromQuaternion( q, newOrder ); - - }; - - }(), - - equals: function ( euler ) { - - return ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order ); - - }, - - fromArray: function ( array ) { - - this._x = array[ 0 ]; - this._y = array[ 1 ]; - this._z = array[ 2 ]; - if ( array[ 3 ] !== undefined ) this._order = array[ 3 ]; - - this.onChangeCallback(); - - return this; - - }, - - toArray: function ( array, offset ) { - - if ( array === undefined ) array = []; - if ( offset === undefined ) offset = 0; - - array[ offset ] = this._x; - array[ offset + 1 ] = this._y; - array[ offset + 2 ] = this._z; - array[ offset + 3 ] = this._order; - - return array; - - }, - - toVector3: function ( optionalResult ) { - - if ( optionalResult ) { - - return optionalResult.set( this._x, this._y, this._z ); - - } else { - - return new Vector3( this._x, this._y, this._z ); - - } - - }, - - onChange: function ( callback ) { - - this.onChangeCallback = callback; - - return this; - - }, - - onChangeCallback: function () {} - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function Layers() { - - this.mask = 1 | 0; - - } - - Object.assign( Layers.prototype, { - - set: function ( channel ) { - - this.mask = 1 << channel | 0; - - }, - - enable: function ( channel ) { - - this.mask |= 1 << channel | 0; - - }, - - toggle: function ( channel ) { - - this.mask ^= 1 << channel | 0; - - }, - - disable: function ( channel ) { - - this.mask &= ~ ( 1 << channel | 0 ); - - }, - - test: function ( layers ) { - - return ( this.mask & layers.mask ) !== 0; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author mikael emtinger / http://gomo.se/ - * @author alteredq / http://alteredqualia.com/ - * @author WestLangley / http://github.com/WestLangley - * @author elephantatwork / www.elephantatwork.ch - */ - - var object3DId = 0; - - function Object3D() { - - Object.defineProperty( this, 'id', { value: object3DId ++ } ); - - this.uuid = _Math.generateUUID(); - - this.name = ''; - this.type = 'Object3D'; - - this.parent = null; - this.children = []; - - this.up = Object3D.DefaultUp.clone(); - - var position = new Vector3(); - var rotation = new Euler(); - var quaternion = new Quaternion(); - var scale = new Vector3( 1, 1, 1 ); - - function onRotationChange() { - - quaternion.setFromEuler( rotation, false ); - - } - - function onQuaternionChange() { - - rotation.setFromQuaternion( quaternion, undefined, false ); - - } - - rotation.onChange( onRotationChange ); - quaternion.onChange( onQuaternionChange ); - - Object.defineProperties( this, { - position: { - configurable: true, - enumerable: true, - value: position - }, - rotation: { - configurable: true, - enumerable: true, - value: rotation - }, - quaternion: { - configurable: true, - enumerable: true, - value: quaternion - }, - scale: { - configurable: true, - enumerable: true, - value: scale - }, - modelViewMatrix: { - value: new Matrix4() - }, - normalMatrix: { - value: new Matrix3() - } - } ); - - this.matrix = new Matrix4(); - this.matrixWorld = new Matrix4(); - - this.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate; - this.matrixWorldNeedsUpdate = false; - - this.layers = new Layers(); - this.visible = true; - - this.castShadow = false; - this.receiveShadow = false; - - this.frustumCulled = true; - this.renderOrder = 0; - - this.userData = {}; - - } - - Object3D.DefaultUp = new Vector3( 0, 1, 0 ); - Object3D.DefaultMatrixAutoUpdate = true; - - Object3D.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { - - constructor: Object3D, - - isObject3D: true, - - onBeforeRender: function () {}, - onAfterRender: function () {}, - - applyMatrix: function ( matrix ) { - - if ( this.matrixAutoUpdate ) this.updateMatrix(); - - this.matrix.premultiply( matrix ); - - this.matrix.decompose( this.position, this.quaternion, this.scale ); - - }, - - applyQuaternion: function ( q ) { - - this.quaternion.premultiply( q ); - - return this; - - }, - - setRotationFromAxisAngle: function ( axis, angle ) { - - // assumes axis is normalized - - this.quaternion.setFromAxisAngle( axis, angle ); - - }, - - setRotationFromEuler: function ( euler ) { - - this.quaternion.setFromEuler( euler, true ); - - }, - - setRotationFromMatrix: function ( m ) { - - // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) - - this.quaternion.setFromRotationMatrix( m ); - - }, - - setRotationFromQuaternion: function ( q ) { - - // assumes q is normalized - - this.quaternion.copy( q ); - - }, - - rotateOnAxis: function () { - - // rotate object on axis in object space - // axis is assumed to be normalized - - var q1 = new Quaternion(); - - return function rotateOnAxis( axis, angle ) { - - q1.setFromAxisAngle( axis, angle ); - - this.quaternion.multiply( q1 ); - - return this; - - }; - - }(), - - rotateOnWorldAxis: function () { - - // rotate object on axis in world space - // axis is assumed to be normalized - // method assumes no rotated parent - - var q1 = new Quaternion(); - - return function rotateOnWorldAxis( axis, angle ) { - - q1.setFromAxisAngle( axis, angle ); - - this.quaternion.premultiply( q1 ); - - return this; - - }; - - }(), - - rotateX: function () { - - var v1 = new Vector3( 1, 0, 0 ); - - return function rotateX( angle ) { - - return this.rotateOnAxis( v1, angle ); - - }; - - }(), - - rotateY: function () { - - var v1 = new Vector3( 0, 1, 0 ); - - return function rotateY( angle ) { - - return this.rotateOnAxis( v1, angle ); - - }; - - }(), - - rotateZ: function () { - - var v1 = new Vector3( 0, 0, 1 ); - - return function rotateZ( angle ) { - - return this.rotateOnAxis( v1, angle ); - - }; - - }(), - - translateOnAxis: function () { - - // translate object by distance along axis in object space - // axis is assumed to be normalized - - var v1 = new Vector3(); - - return function translateOnAxis( axis, distance ) { - - v1.copy( axis ).applyQuaternion( this.quaternion ); - - this.position.add( v1.multiplyScalar( distance ) ); - - return this; - - }; - - }(), - - translateX: function () { - - var v1 = new Vector3( 1, 0, 0 ); - - return function translateX( distance ) { - - return this.translateOnAxis( v1, distance ); - - }; - - }(), - - translateY: function () { - - var v1 = new Vector3( 0, 1, 0 ); - - return function translateY( distance ) { - - return this.translateOnAxis( v1, distance ); - - }; - - }(), - - translateZ: function () { - - var v1 = new Vector3( 0, 0, 1 ); - - return function translateZ( distance ) { - - return this.translateOnAxis( v1, distance ); - - }; - - }(), - - localToWorld: function ( vector ) { - - return vector.applyMatrix4( this.matrixWorld ); - - }, - - worldToLocal: function () { - - var m1 = new Matrix4(); - - return function worldToLocal( vector ) { - - return vector.applyMatrix4( m1.getInverse( this.matrixWorld ) ); - - }; - - }(), - - lookAt: function () { - - // This method does not support objects having non-uniformly-scaled parent(s) - - var q1 = new Quaternion(); - var m1 = new Matrix4(); - var target = new Vector3(); - var position = new Vector3(); - - return function lookAt( x, y, z ) { - - if ( x.isVector3 ) { - - target.copy( x ); - - } else { - - target.set( x, y, z ); - - } - - var parent = this.parent; - - this.updateWorldMatrix( true, false ); - - position.setFromMatrixPosition( this.matrixWorld ); - - if ( this.isCamera || this.isLight ) { - - m1.lookAt( position, target, this.up ); - - } else { - - m1.lookAt( target, position, this.up ); - - } - - this.quaternion.setFromRotationMatrix( m1 ); - - if ( parent ) { - - m1.extractRotation( parent.matrixWorld ); - q1.setFromRotationMatrix( m1 ); - this.quaternion.premultiply( q1.inverse() ); - - } - - }; - - }(), - - add: function ( object ) { - - if ( arguments.length > 1 ) { - - for ( var i = 0; i < arguments.length; i ++ ) { - - this.add( arguments[ i ] ); - - } - - return this; - - } - - if ( object === this ) { - - console.error( "THREE.Object3D.add: object can't be added as a child of itself.", object ); - return this; - - } - - if ( ( object && object.isObject3D ) ) { - - if ( object.parent !== null ) { - - object.parent.remove( object ); - - } - - object.parent = this; - object.dispatchEvent( { type: 'added' } ); - - this.children.push( object ); - - } else { - - console.error( "THREE.Object3D.add: object not an instance of THREE.Object3D.", object ); - - } - - return this; - - }, - - remove: function ( object ) { - - if ( arguments.length > 1 ) { - - for ( var i = 0; i < arguments.length; i ++ ) { - - this.remove( arguments[ i ] ); - - } - - return this; - - } - - var index = this.children.indexOf( object ); - - if ( index !== - 1 ) { - - object.parent = null; - - object.dispatchEvent( { type: 'removed' } ); - - this.children.splice( index, 1 ); - - } - - return this; - - }, - - attach: function () { - - // adds object as a child of this, while maintaining the object's world transform - - var m = new Matrix4(); - - return function attach( object ) { - - this.updateWorldMatrix( true, false ); - - m.getInverse( this.matrixWorld ); - - if ( object.parent !== null ) { - - object.parent.updateWorldMatrix( true, false ); - - m.multiply( object.parent.matrixWorld ); - - } - - object.applyMatrix( m ); - - object.updateWorldMatrix( false, false ); - - this.add( object ); - - return this; - - }; - - }(), - - getObjectById: function ( id ) { - - return this.getObjectByProperty( 'id', id ); - - }, - - getObjectByName: function ( name ) { - - return this.getObjectByProperty( 'name', name ); - - }, - - getObjectByProperty: function ( name, value ) { - - if ( this[ name ] === value ) return this; - - for ( var i = 0, l = this.children.length; i < l; i ++ ) { - - var child = this.children[ i ]; - var object = child.getObjectByProperty( name, value ); - - if ( object !== undefined ) { - - return object; - - } - - } - - return undefined; - - }, - - getWorldPosition: function ( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Object3D: .getWorldPosition() target is now required' ); - target = new Vector3(); - - } - - this.updateMatrixWorld( true ); - - return target.setFromMatrixPosition( this.matrixWorld ); - - }, - - getWorldQuaternion: function () { - - var position = new Vector3(); - var scale = new Vector3(); - - return function getWorldQuaternion( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Object3D: .getWorldQuaternion() target is now required' ); - target = new Quaternion(); - - } - - this.updateMatrixWorld( true ); - - this.matrixWorld.decompose( position, target, scale ); - - return target; - - }; - - }(), - - getWorldScale: function () { - - var position = new Vector3(); - var quaternion = new Quaternion(); - - return function getWorldScale( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Object3D: .getWorldScale() target is now required' ); - target = new Vector3(); - - } - - this.updateMatrixWorld( true ); - - this.matrixWorld.decompose( position, quaternion, target ); - - return target; - - }; - - }(), - - getWorldDirection: function ( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Object3D: .getWorldDirection() target is now required' ); - target = new Vector3(); - - } - - this.updateMatrixWorld( true ); - - var e = this.matrixWorld.elements; - - return target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize(); - - }, - - raycast: function () {}, - - traverse: function ( callback ) { - - callback( this ); - - var children = this.children; - - for ( var i = 0, l = children.length; i < l; i ++ ) { - - children[ i ].traverse( callback ); - - } - - }, - - traverseVisible: function ( callback ) { - - if ( this.visible === false ) return; - - callback( this ); - - var children = this.children; - - for ( var i = 0, l = children.length; i < l; i ++ ) { - - children[ i ].traverseVisible( callback ); - - } - - }, - - traverseAncestors: function ( callback ) { - - var parent = this.parent; - - if ( parent !== null ) { - - callback( parent ); - - parent.traverseAncestors( callback ); - - } - - }, - - updateMatrix: function () { - - this.matrix.compose( this.position, this.quaternion, this.scale ); - - this.matrixWorldNeedsUpdate = true; - - }, - - updateMatrixWorld: function ( force ) { - - if ( this.matrixAutoUpdate ) this.updateMatrix(); - - if ( this.matrixWorldNeedsUpdate || force ) { - - if ( this.parent === null ) { - - this.matrixWorld.copy( this.matrix ); - - } else { - - this.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix ); - - } - - this.matrixWorldNeedsUpdate = false; - - force = true; - - } - - // update children - - var children = this.children; - - for ( var i = 0, l = children.length; i < l; i ++ ) { - - children[ i ].updateMatrixWorld( force ); - - } - - }, - - updateWorldMatrix: function ( updateParents, updateChildren ) { - - var parent = this.parent; - - if ( updateParents === true && parent !== null ) { - - parent.updateWorldMatrix( true, false ); - - } - - if ( this.matrixAutoUpdate ) this.updateMatrix(); - - if ( this.parent === null ) { - - this.matrixWorld.copy( this.matrix ); - - } else { - - this.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix ); - - } - - // update children - - if ( updateChildren === true ) { - - var children = this.children; - - for ( var i = 0, l = children.length; i < l; i ++ ) { - - children[ i ].updateWorldMatrix( false, true ); - - } - - } - - }, - - toJSON: function ( meta ) { - - // meta is a string when called from JSON.stringify - var isRootObject = ( meta === undefined || typeof meta === 'string' ); - - var output = {}; - - // meta is a hash used to collect geometries, materials. - // not providing it implies that this is the root object - // being serialized. - if ( isRootObject ) { - - // initialize meta obj - meta = { - geometries: {}, - materials: {}, - textures: {}, - images: {}, - shapes: {} - }; - - output.metadata = { - version: 4.5, - type: 'Object', - generator: 'Object3D.toJSON' - }; - - } - - // standard Object3D serialization - - var object = {}; - - object.uuid = this.uuid; - object.type = this.type; - - if ( this.name !== '' ) object.name = this.name; - if ( this.castShadow === true ) object.castShadow = true; - if ( this.receiveShadow === true ) object.receiveShadow = true; - if ( this.visible === false ) object.visible = false; - if ( this.frustumCulled === false ) object.frustumCulled = false; - if ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder; - if ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData; - - object.layers = this.layers.mask; - object.matrix = this.matrix.toArray(); - - if ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false; - - // object specific properties - - if ( this.isMesh && this.drawMode !== TrianglesDrawMode ) object.drawMode = this.drawMode; - - // - - function serialize( library, element ) { - - if ( library[ element.uuid ] === undefined ) { - - library[ element.uuid ] = element.toJSON( meta ); - - } - - return element.uuid; - - } - - if ( this.isMesh || this.isLine || this.isPoints ) { - - object.geometry = serialize( meta.geometries, this.geometry ); - - var parameters = this.geometry.parameters; - - if ( parameters !== undefined && parameters.shapes !== undefined ) { - - var shapes = parameters.shapes; - - if ( Array.isArray( shapes ) ) { - - for ( var i = 0, l = shapes.length; i < l; i ++ ) { - - var shape = shapes[ i ]; - - serialize( meta.shapes, shape ); - - } - - } else { - - serialize( meta.shapes, shapes ); - - } - - } - - } - - if ( this.material !== undefined ) { - - if ( Array.isArray( this.material ) ) { - - var uuids = []; - - for ( var i = 0, l = this.material.length; i < l; i ++ ) { - - uuids.push( serialize( meta.materials, this.material[ i ] ) ); - - } - - object.material = uuids; - - } else { - - object.material = serialize( meta.materials, this.material ); - - } - - } - - // - - if ( this.children.length > 0 ) { - - object.children = []; - - for ( var i = 0; i < this.children.length; i ++ ) { - - object.children.push( this.children[ i ].toJSON( meta ).object ); - - } - - } - - if ( isRootObject ) { - - var geometries = extractFromCache( meta.geometries ); - var materials = extractFromCache( meta.materials ); - var textures = extractFromCache( meta.textures ); - var images = extractFromCache( meta.images ); - var shapes = extractFromCache( meta.shapes ); - - if ( geometries.length > 0 ) output.geometries = geometries; - if ( materials.length > 0 ) output.materials = materials; - if ( textures.length > 0 ) output.textures = textures; - if ( images.length > 0 ) output.images = images; - if ( shapes.length > 0 ) output.shapes = shapes; - - } - - output.object = object; - - return output; - - // extract data from the cache hash - // remove metadata on each item - // and return as array - function extractFromCache( cache ) { - - var values = []; - for ( var key in cache ) { - - var data = cache[ key ]; - delete data.metadata; - values.push( data ); - - } - return values; - - } - - }, - - clone: function ( recursive ) { - - return new this.constructor().copy( this, recursive ); - - }, - - copy: function ( source, recursive ) { - - if ( recursive === undefined ) recursive = true; - - this.name = source.name; - - this.up.copy( source.up ); - - this.position.copy( source.position ); - this.quaternion.copy( source.quaternion ); - this.scale.copy( source.scale ); - - this.matrix.copy( source.matrix ); - this.matrixWorld.copy( source.matrixWorld ); - - this.matrixAutoUpdate = source.matrixAutoUpdate; - this.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate; - - this.layers.mask = source.layers.mask; - this.visible = source.visible; - - this.castShadow = source.castShadow; - this.receiveShadow = source.receiveShadow; - - this.frustumCulled = source.frustumCulled; - this.renderOrder = source.renderOrder; - - this.userData = JSON.parse( JSON.stringify( source.userData ) ); - - if ( recursive === true ) { - - for ( var i = 0; i < source.children.length; i ++ ) { - - var child = source.children[ i ]; - this.add( child.clone() ); - - } - - } - - return this; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author kile / http://kile.stravaganza.org/ - * @author alteredq / http://alteredqualia.com/ - * @author mikael emtinger / http://gomo.se/ - * @author zz85 / http://www.lab4games.net/zz85/blog - * @author bhouston / http://clara.io - */ - - var geometryId = 0; // Geometry uses even numbers as Id - - function Geometry() { - - Object.defineProperty( this, 'id', { value: geometryId += 2 } ); - - this.uuid = _Math.generateUUID(); - - this.name = ''; - this.type = 'Geometry'; - - this.vertices = []; - this.colors = []; - this.faces = []; - this.faceVertexUvs = [[]]; - - this.morphTargets = []; - this.morphNormals = []; - - this.skinWeights = []; - this.skinIndices = []; - - this.lineDistances = []; - - this.boundingBox = null; - this.boundingSphere = null; - - // update flags - - this.elementsNeedUpdate = false; - this.verticesNeedUpdate = false; - this.uvsNeedUpdate = false; - this.normalsNeedUpdate = false; - this.colorsNeedUpdate = false; - this.lineDistancesNeedUpdate = false; - this.groupsNeedUpdate = false; - - } - - Geometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { - - constructor: Geometry, - - isGeometry: true, - - applyMatrix: function ( matrix ) { - - var normalMatrix = new Matrix3().getNormalMatrix( matrix ); - - for ( var i = 0, il = this.vertices.length; i < il; i ++ ) { - - var vertex = this.vertices[ i ]; - vertex.applyMatrix4( matrix ); - - } - - for ( var i = 0, il = this.faces.length; i < il; i ++ ) { - - var face = this.faces[ i ]; - face.normal.applyMatrix3( normalMatrix ).normalize(); - - for ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) { - - face.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize(); - - } - - } - - if ( this.boundingBox !== null ) { - - this.computeBoundingBox(); - - } - - if ( this.boundingSphere !== null ) { - - this.computeBoundingSphere(); - - } - - this.verticesNeedUpdate = true; - this.normalsNeedUpdate = true; - - return this; - - }, - - rotateX: function () { - - // rotate geometry around world x-axis - - var m1 = new Matrix4(); - - return function rotateX( angle ) { - - m1.makeRotationX( angle ); - - this.applyMatrix( m1 ); - - return this; - - }; - - }(), - - rotateY: function () { - - // rotate geometry around world y-axis - - var m1 = new Matrix4(); - - return function rotateY( angle ) { - - m1.makeRotationY( angle ); - - this.applyMatrix( m1 ); - - return this; - - }; - - }(), - - rotateZ: function () { - - // rotate geometry around world z-axis - - var m1 = new Matrix4(); - - return function rotateZ( angle ) { - - m1.makeRotationZ( angle ); - - this.applyMatrix( m1 ); - - return this; - - }; - - }(), - - translate: function () { - - // translate geometry - - var m1 = new Matrix4(); - - return function translate( x, y, z ) { - - m1.makeTranslation( x, y, z ); - - this.applyMatrix( m1 ); - - return this; - - }; - - }(), - - scale: function () { - - // scale geometry - - var m1 = new Matrix4(); - - return function scale( x, y, z ) { - - m1.makeScale( x, y, z ); - - this.applyMatrix( m1 ); - - return this; - - }; - - }(), - - lookAt: function () { - - var obj = new Object3D(); - - return function lookAt( vector ) { - - obj.lookAt( vector ); - - obj.updateMatrix(); - - this.applyMatrix( obj.matrix ); - - }; - - }(), - - fromBufferGeometry: function ( geometry ) { - - var scope = this; - - var indices = geometry.index !== null ? geometry.index.array : undefined; - var attributes = geometry.attributes; - - var positions = attributes.position.array; - var normals = attributes.normal !== undefined ? attributes.normal.array : undefined; - var colors = attributes.color !== undefined ? attributes.color.array : undefined; - var uvs = attributes.uv !== undefined ? attributes.uv.array : undefined; - var uvs2 = attributes.uv2 !== undefined ? attributes.uv2.array : undefined; - - if ( uvs2 !== undefined ) this.faceVertexUvs[ 1 ] = []; - - for ( var i = 0; i < positions.length; i += 3 ) { - - scope.vertices.push( new Vector3().fromArray( positions, i ) ); - - if ( colors !== undefined ) { - - scope.colors.push( new Color().fromArray( colors, i ) ); - - } - - } - - function addFace( a, b, c, materialIndex ) { - - var vertexColors = ( colors === undefined ) ? [] : [ - scope.colors[ a ].clone(), - scope.colors[ b ].clone(), - scope.colors[ c ].clone() ]; - - var vertexNormals = ( normals === undefined ) ? [] : [ - new Vector3().fromArray( normals, a * 3 ), - new Vector3().fromArray( normals, b * 3 ), - new Vector3().fromArray( normals, c * 3 ) - ]; - - var face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex ); - - scope.faces.push( face ); - - if ( uvs !== undefined ) { - - scope.faceVertexUvs[ 0 ].push( [ - new Vector2().fromArray( uvs, a * 2 ), - new Vector2().fromArray( uvs, b * 2 ), - new Vector2().fromArray( uvs, c * 2 ) - ] ); - - } - - if ( uvs2 !== undefined ) { - - scope.faceVertexUvs[ 1 ].push( [ - new Vector2().fromArray( uvs2, a * 2 ), - new Vector2().fromArray( uvs2, b * 2 ), - new Vector2().fromArray( uvs2, c * 2 ) - ] ); - - } - - } - - var groups = geometry.groups; - - if ( groups.length > 0 ) { - - for ( var i = 0; i < groups.length; i ++ ) { - - var group = groups[ i ]; - - var start = group.start; - var count = group.count; - - for ( var j = start, jl = start + count; j < jl; j += 3 ) { - - if ( indices !== undefined ) { - - addFace( indices[ j ], indices[ j + 1 ], indices[ j + 2 ], group.materialIndex ); - - } else { - - addFace( j, j + 1, j + 2, group.materialIndex ); - - } - - } - - } - - } else { - - if ( indices !== undefined ) { - - for ( var i = 0; i < indices.length; i += 3 ) { - - addFace( indices[ i ], indices[ i + 1 ], indices[ i + 2 ] ); - - } - - } else { - - for ( var i = 0; i < positions.length / 3; i += 3 ) { - - addFace( i, i + 1, i + 2 ); - - } - - } - - } - - this.computeFaceNormals(); - - if ( geometry.boundingBox !== null ) { - - this.boundingBox = geometry.boundingBox.clone(); - - } - - if ( geometry.boundingSphere !== null ) { - - this.boundingSphere = geometry.boundingSphere.clone(); - - } - - return this; - - }, - - center: function () { - - var offset = new Vector3(); - - return function center() { - - this.computeBoundingBox(); - - this.boundingBox.getCenter( offset ).negate(); - - this.translate( offset.x, offset.y, offset.z ); - - return this; - - }; - - }(), - - normalize: function () { - - this.computeBoundingSphere(); - - var center = this.boundingSphere.center; - var radius = this.boundingSphere.radius; - - var s = radius === 0 ? 1 : 1.0 / radius; - - var matrix = new Matrix4(); - matrix.set( - s, 0, 0, - s * center.x, - 0, s, 0, - s * center.y, - 0, 0, s, - s * center.z, - 0, 0, 0, 1 - ); - - this.applyMatrix( matrix ); - - return this; - - }, - - computeFaceNormals: function () { - - var cb = new Vector3(), ab = new Vector3(); - - for ( var f = 0, fl = this.faces.length; f < fl; f ++ ) { - - var face = this.faces[ f ]; - - var vA = this.vertices[ face.a ]; - var vB = this.vertices[ face.b ]; - var vC = this.vertices[ face.c ]; - - cb.subVectors( vC, vB ); - ab.subVectors( vA, vB ); - cb.cross( ab ); - - cb.normalize(); - - face.normal.copy( cb ); - - } - - }, - - computeVertexNormals: function ( areaWeighted ) { - - if ( areaWeighted === undefined ) areaWeighted = true; - - var v, vl, f, fl, face, vertices; - - vertices = new Array( this.vertices.length ); - - for ( v = 0, vl = this.vertices.length; v < vl; v ++ ) { - - vertices[ v ] = new Vector3(); - - } - - if ( areaWeighted ) { - - // vertex normals weighted by triangle areas - // http://www.iquilezles.org/www/articles/normals/normals.htm - - var vA, vB, vC; - var cb = new Vector3(), ab = new Vector3(); - - for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { - - face = this.faces[ f ]; - - vA = this.vertices[ face.a ]; - vB = this.vertices[ face.b ]; - vC = this.vertices[ face.c ]; - - cb.subVectors( vC, vB ); - ab.subVectors( vA, vB ); - cb.cross( ab ); - - vertices[ face.a ].add( cb ); - vertices[ face.b ].add( cb ); - vertices[ face.c ].add( cb ); - - } - - } else { - - this.computeFaceNormals(); - - for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { - - face = this.faces[ f ]; - - vertices[ face.a ].add( face.normal ); - vertices[ face.b ].add( face.normal ); - vertices[ face.c ].add( face.normal ); - - } - - } - - for ( v = 0, vl = this.vertices.length; v < vl; v ++ ) { - - vertices[ v ].normalize(); - - } - - for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { - - face = this.faces[ f ]; - - var vertexNormals = face.vertexNormals; - - if ( vertexNormals.length === 3 ) { - - vertexNormals[ 0 ].copy( vertices[ face.a ] ); - vertexNormals[ 1 ].copy( vertices[ face.b ] ); - vertexNormals[ 2 ].copy( vertices[ face.c ] ); - - } else { - - vertexNormals[ 0 ] = vertices[ face.a ].clone(); - vertexNormals[ 1 ] = vertices[ face.b ].clone(); - vertexNormals[ 2 ] = vertices[ face.c ].clone(); - - } - - } - - if ( this.faces.length > 0 ) { - - this.normalsNeedUpdate = true; - - } - - }, - - computeFlatVertexNormals: function () { - - var f, fl, face; - - this.computeFaceNormals(); - - for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { - - face = this.faces[ f ]; - - var vertexNormals = face.vertexNormals; - - if ( vertexNormals.length === 3 ) { - - vertexNormals[ 0 ].copy( face.normal ); - vertexNormals[ 1 ].copy( face.normal ); - vertexNormals[ 2 ].copy( face.normal ); - - } else { - - vertexNormals[ 0 ] = face.normal.clone(); - vertexNormals[ 1 ] = face.normal.clone(); - vertexNormals[ 2 ] = face.normal.clone(); - - } - - } - - if ( this.faces.length > 0 ) { - - this.normalsNeedUpdate = true; - - } - - }, - - computeMorphNormals: function () { - - var i, il, f, fl, face; - - // save original normals - // - create temp variables on first access - // otherwise just copy (for faster repeated calls) - - for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { - - face = this.faces[ f ]; - - if ( ! face.__originalFaceNormal ) { - - face.__originalFaceNormal = face.normal.clone(); - - } else { - - face.__originalFaceNormal.copy( face.normal ); - - } - - if ( ! face.__originalVertexNormals ) face.__originalVertexNormals = []; - - for ( i = 0, il = face.vertexNormals.length; i < il; i ++ ) { - - if ( ! face.__originalVertexNormals[ i ] ) { - - face.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone(); - - } else { - - face.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] ); - - } - - } - - } - - // use temp geometry to compute face and vertex normals for each morph - - var tmpGeo = new Geometry(); - tmpGeo.faces = this.faces; - - for ( i = 0, il = this.morphTargets.length; i < il; i ++ ) { - - // create on first access - - if ( ! this.morphNormals[ i ] ) { - - this.morphNormals[ i ] = {}; - this.morphNormals[ i ].faceNormals = []; - this.morphNormals[ i ].vertexNormals = []; - - var dstNormalsFace = this.morphNormals[ i ].faceNormals; - var dstNormalsVertex = this.morphNormals[ i ].vertexNormals; - - var faceNormal, vertexNormals; - - for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { - - faceNormal = new Vector3(); - vertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() }; - - dstNormalsFace.push( faceNormal ); - dstNormalsVertex.push( vertexNormals ); - - } - - } - - var morphNormals = this.morphNormals[ i ]; - - // set vertices to morph target - - tmpGeo.vertices = this.morphTargets[ i ].vertices; - - // compute morph normals - - tmpGeo.computeFaceNormals(); - tmpGeo.computeVertexNormals(); - - // store morph normals - - var faceNormal, vertexNormals; - - for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { - - face = this.faces[ f ]; - - faceNormal = morphNormals.faceNormals[ f ]; - vertexNormals = morphNormals.vertexNormals[ f ]; - - faceNormal.copy( face.normal ); - - vertexNormals.a.copy( face.vertexNormals[ 0 ] ); - vertexNormals.b.copy( face.vertexNormals[ 1 ] ); - vertexNormals.c.copy( face.vertexNormals[ 2 ] ); - - } - - } - - // restore original normals - - for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { - - face = this.faces[ f ]; - - face.normal = face.__originalFaceNormal; - face.vertexNormals = face.__originalVertexNormals; - - } - - }, - - computeBoundingBox: function () { - - if ( this.boundingBox === null ) { - - this.boundingBox = new Box3(); - - } - - this.boundingBox.setFromPoints( this.vertices ); - - }, - - computeBoundingSphere: function () { - - if ( this.boundingSphere === null ) { - - this.boundingSphere = new Sphere(); - - } - - this.boundingSphere.setFromPoints( this.vertices ); - - }, - - merge: function ( geometry, matrix, materialIndexOffset ) { - - if ( ! ( geometry && geometry.isGeometry ) ) { - - console.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry ); - return; - - } - - var normalMatrix, - vertexOffset = this.vertices.length, - vertices1 = this.vertices, - vertices2 = geometry.vertices, - faces1 = this.faces, - faces2 = geometry.faces, - uvs1 = this.faceVertexUvs[ 0 ], - uvs2 = geometry.faceVertexUvs[ 0 ], - colors1 = this.colors, - colors2 = geometry.colors; - - if ( materialIndexOffset === undefined ) materialIndexOffset = 0; - - if ( matrix !== undefined ) { - - normalMatrix = new Matrix3().getNormalMatrix( matrix ); - - } - - // vertices - - for ( var i = 0, il = vertices2.length; i < il; i ++ ) { - - var vertex = vertices2[ i ]; - - var vertexCopy = vertex.clone(); - - if ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix ); - - vertices1.push( vertexCopy ); - - } - - // colors - - for ( var i = 0, il = colors2.length; i < il; i ++ ) { - - colors1.push( colors2[ i ].clone() ); - - } - - // faces - - for ( i = 0, il = faces2.length; i < il; i ++ ) { - - var face = faces2[ i ], faceCopy, normal, color, - faceVertexNormals = face.vertexNormals, - faceVertexColors = face.vertexColors; - - faceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset ); - faceCopy.normal.copy( face.normal ); - - if ( normalMatrix !== undefined ) { - - faceCopy.normal.applyMatrix3( normalMatrix ).normalize(); - - } - - for ( var j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) { - - normal = faceVertexNormals[ j ].clone(); - - if ( normalMatrix !== undefined ) { - - normal.applyMatrix3( normalMatrix ).normalize(); - - } - - faceCopy.vertexNormals.push( normal ); - - } - - faceCopy.color.copy( face.color ); - - for ( var j = 0, jl = faceVertexColors.length; j < jl; j ++ ) { - - color = faceVertexColors[ j ]; - faceCopy.vertexColors.push( color.clone() ); - - } - - faceCopy.materialIndex = face.materialIndex + materialIndexOffset; - - faces1.push( faceCopy ); - - } - - // uvs - - for ( i = 0, il = uvs2.length; i < il; i ++ ) { - - var uv = uvs2[ i ], uvCopy = []; - - if ( uv === undefined ) { - - continue; - - } - - for ( var j = 0, jl = uv.length; j < jl; j ++ ) { - - uvCopy.push( uv[ j ].clone() ); - - } - - uvs1.push( uvCopy ); - - } - - }, - - mergeMesh: function ( mesh ) { - - if ( ! ( mesh && mesh.isMesh ) ) { - - console.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh ); - return; - - } - - if ( mesh.matrixAutoUpdate ) mesh.updateMatrix(); - - this.merge( mesh.geometry, mesh.matrix ); - - }, - - /* - * Checks for duplicate vertices with hashmap. - * Duplicated vertices are removed - * and faces' vertices are updated. - */ - - mergeVertices: function () { - - var verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique) - var unique = [], changes = []; - - var v, key; - var precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001 - var precision = Math.pow( 10, precisionPoints ); - var i, il, face; - var indices, j, jl; - - for ( i = 0, il = this.vertices.length; i < il; i ++ ) { - - v = this.vertices[ i ]; - key = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision ); - - if ( verticesMap[ key ] === undefined ) { - - verticesMap[ key ] = i; - unique.push( this.vertices[ i ] ); - changes[ i ] = unique.length - 1; - - } else { - - //console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]); - changes[ i ] = changes[ verticesMap[ key ] ]; - - } - - } - - - // if faces are completely degenerate after merging vertices, we - // have to remove them from the geometry. - var faceIndicesToRemove = []; - - for ( i = 0, il = this.faces.length; i < il; i ++ ) { - - face = this.faces[ i ]; - - face.a = changes[ face.a ]; - face.b = changes[ face.b ]; - face.c = changes[ face.c ]; - - indices = [ face.a, face.b, face.c ]; - - // if any duplicate vertices are found in a Face3 - // we have to remove the face as nothing can be saved - for ( var n = 0; n < 3; n ++ ) { - - if ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) { - - faceIndicesToRemove.push( i ); - break; - - } - - } - - } - - for ( i = faceIndicesToRemove.length - 1; i >= 0; i -- ) { - - var idx = faceIndicesToRemove[ i ]; - - this.faces.splice( idx, 1 ); - - for ( j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) { - - this.faceVertexUvs[ j ].splice( idx, 1 ); - - } - - } - - // Use unique set of vertices - - var diff = this.vertices.length - unique.length; - this.vertices = unique; - return diff; - - }, - - setFromPoints: function ( points ) { - - this.vertices = []; - - for ( var i = 0, l = points.length; i < l; i ++ ) { - - var point = points[ i ]; - this.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) ); - - } - - return this; - - }, - - sortFacesByMaterialIndex: function () { - - var faces = this.faces; - var length = faces.length; - - // tag faces - - for ( var i = 0; i < length; i ++ ) { - - faces[ i ]._id = i; - - } - - // sort faces - - function materialIndexSort( a, b ) { - - return a.materialIndex - b.materialIndex; - - } - - faces.sort( materialIndexSort ); - - // sort uvs - - var uvs1 = this.faceVertexUvs[ 0 ]; - var uvs2 = this.faceVertexUvs[ 1 ]; - - var newUvs1, newUvs2; - - if ( uvs1 && uvs1.length === length ) newUvs1 = []; - if ( uvs2 && uvs2.length === length ) newUvs2 = []; - - for ( var i = 0; i < length; i ++ ) { - - var id = faces[ i ]._id; - - if ( newUvs1 ) newUvs1.push( uvs1[ id ] ); - if ( newUvs2 ) newUvs2.push( uvs2[ id ] ); - - } - - if ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1; - if ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2; - - }, - - toJSON: function () { - - var data = { - metadata: { - version: 4.5, - type: 'Geometry', - generator: 'Geometry.toJSON' - } - }; - - // standard Geometry serialization - - data.uuid = this.uuid; - data.type = this.type; - if ( this.name !== '' ) data.name = this.name; - - if ( this.parameters !== undefined ) { - - var parameters = this.parameters; - - for ( var key in parameters ) { - - if ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ]; - - } - - return data; - - } - - var vertices = []; - - for ( var i = 0; i < this.vertices.length; i ++ ) { - - var vertex = this.vertices[ i ]; - vertices.push( vertex.x, vertex.y, vertex.z ); - - } - - var faces = []; - var normals = []; - var normalsHash = {}; - var colors = []; - var colorsHash = {}; - var uvs = []; - var uvsHash = {}; - - for ( var i = 0; i < this.faces.length; i ++ ) { - - var face = this.faces[ i ]; - - var hasMaterial = true; - var hasFaceUv = false; // deprecated - var hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined; - var hasFaceNormal = face.normal.length() > 0; - var hasFaceVertexNormal = face.vertexNormals.length > 0; - var hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1; - var hasFaceVertexColor = face.vertexColors.length > 0; - - var faceType = 0; - - faceType = setBit( faceType, 0, 0 ); // isQuad - faceType = setBit( faceType, 1, hasMaterial ); - faceType = setBit( faceType, 2, hasFaceUv ); - faceType = setBit( faceType, 3, hasFaceVertexUv ); - faceType = setBit( faceType, 4, hasFaceNormal ); - faceType = setBit( faceType, 5, hasFaceVertexNormal ); - faceType = setBit( faceType, 6, hasFaceColor ); - faceType = setBit( faceType, 7, hasFaceVertexColor ); - - faces.push( faceType ); - faces.push( face.a, face.b, face.c ); - faces.push( face.materialIndex ); - - if ( hasFaceVertexUv ) { - - var faceVertexUvs = this.faceVertexUvs[ 0 ][ i ]; - - faces.push( - getUvIndex( faceVertexUvs[ 0 ] ), - getUvIndex( faceVertexUvs[ 1 ] ), - getUvIndex( faceVertexUvs[ 2 ] ) - ); - - } - - if ( hasFaceNormal ) { - - faces.push( getNormalIndex( face.normal ) ); - - } - - if ( hasFaceVertexNormal ) { - - var vertexNormals = face.vertexNormals; - - faces.push( - getNormalIndex( vertexNormals[ 0 ] ), - getNormalIndex( vertexNormals[ 1 ] ), - getNormalIndex( vertexNormals[ 2 ] ) - ); - - } - - if ( hasFaceColor ) { - - faces.push( getColorIndex( face.color ) ); - - } - - if ( hasFaceVertexColor ) { - - var vertexColors = face.vertexColors; - - faces.push( - getColorIndex( vertexColors[ 0 ] ), - getColorIndex( vertexColors[ 1 ] ), - getColorIndex( vertexColors[ 2 ] ) - ); - - } - - } - - function setBit( value, position, enabled ) { - - return enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) ); - - } - - function getNormalIndex( normal ) { - - var hash = normal.x.toString() + normal.y.toString() + normal.z.toString(); - - if ( normalsHash[ hash ] !== undefined ) { - - return normalsHash[ hash ]; - - } - - normalsHash[ hash ] = normals.length / 3; - normals.push( normal.x, normal.y, normal.z ); - - return normalsHash[ hash ]; - - } - - function getColorIndex( color ) { - - var hash = color.r.toString() + color.g.toString() + color.b.toString(); - - if ( colorsHash[ hash ] !== undefined ) { - - return colorsHash[ hash ]; - - } - - colorsHash[ hash ] = colors.length; - colors.push( color.getHex() ); - - return colorsHash[ hash ]; - - } - - function getUvIndex( uv ) { - - var hash = uv.x.toString() + uv.y.toString(); - - if ( uvsHash[ hash ] !== undefined ) { - - return uvsHash[ hash ]; - - } - - uvsHash[ hash ] = uvs.length / 2; - uvs.push( uv.x, uv.y ); - - return uvsHash[ hash ]; - - } - - data.data = {}; - - data.data.vertices = vertices; - data.data.normals = normals; - if ( colors.length > 0 ) data.data.colors = colors; - if ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility - data.data.faces = faces; - - return data; - - }, - - clone: function () { - - /* - // Handle primitives - - var parameters = this.parameters; - - if ( parameters !== undefined ) { - - var values = []; - - for ( var key in parameters ) { - - values.push( parameters[ key ] ); - - } - - var geometry = Object.create( this.constructor.prototype ); - this.constructor.apply( geometry, values ); - return geometry; - - } - - return new this.constructor().copy( this ); - */ - - return new Geometry().copy( this ); - - }, - - copy: function ( source ) { - - var i, il, j, jl, k, kl; - - // reset - - this.vertices = []; - this.colors = []; - this.faces = []; - this.faceVertexUvs = [[]]; - this.morphTargets = []; - this.morphNormals = []; - this.skinWeights = []; - this.skinIndices = []; - this.lineDistances = []; - this.boundingBox = null; - this.boundingSphere = null; - - // name - - this.name = source.name; - - // vertices - - var vertices = source.vertices; - - for ( i = 0, il = vertices.length; i < il; i ++ ) { - - this.vertices.push( vertices[ i ].clone() ); - - } - - // colors - - var colors = source.colors; - - for ( i = 0, il = colors.length; i < il; i ++ ) { - - this.colors.push( colors[ i ].clone() ); - - } - - // faces - - var faces = source.faces; - - for ( i = 0, il = faces.length; i < il; i ++ ) { - - this.faces.push( faces[ i ].clone() ); - - } - - // face vertex uvs - - for ( i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) { - - var faceVertexUvs = source.faceVertexUvs[ i ]; - - if ( this.faceVertexUvs[ i ] === undefined ) { - - this.faceVertexUvs[ i ] = []; - - } - - for ( j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) { - - var uvs = faceVertexUvs[ j ], uvsCopy = []; - - for ( k = 0, kl = uvs.length; k < kl; k ++ ) { - - var uv = uvs[ k ]; - - uvsCopy.push( uv.clone() ); - - } - - this.faceVertexUvs[ i ].push( uvsCopy ); - - } - - } - - // morph targets - - var morphTargets = source.morphTargets; - - for ( i = 0, il = morphTargets.length; i < il; i ++ ) { - - var morphTarget = {}; - morphTarget.name = morphTargets[ i ].name; - - // vertices - - if ( morphTargets[ i ].vertices !== undefined ) { - - morphTarget.vertices = []; - - for ( j = 0, jl = morphTargets[ i ].vertices.length; j < jl; j ++ ) { - - morphTarget.vertices.push( morphTargets[ i ].vertices[ j ].clone() ); - - } - - } - - // normals - - if ( morphTargets[ i ].normals !== undefined ) { - - morphTarget.normals = []; - - for ( j = 0, jl = morphTargets[ i ].normals.length; j < jl; j ++ ) { - - morphTarget.normals.push( morphTargets[ i ].normals[ j ].clone() ); - - } - - } - - this.morphTargets.push( morphTarget ); - - } - - // morph normals - - var morphNormals = source.morphNormals; - - for ( i = 0, il = morphNormals.length; i < il; i ++ ) { - - var morphNormal = {}; - - // vertex normals - - if ( morphNormals[ i ].vertexNormals !== undefined ) { - - morphNormal.vertexNormals = []; - - for ( j = 0, jl = morphNormals[ i ].vertexNormals.length; j < jl; j ++ ) { - - var srcVertexNormal = morphNormals[ i ].vertexNormals[ j ]; - var destVertexNormal = {}; - - destVertexNormal.a = srcVertexNormal.a.clone(); - destVertexNormal.b = srcVertexNormal.b.clone(); - destVertexNormal.c = srcVertexNormal.c.clone(); - - morphNormal.vertexNormals.push( destVertexNormal ); - - } - - } - - // face normals - - if ( morphNormals[ i ].faceNormals !== undefined ) { - - morphNormal.faceNormals = []; - - for ( j = 0, jl = morphNormals[ i ].faceNormals.length; j < jl; j ++ ) { - - morphNormal.faceNormals.push( morphNormals[ i ].faceNormals[ j ].clone() ); - - } - - } - - this.morphNormals.push( morphNormal ); - - } - - // skin weights - - var skinWeights = source.skinWeights; - - for ( i = 0, il = skinWeights.length; i < il; i ++ ) { - - this.skinWeights.push( skinWeights[ i ].clone() ); - - } - - // skin indices - - var skinIndices = source.skinIndices; - - for ( i = 0, il = skinIndices.length; i < il; i ++ ) { - - this.skinIndices.push( skinIndices[ i ].clone() ); - - } - - // line distances - - var lineDistances = source.lineDistances; - - for ( i = 0, il = lineDistances.length; i < il; i ++ ) { - - this.lineDistances.push( lineDistances[ i ] ); - - } - - // bounding box - - var boundingBox = source.boundingBox; - - if ( boundingBox !== null ) { - - this.boundingBox = boundingBox.clone(); - - } - - // bounding sphere - - var boundingSphere = source.boundingSphere; - - if ( boundingSphere !== null ) { - - this.boundingSphere = boundingSphere.clone(); - - } - - // update flags - - this.elementsNeedUpdate = source.elementsNeedUpdate; - this.verticesNeedUpdate = source.verticesNeedUpdate; - this.uvsNeedUpdate = source.uvsNeedUpdate; - this.normalsNeedUpdate = source.normalsNeedUpdate; - this.colorsNeedUpdate = source.colorsNeedUpdate; - this.lineDistancesNeedUpdate = source.lineDistancesNeedUpdate; - this.groupsNeedUpdate = source.groupsNeedUpdate; - - return this; - - }, - - dispose: function () { - - this.dispatchEvent( { type: 'dispose' } ); - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function BufferAttribute( array, itemSize, normalized ) { - - if ( Array.isArray( array ) ) { - - throw new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' ); - - } - - this.name = ''; - - this.array = array; - this.itemSize = itemSize; - this.count = array !== undefined ? array.length / itemSize : 0; - this.normalized = normalized === true; - - this.dynamic = false; - this.updateRange = { offset: 0, count: - 1 }; - - this.version = 0; - - } - - Object.defineProperty( BufferAttribute.prototype, 'needsUpdate', { - - set: function ( value ) { - - if ( value === true ) this.version ++; - - } - - } ); - - Object.assign( BufferAttribute.prototype, { - - isBufferAttribute: true, - - onUploadCallback: function () {}, - - setArray: function ( array ) { - - if ( Array.isArray( array ) ) { - - throw new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' ); - - } - - this.count = array !== undefined ? array.length / this.itemSize : 0; - this.array = array; - - return this; - - }, - - setDynamic: function ( value ) { - - this.dynamic = value; - - return this; - - }, - - copy: function ( source ) { - - this.name = source.name; - this.array = new source.array.constructor( source.array ); - this.itemSize = source.itemSize; - this.count = source.count; - this.normalized = source.normalized; - - this.dynamic = source.dynamic; - - return this; - - }, - - copyAt: function ( index1, attribute, index2 ) { - - index1 *= this.itemSize; - index2 *= attribute.itemSize; - - for ( var i = 0, l = this.itemSize; i < l; i ++ ) { - - this.array[ index1 + i ] = attribute.array[ index2 + i ]; - - } - - return this; - - }, - - copyArray: function ( array ) { - - this.array.set( array ); - - return this; - - }, - - copyColorsArray: function ( colors ) { - - var array = this.array, offset = 0; - - for ( var i = 0, l = colors.length; i < l; i ++ ) { - - var color = colors[ i ]; - - if ( color === undefined ) { - - console.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i ); - color = new Color(); - - } - - array[ offset ++ ] = color.r; - array[ offset ++ ] = color.g; - array[ offset ++ ] = color.b; - - } - - return this; - - }, - - copyVector2sArray: function ( vectors ) { - - var array = this.array, offset = 0; - - for ( var i = 0, l = vectors.length; i < l; i ++ ) { - - var vector = vectors[ i ]; - - if ( vector === undefined ) { - - console.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i ); - vector = new Vector2(); - - } - - array[ offset ++ ] = vector.x; - array[ offset ++ ] = vector.y; - - } - - return this; - - }, - - copyVector3sArray: function ( vectors ) { - - var array = this.array, offset = 0; - - for ( var i = 0, l = vectors.length; i < l; i ++ ) { - - var vector = vectors[ i ]; - - if ( vector === undefined ) { - - console.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i ); - vector = new Vector3(); - - } - - array[ offset ++ ] = vector.x; - array[ offset ++ ] = vector.y; - array[ offset ++ ] = vector.z; - - } - - return this; - - }, - - copyVector4sArray: function ( vectors ) { - - var array = this.array, offset = 0; - - for ( var i = 0, l = vectors.length; i < l; i ++ ) { - - var vector = vectors[ i ]; - - if ( vector === undefined ) { - - console.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i ); - vector = new Vector4(); - - } - - array[ offset ++ ] = vector.x; - array[ offset ++ ] = vector.y; - array[ offset ++ ] = vector.z; - array[ offset ++ ] = vector.w; - - } - - return this; - - }, - - set: function ( value, offset ) { - - if ( offset === undefined ) offset = 0; - - this.array.set( value, offset ); - - return this; - - }, - - getX: function ( index ) { - - return this.array[ index * this.itemSize ]; - - }, - - setX: function ( index, x ) { - - this.array[ index * this.itemSize ] = x; - - return this; - - }, - - getY: function ( index ) { - - return this.array[ index * this.itemSize + 1 ]; - - }, - - setY: function ( index, y ) { - - this.array[ index * this.itemSize + 1 ] = y; - - return this; - - }, - - getZ: function ( index ) { - - return this.array[ index * this.itemSize + 2 ]; - - }, - - setZ: function ( index, z ) { - - this.array[ index * this.itemSize + 2 ] = z; - - return this; - - }, - - getW: function ( index ) { - - return this.array[ index * this.itemSize + 3 ]; - - }, - - setW: function ( index, w ) { - - this.array[ index * this.itemSize + 3 ] = w; - - return this; - - }, - - setXY: function ( index, x, y ) { - - index *= this.itemSize; - - this.array[ index + 0 ] = x; - this.array[ index + 1 ] = y; - - return this; - - }, - - setXYZ: function ( index, x, y, z ) { - - index *= this.itemSize; - - this.array[ index + 0 ] = x; - this.array[ index + 1 ] = y; - this.array[ index + 2 ] = z; - - return this; - - }, - - setXYZW: function ( index, x, y, z, w ) { - - index *= this.itemSize; - - this.array[ index + 0 ] = x; - this.array[ index + 1 ] = y; - this.array[ index + 2 ] = z; - this.array[ index + 3 ] = w; - - return this; - - }, - - onUpload: function ( callback ) { - - this.onUploadCallback = callback; - - return this; - - }, - - clone: function () { - - return new this.constructor( this.array, this.itemSize ).copy( this ); - - }, - - toJSON: function () { - - return { - itemSize: this.itemSize, - type: this.array.constructor.name, - array: Array.prototype.slice.call( this.array ), - normalized: this.normalized - }; - - } - - } ); - - // - - function Int8BufferAttribute( array, itemSize, normalized ) { - - BufferAttribute.call( this, new Int8Array( array ), itemSize, normalized ); - - } - - Int8BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); - Int8BufferAttribute.prototype.constructor = Int8BufferAttribute; - - - function Uint8BufferAttribute( array, itemSize, normalized ) { - - BufferAttribute.call( this, new Uint8Array( array ), itemSize, normalized ); - - } - - Uint8BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); - Uint8BufferAttribute.prototype.constructor = Uint8BufferAttribute; - - - function Uint8ClampedBufferAttribute( array, itemSize, normalized ) { - - BufferAttribute.call( this, new Uint8ClampedArray( array ), itemSize, normalized ); - - } - - Uint8ClampedBufferAttribute.prototype = Object.create( BufferAttribute.prototype ); - Uint8ClampedBufferAttribute.prototype.constructor = Uint8ClampedBufferAttribute; - - - function Int16BufferAttribute( array, itemSize, normalized ) { - - BufferAttribute.call( this, new Int16Array( array ), itemSize, normalized ); - - } - - Int16BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); - Int16BufferAttribute.prototype.constructor = Int16BufferAttribute; - - - function Uint16BufferAttribute( array, itemSize, normalized ) { - - BufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized ); - - } - - Uint16BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); - Uint16BufferAttribute.prototype.constructor = Uint16BufferAttribute; - - - function Int32BufferAttribute( array, itemSize, normalized ) { - - BufferAttribute.call( this, new Int32Array( array ), itemSize, normalized ); - - } - - Int32BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); - Int32BufferAttribute.prototype.constructor = Int32BufferAttribute; - - - function Uint32BufferAttribute( array, itemSize, normalized ) { - - BufferAttribute.call( this, new Uint32Array( array ), itemSize, normalized ); - - } - - Uint32BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); - Uint32BufferAttribute.prototype.constructor = Uint32BufferAttribute; - - - function Float32BufferAttribute( array, itemSize, normalized ) { - - BufferAttribute.call( this, new Float32Array( array ), itemSize, normalized ); - - } - - Float32BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); - Float32BufferAttribute.prototype.constructor = Float32BufferAttribute; - - - function Float64BufferAttribute( array, itemSize, normalized ) { - - BufferAttribute.call( this, new Float64Array( array ), itemSize, normalized ); - - } - - Float64BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); - Float64BufferAttribute.prototype.constructor = Float64BufferAttribute; - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function DirectGeometry() { - - this.vertices = []; - this.normals = []; - this.colors = []; - this.uvs = []; - this.uvs2 = []; - - this.groups = []; - - this.morphTargets = {}; - - this.skinWeights = []; - this.skinIndices = []; - - // this.lineDistances = []; - - this.boundingBox = null; - this.boundingSphere = null; - - // update flags - - this.verticesNeedUpdate = false; - this.normalsNeedUpdate = false; - this.colorsNeedUpdate = false; - this.uvsNeedUpdate = false; - this.groupsNeedUpdate = false; - - } - - Object.assign( DirectGeometry.prototype, { - - computeGroups: function ( geometry ) { - - var group; - var groups = []; - var materialIndex = undefined; - - var faces = geometry.faces; - - for ( var i = 0; i < faces.length; i ++ ) { - - var face = faces[ i ]; - - // materials - - if ( face.materialIndex !== materialIndex ) { - - materialIndex = face.materialIndex; - - if ( group !== undefined ) { - - group.count = ( i * 3 ) - group.start; - groups.push( group ); - - } - - group = { - start: i * 3, - materialIndex: materialIndex - }; - - } - - } - - if ( group !== undefined ) { - - group.count = ( i * 3 ) - group.start; - groups.push( group ); - - } - - this.groups = groups; - - }, - - fromGeometry: function ( geometry ) { - - var faces = geometry.faces; - var vertices = geometry.vertices; - var faceVertexUvs = geometry.faceVertexUvs; - - var hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0; - var hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0; - - // morphs - - var morphTargets = geometry.morphTargets; - var morphTargetsLength = morphTargets.length; - - var morphTargetsPosition; - - if ( morphTargetsLength > 0 ) { - - morphTargetsPosition = []; - - for ( var i = 0; i < morphTargetsLength; i ++ ) { - - morphTargetsPosition[ i ] = { - name: morphTargets[ i ].name, - data: [] - }; - - } - - this.morphTargets.position = morphTargetsPosition; - - } - - var morphNormals = geometry.morphNormals; - var morphNormalsLength = morphNormals.length; - - var morphTargetsNormal; - - if ( morphNormalsLength > 0 ) { - - morphTargetsNormal = []; - - for ( var i = 0; i < morphNormalsLength; i ++ ) { - - morphTargetsNormal[ i ] = { - name: morphNormals[ i ].name, - data: [] - }; - - } - - this.morphTargets.normal = morphTargetsNormal; - - } - - // skins - - var skinIndices = geometry.skinIndices; - var skinWeights = geometry.skinWeights; - - var hasSkinIndices = skinIndices.length === vertices.length; - var hasSkinWeights = skinWeights.length === vertices.length; - - // - - if ( vertices.length > 0 && faces.length === 0 ) { - - console.error( 'THREE.DirectGeometry: Faceless geometries are not supported.' ); - - } - - for ( var i = 0; i < faces.length; i ++ ) { - - var face = faces[ i ]; - - this.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] ); - - var vertexNormals = face.vertexNormals; - - if ( vertexNormals.length === 3 ) { - - this.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] ); - - } else { - - var normal = face.normal; - - this.normals.push( normal, normal, normal ); - - } - - var vertexColors = face.vertexColors; - - if ( vertexColors.length === 3 ) { - - this.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] ); - - } else { - - var color = face.color; - - this.colors.push( color, color, color ); - - } - - if ( hasFaceVertexUv === true ) { - - var vertexUvs = faceVertexUvs[ 0 ][ i ]; - - if ( vertexUvs !== undefined ) { - - this.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] ); - - } else { - - console.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i ); - - this.uvs.push( new Vector2(), new Vector2(), new Vector2() ); - - } - - } - - if ( hasFaceVertexUv2 === true ) { - - var vertexUvs = faceVertexUvs[ 1 ][ i ]; - - if ( vertexUvs !== undefined ) { - - this.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] ); - - } else { - - console.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i ); - - this.uvs2.push( new Vector2(), new Vector2(), new Vector2() ); - - } - - } - - // morphs - - for ( var j = 0; j < morphTargetsLength; j ++ ) { - - var morphTarget = morphTargets[ j ].vertices; - - morphTargetsPosition[ j ].data.push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] ); - - } - - for ( var j = 0; j < morphNormalsLength; j ++ ) { - - var morphNormal = morphNormals[ j ].vertexNormals[ i ]; - - morphTargetsNormal[ j ].data.push( morphNormal.a, morphNormal.b, morphNormal.c ); - - } - - // skins - - if ( hasSkinIndices ) { - - this.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] ); - - } - - if ( hasSkinWeights ) { - - this.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] ); - - } - - } - - this.computeGroups( geometry ); - - this.verticesNeedUpdate = geometry.verticesNeedUpdate; - this.normalsNeedUpdate = geometry.normalsNeedUpdate; - this.colorsNeedUpdate = geometry.colorsNeedUpdate; - this.uvsNeedUpdate = geometry.uvsNeedUpdate; - this.groupsNeedUpdate = geometry.groupsNeedUpdate; - - return this; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function arrayMax( array ) { - - if ( array.length === 0 ) return - Infinity; - - var max = array[ 0 ]; - - for ( var i = 1, l = array.length; i < l; ++ i ) { - - if ( array[ i ] > max ) max = array[ i ]; - - } - - return max; - - } - - /** - * @author alteredq / http://alteredqualia.com/ - * @author mrdoob / http://mrdoob.com/ - */ - - var bufferGeometryId = 1; // BufferGeometry uses odd numbers as Id - - function BufferGeometry() { - - Object.defineProperty( this, 'id', { value: bufferGeometryId += 2 } ); - - this.uuid = _Math.generateUUID(); - - this.name = ''; - this.type = 'BufferGeometry'; - - this.index = null; - this.attributes = {}; - - this.morphAttributes = {}; - - this.groups = []; - - this.boundingBox = null; - this.boundingSphere = null; - - this.drawRange = { start: 0, count: Infinity }; - - this.userData = {}; - - } - - BufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { - - constructor: BufferGeometry, - - isBufferGeometry: true, - - getIndex: function () { - - return this.index; - - }, - - setIndex: function ( index ) { - - if ( Array.isArray( index ) ) { - - this.index = new ( arrayMax( index ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 ); - - } else { - - this.index = index; - - } - - }, - - addAttribute: function ( name, attribute ) { - - if ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) { - - console.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' ); - - return this.addAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) ); - - } - - if ( name === 'index' ) { - - console.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' ); - this.setIndex( attribute ); - - return this; - - } - - this.attributes[ name ] = attribute; - - return this; - - }, - - getAttribute: function ( name ) { - - return this.attributes[ name ]; - - }, - - removeAttribute: function ( name ) { - - delete this.attributes[ name ]; - - return this; - - }, - - addGroup: function ( start, count, materialIndex ) { - - this.groups.push( { - - start: start, - count: count, - materialIndex: materialIndex !== undefined ? materialIndex : 0 - - } ); - - }, - - clearGroups: function () { - - this.groups = []; - - }, - - setDrawRange: function ( start, count ) { - - this.drawRange.start = start; - this.drawRange.count = count; - - }, - - applyMatrix: function ( matrix ) { - - var position = this.attributes.position; - - if ( position !== undefined ) { - - matrix.applyToBufferAttribute( position ); - position.needsUpdate = true; - - } - - var normal = this.attributes.normal; - - if ( normal !== undefined ) { - - var normalMatrix = new Matrix3().getNormalMatrix( matrix ); - - normalMatrix.applyToBufferAttribute( normal ); - normal.needsUpdate = true; - - } - - var tangent = this.attributes.tangent; - - if ( tangent !== undefined ) { - - var normalMatrix = new Matrix3().getNormalMatrix( matrix ); - - // Tangent is vec4, but the '.w' component is a sign value (+1/-1). - normalMatrix.applyToBufferAttribute( tangent ); - tangent.needsUpdate = true; - - } - - if ( this.boundingBox !== null ) { - - this.computeBoundingBox(); - - } - - if ( this.boundingSphere !== null ) { - - this.computeBoundingSphere(); - - } - - return this; - - }, - - rotateX: function () { - - // rotate geometry around world x-axis - - var m1 = new Matrix4(); - - return function rotateX( angle ) { - - m1.makeRotationX( angle ); - - this.applyMatrix( m1 ); - - return this; - - }; - - }(), - - rotateY: function () { - - // rotate geometry around world y-axis - - var m1 = new Matrix4(); - - return function rotateY( angle ) { - - m1.makeRotationY( angle ); - - this.applyMatrix( m1 ); - - return this; - - }; - - }(), - - rotateZ: function () { - - // rotate geometry around world z-axis - - var m1 = new Matrix4(); - - return function rotateZ( angle ) { - - m1.makeRotationZ( angle ); - - this.applyMatrix( m1 ); - - return this; - - }; - - }(), - - translate: function () { - - // translate geometry - - var m1 = new Matrix4(); - - return function translate( x, y, z ) { - - m1.makeTranslation( x, y, z ); - - this.applyMatrix( m1 ); - - return this; - - }; - - }(), - - scale: function () { - - // scale geometry - - var m1 = new Matrix4(); - - return function scale( x, y, z ) { - - m1.makeScale( x, y, z ); - - this.applyMatrix( m1 ); - - return this; - - }; - - }(), - - lookAt: function () { - - var obj = new Object3D(); - - return function lookAt( vector ) { - - obj.lookAt( vector ); - - obj.updateMatrix(); - - this.applyMatrix( obj.matrix ); - - }; - - }(), - - center: function () { - - var offset = new Vector3(); - - return function center() { - - this.computeBoundingBox(); - - this.boundingBox.getCenter( offset ).negate(); - - this.translate( offset.x, offset.y, offset.z ); - - return this; - - }; - - }(), - - setFromObject: function ( object ) { - - // console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this ); - - var geometry = object.geometry; - - if ( object.isPoints || object.isLine ) { - - var positions = new Float32BufferAttribute( geometry.vertices.length * 3, 3 ); - var colors = new Float32BufferAttribute( geometry.colors.length * 3, 3 ); - - this.addAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) ); - this.addAttribute( 'color', colors.copyColorsArray( geometry.colors ) ); - - if ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) { - - var lineDistances = new Float32BufferAttribute( geometry.lineDistances.length, 1 ); - - this.addAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) ); - - } - - if ( geometry.boundingSphere !== null ) { - - this.boundingSphere = geometry.boundingSphere.clone(); - - } - - if ( geometry.boundingBox !== null ) { - - this.boundingBox = geometry.boundingBox.clone(); - - } - - } else if ( object.isMesh ) { - - if ( geometry && geometry.isGeometry ) { - - this.fromGeometry( geometry ); - - } - - } - - return this; - - }, - - setFromPoints: function ( points ) { - - var position = []; - - for ( var i = 0, l = points.length; i < l; i ++ ) { - - var point = points[ i ]; - position.push( point.x, point.y, point.z || 0 ); - - } - - this.addAttribute( 'position', new Float32BufferAttribute( position, 3 ) ); - - return this; - - }, - - updateFromObject: function ( object ) { - - var geometry = object.geometry; - - if ( object.isMesh ) { - - var direct = geometry.__directGeometry; - - if ( geometry.elementsNeedUpdate === true ) { - - direct = undefined; - geometry.elementsNeedUpdate = false; - - } - - if ( direct === undefined ) { - - return this.fromGeometry( geometry ); - - } - - direct.verticesNeedUpdate = geometry.verticesNeedUpdate; - direct.normalsNeedUpdate = geometry.normalsNeedUpdate; - direct.colorsNeedUpdate = geometry.colorsNeedUpdate; - direct.uvsNeedUpdate = geometry.uvsNeedUpdate; - direct.groupsNeedUpdate = geometry.groupsNeedUpdate; - - geometry.verticesNeedUpdate = false; - geometry.normalsNeedUpdate = false; - geometry.colorsNeedUpdate = false; - geometry.uvsNeedUpdate = false; - geometry.groupsNeedUpdate = false; - - geometry = direct; - - } - - var attribute; - - if ( geometry.verticesNeedUpdate === true ) { - - attribute = this.attributes.position; - - if ( attribute !== undefined ) { - - attribute.copyVector3sArray( geometry.vertices ); - attribute.needsUpdate = true; - - } - - geometry.verticesNeedUpdate = false; - - } - - if ( geometry.normalsNeedUpdate === true ) { - - attribute = this.attributes.normal; - - if ( attribute !== undefined ) { - - attribute.copyVector3sArray( geometry.normals ); - attribute.needsUpdate = true; - - } - - geometry.normalsNeedUpdate = false; - - } - - if ( geometry.colorsNeedUpdate === true ) { - - attribute = this.attributes.color; - - if ( attribute !== undefined ) { - - attribute.copyColorsArray( geometry.colors ); - attribute.needsUpdate = true; - - } - - geometry.colorsNeedUpdate = false; - - } - - if ( geometry.uvsNeedUpdate ) { - - attribute = this.attributes.uv; - - if ( attribute !== undefined ) { - - attribute.copyVector2sArray( geometry.uvs ); - attribute.needsUpdate = true; - - } - - geometry.uvsNeedUpdate = false; - - } - - if ( geometry.lineDistancesNeedUpdate ) { - - attribute = this.attributes.lineDistance; - - if ( attribute !== undefined ) { - - attribute.copyArray( geometry.lineDistances ); - attribute.needsUpdate = true; - - } - - geometry.lineDistancesNeedUpdate = false; - - } - - if ( geometry.groupsNeedUpdate ) { - - geometry.computeGroups( object.geometry ); - this.groups = geometry.groups; - - geometry.groupsNeedUpdate = false; - - } - - return this; - - }, - - fromGeometry: function ( geometry ) { - - geometry.__directGeometry = new DirectGeometry().fromGeometry( geometry ); - - return this.fromDirectGeometry( geometry.__directGeometry ); - - }, - - fromDirectGeometry: function ( geometry ) { - - var positions = new Float32Array( geometry.vertices.length * 3 ); - this.addAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) ); - - if ( geometry.normals.length > 0 ) { - - var normals = new Float32Array( geometry.normals.length * 3 ); - this.addAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) ); - - } - - if ( geometry.colors.length > 0 ) { - - var colors = new Float32Array( geometry.colors.length * 3 ); - this.addAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) ); - - } - - if ( geometry.uvs.length > 0 ) { - - var uvs = new Float32Array( geometry.uvs.length * 2 ); - this.addAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) ); - - } - - if ( geometry.uvs2.length > 0 ) { - - var uvs2 = new Float32Array( geometry.uvs2.length * 2 ); - this.addAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) ); - - } - - // groups - - this.groups = geometry.groups; - - // morphs - - for ( var name in geometry.morphTargets ) { - - var array = []; - var morphTargets = geometry.morphTargets[ name ]; - - for ( var i = 0, l = morphTargets.length; i < l; i ++ ) { - - var morphTarget = morphTargets[ i ]; - - var attribute = new Float32BufferAttribute( morphTarget.data.length * 3, 3 ); - attribute.name = morphTarget.name; - - array.push( attribute.copyVector3sArray( morphTarget.data ) ); - - } - - this.morphAttributes[ name ] = array; - - } - - // skinning - - if ( geometry.skinIndices.length > 0 ) { - - var skinIndices = new Float32BufferAttribute( geometry.skinIndices.length * 4, 4 ); - this.addAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) ); - - } - - if ( geometry.skinWeights.length > 0 ) { - - var skinWeights = new Float32BufferAttribute( geometry.skinWeights.length * 4, 4 ); - this.addAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) ); - - } - - // - - if ( geometry.boundingSphere !== null ) { - - this.boundingSphere = geometry.boundingSphere.clone(); - - } - - if ( geometry.boundingBox !== null ) { - - this.boundingBox = geometry.boundingBox.clone(); - - } - - return this; - - }, - - computeBoundingBox: function () { - - var box = new Box3(); - - return function computeBoundingBox() { - - if ( this.boundingBox === null ) { - - this.boundingBox = new Box3(); - - } - - var position = this.attributes.position; - var morphAttributesPosition = this.morphAttributes.position; - - if ( position !== undefined ) { - - this.boundingBox.setFromBufferAttribute( position ); - - // process morph attributes if present - - if ( morphAttributesPosition ) { - - for ( var i = 0, il = morphAttributesPosition.length; i < il; i ++ ) { - - var morphAttribute = morphAttributesPosition[ i ]; - box.setFromBufferAttribute( morphAttribute ); - - this.boundingBox.expandByPoint( box.min ); - this.boundingBox.expandByPoint( box.max ); - - } - - } - - } else { - - this.boundingBox.makeEmpty(); - - } - - if ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) { - - console.error( 'THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', this ); - - } - - }; - - }(), - - computeBoundingSphere: function () { - - var box = new Box3(); - var boxMorphTargets = new Box3(); - var vector = new Vector3(); - - return function computeBoundingSphere() { - - if ( this.boundingSphere === null ) { - - this.boundingSphere = new Sphere(); - - } - - var position = this.attributes.position; - var morphAttributesPosition = this.morphAttributes.position; - - if ( position ) { - - // first, find the center of the bounding sphere - - var center = this.boundingSphere.center; - - box.setFromBufferAttribute( position ); - - // process morph attributes if present - - if ( morphAttributesPosition ) { - - for ( var i = 0, il = morphAttributesPosition.length; i < il; i ++ ) { - - var morphAttribute = morphAttributesPosition[ i ]; - boxMorphTargets.setFromBufferAttribute( morphAttribute ); - - box.expandByPoint( boxMorphTargets.min ); - box.expandByPoint( boxMorphTargets.max ); - - } - - } - - box.getCenter( center ); - - // second, try to find a boundingSphere with a radius smaller than the - // boundingSphere of the boundingBox: sqrt(3) smaller in the best case - - var maxRadiusSq = 0; - - for ( var i = 0, il = position.count; i < il; i ++ ) { - - vector.fromBufferAttribute( position, i ); - - maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( vector ) ); - - } - - // process morph attributes if present - - if ( morphAttributesPosition ) { - - for ( var i = 0, il = morphAttributesPosition.length; i < il; i ++ ) { - - var morphAttribute = morphAttributesPosition[ i ]; - - for ( var j = 0, jl = morphAttribute.count; j < jl; j ++ ) { - - vector.fromBufferAttribute( morphAttribute, j ); - - maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( vector ) ); - - } - - } - - } - - this.boundingSphere.radius = Math.sqrt( maxRadiusSq ); - - if ( isNaN( this.boundingSphere.radius ) ) { - - console.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', this ); - - } - - } - - }; - - }(), - - computeFaceNormals: function () { - - // backwards compatibility - - }, - - computeVertexNormals: function () { - - var index = this.index; - var attributes = this.attributes; - - if ( attributes.position ) { - - var positions = attributes.position.array; - - if ( attributes.normal === undefined ) { - - this.addAttribute( 'normal', new BufferAttribute( new Float32Array( positions.length ), 3 ) ); - - } else { - - // reset existing normals to zero - - var array = attributes.normal.array; - - for ( var i = 0, il = array.length; i < il; i ++ ) { - - array[ i ] = 0; - - } - - } - - var normals = attributes.normal.array; - - var vA, vB, vC; - var pA = new Vector3(), pB = new Vector3(), pC = new Vector3(); - var cb = new Vector3(), ab = new Vector3(); - - // indexed elements - - if ( index ) { - - var indices = index.array; - - for ( var i = 0, il = index.count; i < il; i += 3 ) { - - vA = indices[ i + 0 ] * 3; - vB = indices[ i + 1 ] * 3; - vC = indices[ i + 2 ] * 3; - - pA.fromArray( positions, vA ); - pB.fromArray( positions, vB ); - pC.fromArray( positions, vC ); - - cb.subVectors( pC, pB ); - ab.subVectors( pA, pB ); - cb.cross( ab ); - - normals[ vA ] += cb.x; - normals[ vA + 1 ] += cb.y; - normals[ vA + 2 ] += cb.z; - - normals[ vB ] += cb.x; - normals[ vB + 1 ] += cb.y; - normals[ vB + 2 ] += cb.z; - - normals[ vC ] += cb.x; - normals[ vC + 1 ] += cb.y; - normals[ vC + 2 ] += cb.z; - - } - - } else { - - // non-indexed elements (unconnected triangle soup) - - for ( var i = 0, il = positions.length; i < il; i += 9 ) { - - pA.fromArray( positions, i ); - pB.fromArray( positions, i + 3 ); - pC.fromArray( positions, i + 6 ); - - cb.subVectors( pC, pB ); - ab.subVectors( pA, pB ); - cb.cross( ab ); - - normals[ i ] = cb.x; - normals[ i + 1 ] = cb.y; - normals[ i + 2 ] = cb.z; - - normals[ i + 3 ] = cb.x; - normals[ i + 4 ] = cb.y; - normals[ i + 5 ] = cb.z; - - normals[ i + 6 ] = cb.x; - normals[ i + 7 ] = cb.y; - normals[ i + 8 ] = cb.z; - - } - - } - - this.normalizeNormals(); - - attributes.normal.needsUpdate = true; - - } - - }, - - merge: function ( geometry, offset ) { - - if ( ! ( geometry && geometry.isBufferGeometry ) ) { - - console.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry ); - return; - - } - - if ( offset === undefined ) { - - offset = 0; - - console.warn( - 'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. ' - + 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.' - ); - - } - - var attributes = this.attributes; - - for ( var key in attributes ) { - - if ( geometry.attributes[ key ] === undefined ) continue; - - var attribute1 = attributes[ key ]; - var attributeArray1 = attribute1.array; - - var attribute2 = geometry.attributes[ key ]; - var attributeArray2 = attribute2.array; - - var attributeOffset = attribute2.itemSize * offset; - var length = Math.min( attributeArray2.length, attributeArray1.length - attributeOffset ); - - for ( var i = 0, j = attributeOffset; i < length; i ++, j ++ ) { - - attributeArray1[ j ] = attributeArray2[ i ]; - - } - - } - - return this; - - }, - - normalizeNormals: function () { - - var vector = new Vector3(); - - return function normalizeNormals() { - - var normals = this.attributes.normal; - - for ( var i = 0, il = normals.count; i < il; i ++ ) { - - vector.x = normals.getX( i ); - vector.y = normals.getY( i ); - vector.z = normals.getZ( i ); - - vector.normalize(); - - normals.setXYZ( i, vector.x, vector.y, vector.z ); - - } - - }; - - }(), - - toNonIndexed: function () { - - function convertBufferAttribute( attribute, indices ) { - - var array = attribute.array; - var itemSize = attribute.itemSize; - - var array2 = new array.constructor( indices.length * itemSize ); - - var index = 0, index2 = 0; - - for ( var i = 0, l = indices.length; i < l; i ++ ) { - - index = indices[ i ] * itemSize; - - for ( var j = 0; j < itemSize; j ++ ) { - - array2[ index2 ++ ] = array[ index ++ ]; - - } - - } - - return new BufferAttribute( array2, itemSize ); - - } - - // - - if ( this.index === null ) { - - console.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' ); - return this; - - } - - var geometry2 = new BufferGeometry(); - - var indices = this.index.array; - var attributes = this.attributes; - - // attributes - - for ( var name in attributes ) { - - var attribute = attributes[ name ]; - - var newAttribute = convertBufferAttribute( attribute, indices ); - - geometry2.addAttribute( name, newAttribute ); - - } - - // morph attributes - - var morphAttributes = this.morphAttributes; - - for ( name in morphAttributes ) { - - var morphArray = []; - var morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes - - for ( var i = 0, il = morphAttribute.length; i < il; i ++ ) { - - var attribute = morphAttribute[ i ]; - - var newAttribute = convertBufferAttribute( attribute, indices ); - - morphArray.push( newAttribute ); - - } - - geometry2.morphAttributes[ name ] = morphArray; - - } - - // groups - - var groups = this.groups; - - for ( var i = 0, l = groups.length; i < l; i ++ ) { - - var group = groups[ i ]; - geometry2.addGroup( group.start, group.count, group.materialIndex ); - - } - - return geometry2; - - }, - - toJSON: function () { - - var data = { - metadata: { - version: 4.5, - type: 'BufferGeometry', - generator: 'BufferGeometry.toJSON' - } - }; - - // standard BufferGeometry serialization - - data.uuid = this.uuid; - data.type = this.type; - if ( this.name !== '' ) data.name = this.name; - if ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData; - - if ( this.parameters !== undefined ) { - - var parameters = this.parameters; - - for ( var key in parameters ) { - - if ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ]; - - } - - return data; - - } - - data.data = { attributes: {} }; - - var index = this.index; - - if ( index !== null ) { - - data.data.index = { - type: index.array.constructor.name, - array: Array.prototype.slice.call( index.array ) - }; - - } - - var attributes = this.attributes; - - for ( var key in attributes ) { - - var attribute = attributes[ key ]; - - var attributeData = attribute.toJSON(); - - if ( attribute.name !== '' ) attributeData.name = attribute.name; - - data.data.attributes[ key ] = attributeData; - - } - - var morphAttributes = {}; - var hasMorphAttributes = false; - - for ( var key in this.morphAttributes ) { - - var attributeArray = this.morphAttributes[ key ]; - - var array = []; - - for ( var i = 0, il = attributeArray.length; i < il; i ++ ) { - - var attribute = attributeArray[ i ]; - - var attributeData = attribute.toJSON(); - - if ( attribute.name !== '' ) attributeData.name = attribute.name; - - array.push( attributeData ); - - } - - if ( array.length > 0 ) { - - morphAttributes[ key ] = array; - - hasMorphAttributes = true; - - } - - } - - if ( hasMorphAttributes ) data.data.morphAttributes = morphAttributes; - - var groups = this.groups; - - if ( groups.length > 0 ) { - - data.data.groups = JSON.parse( JSON.stringify( groups ) ); - - } - - var boundingSphere = this.boundingSphere; - - if ( boundingSphere !== null ) { - - data.data.boundingSphere = { - center: boundingSphere.center.toArray(), - radius: boundingSphere.radius - }; - - } - - return data; - - }, - - clone: function () { - - /* - // Handle primitives - - var parameters = this.parameters; - - if ( parameters !== undefined ) { - - var values = []; - - for ( var key in parameters ) { - - values.push( parameters[ key ] ); - - } - - var geometry = Object.create( this.constructor.prototype ); - this.constructor.apply( geometry, values ); - return geometry; - - } - - return new this.constructor().copy( this ); - */ - - return new BufferGeometry().copy( this ); - - }, - - copy: function ( source ) { - - var name, i, l; - - // reset - - this.index = null; - this.attributes = {}; - this.morphAttributes = {}; - this.groups = []; - this.boundingBox = null; - this.boundingSphere = null; - - // name - - this.name = source.name; - - // index - - var index = source.index; - - if ( index !== null ) { - - this.setIndex( index.clone() ); - - } - - // attributes - - var attributes = source.attributes; - - for ( name in attributes ) { - - var attribute = attributes[ name ]; - this.addAttribute( name, attribute.clone() ); - - } - - // morph attributes - - var morphAttributes = source.morphAttributes; - - for ( name in morphAttributes ) { - - var array = []; - var morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes - - for ( i = 0, l = morphAttribute.length; i < l; i ++ ) { - - array.push( morphAttribute[ i ].clone() ); - - } - - this.morphAttributes[ name ] = array; - - } - - // groups - - var groups = source.groups; - - for ( i = 0, l = groups.length; i < l; i ++ ) { - - var group = groups[ i ]; - this.addGroup( group.start, group.count, group.materialIndex ); - - } - - // bounding box - - var boundingBox = source.boundingBox; - - if ( boundingBox !== null ) { - - this.boundingBox = boundingBox.clone(); - - } - - // bounding sphere - - var boundingSphere = source.boundingSphere; - - if ( boundingSphere !== null ) { - - this.boundingSphere = boundingSphere.clone(); - - } - - // draw range - - this.drawRange.start = source.drawRange.start; - this.drawRange.count = source.drawRange.count; - - // user data - - this.userData = source.userData; - - return this; - - }, - - dispose: function () { - - this.dispatchEvent( { type: 'dispose' } ); - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author Mugen87 / https://github.com/Mugen87 - */ - - // BoxGeometry - - function BoxGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) { - - Geometry.call( this ); - - this.type = 'BoxGeometry'; - - this.parameters = { - width: width, - height: height, - depth: depth, - widthSegments: widthSegments, - heightSegments: heightSegments, - depthSegments: depthSegments - }; - - this.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) ); - this.mergeVertices(); - - } - - BoxGeometry.prototype = Object.create( Geometry.prototype ); - BoxGeometry.prototype.constructor = BoxGeometry; - - // BoxBufferGeometry - - function BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) { - - BufferGeometry.call( this ); - - this.type = 'BoxBufferGeometry'; - - this.parameters = { - width: width, - height: height, - depth: depth, - widthSegments: widthSegments, - heightSegments: heightSegments, - depthSegments: depthSegments - }; - - var scope = this; - - width = width || 1; - height = height || 1; - depth = depth || 1; - - // segments - - widthSegments = Math.floor( widthSegments ) || 1; - heightSegments = Math.floor( heightSegments ) || 1; - depthSegments = Math.floor( depthSegments ) || 1; - - // buffers - - var indices = []; - var vertices = []; - var normals = []; - var uvs = []; - - // helper variables - - var numberOfVertices = 0; - var groupStart = 0; - - // build each side of the box geometry - - buildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px - buildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx - buildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py - buildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny - buildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz - buildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz - - // build geometry - - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - - function buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) { - - var segmentWidth = width / gridX; - var segmentHeight = height / gridY; - - var widthHalf = width / 2; - var heightHalf = height / 2; - var depthHalf = depth / 2; - - var gridX1 = gridX + 1; - var gridY1 = gridY + 1; - - var vertexCounter = 0; - var groupCount = 0; - - var ix, iy; - - var vector = new Vector3(); - - // generate vertices, normals and uvs - - for ( iy = 0; iy < gridY1; iy ++ ) { - - var y = iy * segmentHeight - heightHalf; - - for ( ix = 0; ix < gridX1; ix ++ ) { - - var x = ix * segmentWidth - widthHalf; - - // set values to correct vector component - - vector[ u ] = x * udir; - vector[ v ] = y * vdir; - vector[ w ] = depthHalf; - - // now apply vector to vertex buffer - - vertices.push( vector.x, vector.y, vector.z ); - - // set values to correct vector component - - vector[ u ] = 0; - vector[ v ] = 0; - vector[ w ] = depth > 0 ? 1 : - 1; - - // now apply vector to normal buffer - - normals.push( vector.x, vector.y, vector.z ); - - // uvs - - uvs.push( ix / gridX ); - uvs.push( 1 - ( iy / gridY ) ); - - // counters - - vertexCounter += 1; - - } - - } - - // indices - - // 1. you need three indices to draw a single face - // 2. a single segment consists of two faces - // 3. so we need to generate six (2*3) indices per segment - - for ( iy = 0; iy < gridY; iy ++ ) { - - for ( ix = 0; ix < gridX; ix ++ ) { - - var a = numberOfVertices + ix + gridX1 * iy; - var b = numberOfVertices + ix + gridX1 * ( iy + 1 ); - var c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 ); - var d = numberOfVertices + ( ix + 1 ) + gridX1 * iy; - - // faces - - indices.push( a, b, d ); - indices.push( b, c, d ); - - // increase counter - - groupCount += 6; - - } - - } - - // add a group to the geometry. this will ensure multi material support - - scope.addGroup( groupStart, groupCount, materialIndex ); - - // calculate new start value for groups - - groupStart += groupCount; - - // update total number of vertices - - numberOfVertices += vertexCounter; - - } - - } - - BoxBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); - BoxBufferGeometry.prototype.constructor = BoxBufferGeometry; - - /** - * @author mrdoob / http://mrdoob.com/ - * @author Mugen87 / https://github.com/Mugen87 - */ - - // PlaneGeometry - - function PlaneGeometry( width, height, widthSegments, heightSegments ) { - - Geometry.call( this ); - - this.type = 'PlaneGeometry'; - - this.parameters = { - width: width, - height: height, - widthSegments: widthSegments, - heightSegments: heightSegments - }; - - this.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) ); - this.mergeVertices(); - - } - - PlaneGeometry.prototype = Object.create( Geometry.prototype ); - PlaneGeometry.prototype.constructor = PlaneGeometry; - - // PlaneBufferGeometry - - function PlaneBufferGeometry( width, height, widthSegments, heightSegments ) { - - BufferGeometry.call( this ); - - this.type = 'PlaneBufferGeometry'; - - this.parameters = { - width: width, - height: height, - widthSegments: widthSegments, - heightSegments: heightSegments - }; - - width = width || 1; - height = height || 1; - - var width_half = width / 2; - var height_half = height / 2; - - var gridX = Math.floor( widthSegments ) || 1; - var gridY = Math.floor( heightSegments ) || 1; - - var gridX1 = gridX + 1; - var gridY1 = gridY + 1; - - var segment_width = width / gridX; - var segment_height = height / gridY; - - var ix, iy; - - // buffers - - var indices = []; - var vertices = []; - var normals = []; - var uvs = []; - - // generate vertices, normals and uvs - - for ( iy = 0; iy < gridY1; iy ++ ) { - - var y = iy * segment_height - height_half; - - for ( ix = 0; ix < gridX1; ix ++ ) { - - var x = ix * segment_width - width_half; - - vertices.push( x, - y, 0 ); - - normals.push( 0, 0, 1 ); - - uvs.push( ix / gridX ); - uvs.push( 1 - ( iy / gridY ) ); - - } - - } - - // indices - - for ( iy = 0; iy < gridY; iy ++ ) { - - for ( ix = 0; ix < gridX; ix ++ ) { - - var a = ix + gridX1 * iy; - var b = ix + gridX1 * ( iy + 1 ); - var c = ( ix + 1 ) + gridX1 * ( iy + 1 ); - var d = ( ix + 1 ) + gridX1 * iy; - - // faces - - indices.push( a, b, d ); - indices.push( b, c, d ); - - } - - } - - // build geometry - - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - - } - - PlaneBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); - PlaneBufferGeometry.prototype.constructor = PlaneBufferGeometry; - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - */ - - var materialId = 0; - - function Material() { - - Object.defineProperty( this, 'id', { value: materialId ++ } ); - - this.uuid = _Math.generateUUID(); - - this.name = ''; - this.type = 'Material'; - - this.fog = true; - this.lights = true; - - this.blending = NormalBlending; - this.side = FrontSide; - this.flatShading = false; - this.vertexTangents = false; - this.vertexColors = NoColors; // THREE.NoColors, THREE.VertexColors, THREE.FaceColors - - this.opacity = 1; - this.transparent = false; - - this.blendSrc = SrcAlphaFactor; - this.blendDst = OneMinusSrcAlphaFactor; - this.blendEquation = AddEquation; - this.blendSrcAlpha = null; - this.blendDstAlpha = null; - this.blendEquationAlpha = null; - - this.depthFunc = LessEqualDepth; - this.depthTest = true; - this.depthWrite = true; - - this.clippingPlanes = null; - this.clipIntersection = false; - this.clipShadows = false; - - this.shadowSide = null; - - this.colorWrite = true; - - this.precision = null; // override the renderer's default precision for this material - - this.polygonOffset = false; - this.polygonOffsetFactor = 0; - this.polygonOffsetUnits = 0; - - this.dithering = false; - - this.alphaTest = 0; - this.premultipliedAlpha = false; - - this.visible = true; - - this.userData = {}; - - this.needsUpdate = true; - - } - - Material.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { - - constructor: Material, - - isMaterial: true, - - onBeforeCompile: function () {}, - - setValues: function ( values ) { - - if ( values === undefined ) return; - - for ( var key in values ) { - - var newValue = values[ key ]; - - if ( newValue === undefined ) { - - console.warn( "THREE.Material: '" + key + "' parameter is undefined." ); - continue; - - } - - // for backward compatability if shading is set in the constructor - if ( key === 'shading' ) { - - console.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' ); - this.flatShading = ( newValue === FlatShading ) ? true : false; - continue; - - } - - var currentValue = this[ key ]; - - if ( currentValue === undefined ) { - - console.warn( "THREE." + this.type + ": '" + key + "' is not a property of this material." ); - continue; - - } - - if ( currentValue && currentValue.isColor ) { - - currentValue.set( newValue ); - - } else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) { - - currentValue.copy( newValue ); - - } else { - - this[ key ] = newValue; - - } - - } - - }, - - toJSON: function ( meta ) { - - var isRoot = ( meta === undefined || typeof meta === 'string' ); - - if ( isRoot ) { - - meta = { - textures: {}, - images: {} - }; - - } - - var data = { - metadata: { - version: 4.5, - type: 'Material', - generator: 'Material.toJSON' - } - }; - - // standard Material serialization - data.uuid = this.uuid; - data.type = this.type; - - if ( this.name !== '' ) data.name = this.name; - - if ( this.color && this.color.isColor ) data.color = this.color.getHex(); - - if ( this.roughness !== undefined ) data.roughness = this.roughness; - if ( this.metalness !== undefined ) data.metalness = this.metalness; - - if ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex(); - if ( this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity; - - if ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex(); - if ( this.shininess !== undefined ) data.shininess = this.shininess; - if ( this.clearCoat !== undefined ) data.clearCoat = this.clearCoat; - if ( this.clearCoatRoughness !== undefined ) data.clearCoatRoughness = this.clearCoatRoughness; - - if ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid; - if ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid; - if ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid; - if ( this.lightMap && this.lightMap.isTexture ) data.lightMap = this.lightMap.toJSON( meta ).uuid; - - if ( this.aoMap && this.aoMap.isTexture ) { - - data.aoMap = this.aoMap.toJSON( meta ).uuid; - data.aoMapIntensity = this.aoMapIntensity; - - } - - if ( this.bumpMap && this.bumpMap.isTexture ) { - - data.bumpMap = this.bumpMap.toJSON( meta ).uuid; - data.bumpScale = this.bumpScale; - - } - - if ( this.normalMap && this.normalMap.isTexture ) { - - data.normalMap = this.normalMap.toJSON( meta ).uuid; - data.normalMapType = this.normalMapType; - data.normalScale = this.normalScale.toArray(); - - } - - if ( this.displacementMap && this.displacementMap.isTexture ) { - - data.displacementMap = this.displacementMap.toJSON( meta ).uuid; - data.displacementScale = this.displacementScale; - data.displacementBias = this.displacementBias; - - } - - if ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid; - if ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid; - - if ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid; - if ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid; - - if ( this.envMap && this.envMap.isTexture ) { - - data.envMap = this.envMap.toJSON( meta ).uuid; - data.reflectivity = this.reflectivity; // Scale behind envMap - - if ( this.combine !== undefined ) data.combine = this.combine; - if ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity; - - } - - if ( this.gradientMap && this.gradientMap.isTexture ) { - - data.gradientMap = this.gradientMap.toJSON( meta ).uuid; - - } - - if ( this.size !== undefined ) data.size = this.size; - if ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation; - - if ( this.blending !== NormalBlending ) data.blending = this.blending; - if ( this.flatShading === true ) data.flatShading = this.flatShading; - if ( this.side !== FrontSide ) data.side = this.side; - if ( this.vertexColors !== NoColors ) data.vertexColors = this.vertexColors; - - if ( this.opacity < 1 ) data.opacity = this.opacity; - if ( this.transparent === true ) data.transparent = this.transparent; - - data.depthFunc = this.depthFunc; - data.depthTest = this.depthTest; - data.depthWrite = this.depthWrite; - - // rotation (SpriteMaterial) - if ( this.rotation !== 0 ) data.rotation = this.rotation; - - if ( this.polygonOffset === true ) data.polygonOffset = true; - if ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor; - if ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits; - - if ( this.linewidth !== 1 ) data.linewidth = this.linewidth; - if ( this.dashSize !== undefined ) data.dashSize = this.dashSize; - if ( this.gapSize !== undefined ) data.gapSize = this.gapSize; - if ( this.scale !== undefined ) data.scale = this.scale; - - if ( this.dithering === true ) data.dithering = true; - - if ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest; - if ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha; - - if ( this.wireframe === true ) data.wireframe = this.wireframe; - if ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth; - if ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap; - if ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin; - - if ( this.morphTargets === true ) data.morphTargets = true; - if ( this.skinning === true ) data.skinning = true; - - if ( this.visible === false ) data.visible = false; - if ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData; - - // TODO: Copied from Object3D.toJSON - - function extractFromCache( cache ) { - - var values = []; - - for ( var key in cache ) { - - var data = cache[ key ]; - delete data.metadata; - values.push( data ); - - } - - return values; - - } - - if ( isRoot ) { - - var textures = extractFromCache( meta.textures ); - var images = extractFromCache( meta.images ); - - if ( textures.length > 0 ) data.textures = textures; - if ( images.length > 0 ) data.images = images; - - } - - return data; - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( source ) { - - this.name = source.name; - - this.fog = source.fog; - this.lights = source.lights; - - this.blending = source.blending; - this.side = source.side; - this.flatShading = source.flatShading; - this.vertexColors = source.vertexColors; - - this.opacity = source.opacity; - this.transparent = source.transparent; - - this.blendSrc = source.blendSrc; - this.blendDst = source.blendDst; - this.blendEquation = source.blendEquation; - this.blendSrcAlpha = source.blendSrcAlpha; - this.blendDstAlpha = source.blendDstAlpha; - this.blendEquationAlpha = source.blendEquationAlpha; - - this.depthFunc = source.depthFunc; - this.depthTest = source.depthTest; - this.depthWrite = source.depthWrite; - - this.colorWrite = source.colorWrite; - - this.precision = source.precision; - - this.polygonOffset = source.polygonOffset; - this.polygonOffsetFactor = source.polygonOffsetFactor; - this.polygonOffsetUnits = source.polygonOffsetUnits; - - this.dithering = source.dithering; - - this.alphaTest = source.alphaTest; - this.premultipliedAlpha = source.premultipliedAlpha; - - this.visible = source.visible; - this.userData = JSON.parse( JSON.stringify( source.userData ) ); - - this.clipShadows = source.clipShadows; - this.clipIntersection = source.clipIntersection; - - var srcPlanes = source.clippingPlanes, - dstPlanes = null; - - if ( srcPlanes !== null ) { - - var n = srcPlanes.length; - dstPlanes = new Array( n ); - - for ( var i = 0; i !== n; ++ i ) - dstPlanes[ i ] = srcPlanes[ i ].clone(); - - } - - this.clippingPlanes = dstPlanes; - - this.shadowSide = source.shadowSide; - - return this; - - }, - - dispose: function () { - - this.dispatchEvent( { type: 'dispose' } ); - - } - - } ); - - var default_vertex = "void main() {\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}"; - - var default_fragment = "void main() {\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}"; - - /** - * @author alteredq / http://alteredqualia.com/ - * - * parameters = { - * defines: { "label" : "value" }, - * uniforms: { "parameter1": { value: 1.0 }, "parameter2": { value2: 2 } }, - * - * fragmentShader: , - * vertexShader: , - * - * wireframe: , - * wireframeLinewidth: , - * - * lights: , - * - * skinning: , - * morphTargets: , - * morphNormals: - * } - */ - - function ShaderMaterial( parameters ) { - - Material.call( this ); - - this.type = 'ShaderMaterial'; - - this.defines = {}; - this.uniforms = {}; - - this.vertexShader = default_vertex; - this.fragmentShader = default_fragment; - - this.linewidth = 1; - - this.wireframe = false; - this.wireframeLinewidth = 1; - - this.fog = false; // set to use scene fog - this.lights = false; // set to use scene lights - this.clipping = false; // set to use user-defined clipping planes - - this.skinning = false; // set to use skinning attribute streams - this.morphTargets = false; // set to use morph targets - this.morphNormals = false; // set to use morph normals - - this.extensions = { - derivatives: false, // set to use derivatives - fragDepth: false, // set to use fragment depth values - drawBuffers: false, // set to use draw buffers - shaderTextureLOD: false // set to use shader texture LOD - }; - - // When rendered geometry doesn't include these attributes but the material does, - // use these default values in WebGL. This avoids errors when buffer data is missing. - this.defaultAttributeValues = { - 'color': [ 1, 1, 1 ], - 'uv': [ 0, 0 ], - 'uv2': [ 0, 0 ] - }; - - this.index0AttributeName = undefined; - this.uniformsNeedUpdate = false; - - if ( parameters !== undefined ) { - - if ( parameters.attributes !== undefined ) { - - console.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' ); - - } - - this.setValues( parameters ); - - } - - } - - ShaderMaterial.prototype = Object.create( Material.prototype ); - ShaderMaterial.prototype.constructor = ShaderMaterial; - - ShaderMaterial.prototype.isShaderMaterial = true; - - ShaderMaterial.prototype.copy = function ( source ) { - - Material.prototype.copy.call( this, source ); - - this.fragmentShader = source.fragmentShader; - this.vertexShader = source.vertexShader; - - this.uniforms = cloneUniforms( source.uniforms ); - - this.defines = Object.assign( {}, source.defines ); - - this.wireframe = source.wireframe; - this.wireframeLinewidth = source.wireframeLinewidth; - - this.lights = source.lights; - this.clipping = source.clipping; - - this.skinning = source.skinning; - - this.morphTargets = source.morphTargets; - this.morphNormals = source.morphNormals; - - this.extensions = source.extensions; - - return this; - - }; - - ShaderMaterial.prototype.toJSON = function ( meta ) { - - var data = Material.prototype.toJSON.call( this, meta ); - - data.uniforms = {}; - - for ( var name in this.uniforms ) { - - var uniform = this.uniforms[ name ]; - var value = uniform.value; - - if ( value && value.isTexture ) { - - data.uniforms[ name ] = { - type: 't', - value: value.toJSON( meta ).uuid - }; - - } else if ( value && value.isColor ) { - - data.uniforms[ name ] = { - type: 'c', - value: value.getHex() - }; - - } else if ( value && value.isVector2 ) { - - data.uniforms[ name ] = { - type: 'v2', - value: value.toArray() - }; - - } else if ( value && value.isVector3 ) { - - data.uniforms[ name ] = { - type: 'v3', - value: value.toArray() - }; - - } else if ( value && value.isVector4 ) { - - data.uniforms[ name ] = { - type: 'v4', - value: value.toArray() - }; - - } else if ( value && value.isMatrix3 ) { - - data.uniforms[ name ] = { - type: 'm3', - value: value.toArray() - }; - - } else if ( value && value.isMatrix4 ) { - - data.uniforms[ name ] = { - type: 'm4', - value: value.toArray() - }; - - } else { - - data.uniforms[ name ] = { - value: value - }; - - // note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far - - } - - } - - if ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines; - - data.vertexShader = this.vertexShader; - data.fragmentShader = this.fragmentShader; - - var extensions = {}; - - for ( var key in this.extensions ) { - - if ( this.extensions[ key ] === true ) extensions[ key ] = true; - - } - - if ( Object.keys( extensions ).length > 0 ) data.extensions = extensions; - - return data; - - }; - - /** - * @author bhouston / http://clara.io - */ - - function Ray( origin, direction ) { - - this.origin = ( origin !== undefined ) ? origin : new Vector3(); - this.direction = ( direction !== undefined ) ? direction : new Vector3(); - - } - - Object.assign( Ray.prototype, { - - set: function ( origin, direction ) { - - this.origin.copy( origin ); - this.direction.copy( direction ); - - return this; - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( ray ) { - - this.origin.copy( ray.origin ); - this.direction.copy( ray.direction ); - - return this; - - }, - - at: function ( t, target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Ray: .at() target is now required' ); - target = new Vector3(); - - } - - return target.copy( this.direction ).multiplyScalar( t ).add( this.origin ); - - }, - - lookAt: function ( v ) { - - this.direction.copy( v ).sub( this.origin ).normalize(); - - return this; - - }, - - recast: function () { - - var v1 = new Vector3(); - - return function recast( t ) { - - this.origin.copy( this.at( t, v1 ) ); - - return this; - - }; - - }(), - - closestPointToPoint: function ( point, target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Ray: .closestPointToPoint() target is now required' ); - target = new Vector3(); - - } - - target.subVectors( point, this.origin ); - - var directionDistance = target.dot( this.direction ); - - if ( directionDistance < 0 ) { - - return target.copy( this.origin ); - - } - - return target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin ); - - }, - - distanceToPoint: function ( point ) { - - return Math.sqrt( this.distanceSqToPoint( point ) ); - - }, - - distanceSqToPoint: function () { - - var v1 = new Vector3(); - - return function distanceSqToPoint( point ) { - - var directionDistance = v1.subVectors( point, this.origin ).dot( this.direction ); - - // point behind the ray - - if ( directionDistance < 0 ) { - - return this.origin.distanceToSquared( point ); - - } - - v1.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin ); - - return v1.distanceToSquared( point ); - - }; - - }(), - - distanceSqToSegment: function () { - - var segCenter = new Vector3(); - var segDir = new Vector3(); - var diff = new Vector3(); - - return function distanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) { - - // from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h - // It returns the min distance between the ray and the segment - // defined by v0 and v1 - // It can also set two optional targets : - // - The closest point on the ray - // - The closest point on the segment - - segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 ); - segDir.copy( v1 ).sub( v0 ).normalize(); - diff.copy( this.origin ).sub( segCenter ); - - var segExtent = v0.distanceTo( v1 ) * 0.5; - var a01 = - this.direction.dot( segDir ); - var b0 = diff.dot( this.direction ); - var b1 = - diff.dot( segDir ); - var c = diff.lengthSq(); - var det = Math.abs( 1 - a01 * a01 ); - var s0, s1, sqrDist, extDet; - - if ( det > 0 ) { - - // The ray and segment are not parallel. - - s0 = a01 * b1 - b0; - s1 = a01 * b0 - b1; - extDet = segExtent * det; - - if ( s0 >= 0 ) { - - if ( s1 >= - extDet ) { - - if ( s1 <= extDet ) { - - // region 0 - // Minimum at interior points of ray and segment. - - var invDet = 1 / det; - s0 *= invDet; - s1 *= invDet; - sqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c; - - } else { - - // region 1 - - s1 = segExtent; - s0 = Math.max( 0, - ( a01 * s1 + b0 ) ); - sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; - - } - - } else { - - // region 5 - - s1 = - segExtent; - s0 = Math.max( 0, - ( a01 * s1 + b0 ) ); - sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; - - } - - } else { - - if ( s1 <= - extDet ) { - - // region 4 - - s0 = Math.max( 0, - ( - a01 * segExtent + b0 ) ); - s1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent ); - sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; - - } else if ( s1 <= extDet ) { - - // region 3 - - s0 = 0; - s1 = Math.min( Math.max( - segExtent, - b1 ), segExtent ); - sqrDist = s1 * ( s1 + 2 * b1 ) + c; - - } else { - - // region 2 - - s0 = Math.max( 0, - ( a01 * segExtent + b0 ) ); - s1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent ); - sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; - - } - - } - - } else { - - // Ray and segment are parallel. - - s1 = ( a01 > 0 ) ? - segExtent : segExtent; - s0 = Math.max( 0, - ( a01 * s1 + b0 ) ); - sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; - - } - - if ( optionalPointOnRay ) { - - optionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin ); - - } - - if ( optionalPointOnSegment ) { - - optionalPointOnSegment.copy( segDir ).multiplyScalar( s1 ).add( segCenter ); - - } - - return sqrDist; - - }; - - }(), - - intersectSphere: function () { - - var v1 = new Vector3(); - - return function intersectSphere( sphere, target ) { - - v1.subVectors( sphere.center, this.origin ); - var tca = v1.dot( this.direction ); - var d2 = v1.dot( v1 ) - tca * tca; - var radius2 = sphere.radius * sphere.radius; - - if ( d2 > radius2 ) return null; - - var thc = Math.sqrt( radius2 - d2 ); - - // t0 = first intersect point - entrance on front of sphere - var t0 = tca - thc; - - // t1 = second intersect point - exit point on back of sphere - var t1 = tca + thc; - - // test to see if both t0 and t1 are behind the ray - if so, return null - if ( t0 < 0 && t1 < 0 ) return null; - - // test to see if t0 is behind the ray: - // if it is, the ray is inside the sphere, so return the second exit point scaled by t1, - // in order to always return an intersect point that is in front of the ray. - if ( t0 < 0 ) return this.at( t1, target ); - - // else t0 is in front of the ray, so return the first collision point scaled by t0 - return this.at( t0, target ); - - }; - - }(), - - intersectsSphere: function ( sphere ) { - - return this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius ); - - }, - - distanceToPlane: function ( plane ) { - - var denominator = plane.normal.dot( this.direction ); - - if ( denominator === 0 ) { - - // line is coplanar, return origin - if ( plane.distanceToPoint( this.origin ) === 0 ) { - - return 0; - - } - - // Null is preferable to undefined since undefined means.... it is undefined - - return null; - - } - - var t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator; - - // Return if the ray never intersects the plane - - return t >= 0 ? t : null; - - }, - - intersectPlane: function ( plane, target ) { - - var t = this.distanceToPlane( plane ); - - if ( t === null ) { - - return null; - - } - - return this.at( t, target ); - - }, - - intersectsPlane: function ( plane ) { - - // check if the ray lies on the plane first - - var distToPoint = plane.distanceToPoint( this.origin ); - - if ( distToPoint === 0 ) { - - return true; - - } - - var denominator = plane.normal.dot( this.direction ); - - if ( denominator * distToPoint < 0 ) { - - return true; - - } - - // ray origin is behind the plane (and is pointing behind it) - - return false; - - }, - - intersectBox: function ( box, target ) { - - var tmin, tmax, tymin, tymax, tzmin, tzmax; - - var invdirx = 1 / this.direction.x, - invdiry = 1 / this.direction.y, - invdirz = 1 / this.direction.z; - - var origin = this.origin; - - if ( invdirx >= 0 ) { - - tmin = ( box.min.x - origin.x ) * invdirx; - tmax = ( box.max.x - origin.x ) * invdirx; - - } else { - - tmin = ( box.max.x - origin.x ) * invdirx; - tmax = ( box.min.x - origin.x ) * invdirx; - - } - - if ( invdiry >= 0 ) { - - tymin = ( box.min.y - origin.y ) * invdiry; - tymax = ( box.max.y - origin.y ) * invdiry; - - } else { - - tymin = ( box.max.y - origin.y ) * invdiry; - tymax = ( box.min.y - origin.y ) * invdiry; - - } - - if ( ( tmin > tymax ) || ( tymin > tmax ) ) return null; - - // These lines also handle the case where tmin or tmax is NaN - // (result of 0 * Infinity). x !== x returns true if x is NaN - - if ( tymin > tmin || tmin !== tmin ) tmin = tymin; - - if ( tymax < tmax || tmax !== tmax ) tmax = tymax; - - if ( invdirz >= 0 ) { - - tzmin = ( box.min.z - origin.z ) * invdirz; - tzmax = ( box.max.z - origin.z ) * invdirz; - - } else { - - tzmin = ( box.max.z - origin.z ) * invdirz; - tzmax = ( box.min.z - origin.z ) * invdirz; - - } - - if ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null; - - if ( tzmin > tmin || tmin !== tmin ) tmin = tzmin; - - if ( tzmax < tmax || tmax !== tmax ) tmax = tzmax; - - //return point closest to the ray (positive side) - - if ( tmax < 0 ) return null; - - return this.at( tmin >= 0 ? tmin : tmax, target ); - - }, - - intersectsBox: ( function () { - - var v = new Vector3(); - - return function intersectsBox( box ) { - - return this.intersectBox( box, v ) !== null; - - }; - - } )(), - - intersectTriangle: function () { - - // Compute the offset origin, edges, and normal. - var diff = new Vector3(); - var edge1 = new Vector3(); - var edge2 = new Vector3(); - var normal = new Vector3(); - - return function intersectTriangle( a, b, c, backfaceCulling, target ) { - - // from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h - - edge1.subVectors( b, a ); - edge2.subVectors( c, a ); - normal.crossVectors( edge1, edge2 ); - - // Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction, - // E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by - // |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2)) - // |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q)) - // |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N) - var DdN = this.direction.dot( normal ); - var sign; - - if ( DdN > 0 ) { - - if ( backfaceCulling ) return null; - sign = 1; - - } else if ( DdN < 0 ) { - - sign = - 1; - DdN = - DdN; - - } else { - - return null; - - } - - diff.subVectors( this.origin, a ); - var DdQxE2 = sign * this.direction.dot( edge2.crossVectors( diff, edge2 ) ); - - // b1 < 0, no intersection - if ( DdQxE2 < 0 ) { - - return null; - - } - - var DdE1xQ = sign * this.direction.dot( edge1.cross( diff ) ); - - // b2 < 0, no intersection - if ( DdE1xQ < 0 ) { - - return null; - - } - - // b1+b2 > 1, no intersection - if ( DdQxE2 + DdE1xQ > DdN ) { - - return null; - - } - - // Line intersects triangle, check if ray does. - var QdN = - sign * diff.dot( normal ); - - // t < 0, no intersection - if ( QdN < 0 ) { - - return null; - - } - - // Ray intersects triangle. - return this.at( QdN / DdN, target ); - - }; - - }(), - - applyMatrix4: function ( matrix4 ) { - - this.origin.applyMatrix4( matrix4 ); - this.direction.transformDirection( matrix4 ); - - return this; - - }, - - equals: function ( ray ) { - - return ray.origin.equals( this.origin ) && ray.direction.equals( this.direction ); - - } - - } ); - - /** - * @author bhouston / http://clara.io - * @author mrdoob / http://mrdoob.com/ - */ - - function Triangle( a, b, c ) { - - this.a = ( a !== undefined ) ? a : new Vector3(); - this.b = ( b !== undefined ) ? b : new Vector3(); - this.c = ( c !== undefined ) ? c : new Vector3(); - - } - - Object.assign( Triangle, { - - getNormal: function () { - - var v0 = new Vector3(); - - return function getNormal( a, b, c, target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Triangle: .getNormal() target is now required' ); - target = new Vector3(); - - } - - target.subVectors( c, b ); - v0.subVectors( a, b ); - target.cross( v0 ); - - var targetLengthSq = target.lengthSq(); - if ( targetLengthSq > 0 ) { - - return target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) ); - - } - - return target.set( 0, 0, 0 ); - - }; - - }(), - - // static/instance method to calculate barycentric coordinates - // based on: http://www.blackpawn.com/texts/pointinpoly/default.html - getBarycoord: function () { - - var v0 = new Vector3(); - var v1 = new Vector3(); - var v2 = new Vector3(); - - return function getBarycoord( point, a, b, c, target ) { - - v0.subVectors( c, a ); - v1.subVectors( b, a ); - v2.subVectors( point, a ); - - var dot00 = v0.dot( v0 ); - var dot01 = v0.dot( v1 ); - var dot02 = v0.dot( v2 ); - var dot11 = v1.dot( v1 ); - var dot12 = v1.dot( v2 ); - - var denom = ( dot00 * dot11 - dot01 * dot01 ); - - if ( target === undefined ) { - - console.warn( 'THREE.Triangle: .getBarycoord() target is now required' ); - target = new Vector3(); - - } - - // collinear or singular triangle - if ( denom === 0 ) { - - // arbitrary location outside of triangle? - // not sure if this is the best idea, maybe should be returning undefined - return target.set( - 2, - 1, - 1 ); - - } - - var invDenom = 1 / denom; - var u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom; - var v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom; - - // barycentric coordinates must always sum to 1 - return target.set( 1 - u - v, v, u ); - - }; - - }(), - - containsPoint: function () { - - var v1 = new Vector3(); - - return function containsPoint( point, a, b, c ) { - - Triangle.getBarycoord( point, a, b, c, v1 ); - - return ( v1.x >= 0 ) && ( v1.y >= 0 ) && ( ( v1.x + v1.y ) <= 1 ); - - }; - - }(), - - getUV: function () { - - var barycoord = new Vector3(); - - return function getUV( point, p1, p2, p3, uv1, uv2, uv3, target ) { - - this.getBarycoord( point, p1, p2, p3, barycoord ); - - target.set( 0, 0 ); - target.addScaledVector( uv1, barycoord.x ); - target.addScaledVector( uv2, barycoord.y ); - target.addScaledVector( uv3, barycoord.z ); - - return target; - - }; - - }(), - - isFrontFacing: function () { - - var v0 = new Vector3(); - var v1 = new Vector3(); - - return function isFrontFacing( a, b, c, direction ) { - - v0.subVectors( c, b ); - v1.subVectors( a, b ); - - // strictly front facing - return ( v0.cross( v1 ).dot( direction ) < 0 ) ? true : false; - - }; - - }() - - } ); - - Object.assign( Triangle.prototype, { - - set: function ( a, b, c ) { - - this.a.copy( a ); - this.b.copy( b ); - this.c.copy( c ); - - return this; - - }, - - setFromPointsAndIndices: function ( points, i0, i1, i2 ) { - - this.a.copy( points[ i0 ] ); - this.b.copy( points[ i1 ] ); - this.c.copy( points[ i2 ] ); - - return this; - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( triangle ) { - - this.a.copy( triangle.a ); - this.b.copy( triangle.b ); - this.c.copy( triangle.c ); - - return this; - - }, - - getArea: function () { - - var v0 = new Vector3(); - var v1 = new Vector3(); - - return function getArea() { - - v0.subVectors( this.c, this.b ); - v1.subVectors( this.a, this.b ); - - return v0.cross( v1 ).length() * 0.5; - - }; - - }(), - - getMidpoint: function ( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Triangle: .getMidpoint() target is now required' ); - target = new Vector3(); - - } - - return target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 ); - - }, - - getNormal: function ( target ) { - - return Triangle.getNormal( this.a, this.b, this.c, target ); - - }, - - getPlane: function ( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Triangle: .getPlane() target is now required' ); - target = new Vector3(); - - } - - return target.setFromCoplanarPoints( this.a, this.b, this.c ); - - }, - - getBarycoord: function ( point, target ) { - - return Triangle.getBarycoord( point, this.a, this.b, this.c, target ); - - }, - - getUV: function ( point, uv1, uv2, uv3, target ) { - - return Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, target ); - - }, - - containsPoint: function ( point ) { - - return Triangle.containsPoint( point, this.a, this.b, this.c ); - - }, - - isFrontFacing: function ( direction ) { - - return Triangle.isFrontFacing( this.a, this.b, this.c, direction ); - - }, - - intersectsBox: function ( box ) { - - return box.intersectsTriangle( this ); - - }, - - closestPointToPoint: function () { - - var vab = new Vector3(); - var vac = new Vector3(); - var vbc = new Vector3(); - var vap = new Vector3(); - var vbp = new Vector3(); - var vcp = new Vector3(); - - return function closestPointToPoint( p, target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Triangle: .closestPointToPoint() target is now required' ); - target = new Vector3(); - - } - - var a = this.a, b = this.b, c = this.c; - var v, w; - - // algorithm thanks to Real-Time Collision Detection by Christer Ericson, - // published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc., - // under the accompanying license; see chapter 5.1.5 for detailed explanation. - // basically, we're distinguishing which of the voronoi regions of the triangle - // the point lies in with the minimum amount of redundant computation. - - vab.subVectors( b, a ); - vac.subVectors( c, a ); - vap.subVectors( p, a ); - var d1 = vab.dot( vap ); - var d2 = vac.dot( vap ); - if ( d1 <= 0 && d2 <= 0 ) { - - // vertex region of A; barycentric coords (1, 0, 0) - return target.copy( a ); - - } - - vbp.subVectors( p, b ); - var d3 = vab.dot( vbp ); - var d4 = vac.dot( vbp ); - if ( d3 >= 0 && d4 <= d3 ) { - - // vertex region of B; barycentric coords (0, 1, 0) - return target.copy( b ); - - } - - var vc = d1 * d4 - d3 * d2; - if ( vc <= 0 && d1 >= 0 && d3 <= 0 ) { - - v = d1 / ( d1 - d3 ); - // edge region of AB; barycentric coords (1-v, v, 0) - return target.copy( a ).addScaledVector( vab, v ); - - } - - vcp.subVectors( p, c ); - var d5 = vab.dot( vcp ); - var d6 = vac.dot( vcp ); - if ( d6 >= 0 && d5 <= d6 ) { - - // vertex region of C; barycentric coords (0, 0, 1) - return target.copy( c ); - - } - - var vb = d5 * d2 - d1 * d6; - if ( vb <= 0 && d2 >= 0 && d6 <= 0 ) { - - w = d2 / ( d2 - d6 ); - // edge region of AC; barycentric coords (1-w, 0, w) - return target.copy( a ).addScaledVector( vac, w ); - - } - - var va = d3 * d6 - d5 * d4; - if ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) { - - vbc.subVectors( c, b ); - w = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) ); - // edge region of BC; barycentric coords (0, 1-w, w) - return target.copy( b ).addScaledVector( vbc, w ); // edge region of BC - - } - - // face region - var denom = 1 / ( va + vb + vc ); - // u = va * denom - v = vb * denom; - w = vc * denom; - return target.copy( a ).addScaledVector( vab, v ).addScaledVector( vac, w ); - - }; - - }(), - - equals: function ( triangle ) { - - return triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c ); - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - * - * parameters = { - * color: , - * opacity: , - * map: new THREE.Texture( ), - * - * lightMap: new THREE.Texture( ), - * lightMapIntensity: - * - * aoMap: new THREE.Texture( ), - * aoMapIntensity: - * - * specularMap: new THREE.Texture( ), - * - * alphaMap: new THREE.Texture( ), - * - * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ), - * combine: THREE.Multiply, - * reflectivity: , - * refractionRatio: , - * - * depthTest: , - * depthWrite: , - * - * wireframe: , - * wireframeLinewidth: , - * - * skinning: , - * morphTargets: - * } - */ - - function MeshBasicMaterial( parameters ) { - - Material.call( this ); - - this.type = 'MeshBasicMaterial'; - - this.color = new Color( 0xffffff ); // emissive - - this.map = null; - - this.lightMap = null; - this.lightMapIntensity = 1.0; - - this.aoMap = null; - this.aoMapIntensity = 1.0; - - this.specularMap = null; - - this.alphaMap = null; - - this.envMap = null; - this.combine = MultiplyOperation; - this.reflectivity = 1; - this.refractionRatio = 0.98; - - this.wireframe = false; - this.wireframeLinewidth = 1; - this.wireframeLinecap = 'round'; - this.wireframeLinejoin = 'round'; - - this.skinning = false; - this.morphTargets = false; - - this.lights = false; - - this.setValues( parameters ); - - } - - MeshBasicMaterial.prototype = Object.create( Material.prototype ); - MeshBasicMaterial.prototype.constructor = MeshBasicMaterial; - - MeshBasicMaterial.prototype.isMeshBasicMaterial = true; - - MeshBasicMaterial.prototype.copy = function ( source ) { - - Material.prototype.copy.call( this, source ); - - this.color.copy( source.color ); - - this.map = source.map; - - this.lightMap = source.lightMap; - this.lightMapIntensity = source.lightMapIntensity; - - this.aoMap = source.aoMap; - this.aoMapIntensity = source.aoMapIntensity; - - this.specularMap = source.specularMap; - - this.alphaMap = source.alphaMap; - - this.envMap = source.envMap; - this.combine = source.combine; - this.reflectivity = source.reflectivity; - this.refractionRatio = source.refractionRatio; - - this.wireframe = source.wireframe; - this.wireframeLinewidth = source.wireframeLinewidth; - this.wireframeLinecap = source.wireframeLinecap; - this.wireframeLinejoin = source.wireframeLinejoin; - - this.skinning = source.skinning; - this.morphTargets = source.morphTargets; - - return this; - - }; - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - * @author mikael emtinger / http://gomo.se/ - * @author jonobr1 / http://jonobr1.com/ - */ - - function Mesh( geometry, material ) { - - Object3D.call( this ); - - this.type = 'Mesh'; - - this.geometry = geometry !== undefined ? geometry : new BufferGeometry(); - this.material = material !== undefined ? material : new MeshBasicMaterial( { color: Math.random() * 0xffffff } ); - - this.drawMode = TrianglesDrawMode; - - this.updateMorphTargets(); - - } - - Mesh.prototype = Object.assign( Object.create( Object3D.prototype ), { - - constructor: Mesh, - - isMesh: true, - - setDrawMode: function ( value ) { - - this.drawMode = value; - - }, - - copy: function ( source ) { - - Object3D.prototype.copy.call( this, source ); - - this.drawMode = source.drawMode; - - if ( source.morphTargetInfluences !== undefined ) { - - this.morphTargetInfluences = source.morphTargetInfluences.slice(); - - } - - if ( source.morphTargetDictionary !== undefined ) { - - this.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary ); - - } - - return this; - - }, - - updateMorphTargets: function () { - - var geometry = this.geometry; - var m, ml, name; - - if ( geometry.isBufferGeometry ) { - - var morphAttributes = geometry.morphAttributes; - var keys = Object.keys( morphAttributes ); - - if ( keys.length > 0 ) { - - var morphAttribute = morphAttributes[ keys[ 0 ] ]; - - if ( morphAttribute !== undefined ) { - - this.morphTargetInfluences = []; - this.morphTargetDictionary = {}; - - for ( m = 0, ml = morphAttribute.length; m < ml; m ++ ) { - - name = morphAttribute[ m ].name || String( m ); - - this.morphTargetInfluences.push( 0 ); - this.morphTargetDictionary[ name ] = m; - - } - - } - - } - - } else { - - var morphTargets = geometry.morphTargets; - - if ( morphTargets !== undefined && morphTargets.length > 0 ) { - - console.error( 'THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' ); - - } - - } - - }, - - raycast: ( function () { - - var inverseMatrix = new Matrix4(); - var ray = new Ray(); - var sphere = new Sphere(); - - var vA = new Vector3(); - var vB = new Vector3(); - var vC = new Vector3(); - - var tempA = new Vector3(); - var tempB = new Vector3(); - var tempC = new Vector3(); - - var morphA = new Vector3(); - var morphB = new Vector3(); - var morphC = new Vector3(); - - var uvA = new Vector2(); - var uvB = new Vector2(); - var uvC = new Vector2(); - - var intersectionPoint = new Vector3(); - var intersectionPointWorld = new Vector3(); - - function checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) { - - var intersect; - - if ( material.side === BackSide ) { - - intersect = ray.intersectTriangle( pC, pB, pA, true, point ); - - } else { - - intersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point ); - - } - - if ( intersect === null ) return null; - - intersectionPointWorld.copy( point ); - intersectionPointWorld.applyMatrix4( object.matrixWorld ); - - var distance = raycaster.ray.origin.distanceTo( intersectionPointWorld ); - - if ( distance < raycaster.near || distance > raycaster.far ) return null; - - return { - distance: distance, - point: intersectionPointWorld.clone(), - object: object - }; - - } - - function checkBufferGeometryIntersection( object, material, raycaster, ray, position, morphPosition, uv, a, b, c ) { - - vA.fromBufferAttribute( position, a ); - vB.fromBufferAttribute( position, b ); - vC.fromBufferAttribute( position, c ); - - var morphInfluences = object.morphTargetInfluences; - - if ( material.morphTargets && morphPosition && morphInfluences ) { - - morphA.set( 0, 0, 0 ); - morphB.set( 0, 0, 0 ); - morphC.set( 0, 0, 0 ); - - for ( var i = 0, il = morphPosition.length; i < il; i ++ ) { - - var influence = morphInfluences[ i ]; - var morphAttribute = morphPosition[ i ]; - - if ( influence === 0 ) continue; - - tempA.fromBufferAttribute( morphAttribute, a ); - tempB.fromBufferAttribute( morphAttribute, b ); - tempC.fromBufferAttribute( morphAttribute, c ); - - morphA.addScaledVector( tempA.sub( vA ), influence ); - morphB.addScaledVector( tempB.sub( vB ), influence ); - morphC.addScaledVector( tempC.sub( vC ), influence ); - - } - - vA.add( morphA ); - vB.add( morphB ); - vC.add( morphC ); - - } - - var intersection = checkIntersection( object, material, raycaster, ray, vA, vB, vC, intersectionPoint ); - - if ( intersection ) { - - if ( uv ) { - - uvA.fromBufferAttribute( uv, a ); - uvB.fromBufferAttribute( uv, b ); - uvC.fromBufferAttribute( uv, c ); - - intersection.uv = Triangle.getUV( intersectionPoint, vA, vB, vC, uvA, uvB, uvC, new Vector2() ); - - } - - var face = new Face3( a, b, c ); - Triangle.getNormal( vA, vB, vC, face.normal ); - - intersection.face = face; - - } - - return intersection; - - } - - return function raycast( raycaster, intersects ) { - - var geometry = this.geometry; - var material = this.material; - var matrixWorld = this.matrixWorld; - - if ( material === undefined ) return; - - // Checking boundingSphere distance to ray - - if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere(); - - sphere.copy( geometry.boundingSphere ); - sphere.applyMatrix4( matrixWorld ); - - if ( raycaster.ray.intersectsSphere( sphere ) === false ) return; - - // - - inverseMatrix.getInverse( matrixWorld ); - ray.copy( raycaster.ray ).applyMatrix4( inverseMatrix ); - - // Check boundingBox before continuing - - if ( geometry.boundingBox !== null ) { - - if ( ray.intersectsBox( geometry.boundingBox ) === false ) return; - - } - - var intersection; - - if ( geometry.isBufferGeometry ) { - - var a, b, c; - var index = geometry.index; - var position = geometry.attributes.position; - var morphPosition = geometry.morphAttributes.position; - var uv = geometry.attributes.uv; - var groups = geometry.groups; - var drawRange = geometry.drawRange; - var i, j, il, jl; - var group, groupMaterial; - var start, end; - - if ( index !== null ) { - - // indexed buffer geometry - - if ( Array.isArray( material ) ) { - - for ( i = 0, il = groups.length; i < il; i ++ ) { - - group = groups[ i ]; - groupMaterial = material[ group.materialIndex ]; - - start = Math.max( group.start, drawRange.start ); - end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ); - - for ( j = start, jl = end; j < jl; j += 3 ) { - - a = index.getX( j ); - b = index.getX( j + 1 ); - c = index.getX( j + 2 ); - - intersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, morphPosition, uv, a, b, c ); - - if ( intersection ) { - - intersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics - intersection.face.materialIndex = group.materialIndex; - intersects.push( intersection ); - - } - - } - - } - - } else { - - start = Math.max( 0, drawRange.start ); - end = Math.min( index.count, ( drawRange.start + drawRange.count ) ); - - for ( i = start, il = end; i < il; i += 3 ) { - - a = index.getX( i ); - b = index.getX( i + 1 ); - c = index.getX( i + 2 ); - - intersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, morphPosition, uv, a, b, c ); - - if ( intersection ) { - - intersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics - intersects.push( intersection ); - - } - - } - - } - - } else if ( position !== undefined ) { - - // non-indexed buffer geometry - - if ( Array.isArray( material ) ) { - - for ( i = 0, il = groups.length; i < il; i ++ ) { - - group = groups[ i ]; - groupMaterial = material[ group.materialIndex ]; - - start = Math.max( group.start, drawRange.start ); - end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ); - - for ( j = start, jl = end; j < jl; j += 3 ) { - - a = j; - b = j + 1; - c = j + 2; - - intersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, morphPosition, uv, a, b, c ); - - if ( intersection ) { - - intersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics - intersection.face.materialIndex = group.materialIndex; - intersects.push( intersection ); - - } - - } - - } - - } else { - - start = Math.max( 0, drawRange.start ); - end = Math.min( position.count, ( drawRange.start + drawRange.count ) ); - - for ( i = start, il = end; i < il; i += 3 ) { - - a = i; - b = i + 1; - c = i + 2; - - intersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, morphPosition, uv, a, b, c ); - - if ( intersection ) { - - intersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics - intersects.push( intersection ); - - } - - } - - } - - } - - } else if ( geometry.isGeometry ) { - - var fvA, fvB, fvC; - var isMultiMaterial = Array.isArray( material ); - - var vertices = geometry.vertices; - var faces = geometry.faces; - var uvs; - - var faceVertexUvs = geometry.faceVertexUvs[ 0 ]; - if ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs; - - for ( var f = 0, fl = faces.length; f < fl; f ++ ) { - - var face = faces[ f ]; - var faceMaterial = isMultiMaterial ? material[ face.materialIndex ] : material; - - if ( faceMaterial === undefined ) continue; - - fvA = vertices[ face.a ]; - fvB = vertices[ face.b ]; - fvC = vertices[ face.c ]; - - intersection = checkIntersection( this, faceMaterial, raycaster, ray, fvA, fvB, fvC, intersectionPoint ); - - if ( intersection ) { - - if ( uvs && uvs[ f ] ) { - - var uvs_f = uvs[ f ]; - uvA.copy( uvs_f[ 0 ] ); - uvB.copy( uvs_f[ 1 ] ); - uvC.copy( uvs_f[ 2 ] ); - - intersection.uv = Triangle.getUV( intersectionPoint, fvA, fvB, fvC, uvA, uvB, uvC, new Vector2() ); - - } - - intersection.face = face; - intersection.faceIndex = f; - intersects.push( intersection ); - - } - - } - - } - - }; - - }() ), - - clone: function () { - - return new this.constructor( this.geometry, this.material ).copy( this ); - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function WebGLBackground( renderer, state, objects, premultipliedAlpha ) { - - var clearColor = new Color( 0x000000 ); - var clearAlpha = 0; - - var planeMesh; - var boxMesh; - // Store the current background texture and its `version` - // so we can recompile the material accordingly. - var currentBackground = null; - var currentBackgroundVersion = 0; - - function render( renderList, scene, camera, forceClear ) { - - var background = scene.background; - - // Ignore background in AR - // TODO: Reconsider this. - - var vr = renderer.vr; - var session = vr.getSession && vr.getSession(); - - if ( session && session.environmentBlendMode === 'additive' ) { - - background = null; - - } - - if ( background === null ) { - - setClear( clearColor, clearAlpha ); - currentBackground = null; - currentBackgroundVersion = 0; - - } else if ( background && background.isColor ) { - - setClear( background, 1 ); - forceClear = true; - currentBackground = null; - currentBackgroundVersion = 0; - - } - - if ( renderer.autoClear || forceClear ) { - - renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil ); - - } - - if ( background && ( background.isCubeTexture || background.isWebGLRenderTargetCube ) ) { - - if ( boxMesh === undefined ) { - - boxMesh = new Mesh( - new BoxBufferGeometry( 1, 1, 1 ), - new ShaderMaterial( { - type: 'BackgroundCubeMaterial', - uniforms: cloneUniforms( ShaderLib.cube.uniforms ), - vertexShader: ShaderLib.cube.vertexShader, - fragmentShader: ShaderLib.cube.fragmentShader, - side: BackSide, - depthTest: false, - depthWrite: false, - fog: false - } ) - ); - - boxMesh.geometry.removeAttribute( 'normal' ); - boxMesh.geometry.removeAttribute( 'uv' ); - - boxMesh.onBeforeRender = function ( renderer, scene, camera ) { - - this.matrixWorld.copyPosition( camera.matrixWorld ); - - }; - - // enable code injection for non-built-in material - Object.defineProperty( boxMesh.material, 'map', { - - get: function () { - - return this.uniforms.tCube.value; - - } - - } ); - - objects.update( boxMesh ); - - } - - var texture = background.isWebGLRenderTargetCube ? background.texture : background; - boxMesh.material.uniforms.tCube.value = texture; - boxMesh.material.uniforms.tFlip.value = ( background.isWebGLRenderTargetCube ) ? 1 : - 1; - - if ( currentBackground !== background || - currentBackgroundVersion !== texture.version ) { - - boxMesh.material.needsUpdate = true; - - currentBackground = background; - currentBackgroundVersion = texture.version; - - } - - // push to the pre-sorted opaque render list - renderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null ); - - } else if ( background && background.isTexture ) { - - if ( planeMesh === undefined ) { - - planeMesh = new Mesh( - new PlaneBufferGeometry( 2, 2 ), - new ShaderMaterial( { - type: 'BackgroundMaterial', - uniforms: cloneUniforms( ShaderLib.background.uniforms ), - vertexShader: ShaderLib.background.vertexShader, - fragmentShader: ShaderLib.background.fragmentShader, - side: FrontSide, - depthTest: false, - depthWrite: false, - fog: false - } ) - ); - - planeMesh.geometry.removeAttribute( 'normal' ); - - // enable code injection for non-built-in material - Object.defineProperty( planeMesh.material, 'map', { - - get: function () { - - return this.uniforms.t2D.value; - - } - - } ); - - objects.update( planeMesh ); - - } - - planeMesh.material.uniforms.t2D.value = background; - - if ( background.matrixAutoUpdate === true ) { - - background.updateMatrix(); - - } - - planeMesh.material.uniforms.uvTransform.value.copy( background.matrix ); - - if ( currentBackground !== background || - currentBackgroundVersion !== background.version ) { - - planeMesh.material.needsUpdate = true; - - currentBackground = background; - currentBackgroundVersion = background.version; - - } - - - // push to the pre-sorted opaque render list - renderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null ); - - } - - } - - function setClear( color, alpha ) { - - state.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha ); - - } - - return { - - getClearColor: function () { - - return clearColor; - - }, - setClearColor: function ( color, alpha ) { - - clearColor.set( color ); - clearAlpha = alpha !== undefined ? alpha : 1; - setClear( clearColor, clearAlpha ); - - }, - getClearAlpha: function () { - - return clearAlpha; - - }, - setClearAlpha: function ( alpha ) { - - clearAlpha = alpha; - setClear( clearColor, clearAlpha ); - - }, - render: render - - }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function WebGLBufferRenderer( gl, extensions, info, capabilities ) { - - var mode; - - function setMode( value ) { - - mode = value; - - } - - function render( start, count ) { - - gl.drawArrays( mode, start, count ); - - info.update( count, mode ); - - } - - function renderInstances( geometry, start, count ) { - - var extension; - - if ( capabilities.isWebGL2 ) { - - extension = gl; - - } else { - - extension = extensions.get( 'ANGLE_instanced_arrays' ); - - if ( extension === null ) { - - console.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' ); - return; - - } - - } - - extension[ capabilities.isWebGL2 ? 'drawArraysInstanced' : 'drawArraysInstancedANGLE' ]( mode, start, count, geometry.maxInstancedCount ); - - info.update( count, mode, geometry.maxInstancedCount ); - - } - - // - - this.setMode = setMode; - this.render = render; - this.renderInstances = renderInstances; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function WebGLCapabilities( gl, extensions, parameters ) { - - var maxAnisotropy; - - function getMaxAnisotropy() { - - if ( maxAnisotropy !== undefined ) return maxAnisotropy; - - var extension = extensions.get( 'EXT_texture_filter_anisotropic' ); - - if ( extension !== null ) { - - maxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT ); - - } else { - - maxAnisotropy = 0; - - } - - return maxAnisotropy; - - } - - function getMaxPrecision( precision ) { - - if ( precision === 'highp' ) { - - if ( gl.getShaderPrecisionFormat( 35633, 36338 ).precision > 0 && - gl.getShaderPrecisionFormat( 35632, 36338 ).precision > 0 ) { - - return 'highp'; - - } - - precision = 'mediump'; - - } - - if ( precision === 'mediump' ) { - - if ( gl.getShaderPrecisionFormat( 35633, 36337 ).precision > 0 && - gl.getShaderPrecisionFormat( 35632, 36337 ).precision > 0 ) { - - return 'mediump'; - - } - - } - - return 'lowp'; - - } - - var isWebGL2 = typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext; - - var precision = parameters.precision !== undefined ? parameters.precision : 'highp'; - var maxPrecision = getMaxPrecision( precision ); - - if ( maxPrecision !== precision ) { - - console.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' ); - precision = maxPrecision; - - } - - var logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true; - - var maxTextures = gl.getParameter( 34930 ); - var maxVertexTextures = gl.getParameter( 35660 ); - var maxTextureSize = gl.getParameter( 3379 ); - var maxCubemapSize = gl.getParameter( 34076 ); - - var maxAttributes = gl.getParameter( 34921 ); - var maxVertexUniforms = gl.getParameter( 36347 ); - var maxVaryings = gl.getParameter( 36348 ); - var maxFragmentUniforms = gl.getParameter( 36349 ); - - var vertexTextures = maxVertexTextures > 0; - var floatFragmentTextures = isWebGL2 || !! extensions.get( 'OES_texture_float' ); - var floatVertexTextures = vertexTextures && floatFragmentTextures; - - var maxSamples = isWebGL2 ? gl.getParameter( 36183 ) : 0; - - return { - - isWebGL2: isWebGL2, - - getMaxAnisotropy: getMaxAnisotropy, - getMaxPrecision: getMaxPrecision, - - precision: precision, - logarithmicDepthBuffer: logarithmicDepthBuffer, - - maxTextures: maxTextures, - maxVertexTextures: maxVertexTextures, - maxTextureSize: maxTextureSize, - maxCubemapSize: maxCubemapSize, - - maxAttributes: maxAttributes, - maxVertexUniforms: maxVertexUniforms, - maxVaryings: maxVaryings, - maxFragmentUniforms: maxFragmentUniforms, - - vertexTextures: vertexTextures, - floatFragmentTextures: floatFragmentTextures, - floatVertexTextures: floatVertexTextures, - - maxSamples: maxSamples - - }; - - } - - /** - * @author tschw - */ - - function WebGLClipping() { - - var scope = this, - - globalState = null, - numGlobalPlanes = 0, - localClippingEnabled = false, - renderingShadows = false, - - plane = new Plane(), - viewNormalMatrix = new Matrix3(), - - uniform = { value: null, needsUpdate: false }; - - this.uniform = uniform; - this.numPlanes = 0; - this.numIntersection = 0; - - this.init = function ( planes, enableLocalClipping, camera ) { - - var enabled = - planes.length !== 0 || - enableLocalClipping || - // enable state of previous frame - the clipping code has to - // run another frame in order to reset the state: - numGlobalPlanes !== 0 || - localClippingEnabled; - - localClippingEnabled = enableLocalClipping; - - globalState = projectPlanes( planes, camera, 0 ); - numGlobalPlanes = planes.length; - - return enabled; - - }; - - this.beginShadows = function () { - - renderingShadows = true; - projectPlanes( null ); - - }; - - this.endShadows = function () { - - renderingShadows = false; - resetGlobalState(); - - }; - - this.setState = function ( planes, clipIntersection, clipShadows, camera, cache, fromCache ) { - - if ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) { - - // there's no local clipping - - if ( renderingShadows ) { - - // there's no global clipping - - projectPlanes( null ); - - } else { - - resetGlobalState(); - - } - - } else { - - var nGlobal = renderingShadows ? 0 : numGlobalPlanes, - lGlobal = nGlobal * 4, - - dstArray = cache.clippingState || null; - - uniform.value = dstArray; // ensure unique state - - dstArray = projectPlanes( planes, camera, lGlobal, fromCache ); - - for ( var i = 0; i !== lGlobal; ++ i ) { - - dstArray[ i ] = globalState[ i ]; - - } - - cache.clippingState = dstArray; - this.numIntersection = clipIntersection ? this.numPlanes : 0; - this.numPlanes += nGlobal; - - } - - - }; - - function resetGlobalState() { - - if ( uniform.value !== globalState ) { - - uniform.value = globalState; - uniform.needsUpdate = numGlobalPlanes > 0; - - } - - scope.numPlanes = numGlobalPlanes; - scope.numIntersection = 0; - - } - - function projectPlanes( planes, camera, dstOffset, skipTransform ) { - - var nPlanes = planes !== null ? planes.length : 0, - dstArray = null; - - if ( nPlanes !== 0 ) { - - dstArray = uniform.value; - - if ( skipTransform !== true || dstArray === null ) { - - var flatSize = dstOffset + nPlanes * 4, - viewMatrix = camera.matrixWorldInverse; - - viewNormalMatrix.getNormalMatrix( viewMatrix ); - - if ( dstArray === null || dstArray.length < flatSize ) { - - dstArray = new Float32Array( flatSize ); - - } - - for ( var i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) { - - plane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix ); - - plane.normal.toArray( dstArray, i4 ); - dstArray[ i4 + 3 ] = plane.constant; - - } - - } - - uniform.value = dstArray; - uniform.needsUpdate = true; - - } - - scope.numPlanes = nPlanes; - - return dstArray; - - } - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function WebGLExtensions( gl ) { - - var extensions = {}; - - return { - - get: function ( name ) { - - if ( extensions[ name ] !== undefined ) { - - return extensions[ name ]; - - } - - var extension; - - switch ( name ) { - - case 'WEBGL_depth_texture': - extension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' ); - break; - - case 'EXT_texture_filter_anisotropic': - extension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' ); - break; - - case 'WEBGL_compressed_texture_s3tc': - extension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' ); - break; - - case 'WEBGL_compressed_texture_pvrtc': - extension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' ); - break; - - default: - extension = gl.getExtension( name ); - - } - - if ( extension === null ) { - - console.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' ); - - } - - extensions[ name ] = extension; - - return extension; - - } - - }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function WebGLGeometries( gl, attributes, info ) { - - var geometries = {}; - var wireframeAttributes = {}; - - function onGeometryDispose( event ) { - - var geometry = event.target; - var buffergeometry = geometries[ geometry.id ]; - - if ( buffergeometry.index !== null ) { - - attributes.remove( buffergeometry.index ); - - } - - for ( var name in buffergeometry.attributes ) { - - attributes.remove( buffergeometry.attributes[ name ] ); - - } - - geometry.removeEventListener( 'dispose', onGeometryDispose ); - - delete geometries[ geometry.id ]; - - var attribute = wireframeAttributes[ buffergeometry.id ]; - - if ( attribute ) { - - attributes.remove( attribute ); - delete wireframeAttributes[ buffergeometry.id ]; - - } - - // - - info.memory.geometries --; - - } - - function get( object, geometry ) { - - var buffergeometry = geometries[ geometry.id ]; - - if ( buffergeometry ) return buffergeometry; - - geometry.addEventListener( 'dispose', onGeometryDispose ); - - if ( geometry.isBufferGeometry ) { - - buffergeometry = geometry; - - } else if ( geometry.isGeometry ) { - - if ( geometry._bufferGeometry === undefined ) { - - geometry._bufferGeometry = new BufferGeometry().setFromObject( object ); - - } - - buffergeometry = geometry._bufferGeometry; - - } - - geometries[ geometry.id ] = buffergeometry; - - info.memory.geometries ++; - - return buffergeometry; - - } - - function update( geometry ) { - - var index = geometry.index; - var geometryAttributes = geometry.attributes; - - if ( index !== null ) { - - attributes.update( index, 34963 ); - - } - - for ( var name in geometryAttributes ) { - - attributes.update( geometryAttributes[ name ], 34962 ); - - } - - // morph targets - - var morphAttributes = geometry.morphAttributes; - - for ( var name in morphAttributes ) { - - var array = morphAttributes[ name ]; - - for ( var i = 0, l = array.length; i < l; i ++ ) { - - attributes.update( array[ i ], 34962 ); - - } - - } - - } - - function getWireframeAttribute( geometry ) { - - var attribute = wireframeAttributes[ geometry.id ]; - - if ( attribute ) return attribute; - - var indices = []; - - var geometryIndex = geometry.index; - var geometryAttributes = geometry.attributes; - - // console.time( 'wireframe' ); - - if ( geometryIndex !== null ) { - - var array = geometryIndex.array; - - for ( var i = 0, l = array.length; i < l; i += 3 ) { - - var a = array[ i + 0 ]; - var b = array[ i + 1 ]; - var c = array[ i + 2 ]; - - indices.push( a, b, b, c, c, a ); - - } - - } else { - - var array = geometryAttributes.position.array; - - for ( var i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) { - - var a = i + 0; - var b = i + 1; - var c = i + 2; - - indices.push( a, b, b, c, c, a ); - - } - - } - - // console.timeEnd( 'wireframe' ); - - attribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 ); - - attributes.update( attribute, 34963 ); - - wireframeAttributes[ geometry.id ] = attribute; - - return attribute; - - } - - return { - - get: get, - update: update, - - getWireframeAttribute: getWireframeAttribute - - }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) { - - var mode; - - function setMode( value ) { - - mode = value; - - } - - var type, bytesPerElement; - - function setIndex( value ) { - - type = value.type; - bytesPerElement = value.bytesPerElement; - - } - - function render( start, count ) { - - gl.drawElements( mode, count, type, start * bytesPerElement ); - - info.update( count, mode ); - - } - - function renderInstances( geometry, start, count ) { - - var extension; - - if ( capabilities.isWebGL2 ) { - - extension = gl; - - } else { - - var extension = extensions.get( 'ANGLE_instanced_arrays' ); - - if ( extension === null ) { - - console.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' ); - return; - - } - - } - - extension[ capabilities.isWebGL2 ? 'drawElementsInstanced' : 'drawElementsInstancedANGLE' ]( mode, count, type, start * bytesPerElement, geometry.maxInstancedCount ); - - info.update( count, mode, geometry.maxInstancedCount ); - - } - - // - - this.setMode = setMode; - this.setIndex = setIndex; - this.render = render; - this.renderInstances = renderInstances; - - } - - /** - * @author Mugen87 / https://github.com/Mugen87 - */ - - function WebGLInfo( gl ) { - - var memory = { - geometries: 0, - textures: 0 - }; - - var render = { - frame: 0, - calls: 0, - triangles: 0, - points: 0, - lines: 0 - }; - - function update( count, mode, instanceCount ) { - - instanceCount = instanceCount || 1; - - render.calls ++; - - switch ( mode ) { - - case 4: - render.triangles += instanceCount * ( count / 3 ); - break; - - case 5: - case 6: - render.triangles += instanceCount * ( count - 2 ); - break; - - case 1: - render.lines += instanceCount * ( count / 2 ); - break; - - case 3: - render.lines += instanceCount * ( count - 1 ); - break; - - case 2: - render.lines += instanceCount * count; - break; - - case 0: - render.points += instanceCount * count; - break; - - default: - console.error( 'THREE.WebGLInfo: Unknown draw mode:', mode ); - break; - - } - - } - - function reset() { - - render.frame ++; - render.calls = 0; - render.triangles = 0; - render.points = 0; - render.lines = 0; - - } - - return { - memory: memory, - render: render, - programs: null, - autoReset: true, - reset: reset, - update: update - }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function absNumericalSort( a, b ) { - - return Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] ); - - } - - function WebGLMorphtargets( gl ) { - - var influencesList = {}; - var morphInfluences = new Float32Array( 8 ); - - function update( object, geometry, material, program ) { - - var objectInfluences = object.morphTargetInfluences; - - var length = objectInfluences.length; - - var influences = influencesList[ geometry.id ]; - - if ( influences === undefined ) { - - // initialise list - - influences = []; - - for ( var i = 0; i < length; i ++ ) { - - influences[ i ] = [ i, 0 ]; - - } - - influencesList[ geometry.id ] = influences; - - } - - var morphTargets = material.morphTargets && geometry.morphAttributes.position; - var morphNormals = material.morphNormals && geometry.morphAttributes.normal; - - // Remove current morphAttributes - - for ( var i = 0; i < length; i ++ ) { - - var influence = influences[ i ]; - - if ( influence[ 1 ] !== 0 ) { - - if ( morphTargets ) geometry.removeAttribute( 'morphTarget' + i ); - if ( morphNormals ) geometry.removeAttribute( 'morphNormal' + i ); - - } - - } - - // Collect influences - - for ( var i = 0; i < length; i ++ ) { - - var influence = influences[ i ]; - - influence[ 0 ] = i; - influence[ 1 ] = objectInfluences[ i ]; - - } - - influences.sort( absNumericalSort ); - - // Add morphAttributes - - for ( var i = 0; i < 8; i ++ ) { - - var influence = influences[ i ]; - - if ( influence ) { - - var index = influence[ 0 ]; - var value = influence[ 1 ]; - - if ( value ) { - - if ( morphTargets ) geometry.addAttribute( 'morphTarget' + i, morphTargets[ index ] ); - if ( morphNormals ) geometry.addAttribute( 'morphNormal' + i, morphNormals[ index ] ); - - morphInfluences[ i ] = value; - continue; - - } - - } - - morphInfluences[ i ] = 0; - - } - - program.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences ); - - } - - return { - - update: update - - }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function WebGLObjects( geometries, info ) { - - var updateList = {}; - - function update( object ) { - - var frame = info.render.frame; - - var geometry = object.geometry; - var buffergeometry = geometries.get( object, geometry ); - - // Update once per frame - - if ( updateList[ buffergeometry.id ] !== frame ) { - - if ( geometry.isGeometry ) { - - buffergeometry.updateFromObject( object ); - - } - - geometries.update( buffergeometry ); - - updateList[ buffergeometry.id ] = frame; - - } - - return buffergeometry; - - } - - function dispose() { - - updateList = {}; - - } - - return { - - update: update, - dispose: dispose - - }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) { - - images = images !== undefined ? images : []; - mapping = mapping !== undefined ? mapping : CubeReflectionMapping; - format = format !== undefined ? format : RGBFormat; - - Texture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ); - - this.flipY = false; - - } - - CubeTexture.prototype = Object.create( Texture.prototype ); - CubeTexture.prototype.constructor = CubeTexture; - - CubeTexture.prototype.isCubeTexture = true; - - Object.defineProperty( CubeTexture.prototype, 'images', { - - get: function () { - - return this.image; - - }, - - set: function ( value ) { - - this.image = value; - - } - - } ); - - /** - * @author Takahiro https://github.com/takahirox - */ - - function DataTexture2DArray( data, width, height, depth ) { - - Texture.call( this, null ); - - this.image = { data: data, width: width, height: height, depth: depth }; - - this.magFilter = NearestFilter; - this.minFilter = NearestFilter; - - this.wrapR = ClampToEdgeWrapping; - - this.generateMipmaps = false; - this.flipY = false; - - } - - DataTexture2DArray.prototype = Object.create( Texture.prototype ); - DataTexture2DArray.prototype.constructor = DataTexture2DArray; - DataTexture2DArray.prototype.isDataTexture2DArray = true; - - /** - * @author Artur Trzesiok - */ - - function DataTexture3D( data, width, height, depth ) { - - // We're going to add .setXXX() methods for setting properties later. - // Users can still set in DataTexture3D directly. - // - // var texture = new THREE.DataTexture3D( data, width, height, depth ); - // texture.anisotropy = 16; - // - // See #14839 - - Texture.call( this, null ); - - this.image = { data: data, width: width, height: height, depth: depth }; - - this.magFilter = NearestFilter; - this.minFilter = NearestFilter; - - this.wrapR = ClampToEdgeWrapping; - - this.generateMipmaps = false; - this.flipY = false; - - } - - DataTexture3D.prototype = Object.create( Texture.prototype ); - DataTexture3D.prototype.constructor = DataTexture3D; - DataTexture3D.prototype.isDataTexture3D = true; - - /** - * @author tschw - * @author Mugen87 / https://github.com/Mugen87 - * @author mrdoob / http://mrdoob.com/ - * - * Uniforms of a program. - * Those form a tree structure with a special top-level container for the root, - * which you get by calling 'new WebGLUniforms( gl, program )'. - * - * - * Properties of inner nodes including the top-level container: - * - * .seq - array of nested uniforms - * .map - nested uniforms by name - * - * - * Methods of all nodes except the top-level container: - * - * .setValue( gl, value, [textures] ) - * - * uploads a uniform value(s) - * the 'textures' parameter is needed for sampler uniforms - * - * - * Static methods of the top-level container (textures factorizations): - * - * .upload( gl, seq, values, textures ) - * - * sets uniforms in 'seq' to 'values[id].value' - * - * .seqWithValue( seq, values ) : filteredSeq - * - * filters 'seq' entries with corresponding entry in values - * - * - * Methods of the top-level container (textures factorizations): - * - * .setValue( gl, name, value, textures ) - * - * sets uniform with name 'name' to 'value' - * - * .setOptional( gl, obj, prop ) - * - * like .set for an optional property of the object - * - */ - - var emptyTexture = new Texture(); - var emptyTexture2dArray = new DataTexture2DArray(); - var emptyTexture3d = new DataTexture3D(); - var emptyCubeTexture = new CubeTexture(); - - // --- Utilities --- - - // Array Caches (provide typed arrays for temporary by size) - - var arrayCacheF32 = []; - var arrayCacheI32 = []; - - // Float32Array caches used for uploading Matrix uniforms - - var mat4array = new Float32Array( 16 ); - var mat3array = new Float32Array( 9 ); - var mat2array = new Float32Array( 4 ); - - // Flattening for arrays of vectors and matrices - - function flatten( array, nBlocks, blockSize ) { - - var firstElem = array[ 0 ]; - - if ( firstElem <= 0 || firstElem > 0 ) return array; - // unoptimized: ! isNaN( firstElem ) - // see http://jacksondunstan.com/articles/983 - - var n = nBlocks * blockSize, - r = arrayCacheF32[ n ]; - - if ( r === undefined ) { - - r = new Float32Array( n ); - arrayCacheF32[ n ] = r; - - } - - if ( nBlocks !== 0 ) { - - firstElem.toArray( r, 0 ); - - for ( var i = 1, offset = 0; i !== nBlocks; ++ i ) { - - offset += blockSize; - array[ i ].toArray( r, offset ); - - } - - } - - return r; - - } - - function arraysEqual( a, b ) { - - if ( a.length !== b.length ) return false; - - for ( var i = 0, l = a.length; i < l; i ++ ) { - - if ( a[ i ] !== b[ i ] ) return false; - - } - - return true; - - } - - function copyArray( a, b ) { - - for ( var i = 0, l = b.length; i < l; i ++ ) { - - a[ i ] = b[ i ]; - - } - - } - - // Texture unit allocation - - function allocTexUnits( textures, n ) { - - var r = arrayCacheI32[ n ]; - - if ( r === undefined ) { - - r = new Int32Array( n ); - arrayCacheI32[ n ] = r; - - } - - for ( var i = 0; i !== n; ++ i ) - r[ i ] = textures.allocateTextureUnit(); - - return r; - - } - - // --- Setters --- - - // Note: Defining these methods externally, because they come in a bunch - // and this way their names minify. - - // Single scalar - - function setValueV1f( gl, v ) { - - var cache = this.cache; - - if ( cache[ 0 ] === v ) return; - - gl.uniform1f( this.addr, v ); - - cache[ 0 ] = v; - - } - - // Single float vector (from flat array or THREE.VectorN) - - function setValueV2f( gl, v ) { - - var cache = this.cache; - - if ( v.x !== undefined ) { - - if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) { - - gl.uniform2f( this.addr, v.x, v.y ); - - cache[ 0 ] = v.x; - cache[ 1 ] = v.y; - - } - - } else { - - if ( arraysEqual( cache, v ) ) return; - - gl.uniform2fv( this.addr, v ); - - copyArray( cache, v ); - - } - - } - - function setValueV3f( gl, v ) { - - var cache = this.cache; - - if ( v.x !== undefined ) { - - if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) { - - gl.uniform3f( this.addr, v.x, v.y, v.z ); - - cache[ 0 ] = v.x; - cache[ 1 ] = v.y; - cache[ 2 ] = v.z; - - } - - } else if ( v.r !== undefined ) { - - if ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) { - - gl.uniform3f( this.addr, v.r, v.g, v.b ); - - cache[ 0 ] = v.r; - cache[ 1 ] = v.g; - cache[ 2 ] = v.b; - - } - - } else { - - if ( arraysEqual( cache, v ) ) return; - - gl.uniform3fv( this.addr, v ); - - copyArray( cache, v ); - - } - - } - - function setValueV4f( gl, v ) { - - var cache = this.cache; - - if ( v.x !== undefined ) { - - if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) { - - gl.uniform4f( this.addr, v.x, v.y, v.z, v.w ); - - cache[ 0 ] = v.x; - cache[ 1 ] = v.y; - cache[ 2 ] = v.z; - cache[ 3 ] = v.w; - - } - - } else { - - if ( arraysEqual( cache, v ) ) return; - - gl.uniform4fv( this.addr, v ); - - copyArray( cache, v ); - - } - - } - - // Single matrix (from flat array or MatrixN) - - function setValueM2( gl, v ) { - - var cache = this.cache; - var elements = v.elements; - - if ( elements === undefined ) { - - if ( arraysEqual( cache, v ) ) return; - - gl.uniformMatrix2fv( this.addr, false, v ); - - copyArray( cache, v ); - - } else { - - if ( arraysEqual( cache, elements ) ) return; - - mat2array.set( elements ); - - gl.uniformMatrix2fv( this.addr, false, mat2array ); - - copyArray( cache, elements ); - - } - - } - - function setValueM3( gl, v ) { - - var cache = this.cache; - var elements = v.elements; - - if ( elements === undefined ) { - - if ( arraysEqual( cache, v ) ) return; - - gl.uniformMatrix3fv( this.addr, false, v ); - - copyArray( cache, v ); - - } else { - - if ( arraysEqual( cache, elements ) ) return; - - mat3array.set( elements ); - - gl.uniformMatrix3fv( this.addr, false, mat3array ); - - copyArray( cache, elements ); - - } - - } - - function setValueM4( gl, v ) { - - var cache = this.cache; - var elements = v.elements; - - if ( elements === undefined ) { - - if ( arraysEqual( cache, v ) ) return; - - gl.uniformMatrix4fv( this.addr, false, v ); - - copyArray( cache, v ); - - } else { - - if ( arraysEqual( cache, elements ) ) return; - - mat4array.set( elements ); - - gl.uniformMatrix4fv( this.addr, false, mat4array ); - - copyArray( cache, elements ); - - } - - } - - // Single texture (2D / Cube) - - function setValueT1( gl, v, textures ) { - - var cache = this.cache; - var unit = textures.allocateTextureUnit(); - - if ( cache[ 0 ] !== unit ) { - - gl.uniform1i( this.addr, unit ); - cache[ 0 ] = unit; - - } - - textures.safeSetTexture2D( v || emptyTexture, unit ); - - } - - function setValueT2DArray1( gl, v, textures ) { - - var cache = this.cache; - var unit = textures.allocateTextureUnit(); - - if ( cache[ 0 ] !== unit ) { - - gl.uniform1i( this.addr, unit ); - cache[ 0 ] = unit; - - } - - textures.setTexture2DArray( v || emptyTexture2dArray, unit ); - - } - - function setValueT3D1( gl, v, textures ) { - - var cache = this.cache; - var unit = textures.allocateTextureUnit(); - - if ( cache[ 0 ] !== unit ) { - - gl.uniform1i( this.addr, unit ); - cache[ 0 ] = unit; - - } - - textures.setTexture3D( v || emptyTexture3d, unit ); - - } - - function setValueT6( gl, v, textures ) { - - var cache = this.cache; - var unit = textures.allocateTextureUnit(); - - if ( cache[ 0 ] !== unit ) { - - gl.uniform1i( this.addr, unit ); - cache[ 0 ] = unit; - - } - - textures.safeSetTextureCube( v || emptyCubeTexture, unit ); - - } - - // Integer / Boolean vectors or arrays thereof (always flat arrays) - - function setValueV1i( gl, v ) { - - var cache = this.cache; - - if ( cache[ 0 ] === v ) return; - - gl.uniform1i( this.addr, v ); - - cache[ 0 ] = v; - - } - - function setValueV2i( gl, v ) { - - var cache = this.cache; - - if ( arraysEqual( cache, v ) ) return; - - gl.uniform2iv( this.addr, v ); - - copyArray( cache, v ); - - } - - function setValueV3i( gl, v ) { - - var cache = this.cache; - - if ( arraysEqual( cache, v ) ) return; - - gl.uniform3iv( this.addr, v ); - - copyArray( cache, v ); - - } - - function setValueV4i( gl, v ) { - - var cache = this.cache; - - if ( arraysEqual( cache, v ) ) return; - - gl.uniform4iv( this.addr, v ); - - copyArray( cache, v ); - - } - - // Helper to pick the right setter for the singular case - - function getSingularSetter( type ) { - - switch ( type ) { - - case 0x1406: return setValueV1f; // FLOAT - case 0x8b50: return setValueV2f; // _VEC2 - case 0x8b51: return setValueV3f; // _VEC3 - case 0x8b52: return setValueV4f; // _VEC4 - - case 0x8b5a: return setValueM2; // _MAT2 - case 0x8b5b: return setValueM3; // _MAT3 - case 0x8b5c: return setValueM4; // _MAT4 - - case 0x8b5e: case 0x8d66: return setValueT1; // SAMPLER_2D, SAMPLER_EXTERNAL_OES - case 0x8b5f: return setValueT3D1; // SAMPLER_3D - case 0x8b60: return setValueT6; // SAMPLER_CUBE - case 0x8DC1: return setValueT2DArray1; // SAMPLER_2D_ARRAY - - case 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL - case 0x8b53: case 0x8b57: return setValueV2i; // _VEC2 - case 0x8b54: case 0x8b58: return setValueV3i; // _VEC3 - case 0x8b55: case 0x8b59: return setValueV4i; // _VEC4 - - } - - } - - // Array of scalars - function setValueV1fArray( gl, v ) { - - gl.uniform1fv( this.addr, v ); - - } - - // Integer / Boolean vectors or arrays thereof (always flat arrays) - function setValueV1iArray( gl, v ) { - - gl.uniform1iv( this.addr, v ); - - } - - function setValueV2iArray( gl, v ) { - - gl.uniform2iv( this.addr, v ); - - } - - function setValueV3iArray( gl, v ) { - - gl.uniform3iv( this.addr, v ); - - } - - function setValueV4iArray( gl, v ) { - - gl.uniform4iv( this.addr, v ); - - } - - - // Array of vectors (flat or from THREE classes) - - function setValueV2fArray( gl, v ) { - - var data = flatten( v, this.size, 2 ); - - gl.uniform2fv( this.addr, data ); - - } - - function setValueV3fArray( gl, v ) { - - var data = flatten( v, this.size, 3 ); - - gl.uniform3fv( this.addr, data ); - - } - - function setValueV4fArray( gl, v ) { - - var data = flatten( v, this.size, 4 ); - - gl.uniform4fv( this.addr, data ); - - } - - // Array of matrices (flat or from THREE clases) - - function setValueM2Array( gl, v ) { - - var data = flatten( v, this.size, 4 ); - - gl.uniformMatrix2fv( this.addr, false, data ); - - } - - function setValueM3Array( gl, v ) { - - var data = flatten( v, this.size, 9 ); - - gl.uniformMatrix3fv( this.addr, false, data ); - - } - - function setValueM4Array( gl, v ) { - - var data = flatten( v, this.size, 16 ); - - gl.uniformMatrix4fv( this.addr, false, data ); - - } - - // Array of textures (2D / Cube) - - function setValueT1Array( gl, v, textures ) { - - var n = v.length; - - var units = allocTexUnits( textures, n ); - - gl.uniform1iv( this.addr, units ); - - for ( var i = 0; i !== n; ++ i ) { - - textures.safeSetTexture2D( v[ i ] || emptyTexture, units[ i ] ); - - } - - } - - function setValueT6Array( gl, v, textures ) { - - var n = v.length; - - var units = allocTexUnits( textures, n ); - - gl.uniform1iv( this.addr, units ); - - for ( var i = 0; i !== n; ++ i ) { - - textures.safeSetTextureCube( v[ i ] || emptyCubeTexture, units[ i ] ); - - } - - } - - // Helper to pick the right setter for a pure (bottom-level) array - - function getPureArraySetter( type ) { - - switch ( type ) { - - case 0x1406: return setValueV1fArray; // FLOAT - case 0x8b50: return setValueV2fArray; // _VEC2 - case 0x8b51: return setValueV3fArray; // _VEC3 - case 0x8b52: return setValueV4fArray; // _VEC4 - - case 0x8b5a: return setValueM2Array; // _MAT2 - case 0x8b5b: return setValueM3Array; // _MAT3 - case 0x8b5c: return setValueM4Array; // _MAT4 - - case 0x8b5e: return setValueT1Array; // SAMPLER_2D - case 0x8b60: return setValueT6Array; // SAMPLER_CUBE - - case 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL - case 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2 - case 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3 - case 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4 - - } - - } - - // --- Uniform Classes --- - - function SingleUniform( id, activeInfo, addr ) { - - this.id = id; - this.addr = addr; - this.cache = []; - this.setValue = getSingularSetter( activeInfo.type ); - - // this.path = activeInfo.name; // DEBUG - - } - - function PureArrayUniform( id, activeInfo, addr ) { - - this.id = id; - this.addr = addr; - this.cache = []; - this.size = activeInfo.size; - this.setValue = getPureArraySetter( activeInfo.type ); - - // this.path = activeInfo.name; // DEBUG - - } - - PureArrayUniform.prototype.updateCache = function ( data ) { - - var cache = this.cache; - - if ( data instanceof Float32Array && cache.length !== data.length ) { - - this.cache = new Float32Array( data.length ); - - } - - copyArray( cache, data ); - - }; - - function StructuredUniform( id ) { - - this.id = id; - - this.seq = []; - this.map = {}; - - } - - StructuredUniform.prototype.setValue = function ( gl, value, textures ) { - - var seq = this.seq; - - for ( var i = 0, n = seq.length; i !== n; ++ i ) { - - var u = seq[ i ]; - u.setValue( gl, value[ u.id ], textures ); - - } - - }; - - // --- Top-level --- - - // Parser - builds up the property tree from the path strings - - var RePathPart = /([\w\d_]+)(\])?(\[|\.)?/g; - - // extracts - // - the identifier (member name or array index) - // - followed by an optional right bracket (found when array index) - // - followed by an optional left bracket or dot (type of subscript) - // - // Note: These portions can be read in a non-overlapping fashion and - // allow straightforward parsing of the hierarchy that WebGL encodes - // in the uniform names. - - function addUniform( container, uniformObject ) { - - container.seq.push( uniformObject ); - container.map[ uniformObject.id ] = uniformObject; - - } - - function parseUniform( activeInfo, addr, container ) { - - var path = activeInfo.name, - pathLength = path.length; - - // reset RegExp object, because of the early exit of a previous run - RePathPart.lastIndex = 0; - - while ( true ) { - - var match = RePathPart.exec( path ), - matchEnd = RePathPart.lastIndex, - - id = match[ 1 ], - idIsIndex = match[ 2 ] === ']', - subscript = match[ 3 ]; - - if ( idIsIndex ) id = id | 0; // convert to integer - - if ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) { - - // bare name or "pure" bottom-level array "[0]" suffix - - addUniform( container, subscript === undefined ? - new SingleUniform( id, activeInfo, addr ) : - new PureArrayUniform( id, activeInfo, addr ) ); - - break; - - } else { - - // step into inner node / create it in case it doesn't exist - - var map = container.map, next = map[ id ]; - - if ( next === undefined ) { - - next = new StructuredUniform( id ); - addUniform( container, next ); - - } - - container = next; - - } - - } - - } - - // Root Container - - function WebGLUniforms( gl, program ) { - - this.seq = []; - this.map = {}; - - var n = gl.getProgramParameter( program, 35718 ); - - for ( var i = 0; i < n; ++ i ) { - - var info = gl.getActiveUniform( program, i ), - addr = gl.getUniformLocation( program, info.name ); - - parseUniform( info, addr, this ); - - } - - } - - WebGLUniforms.prototype.setValue = function ( gl, name, value, textures ) { - - var u = this.map[ name ]; - - if ( u !== undefined ) u.setValue( gl, value, textures ); - - }; - - WebGLUniforms.prototype.setOptional = function ( gl, object, name ) { - - var v = object[ name ]; - - if ( v !== undefined ) this.setValue( gl, name, v ); - - }; - - - // Static interface - - WebGLUniforms.upload = function ( gl, seq, values, textures ) { - - for ( var i = 0, n = seq.length; i !== n; ++ i ) { - - var u = seq[ i ], - v = values[ u.id ]; - - if ( v.needsUpdate !== false ) { - - // note: always updating when .needsUpdate is undefined - u.setValue( gl, v.value, textures ); - - } - - } - - }; - - WebGLUniforms.seqWithValue = function ( seq, values ) { - - var r = []; - - for ( var i = 0, n = seq.length; i !== n; ++ i ) { - - var u = seq[ i ]; - if ( u.id in values ) r.push( u ); - - } - - return r; - - }; - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function addLineNumbers( string ) { - - var lines = string.split( '\n' ); - - for ( var i = 0; i < lines.length; i ++ ) { - - lines[ i ] = ( i + 1 ) + ': ' + lines[ i ]; - - } - - return lines.join( '\n' ); - - } - - function WebGLShader( gl, type, string, debug ) { - - var shader = gl.createShader( type ); - - gl.shaderSource( shader, string ); - gl.compileShader( shader ); - - if ( debug === true ) { - - if ( gl.getShaderParameter( shader, 35713 ) === false ) { - - console.error( 'THREE.WebGLShader: Shader couldn\'t compile.' ); - - } - - if ( gl.getShaderInfoLog( shader ) !== '' ) { - - console.warn( 'THREE.WebGLShader: gl.getShaderInfoLog()', type === 35633 ? 'vertex' : 'fragment', gl.getShaderInfoLog( shader ), addLineNumbers( string ) ); - - } - - } - - // --enable-privileged-webgl-extension - // console.log( type, gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) ); - - return shader; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - var programIdCount = 0; - - function getEncodingComponents( encoding ) { - - switch ( encoding ) { - - case LinearEncoding: - return [ 'Linear', '( value )' ]; - case sRGBEncoding: - return [ 'sRGB', '( value )' ]; - case RGBEEncoding: - return [ 'RGBE', '( value )' ]; - case RGBM7Encoding: - return [ 'RGBM', '( value, 7.0 )' ]; - case RGBM16Encoding: - return [ 'RGBM', '( value, 16.0 )' ]; - case RGBDEncoding: - return [ 'RGBD', '( value, 256.0 )' ]; - case GammaEncoding: - return [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ]; - default: - throw new Error( 'unsupported encoding: ' + encoding ); - - } - - } - - function getTexelDecodingFunction( functionName, encoding ) { - - var components = getEncodingComponents( encoding ); - return 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }'; - - } - - function getTexelEncodingFunction( functionName, encoding ) { - - var components = getEncodingComponents( encoding ); - return 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }'; - - } - - function getToneMappingFunction( functionName, toneMapping ) { - - var toneMappingName; - - switch ( toneMapping ) { - - case LinearToneMapping: - toneMappingName = 'Linear'; - break; - - case ReinhardToneMapping: - toneMappingName = 'Reinhard'; - break; - - case Uncharted2ToneMapping: - toneMappingName = 'Uncharted2'; - break; - - case CineonToneMapping: - toneMappingName = 'OptimizedCineon'; - break; - - case ACESFilmicToneMapping: - toneMappingName = 'ACESFilmic'; - break; - - default: - throw new Error( 'unsupported toneMapping: ' + toneMapping ); - - } - - return 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }'; - - } - - function generateExtensions( extensions, parameters, rendererExtensions ) { - - extensions = extensions || {}; - - var chunks = [ - ( extensions.derivatives || parameters.envMapCubeUV || parameters.bumpMap || ( parameters.normalMap && ! parameters.objectSpaceNormalMap ) || parameters.flatShading ) ? '#extension GL_OES_standard_derivatives : enable' : '', - ( extensions.fragDepth || parameters.logarithmicDepthBuffer ) && rendererExtensions.get( 'EXT_frag_depth' ) ? '#extension GL_EXT_frag_depth : enable' : '', - ( extensions.drawBuffers ) && rendererExtensions.get( 'WEBGL_draw_buffers' ) ? '#extension GL_EXT_draw_buffers : require' : '', - ( extensions.shaderTextureLOD || parameters.envMap ) && rendererExtensions.get( 'EXT_shader_texture_lod' ) ? '#extension GL_EXT_shader_texture_lod : enable' : '' - ]; - - return chunks.filter( filterEmptyLine ).join( '\n' ); - - } - - function generateDefines( defines ) { - - var chunks = []; - - for ( var name in defines ) { - - var value = defines[ name ]; - - if ( value === false ) continue; - - chunks.push( '#define ' + name + ' ' + value ); - - } - - return chunks.join( '\n' ); - - } - - function fetchAttributeLocations( gl, program ) { - - var attributes = {}; - - var n = gl.getProgramParameter( program, 35721 ); - - for ( var i = 0; i < n; i ++ ) { - - var info = gl.getActiveAttrib( program, i ); - var name = info.name; - - // console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i ); - - attributes[ name ] = gl.getAttribLocation( program, name ); - - } - - return attributes; - - } - - function filterEmptyLine( string ) { - - return string !== ''; - - } - - function replaceLightNums( string, parameters ) { - - return string - .replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights ) - .replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights ) - .replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights ) - .replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights ) - .replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights ); - - } - - function replaceClippingPlaneNums( string, parameters ) { - - return string - .replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes ) - .replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) ); - - } - - function parseIncludes( string ) { - - var pattern = /^[ \t]*#include +<([\w\d./]+)>/gm; - - function replace( match, include ) { - - var replace = ShaderChunk[ include ]; - - if ( replace === undefined ) { - - throw new Error( 'Can not resolve #include <' + include + '>' ); - - } - - return parseIncludes( replace ); - - } - - return string.replace( pattern, replace ); - - } - - function unrollLoops( string ) { - - var pattern = /#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g; - - function replace( match, start, end, snippet ) { - - var unroll = ''; - - for ( var i = parseInt( start ); i < parseInt( end ); i ++ ) { - - unroll += snippet.replace( /\[ i \]/g, '[ ' + i + ' ]' ); - - } - - return unroll; - - } - - return string.replace( pattern, replace ); - - } - - function WebGLProgram( renderer, extensions, code, material, shader, parameters, capabilities, textures ) { - - var gl = renderer.context; - - var defines = material.defines; - - var vertexShader = shader.vertexShader; - var fragmentShader = shader.fragmentShader; - - var shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC'; - - if ( parameters.shadowMapType === PCFShadowMap ) { - - shadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF'; - - } else if ( parameters.shadowMapType === PCFSoftShadowMap ) { - - shadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT'; - - } - - var envMapTypeDefine = 'ENVMAP_TYPE_CUBE'; - var envMapModeDefine = 'ENVMAP_MODE_REFLECTION'; - var envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY'; - - if ( parameters.envMap ) { - - switch ( material.envMap.mapping ) { - - case CubeReflectionMapping: - case CubeRefractionMapping: - envMapTypeDefine = 'ENVMAP_TYPE_CUBE'; - break; - - case CubeUVReflectionMapping: - case CubeUVRefractionMapping: - envMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV'; - break; - - case EquirectangularReflectionMapping: - case EquirectangularRefractionMapping: - envMapTypeDefine = 'ENVMAP_TYPE_EQUIREC'; - break; - - case SphericalReflectionMapping: - envMapTypeDefine = 'ENVMAP_TYPE_SPHERE'; - break; - - } - - switch ( material.envMap.mapping ) { - - case CubeRefractionMapping: - case EquirectangularRefractionMapping: - envMapModeDefine = 'ENVMAP_MODE_REFRACTION'; - break; - - } - - switch ( material.combine ) { - - case MultiplyOperation: - envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY'; - break; - - case MixOperation: - envMapBlendingDefine = 'ENVMAP_BLENDING_MIX'; - break; - - case AddOperation: - envMapBlendingDefine = 'ENVMAP_BLENDING_ADD'; - break; - - } - - } - - var gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0; - - // console.log( 'building new program ' ); - - // - - var customExtensions = capabilities.isWebGL2 ? '' : generateExtensions( material.extensions, parameters, extensions ); - - var customDefines = generateDefines( defines ); - - // - - var program = gl.createProgram(); - - var prefixVertex, prefixFragment; - - if ( material.isRawShaderMaterial ) { - - prefixVertex = [ - - customDefines - - ].filter( filterEmptyLine ).join( '\n' ); - - if ( prefixVertex.length > 0 ) { - - prefixVertex += '\n'; - - } - - prefixFragment = [ - - customExtensions, - customDefines - - ].filter( filterEmptyLine ).join( '\n' ); - - if ( prefixFragment.length > 0 ) { - - prefixFragment += '\n'; - - } - - } else { - - prefixVertex = [ - - 'precision ' + parameters.precision + ' float;', - 'precision ' + parameters.precision + ' int;', - - '#define SHADER_NAME ' + shader.name, - - customDefines, - - parameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '', - - '#define GAMMA_FACTOR ' + gammaFactorDefine, - - '#define MAX_BONES ' + parameters.maxBones, - ( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '', - ( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '', - - parameters.map ? '#define USE_MAP' : '', - parameters.envMap ? '#define USE_ENVMAP' : '', - parameters.envMap ? '#define ' + envMapModeDefine : '', - parameters.lightMap ? '#define USE_LIGHTMAP' : '', - parameters.aoMap ? '#define USE_AOMAP' : '', - parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '', - parameters.bumpMap ? '#define USE_BUMPMAP' : '', - parameters.normalMap ? '#define USE_NORMALMAP' : '', - ( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '', - parameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '', - parameters.specularMap ? '#define USE_SPECULARMAP' : '', - parameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '', - parameters.metalnessMap ? '#define USE_METALNESSMAP' : '', - parameters.alphaMap ? '#define USE_ALPHAMAP' : '', - - parameters.vertexTangents ? '#define USE_TANGENT' : '', - parameters.vertexColors ? '#define USE_COLOR' : '', - - parameters.flatShading ? '#define FLAT_SHADED' : '', - - parameters.skinning ? '#define USE_SKINNING' : '', - parameters.useVertexTexture ? '#define BONE_TEXTURE' : '', - - parameters.morphTargets ? '#define USE_MORPHTARGETS' : '', - parameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '', - parameters.doubleSided ? '#define DOUBLE_SIDED' : '', - parameters.flipSided ? '#define FLIP_SIDED' : '', - - parameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '', - parameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '', - - parameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '', - - parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '', - parameters.logarithmicDepthBuffer && ( capabilities.isWebGL2 || extensions.get( 'EXT_frag_depth' ) ) ? '#define USE_LOGDEPTHBUF_EXT' : '', - - 'uniform mat4 modelMatrix;', - 'uniform mat4 modelViewMatrix;', - 'uniform mat4 projectionMatrix;', - 'uniform mat4 viewMatrix;', - 'uniform mat3 normalMatrix;', - 'uniform vec3 cameraPosition;', - - 'attribute vec3 position;', - 'attribute vec3 normal;', - 'attribute vec2 uv;', - - '#ifdef USE_TANGENT', - - ' attribute vec4 tangent;', - - '#endif', - - '#ifdef USE_COLOR', - - ' attribute vec3 color;', - - '#endif', - - '#ifdef USE_MORPHTARGETS', - - ' attribute vec3 morphTarget0;', - ' attribute vec3 morphTarget1;', - ' attribute vec3 morphTarget2;', - ' attribute vec3 morphTarget3;', - - ' #ifdef USE_MORPHNORMALS', - - ' attribute vec3 morphNormal0;', - ' attribute vec3 morphNormal1;', - ' attribute vec3 morphNormal2;', - ' attribute vec3 morphNormal3;', - - ' #else', - - ' attribute vec3 morphTarget4;', - ' attribute vec3 morphTarget5;', - ' attribute vec3 morphTarget6;', - ' attribute vec3 morphTarget7;', - - ' #endif', - - '#endif', - - '#ifdef USE_SKINNING', - - ' attribute vec4 skinIndex;', - ' attribute vec4 skinWeight;', - - '#endif', - - '\n' - - ].filter( filterEmptyLine ).join( '\n' ); - - prefixFragment = [ - - customExtensions, - - 'precision ' + parameters.precision + ' float;', - 'precision ' + parameters.precision + ' int;', - - '#define SHADER_NAME ' + shader.name, - - customDefines, - - parameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest + ( parameters.alphaTest % 1 ? '' : '.0' ) : '', // add '.0' if integer - - '#define GAMMA_FACTOR ' + gammaFactorDefine, - - ( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '', - ( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '', - - parameters.map ? '#define USE_MAP' : '', - parameters.matcap ? '#define USE_MATCAP' : '', - parameters.envMap ? '#define USE_ENVMAP' : '', - parameters.envMap ? '#define ' + envMapTypeDefine : '', - parameters.envMap ? '#define ' + envMapModeDefine : '', - parameters.envMap ? '#define ' + envMapBlendingDefine : '', - parameters.lightMap ? '#define USE_LIGHTMAP' : '', - parameters.aoMap ? '#define USE_AOMAP' : '', - parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '', - parameters.bumpMap ? '#define USE_BUMPMAP' : '', - parameters.normalMap ? '#define USE_NORMALMAP' : '', - ( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '', - parameters.specularMap ? '#define USE_SPECULARMAP' : '', - parameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '', - parameters.metalnessMap ? '#define USE_METALNESSMAP' : '', - parameters.alphaMap ? '#define USE_ALPHAMAP' : '', - - parameters.vertexTangents ? '#define USE_TANGENT' : '', - parameters.vertexColors ? '#define USE_COLOR' : '', - - parameters.gradientMap ? '#define USE_GRADIENTMAP' : '', - - parameters.flatShading ? '#define FLAT_SHADED' : '', - - parameters.doubleSided ? '#define DOUBLE_SIDED' : '', - parameters.flipSided ? '#define FLIP_SIDED' : '', - - parameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '', - parameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '', - - parameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '', - - parameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '', - - parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '', - parameters.logarithmicDepthBuffer && ( capabilities.isWebGL2 || extensions.get( 'EXT_frag_depth' ) ) ? '#define USE_LOGDEPTHBUF_EXT' : '', - - parameters.envMap && ( capabilities.isWebGL2 || extensions.get( 'EXT_shader_texture_lod' ) ) ? '#define TEXTURE_LOD_EXT' : '', - - 'uniform mat4 viewMatrix;', - 'uniform vec3 cameraPosition;', - - ( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '', - ( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below - ( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '', - - parameters.dithering ? '#define DITHERING' : '', - - ( parameters.outputEncoding || parameters.mapEncoding || parameters.matcapEncoding || parameters.envMapEncoding || parameters.emissiveMapEncoding ) ? - ShaderChunk[ 'encodings_pars_fragment' ] : '', // this code is required here because it is used by the various encoding/decoding function defined below - parameters.mapEncoding ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '', - parameters.matcapEncoding ? getTexelDecodingFunction( 'matcapTexelToLinear', parameters.matcapEncoding ) : '', - parameters.envMapEncoding ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '', - parameters.emissiveMapEncoding ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '', - parameters.outputEncoding ? getTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ) : '', - - parameters.depthPacking ? '#define DEPTH_PACKING ' + material.depthPacking : '', - - '\n' - - ].filter( filterEmptyLine ).join( '\n' ); - - } - - vertexShader = parseIncludes( vertexShader ); - vertexShader = replaceLightNums( vertexShader, parameters ); - vertexShader = replaceClippingPlaneNums( vertexShader, parameters ); - - fragmentShader = parseIncludes( fragmentShader ); - fragmentShader = replaceLightNums( fragmentShader, parameters ); - fragmentShader = replaceClippingPlaneNums( fragmentShader, parameters ); - - vertexShader = unrollLoops( vertexShader ); - fragmentShader = unrollLoops( fragmentShader ); - - if ( capabilities.isWebGL2 && ! material.isRawShaderMaterial ) { - - var isGLSL3ShaderMaterial = false; - - var versionRegex = /^\s*#version\s+300\s+es\s*\n/; - - if ( material.isShaderMaterial && - vertexShader.match( versionRegex ) !== null && - fragmentShader.match( versionRegex ) !== null ) { - - isGLSL3ShaderMaterial = true; - - vertexShader = vertexShader.replace( versionRegex, '' ); - fragmentShader = fragmentShader.replace( versionRegex, '' ); - - } - - // GLSL 3.0 conversion - prefixVertex = [ - '#version 300 es\n', - '#define attribute in', - '#define varying out', - '#define texture2D texture' - ].join( '\n' ) + '\n' + prefixVertex; - - prefixFragment = [ - '#version 300 es\n', - '#define varying in', - isGLSL3ShaderMaterial ? '' : 'out highp vec4 pc_fragColor;', - isGLSL3ShaderMaterial ? '' : '#define gl_FragColor pc_fragColor', - '#define gl_FragDepthEXT gl_FragDepth', - '#define texture2D texture', - '#define textureCube texture', - '#define texture2DProj textureProj', - '#define texture2DLodEXT textureLod', - '#define texture2DProjLodEXT textureProjLod', - '#define textureCubeLodEXT textureLod', - '#define texture2DGradEXT textureGrad', - '#define texture2DProjGradEXT textureProjGrad', - '#define textureCubeGradEXT textureGrad' - ].join( '\n' ) + '\n' + prefixFragment; - - } - - var vertexGlsl = prefixVertex + vertexShader; - var fragmentGlsl = prefixFragment + fragmentShader; - - // console.log( '*VERTEX*', vertexGlsl ); - // console.log( '*FRAGMENT*', fragmentGlsl ); - - var glVertexShader = WebGLShader( gl, 35633, vertexGlsl, renderer.debug.checkShaderErrors ); - var glFragmentShader = WebGLShader( gl, 35632, fragmentGlsl, renderer.debug.checkShaderErrors ); - - gl.attachShader( program, glVertexShader ); - gl.attachShader( program, glFragmentShader ); - - // Force a particular attribute to index 0. - - if ( material.index0AttributeName !== undefined ) { - - gl.bindAttribLocation( program, 0, material.index0AttributeName ); - - } else if ( parameters.morphTargets === true ) { - - // programs with morphTargets displace position out of attribute 0 - gl.bindAttribLocation( program, 0, 'position' ); - - } - - gl.linkProgram( program ); - - // check for link errors - if ( renderer.debug.checkShaderErrors ) { - - var programLog = gl.getProgramInfoLog( program ).trim(); - var vertexLog = gl.getShaderInfoLog( glVertexShader ).trim(); - var fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim(); - - var runnable = true; - var haveDiagnostics = true; - - // console.log( '**VERTEX**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glVertexShader ) ); - // console.log( '**FRAGMENT**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glFragmentShader ) ); - - if ( gl.getProgramParameter( program, 35714 ) === false ) { - - runnable = false; - - console.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), '35715', gl.getProgramParameter( program, 35715 ), 'gl.getProgramInfoLog', programLog, vertexLog, fragmentLog ); - - } else if ( programLog !== '' ) { - - console.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog ); - - } else if ( vertexLog === '' || fragmentLog === '' ) { - - haveDiagnostics = false; - - } - - if ( haveDiagnostics ) { - - this.diagnostics = { - - runnable: runnable, - material: material, - - programLog: programLog, - - vertexShader: { - - log: vertexLog, - prefix: prefixVertex - - }, - - fragmentShader: { - - log: fragmentLog, - prefix: prefixFragment - - } - - }; - - } - - } - - // clean up - - gl.deleteShader( glVertexShader ); - gl.deleteShader( glFragmentShader ); - - // set up caching for uniform locations - - var cachedUniforms; - - this.getUniforms = function () { - - if ( cachedUniforms === undefined ) { - - cachedUniforms = new WebGLUniforms( gl, program, textures ); - - } - - return cachedUniforms; - - }; - - // set up caching for attribute locations - - var cachedAttributes; - - this.getAttributes = function () { - - if ( cachedAttributes === undefined ) { - - cachedAttributes = fetchAttributeLocations( gl, program ); - - } - - return cachedAttributes; - - }; - - // free resource - - this.destroy = function () { - - gl.deleteProgram( program ); - this.program = undefined; - - }; - - // DEPRECATED - - Object.defineProperties( this, { - - uniforms: { - get: function () { - - console.warn( 'THREE.WebGLProgram: .uniforms is now .getUniforms().' ); - return this.getUniforms(); - - } - }, - - attributes: { - get: function () { - - console.warn( 'THREE.WebGLProgram: .attributes is now .getAttributes().' ); - return this.getAttributes(); - - } - } - - } ); - - - // - - this.name = shader.name; - this.id = programIdCount ++; - this.code = code; - this.usedTimes = 1; - this.program = program; - this.vertexShader = glVertexShader; - this.fragmentShader = glFragmentShader; - - return this; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function WebGLPrograms( renderer, extensions, capabilities, textures ) { - - var programs = []; - - var shaderIDs = { - MeshDepthMaterial: 'depth', - MeshDistanceMaterial: 'distanceRGBA', - MeshNormalMaterial: 'normal', - MeshBasicMaterial: 'basic', - MeshLambertMaterial: 'lambert', - MeshPhongMaterial: 'phong', - MeshToonMaterial: 'phong', - MeshStandardMaterial: 'physical', - MeshPhysicalMaterial: 'physical', - MeshMatcapMaterial: 'matcap', - LineBasicMaterial: 'basic', - LineDashedMaterial: 'dashed', - PointsMaterial: 'points', - ShadowMaterial: 'shadow', - SpriteMaterial: 'sprite' - }; - - var parameterNames = [ - "precision", "supportsVertexTextures", "map", "mapEncoding", "matcap", "matcapEncoding", "envMap", "envMapMode", "envMapEncoding", - "lightMap", "aoMap", "emissiveMap", "emissiveMapEncoding", "bumpMap", "normalMap", "objectSpaceNormalMap", "displacementMap", "specularMap", - "roughnessMap", "metalnessMap", "gradientMap", - "alphaMap", "combine", "vertexColors", "vertexTangents", "fog", "useFog", "fogExp", - "flatShading", "sizeAttenuation", "logarithmicDepthBuffer", "skinning", - "maxBones", "useVertexTexture", "morphTargets", "morphNormals", - "maxMorphTargets", "maxMorphNormals", "premultipliedAlpha", - "numDirLights", "numPointLights", "numSpotLights", "numHemiLights", "numRectAreaLights", - "shadowMapEnabled", "shadowMapType", "toneMapping", 'physicallyCorrectLights', - "alphaTest", "doubleSided", "flipSided", "numClippingPlanes", "numClipIntersection", "depthPacking", "dithering" - ]; - - - function allocateBones( object ) { - - var skeleton = object.skeleton; - var bones = skeleton.bones; - - if ( capabilities.floatVertexTextures ) { - - return 1024; - - } else { - - // default for when object is not specified - // ( for example when prebuilding shader to be used with multiple objects ) - // - // - leave some extra space for other uniforms - // - limit here is ANGLE's 254 max uniform vectors - // (up to 54 should be safe) - - var nVertexUniforms = capabilities.maxVertexUniforms; - var nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 ); - - var maxBones = Math.min( nVertexMatrices, bones.length ); - - if ( maxBones < bones.length ) { - - console.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' ); - return 0; - - } - - return maxBones; - - } - - } - - function getTextureEncodingFromMap( map, gammaOverrideLinear ) { - - var encoding; - - if ( ! map ) { - - encoding = LinearEncoding; - - } else if ( map.isTexture ) { - - encoding = map.encoding; - - } else if ( map.isWebGLRenderTarget ) { - - console.warn( "THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead." ); - encoding = map.texture.encoding; - - } - - // add backwards compatibility for WebGLRenderer.gammaInput/gammaOutput parameter, should probably be removed at some point. - if ( encoding === LinearEncoding && gammaOverrideLinear ) { - - encoding = GammaEncoding; - - } - - return encoding; - - } - - this.getParameters = function ( material, lights, shadows, fog, nClipPlanes, nClipIntersection, object ) { - - var shaderID = shaderIDs[ material.type ]; - - // heuristics to create shader parameters according to lights in the scene - // (not to blow over maxLights budget) - - var maxBones = object.isSkinnedMesh ? allocateBones( object ) : 0; - var precision = capabilities.precision; - - if ( material.precision !== null ) { - - precision = capabilities.getMaxPrecision( material.precision ); - - if ( precision !== material.precision ) { - - console.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' ); - - } - - } - - var currentRenderTarget = renderer.getRenderTarget(); - - var parameters = { - - shaderID: shaderID, - - precision: precision, - supportsVertexTextures: capabilities.vertexTextures, - outputEncoding: getTextureEncodingFromMap( ( ! currentRenderTarget ) ? null : currentRenderTarget.texture, renderer.gammaOutput ), - map: !! material.map, - mapEncoding: getTextureEncodingFromMap( material.map, renderer.gammaInput ), - matcap: !! material.matcap, - matcapEncoding: getTextureEncodingFromMap( material.matcap, renderer.gammaInput ), - envMap: !! material.envMap, - envMapMode: material.envMap && material.envMap.mapping, - envMapEncoding: getTextureEncodingFromMap( material.envMap, renderer.gammaInput ), - envMapCubeUV: ( !! material.envMap ) && ( ( material.envMap.mapping === CubeUVReflectionMapping ) || ( material.envMap.mapping === CubeUVRefractionMapping ) ), - lightMap: !! material.lightMap, - aoMap: !! material.aoMap, - emissiveMap: !! material.emissiveMap, - emissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap, renderer.gammaInput ), - bumpMap: !! material.bumpMap, - normalMap: !! material.normalMap, - objectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap, - displacementMap: !! material.displacementMap, - roughnessMap: !! material.roughnessMap, - metalnessMap: !! material.metalnessMap, - specularMap: !! material.specularMap, - alphaMap: !! material.alphaMap, - - gradientMap: !! material.gradientMap, - - combine: material.combine, - - vertexTangents: ( material.normalMap && material.vertexTangents ), - vertexColors: material.vertexColors, - - fog: !! fog, - useFog: material.fog, - fogExp: ( fog && fog.isFogExp2 ), - - flatShading: material.flatShading, - - sizeAttenuation: material.sizeAttenuation, - logarithmicDepthBuffer: capabilities.logarithmicDepthBuffer, - - skinning: material.skinning && maxBones > 0, - maxBones: maxBones, - useVertexTexture: capabilities.floatVertexTextures, - - morphTargets: material.morphTargets, - morphNormals: material.morphNormals, - maxMorphTargets: renderer.maxMorphTargets, - maxMorphNormals: renderer.maxMorphNormals, - - numDirLights: lights.directional.length, - numPointLights: lights.point.length, - numSpotLights: lights.spot.length, - numRectAreaLights: lights.rectArea.length, - numHemiLights: lights.hemi.length, - - numClippingPlanes: nClipPlanes, - numClipIntersection: nClipIntersection, - - dithering: material.dithering, - - shadowMapEnabled: renderer.shadowMap.enabled && object.receiveShadow && shadows.length > 0, - shadowMapType: renderer.shadowMap.type, - - toneMapping: renderer.toneMapping, - physicallyCorrectLights: renderer.physicallyCorrectLights, - - premultipliedAlpha: material.premultipliedAlpha, - - alphaTest: material.alphaTest, - doubleSided: material.side === DoubleSide, - flipSided: material.side === BackSide, - - depthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false - - }; - - return parameters; - - }; - - this.getProgramCode = function ( material, parameters ) { - - var array = []; - - if ( parameters.shaderID ) { - - array.push( parameters.shaderID ); - - } else { - - array.push( material.fragmentShader ); - array.push( material.vertexShader ); - - } - - if ( material.defines !== undefined ) { - - for ( var name in material.defines ) { - - array.push( name ); - array.push( material.defines[ name ] ); - - } - - } - - for ( var i = 0; i < parameterNames.length; i ++ ) { - - array.push( parameters[ parameterNames[ i ] ] ); - - } - - array.push( material.onBeforeCompile.toString() ); - - array.push( renderer.gammaOutput ); - - array.push( renderer.gammaFactor ); - - return array.join(); - - }; - - this.acquireProgram = function ( material, shader, parameters, code ) { - - var program; - - // Check if code has been already compiled - for ( var p = 0, pl = programs.length; p < pl; p ++ ) { - - var programInfo = programs[ p ]; - - if ( programInfo.code === code ) { - - program = programInfo; - ++ program.usedTimes; - - break; - - } - - } - - if ( program === undefined ) { - - program = new WebGLProgram( renderer, extensions, code, material, shader, parameters, capabilities, textures ); - programs.push( program ); - - } - - return program; - - }; - - this.releaseProgram = function ( program ) { - - if ( -- program.usedTimes === 0 ) { - - // Remove from unordered set - var i = programs.indexOf( program ); - programs[ i ] = programs[ programs.length - 1 ]; - programs.pop(); - - // Free WebGL resources - program.destroy(); - - } - - }; - - // Exposed for resource monitoring & error feedback via renderer.info: - this.programs = programs; - - } - - /** - * @author fordacious / fordacious.github.io - */ - - function WebGLProperties() { - - var properties = new WeakMap(); - - function get( object ) { - - var map = properties.get( object ); - - if ( map === undefined ) { - - map = {}; - properties.set( object, map ); - - } - - return map; - - } - - function remove( object ) { - - properties.delete( object ); - - } - - function update( object, key, value ) { - - properties.get( object )[ key ] = value; - - } - - function dispose() { - - properties = new WeakMap(); - - } - - return { - get: get, - remove: remove, - update: update, - dispose: dispose - }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function painterSortStable( a, b ) { - - if ( a.groupOrder !== b.groupOrder ) { - - return a.groupOrder - b.groupOrder; - - } else if ( a.renderOrder !== b.renderOrder ) { - - return a.renderOrder - b.renderOrder; - - } else if ( a.program !== b.program ) { - - return a.program.id - b.program.id; - - } else if ( a.material.id !== b.material.id ) { - - return a.material.id - b.material.id; - - } else if ( a.z !== b.z ) { - - return a.z - b.z; - - } else { - - return a.id - b.id; - - } - - } - - function reversePainterSortStable( a, b ) { - - if ( a.groupOrder !== b.groupOrder ) { - - return a.groupOrder - b.groupOrder; - - } else if ( a.renderOrder !== b.renderOrder ) { - - return a.renderOrder - b.renderOrder; - - } else if ( a.z !== b.z ) { - - return b.z - a.z; - - } else { - - return a.id - b.id; - - } - - } - - - function WebGLRenderList() { - - var renderItems = []; - var renderItemsIndex = 0; - - var opaque = []; - var transparent = []; - - var defaultProgram = { id: - 1 }; - - function init() { - - renderItemsIndex = 0; - - opaque.length = 0; - transparent.length = 0; - - } - - function getNextRenderItem( object, geometry, material, groupOrder, z, group ) { - - var renderItem = renderItems[ renderItemsIndex ]; - - if ( renderItem === undefined ) { - - renderItem = { - id: object.id, - object: object, - geometry: geometry, - material: material, - program: material.program || defaultProgram, - groupOrder: groupOrder, - renderOrder: object.renderOrder, - z: z, - group: group - }; - - renderItems[ renderItemsIndex ] = renderItem; - - } else { - - renderItem.id = object.id; - renderItem.object = object; - renderItem.geometry = geometry; - renderItem.material = material; - renderItem.program = material.program || defaultProgram; - renderItem.groupOrder = groupOrder; - renderItem.renderOrder = object.renderOrder; - renderItem.z = z; - renderItem.group = group; - - } - - renderItemsIndex ++; - - return renderItem; - - } - - function push( object, geometry, material, groupOrder, z, group ) { - - var renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group ); - - ( material.transparent === true ? transparent : opaque ).push( renderItem ); - - } - - function unshift( object, geometry, material, groupOrder, z, group ) { - - var renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group ); - - ( material.transparent === true ? transparent : opaque ).unshift( renderItem ); - - } - - function sort() { - - if ( opaque.length > 1 ) opaque.sort( painterSortStable ); - if ( transparent.length > 1 ) transparent.sort( reversePainterSortStable ); - - } - - return { - opaque: opaque, - transparent: transparent, - - init: init, - push: push, - unshift: unshift, - - sort: sort - }; - - } - - function WebGLRenderLists() { - - var lists = {}; - - function onSceneDispose( event ) { - - var scene = event.target; - - scene.removeEventListener( 'dispose', onSceneDispose ); - - delete lists[ scene.id ]; - - } - - function get( scene, camera ) { - - var cameras = lists[ scene.id ]; - var list; - if ( cameras === undefined ) { - - list = new WebGLRenderList(); - lists[ scene.id ] = {}; - lists[ scene.id ][ camera.id ] = list; - - scene.addEventListener( 'dispose', onSceneDispose ); - - } else { - - list = cameras[ camera.id ]; - if ( list === undefined ) { - - list = new WebGLRenderList(); - cameras[ camera.id ] = list; - - } - - } - - return list; - - } - - function dispose() { - - lists = {}; - - } - - return { - get: get, - dispose: dispose - }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function UniformsCache() { - - var lights = {}; - - return { - - get: function ( light ) { - - if ( lights[ light.id ] !== undefined ) { - - return lights[ light.id ]; - - } - - var uniforms; - - switch ( light.type ) { - - case 'DirectionalLight': - uniforms = { - direction: new Vector3(), - color: new Color(), - - shadow: false, - shadowBias: 0, - shadowRadius: 1, - shadowMapSize: new Vector2() - }; - break; - - case 'SpotLight': - uniforms = { - position: new Vector3(), - direction: new Vector3(), - color: new Color(), - distance: 0, - coneCos: 0, - penumbraCos: 0, - decay: 0, - - shadow: false, - shadowBias: 0, - shadowRadius: 1, - shadowMapSize: new Vector2() - }; - break; - - case 'PointLight': - uniforms = { - position: new Vector3(), - color: new Color(), - distance: 0, - decay: 0, - - shadow: false, - shadowBias: 0, - shadowRadius: 1, - shadowMapSize: new Vector2(), - shadowCameraNear: 1, - shadowCameraFar: 1000 - }; - break; - - case 'HemisphereLight': - uniforms = { - direction: new Vector3(), - skyColor: new Color(), - groundColor: new Color() - }; - break; - - case 'RectAreaLight': - uniforms = { - color: new Color(), - position: new Vector3(), - halfWidth: new Vector3(), - halfHeight: new Vector3() - // TODO (abelnation): set RectAreaLight shadow uniforms - }; - break; - - } - - lights[ light.id ] = uniforms; - - return uniforms; - - } - - }; - - } - - var count = 0; - - function WebGLLights() { - - var cache = new UniformsCache(); - - var state = { - - id: count ++, - - hash: { - stateID: - 1, - directionalLength: - 1, - pointLength: - 1, - spotLength: - 1, - rectAreaLength: - 1, - hemiLength: - 1, - shadowsLength: - 1 - }, - - ambient: [ 0, 0, 0 ], - probe: [], - directional: [], - directionalShadowMap: [], - directionalShadowMatrix: [], - spot: [], - spotShadowMap: [], - spotShadowMatrix: [], - rectArea: [], - point: [], - pointShadowMap: [], - pointShadowMatrix: [], - hemi: [] - - }; - - for ( var i = 0; i < 9; i ++ ) state.probe.push( new Vector3() ); - - var vector3 = new Vector3(); - var matrix4 = new Matrix4(); - var matrix42 = new Matrix4(); - - function setup( lights, shadows, camera ) { - - var r = 0, g = 0, b = 0; - - for ( var i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 ); - - var directionalLength = 0; - var pointLength = 0; - var spotLength = 0; - var rectAreaLength = 0; - var hemiLength = 0; - - var viewMatrix = camera.matrixWorldInverse; - - for ( var i = 0, l = lights.length; i < l; i ++ ) { - - var light = lights[ i ]; - - var color = light.color; - var intensity = light.intensity; - var distance = light.distance; - - var shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null; - - if ( light.isAmbientLight ) { - - r += color.r * intensity; - g += color.g * intensity; - b += color.b * intensity; - - } else if ( light.isLightProbe ) { - - for ( var j = 0; j < 9; j ++ ) { - - state.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity ); - - } - - } else if ( light.isDirectionalLight ) { - - var uniforms = cache.get( light ); - - uniforms.color.copy( light.color ).multiplyScalar( light.intensity ); - uniforms.direction.setFromMatrixPosition( light.matrixWorld ); - vector3.setFromMatrixPosition( light.target.matrixWorld ); - uniforms.direction.sub( vector3 ); - uniforms.direction.transformDirection( viewMatrix ); - - uniforms.shadow = light.castShadow; - - if ( light.castShadow ) { - - var shadow = light.shadow; - - uniforms.shadowBias = shadow.bias; - uniforms.shadowRadius = shadow.radius; - uniforms.shadowMapSize = shadow.mapSize; - - } - - state.directionalShadowMap[ directionalLength ] = shadowMap; - state.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix; - state.directional[ directionalLength ] = uniforms; - - directionalLength ++; - - } else if ( light.isSpotLight ) { - - var uniforms = cache.get( light ); - - uniforms.position.setFromMatrixPosition( light.matrixWorld ); - uniforms.position.applyMatrix4( viewMatrix ); - - uniforms.color.copy( color ).multiplyScalar( intensity ); - uniforms.distance = distance; - - uniforms.direction.setFromMatrixPosition( light.matrixWorld ); - vector3.setFromMatrixPosition( light.target.matrixWorld ); - uniforms.direction.sub( vector3 ); - uniforms.direction.transformDirection( viewMatrix ); - - uniforms.coneCos = Math.cos( light.angle ); - uniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) ); - uniforms.decay = light.decay; - - uniforms.shadow = light.castShadow; - - if ( light.castShadow ) { - - var shadow = light.shadow; - - uniforms.shadowBias = shadow.bias; - uniforms.shadowRadius = shadow.radius; - uniforms.shadowMapSize = shadow.mapSize; - - } - - state.spotShadowMap[ spotLength ] = shadowMap; - state.spotShadowMatrix[ spotLength ] = light.shadow.matrix; - state.spot[ spotLength ] = uniforms; - - spotLength ++; - - } else if ( light.isRectAreaLight ) { - - var uniforms = cache.get( light ); - - // (a) intensity is the total visible light emitted - //uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) ); - - // (b) intensity is the brightness of the light - uniforms.color.copy( color ).multiplyScalar( intensity ); - - uniforms.position.setFromMatrixPosition( light.matrixWorld ); - uniforms.position.applyMatrix4( viewMatrix ); - - // extract local rotation of light to derive width/height half vectors - matrix42.identity(); - matrix4.copy( light.matrixWorld ); - matrix4.premultiply( viewMatrix ); - matrix42.extractRotation( matrix4 ); - - uniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 ); - uniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 ); - - uniforms.halfWidth.applyMatrix4( matrix42 ); - uniforms.halfHeight.applyMatrix4( matrix42 ); - - // TODO (abelnation): RectAreaLight distance? - // uniforms.distance = distance; - - state.rectArea[ rectAreaLength ] = uniforms; - - rectAreaLength ++; - - } else if ( light.isPointLight ) { - - var uniforms = cache.get( light ); - - uniforms.position.setFromMatrixPosition( light.matrixWorld ); - uniforms.position.applyMatrix4( viewMatrix ); - - uniforms.color.copy( light.color ).multiplyScalar( light.intensity ); - uniforms.distance = light.distance; - uniforms.decay = light.decay; - - uniforms.shadow = light.castShadow; - - if ( light.castShadow ) { - - var shadow = light.shadow; - - uniforms.shadowBias = shadow.bias; - uniforms.shadowRadius = shadow.radius; - uniforms.shadowMapSize = shadow.mapSize; - uniforms.shadowCameraNear = shadow.camera.near; - uniforms.shadowCameraFar = shadow.camera.far; - - } - - state.pointShadowMap[ pointLength ] = shadowMap; - state.pointShadowMatrix[ pointLength ] = light.shadow.matrix; - state.point[ pointLength ] = uniforms; - - pointLength ++; - - } else if ( light.isHemisphereLight ) { - - var uniforms = cache.get( light ); - - uniforms.direction.setFromMatrixPosition( light.matrixWorld ); - uniforms.direction.transformDirection( viewMatrix ); - uniforms.direction.normalize(); - - uniforms.skyColor.copy( light.color ).multiplyScalar( intensity ); - uniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity ); - - state.hemi[ hemiLength ] = uniforms; - - hemiLength ++; - - } - - } - - state.ambient[ 0 ] = r; - state.ambient[ 1 ] = g; - state.ambient[ 2 ] = b; - - state.directional.length = directionalLength; - state.spot.length = spotLength; - state.rectArea.length = rectAreaLength; - state.point.length = pointLength; - state.hemi.length = hemiLength; - - state.hash.stateID = state.id; - state.hash.directionalLength = directionalLength; - state.hash.pointLength = pointLength; - state.hash.spotLength = spotLength; - state.hash.rectAreaLength = rectAreaLength; - state.hash.hemiLength = hemiLength; - state.hash.shadowsLength = shadows.length; - - } - - return { - setup: setup, - state: state - }; - - } - - /** - * @author Mugen87 / https://github.com/Mugen87 - */ - - function WebGLRenderState() { - - var lights = new WebGLLights(); - - var lightsArray = []; - var shadowsArray = []; - - function init() { - - lightsArray.length = 0; - shadowsArray.length = 0; - - } - - function pushLight( light ) { - - lightsArray.push( light ); - - } - - function pushShadow( shadowLight ) { - - shadowsArray.push( shadowLight ); - - } - - function setupLights( camera ) { - - lights.setup( lightsArray, shadowsArray, camera ); - - } - - var state = { - lightsArray: lightsArray, - shadowsArray: shadowsArray, - - lights: lights - }; - - return { - init: init, - state: state, - setupLights: setupLights, - - pushLight: pushLight, - pushShadow: pushShadow - }; - - } - - function WebGLRenderStates() { - - var renderStates = {}; - - function onSceneDispose( event ) { - - var scene = event.target; - - scene.removeEventListener( 'dispose', onSceneDispose ); - - delete renderStates[ scene.id ]; - - } - - function get( scene, camera ) { - - var renderState; - - if ( renderStates[ scene.id ] === undefined ) { - - renderState = new WebGLRenderState(); - renderStates[ scene.id ] = {}; - renderStates[ scene.id ][ camera.id ] = renderState; - - scene.addEventListener( 'dispose', onSceneDispose ); - - } else { - - if ( renderStates[ scene.id ][ camera.id ] === undefined ) { - - renderState = new WebGLRenderState(); - renderStates[ scene.id ][ camera.id ] = renderState; - - } else { - - renderState = renderStates[ scene.id ][ camera.id ]; - - } - - } - - return renderState; - - } - - function dispose() { - - renderStates = {}; - - } - - return { - get: get, - dispose: dispose - }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - * @author bhouston / https://clara.io - * @author WestLangley / http://github.com/WestLangley - * - * parameters = { - * - * opacity: , - * - * map: new THREE.Texture( ), - * - * alphaMap: new THREE.Texture( ), - * - * displacementMap: new THREE.Texture( ), - * displacementScale: , - * displacementBias: , - * - * wireframe: , - * wireframeLinewidth: - * } - */ - - function MeshDepthMaterial( parameters ) { - - Material.call( this ); - - this.type = 'MeshDepthMaterial'; - - this.depthPacking = BasicDepthPacking; - - this.skinning = false; - this.morphTargets = false; - - this.map = null; - - this.alphaMap = null; - - this.displacementMap = null; - this.displacementScale = 1; - this.displacementBias = 0; - - this.wireframe = false; - this.wireframeLinewidth = 1; - - this.fog = false; - this.lights = false; - - this.setValues( parameters ); - - } - - MeshDepthMaterial.prototype = Object.create( Material.prototype ); - MeshDepthMaterial.prototype.constructor = MeshDepthMaterial; - - MeshDepthMaterial.prototype.isMeshDepthMaterial = true; - - MeshDepthMaterial.prototype.copy = function ( source ) { - - Material.prototype.copy.call( this, source ); - - this.depthPacking = source.depthPacking; - - this.skinning = source.skinning; - this.morphTargets = source.morphTargets; - - this.map = source.map; - - this.alphaMap = source.alphaMap; - - this.displacementMap = source.displacementMap; - this.displacementScale = source.displacementScale; - this.displacementBias = source.displacementBias; - - this.wireframe = source.wireframe; - this.wireframeLinewidth = source.wireframeLinewidth; - - return this; - - }; - - /** - * @author WestLangley / http://github.com/WestLangley - * - * parameters = { - * - * referencePosition: , - * nearDistance: , - * farDistance: , - * - * skinning: , - * morphTargets: , - * - * map: new THREE.Texture( ), - * - * alphaMap: new THREE.Texture( ), - * - * displacementMap: new THREE.Texture( ), - * displacementScale: , - * displacementBias: - * - * } - */ - - function MeshDistanceMaterial( parameters ) { - - Material.call( this ); - - this.type = 'MeshDistanceMaterial'; - - this.referencePosition = new Vector3(); - this.nearDistance = 1; - this.farDistance = 1000; - - this.skinning = false; - this.morphTargets = false; - - this.map = null; - - this.alphaMap = null; - - this.displacementMap = null; - this.displacementScale = 1; - this.displacementBias = 0; - - this.fog = false; - this.lights = false; - - this.setValues( parameters ); - - } - - MeshDistanceMaterial.prototype = Object.create( Material.prototype ); - MeshDistanceMaterial.prototype.constructor = MeshDistanceMaterial; - - MeshDistanceMaterial.prototype.isMeshDistanceMaterial = true; - - MeshDistanceMaterial.prototype.copy = function ( source ) { - - Material.prototype.copy.call( this, source ); - - this.referencePosition.copy( source.referencePosition ); - this.nearDistance = source.nearDistance; - this.farDistance = source.farDistance; - - this.skinning = source.skinning; - this.morphTargets = source.morphTargets; - - this.map = source.map; - - this.alphaMap = source.alphaMap; - - this.displacementMap = source.displacementMap; - this.displacementScale = source.displacementScale; - this.displacementBias = source.displacementBias; - - return this; - - }; - - /** - * @author alteredq / http://alteredqualia.com/ - * @author mrdoob / http://mrdoob.com/ - */ - - function WebGLShadowMap( _renderer, _objects, maxTextureSize ) { - - var _frustum = new Frustum(), - _projScreenMatrix = new Matrix4(), - - _shadowMapSize = new Vector2(), - _maxShadowMapSize = new Vector2( maxTextureSize, maxTextureSize ), - - _lookTarget = new Vector3(), - _lightPositionWorld = new Vector3(), - - _MorphingFlag = 1, - _SkinningFlag = 2, - - _NumberOfMaterialVariants = ( _MorphingFlag | _SkinningFlag ) + 1, - - _depthMaterials = new Array( _NumberOfMaterialVariants ), - _distanceMaterials = new Array( _NumberOfMaterialVariants ), - - _materialCache = {}; - - var shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide }; - - var cubeDirections = [ - new Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ), - new Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 ) - ]; - - var cubeUps = [ - new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), - new Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ), new Vector3( 0, 0, - 1 ) - ]; - - var cube2DViewPorts = [ - new Vector4(), new Vector4(), new Vector4(), - new Vector4(), new Vector4(), new Vector4() - ]; - - // init - - for ( var i = 0; i !== _NumberOfMaterialVariants; ++ i ) { - - var useMorphing = ( i & _MorphingFlag ) !== 0; - var useSkinning = ( i & _SkinningFlag ) !== 0; - - var depthMaterial = new MeshDepthMaterial( { - - depthPacking: RGBADepthPacking, - - morphTargets: useMorphing, - skinning: useSkinning - - } ); - - _depthMaterials[ i ] = depthMaterial; - - // - - var distanceMaterial = new MeshDistanceMaterial( { - - morphTargets: useMorphing, - skinning: useSkinning - - } ); - - _distanceMaterials[ i ] = distanceMaterial; - - } - - // - - var scope = this; - - this.enabled = false; - - this.autoUpdate = true; - this.needsUpdate = false; - - this.type = PCFShadowMap; - - this.render = function ( lights, scene, camera ) { - - if ( scope.enabled === false ) return; - if ( scope.autoUpdate === false && scope.needsUpdate === false ) return; - - if ( lights.length === 0 ) return; - - var currentRenderTarget = _renderer.getRenderTarget(); - var activeCubeFace = _renderer.getActiveCubeFace(); - var activeMipMapLevel = _renderer.getActiveMipMapLevel(); - - var _state = _renderer.state; - - // Set GL state for depth map. - _state.setBlending( NoBlending ); - _state.buffers.color.setClear( 1, 1, 1, 1 ); - _state.buffers.depth.setTest( true ); - _state.setScissorTest( false ); - - // render depth map - - var faceCount; - - for ( var i = 0, il = lights.length; i < il; i ++ ) { - - var light = lights[ i ]; - var shadow = light.shadow; - var isPointLight = light && light.isPointLight; - - if ( shadow === undefined ) { - - console.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' ); - continue; - - } - - var shadowCamera = shadow.camera; - - _shadowMapSize.copy( shadow.mapSize ); - _shadowMapSize.min( _maxShadowMapSize ); - - if ( isPointLight ) { - - var vpWidth = _shadowMapSize.x; - var vpHeight = _shadowMapSize.y; - - // These viewports map a cube-map onto a 2D texture with the - // following orientation: - // - // xzXZ - // y Y - // - // X - Positive x direction - // x - Negative x direction - // Y - Positive y direction - // y - Negative y direction - // Z - Positive z direction - // z - Negative z direction - - // positive X - cube2DViewPorts[ 0 ].set( vpWidth * 2, vpHeight, vpWidth, vpHeight ); - // negative X - cube2DViewPorts[ 1 ].set( 0, vpHeight, vpWidth, vpHeight ); - // positive Z - cube2DViewPorts[ 2 ].set( vpWidth * 3, vpHeight, vpWidth, vpHeight ); - // negative Z - cube2DViewPorts[ 3 ].set( vpWidth, vpHeight, vpWidth, vpHeight ); - // positive Y - cube2DViewPorts[ 4 ].set( vpWidth * 3, 0, vpWidth, vpHeight ); - // negative Y - cube2DViewPorts[ 5 ].set( vpWidth, 0, vpWidth, vpHeight ); - - _shadowMapSize.x *= 4.0; - _shadowMapSize.y *= 2.0; - - } - - if ( shadow.map === null ) { - - var pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat }; - - shadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars ); - shadow.map.texture.name = light.name + ".shadowMap"; - - shadowCamera.updateProjectionMatrix(); - - } - - if ( shadow.isSpotLightShadow ) { - - shadow.update( light ); - - } - - var shadowMap = shadow.map; - var shadowMatrix = shadow.matrix; - - _lightPositionWorld.setFromMatrixPosition( light.matrixWorld ); - shadowCamera.position.copy( _lightPositionWorld ); - - if ( isPointLight ) { - - faceCount = 6; - - // for point lights we set the shadow matrix to be a translation-only matrix - // equal to inverse of the light's position - - shadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z ); - - } else { - - faceCount = 1; - - _lookTarget.setFromMatrixPosition( light.target.matrixWorld ); - shadowCamera.lookAt( _lookTarget ); - shadowCamera.updateMatrixWorld(); - - // compute shadow matrix - - shadowMatrix.set( - 0.5, 0.0, 0.0, 0.5, - 0.0, 0.5, 0.0, 0.5, - 0.0, 0.0, 0.5, 0.5, - 0.0, 0.0, 0.0, 1.0 - ); - - shadowMatrix.multiply( shadowCamera.projectionMatrix ); - shadowMatrix.multiply( shadowCamera.matrixWorldInverse ); - - } - - _renderer.setRenderTarget( shadowMap ); - _renderer.clear(); - - // render shadow map for each cube face (if omni-directional) or - // run a single pass if not - - for ( var face = 0; face < faceCount; face ++ ) { - - if ( isPointLight ) { - - _lookTarget.copy( shadowCamera.position ); - _lookTarget.add( cubeDirections[ face ] ); - shadowCamera.up.copy( cubeUps[ face ] ); - shadowCamera.lookAt( _lookTarget ); - shadowCamera.updateMatrixWorld(); - - var vpDimensions = cube2DViewPorts[ face ]; - _state.viewport( vpDimensions ); - - } - - // update camera matrices and frustum - - _projScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse ); - _frustum.setFromMatrix( _projScreenMatrix ); - - // set object matrices & frustum culling - - renderObject( scene, camera, shadowCamera, isPointLight ); - - } - - } - - scope.needsUpdate = false; - - _renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipMapLevel ); - - }; - - function getDepthMaterial( object, material, isPointLight, lightPositionWorld, shadowCameraNear, shadowCameraFar ) { - - var geometry = object.geometry; - - var result = null; - - var materialVariants = _depthMaterials; - var customMaterial = object.customDepthMaterial; - - if ( isPointLight ) { - - materialVariants = _distanceMaterials; - customMaterial = object.customDistanceMaterial; - - } - - if ( ! customMaterial ) { - - var useMorphing = false; - - if ( material.morphTargets ) { - - if ( geometry && geometry.isBufferGeometry ) { - - useMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0; - - } else if ( geometry && geometry.isGeometry ) { - - useMorphing = geometry.morphTargets && geometry.morphTargets.length > 0; - - } - - } - - if ( object.isSkinnedMesh && material.skinning === false ) { - - console.warn( 'THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:', object ); - - } - - var useSkinning = object.isSkinnedMesh && material.skinning; - - var variantIndex = 0; - - if ( useMorphing ) variantIndex |= _MorphingFlag; - if ( useSkinning ) variantIndex |= _SkinningFlag; - - result = materialVariants[ variantIndex ]; - - } else { - - result = customMaterial; - - } - - if ( _renderer.localClippingEnabled && - material.clipShadows === true && - material.clippingPlanes.length !== 0 ) { - - // in this case we need a unique material instance reflecting the - // appropriate state - - var keyA = result.uuid, keyB = material.uuid; - - var materialsForVariant = _materialCache[ keyA ]; - - if ( materialsForVariant === undefined ) { - - materialsForVariant = {}; - _materialCache[ keyA ] = materialsForVariant; - - } - - var cachedMaterial = materialsForVariant[ keyB ]; - - if ( cachedMaterial === undefined ) { - - cachedMaterial = result.clone(); - materialsForVariant[ keyB ] = cachedMaterial; - - } - - result = cachedMaterial; - - } - - result.visible = material.visible; - result.wireframe = material.wireframe; - - result.side = ( material.shadowSide != null ) ? material.shadowSide : shadowSide[ material.side ]; - - result.clipShadows = material.clipShadows; - result.clippingPlanes = material.clippingPlanes; - result.clipIntersection = material.clipIntersection; - - result.wireframeLinewidth = material.wireframeLinewidth; - result.linewidth = material.linewidth; - - if ( isPointLight && result.isMeshDistanceMaterial ) { - - result.referencePosition.copy( lightPositionWorld ); - result.nearDistance = shadowCameraNear; - result.farDistance = shadowCameraFar; - - } - - return result; - - } - - function renderObject( object, camera, shadowCamera, isPointLight ) { - - if ( object.visible === false ) return; - - var visible = object.layers.test( camera.layers ); - - if ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) { - - if ( object.castShadow && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) { - - object.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld ); - - var geometry = _objects.update( object ); - var material = object.material; - - if ( Array.isArray( material ) ) { - - var groups = geometry.groups; - - for ( var k = 0, kl = groups.length; k < kl; k ++ ) { - - var group = groups[ k ]; - var groupMaterial = material[ group.materialIndex ]; - - if ( groupMaterial && groupMaterial.visible ) { - - var depthMaterial = getDepthMaterial( object, groupMaterial, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far ); - _renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group ); - - } - - } - - } else if ( material.visible ) { - - var depthMaterial = getDepthMaterial( object, material, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far ); - _renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null ); - - } - - } - - } - - var children = object.children; - - for ( var i = 0, l = children.length; i < l; i ++ ) { - - renderObject( children[ i ], camera, shadowCamera, isPointLight ); - - } - - } - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function WebGLState( gl, extensions, utils, capabilities ) { - - function ColorBuffer() { - - var locked = false; - - var color = new Vector4(); - var currentColorMask = null; - var currentColorClear = new Vector4( 0, 0, 0, 0 ); - - return { - - setMask: function ( colorMask ) { - - if ( currentColorMask !== colorMask && ! locked ) { - - gl.colorMask( colorMask, colorMask, colorMask, colorMask ); - currentColorMask = colorMask; - - } - - }, - - setLocked: function ( lock ) { - - locked = lock; - - }, - - setClear: function ( r, g, b, a, premultipliedAlpha ) { - - if ( premultipliedAlpha === true ) { - - r *= a; g *= a; b *= a; - - } - - color.set( r, g, b, a ); - - if ( currentColorClear.equals( color ) === false ) { - - gl.clearColor( r, g, b, a ); - currentColorClear.copy( color ); - - } - - }, - - reset: function () { - - locked = false; - - currentColorMask = null; - currentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state - - } - - }; - - } - - function DepthBuffer() { - - var locked = false; - - var currentDepthMask = null; - var currentDepthFunc = null; - var currentDepthClear = null; - - return { - - setTest: function ( depthTest ) { - - if ( depthTest ) { - - enable( 2929 ); - - } else { - - disable( 2929 ); - - } - - }, - - setMask: function ( depthMask ) { - - if ( currentDepthMask !== depthMask && ! locked ) { - - gl.depthMask( depthMask ); - currentDepthMask = depthMask; - - } - - }, - - setFunc: function ( depthFunc ) { - - if ( currentDepthFunc !== depthFunc ) { - - if ( depthFunc ) { - - switch ( depthFunc ) { - - case NeverDepth: - - gl.depthFunc( 512 ); - break; - - case AlwaysDepth: - - gl.depthFunc( 519 ); - break; - - case LessDepth: - - gl.depthFunc( 513 ); - break; - - case LessEqualDepth: - - gl.depthFunc( 515 ); - break; - - case EqualDepth: - - gl.depthFunc( 514 ); - break; - - case GreaterEqualDepth: - - gl.depthFunc( 518 ); - break; - - case GreaterDepth: - - gl.depthFunc( 516 ); - break; - - case NotEqualDepth: - - gl.depthFunc( 517 ); - break; - - default: - - gl.depthFunc( 515 ); - - } - - } else { - - gl.depthFunc( 515 ); - - } - - currentDepthFunc = depthFunc; - - } - - }, - - setLocked: function ( lock ) { - - locked = lock; - - }, - - setClear: function ( depth ) { - - if ( currentDepthClear !== depth ) { - - gl.clearDepth( depth ); - currentDepthClear = depth; - - } - - }, - - reset: function () { - - locked = false; - - currentDepthMask = null; - currentDepthFunc = null; - currentDepthClear = null; - - } - - }; - - } - - function StencilBuffer() { - - var locked = false; - - var currentStencilMask = null; - var currentStencilFunc = null; - var currentStencilRef = null; - var currentStencilFuncMask = null; - var currentStencilFail = null; - var currentStencilZFail = null; - var currentStencilZPass = null; - var currentStencilClear = null; - - return { - - setTest: function ( stencilTest ) { - - if ( stencilTest ) { - - enable( 2960 ); - - } else { - - disable( 2960 ); - - } - - }, - - setMask: function ( stencilMask ) { - - if ( currentStencilMask !== stencilMask && ! locked ) { - - gl.stencilMask( stencilMask ); - currentStencilMask = stencilMask; - - } - - }, - - setFunc: function ( stencilFunc, stencilRef, stencilMask ) { - - if ( currentStencilFunc !== stencilFunc || - currentStencilRef !== stencilRef || - currentStencilFuncMask !== stencilMask ) { - - gl.stencilFunc( stencilFunc, stencilRef, stencilMask ); - - currentStencilFunc = stencilFunc; - currentStencilRef = stencilRef; - currentStencilFuncMask = stencilMask; - - } - - }, - - setOp: function ( stencilFail, stencilZFail, stencilZPass ) { - - if ( currentStencilFail !== stencilFail || - currentStencilZFail !== stencilZFail || - currentStencilZPass !== stencilZPass ) { - - gl.stencilOp( stencilFail, stencilZFail, stencilZPass ); - - currentStencilFail = stencilFail; - currentStencilZFail = stencilZFail; - currentStencilZPass = stencilZPass; - - } - - }, - - setLocked: function ( lock ) { - - locked = lock; - - }, - - setClear: function ( stencil ) { - - if ( currentStencilClear !== stencil ) { - - gl.clearStencil( stencil ); - currentStencilClear = stencil; - - } - - }, - - reset: function () { - - locked = false; - - currentStencilMask = null; - currentStencilFunc = null; - currentStencilRef = null; - currentStencilFuncMask = null; - currentStencilFail = null; - currentStencilZFail = null; - currentStencilZPass = null; - currentStencilClear = null; - - } - - }; - - } - - // - - var colorBuffer = new ColorBuffer(); - var depthBuffer = new DepthBuffer(); - var stencilBuffer = new StencilBuffer(); - - var maxVertexAttributes = gl.getParameter( 34921 ); - var newAttributes = new Uint8Array( maxVertexAttributes ); - var enabledAttributes = new Uint8Array( maxVertexAttributes ); - var attributeDivisors = new Uint8Array( maxVertexAttributes ); - - var enabledCapabilities = {}; - - var compressedTextureFormats = null; - - var currentProgram = null; - - var currentBlendingEnabled = null; - var currentBlending = null; - var currentBlendEquation = null; - var currentBlendSrc = null; - var currentBlendDst = null; - var currentBlendEquationAlpha = null; - var currentBlendSrcAlpha = null; - var currentBlendDstAlpha = null; - var currentPremultipledAlpha = false; - - var currentFlipSided = null; - var currentCullFace = null; - - var currentLineWidth = null; - - var currentPolygonOffsetFactor = null; - var currentPolygonOffsetUnits = null; - - var maxTextures = gl.getParameter( 35661 ); - - var lineWidthAvailable = false; - var version = 0; - var glVersion = gl.getParameter( 7938 ); - - if ( glVersion.indexOf( 'WebGL' ) !== - 1 ) { - - version = parseFloat( /^WebGL\ ([0-9])/.exec( glVersion )[ 1 ] ); - lineWidthAvailable = ( version >= 1.0 ); - - } else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) { - - version = parseFloat( /^OpenGL\ ES\ ([0-9])/.exec( glVersion )[ 1 ] ); - lineWidthAvailable = ( version >= 2.0 ); - - } - - var currentTextureSlot = null; - var currentBoundTextures = {}; - - var currentScissor = new Vector4(); - var currentViewport = new Vector4(); - - function createTexture( type, target, count ) { - - var data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4. - var texture = gl.createTexture(); - - gl.bindTexture( type, texture ); - gl.texParameteri( type, 10241, 9728 ); - gl.texParameteri( type, 10240, 9728 ); - - for ( var i = 0; i < count; i ++ ) { - - gl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data ); - - } - - return texture; - - } - - var emptyTextures = {}; - emptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 ); - emptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 ); - - // init - - colorBuffer.setClear( 0, 0, 0, 1 ); - depthBuffer.setClear( 1 ); - stencilBuffer.setClear( 0 ); - - enable( 2929 ); - depthBuffer.setFunc( LessEqualDepth ); - - setFlipSided( false ); - setCullFace( CullFaceBack ); - enable( 2884 ); - - setBlending( NoBlending ); - - // - - function initAttributes() { - - for ( var i = 0, l = newAttributes.length; i < l; i ++ ) { - - newAttributes[ i ] = 0; - - } - - } - - function enableAttribute( attribute ) { - - enableAttributeAndDivisor( attribute, 0 ); - - } - - function enableAttributeAndDivisor( attribute, meshPerAttribute ) { - - newAttributes[ attribute ] = 1; - - if ( enabledAttributes[ attribute ] === 0 ) { - - gl.enableVertexAttribArray( attribute ); - enabledAttributes[ attribute ] = 1; - - } - - if ( attributeDivisors[ attribute ] !== meshPerAttribute ) { - - var extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' ); - - extension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute ); - attributeDivisors[ attribute ] = meshPerAttribute; - - } - - } - - function disableUnusedAttributes() { - - for ( var i = 0, l = enabledAttributes.length; i !== l; ++ i ) { - - if ( enabledAttributes[ i ] !== newAttributes[ i ] ) { - - gl.disableVertexAttribArray( i ); - enabledAttributes[ i ] = 0; - - } - - } - - } - - function enable( id ) { - - if ( enabledCapabilities[ id ] !== true ) { - - gl.enable( id ); - enabledCapabilities[ id ] = true; - - } - - } - - function disable( id ) { - - if ( enabledCapabilities[ id ] !== false ) { - - gl.disable( id ); - enabledCapabilities[ id ] = false; - - } - - } - - function getCompressedTextureFormats() { - - if ( compressedTextureFormats === null ) { - - compressedTextureFormats = []; - - if ( extensions.get( 'WEBGL_compressed_texture_pvrtc' ) || - extensions.get( 'WEBGL_compressed_texture_s3tc' ) || - extensions.get( 'WEBGL_compressed_texture_etc1' ) || - extensions.get( 'WEBGL_compressed_texture_astc' ) ) { - - var formats = gl.getParameter( 34467 ); - - for ( var i = 0; i < formats.length; i ++ ) { - - compressedTextureFormats.push( formats[ i ] ); - - } - - } - - } - - return compressedTextureFormats; - - } - - function useProgram( program ) { - - if ( currentProgram !== program ) { - - gl.useProgram( program ); - - currentProgram = program; - - return true; - - } - - return false; - - } - - function setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) { - - if ( blending === NoBlending ) { - - if ( currentBlendingEnabled ) { - - disable( 3042 ); - currentBlendingEnabled = false; - - } - - return; - - } - - if ( ! currentBlendingEnabled ) { - - enable( 3042 ); - currentBlendingEnabled = true; - - } - - if ( blending !== CustomBlending ) { - - if ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) { - - if ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) { - - gl.blendEquation( 32774 ); - - currentBlendEquation = AddEquation; - currentBlendEquationAlpha = AddEquation; - - } - - if ( premultipliedAlpha ) { - - switch ( blending ) { - - case NormalBlending: - gl.blendFuncSeparate( 1, 771, 1, 771 ); - break; - - case AdditiveBlending: - gl.blendFunc( 1, 1 ); - break; - - case SubtractiveBlending: - gl.blendFuncSeparate( 0, 0, 769, 771 ); - break; - - case MultiplyBlending: - gl.blendFuncSeparate( 0, 768, 0, 770 ); - break; - - default: - console.error( 'THREE.WebGLState: Invalid blending: ', blending ); - break; - - } - - } else { - - switch ( blending ) { - - case NormalBlending: - gl.blendFuncSeparate( 770, 771, 1, 771 ); - break; - - case AdditiveBlending: - gl.blendFunc( 770, 1 ); - break; - - case SubtractiveBlending: - gl.blendFunc( 0, 769 ); - break; - - case MultiplyBlending: - gl.blendFunc( 0, 768 ); - break; - - default: - console.error( 'THREE.WebGLState: Invalid blending: ', blending ); - break; - - } - - } - - currentBlendSrc = null; - currentBlendDst = null; - currentBlendSrcAlpha = null; - currentBlendDstAlpha = null; - - currentBlending = blending; - currentPremultipledAlpha = premultipliedAlpha; - - } - - return; - - } - - // custom blending - - blendEquationAlpha = blendEquationAlpha || blendEquation; - blendSrcAlpha = blendSrcAlpha || blendSrc; - blendDstAlpha = blendDstAlpha || blendDst; - - if ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) { - - gl.blendEquationSeparate( utils.convert( blendEquation ), utils.convert( blendEquationAlpha ) ); - - currentBlendEquation = blendEquation; - currentBlendEquationAlpha = blendEquationAlpha; - - } - - if ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) { - - gl.blendFuncSeparate( utils.convert( blendSrc ), utils.convert( blendDst ), utils.convert( blendSrcAlpha ), utils.convert( blendDstAlpha ) ); - - currentBlendSrc = blendSrc; - currentBlendDst = blendDst; - currentBlendSrcAlpha = blendSrcAlpha; - currentBlendDstAlpha = blendDstAlpha; - - } - - currentBlending = blending; - currentPremultipledAlpha = null; - - } - - function setMaterial( material, frontFaceCW ) { - - material.side === DoubleSide - ? disable( 2884 ) - : enable( 2884 ); - - var flipSided = ( material.side === BackSide ); - if ( frontFaceCW ) flipSided = ! flipSided; - - setFlipSided( flipSided ); - - ( material.blending === NormalBlending && material.transparent === false ) - ? setBlending( NoBlending ) - : setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha ); - - depthBuffer.setFunc( material.depthFunc ); - depthBuffer.setTest( material.depthTest ); - depthBuffer.setMask( material.depthWrite ); - colorBuffer.setMask( material.colorWrite ); - - setPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits ); - - } - - // - - function setFlipSided( flipSided ) { - - if ( currentFlipSided !== flipSided ) { - - if ( flipSided ) { - - gl.frontFace( 2304 ); - - } else { - - gl.frontFace( 2305 ); - - } - - currentFlipSided = flipSided; - - } - - } - - function setCullFace( cullFace ) { - - if ( cullFace !== CullFaceNone ) { - - enable( 2884 ); - - if ( cullFace !== currentCullFace ) { - - if ( cullFace === CullFaceBack ) { - - gl.cullFace( 1029 ); - - } else if ( cullFace === CullFaceFront ) { - - gl.cullFace( 1028 ); - - } else { - - gl.cullFace( 1032 ); - - } - - } - - } else { - - disable( 2884 ); - - } - - currentCullFace = cullFace; - - } - - function setLineWidth( width ) { - - if ( width !== currentLineWidth ) { - - if ( lineWidthAvailable ) gl.lineWidth( width ); - - currentLineWidth = width; - - } - - } - - function setPolygonOffset( polygonOffset, factor, units ) { - - if ( polygonOffset ) { - - enable( 32823 ); - - if ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) { - - gl.polygonOffset( factor, units ); - - currentPolygonOffsetFactor = factor; - currentPolygonOffsetUnits = units; - - } - - } else { - - disable( 32823 ); - - } - - } - - function setScissorTest( scissorTest ) { - - if ( scissorTest ) { - - enable( 3089 ); - - } else { - - disable( 3089 ); - - } - - } - - // texture - - function activeTexture( webglSlot ) { - - if ( webglSlot === undefined ) webglSlot = 33984 + maxTextures - 1; - - if ( currentTextureSlot !== webglSlot ) { - - gl.activeTexture( webglSlot ); - currentTextureSlot = webglSlot; - - } - - } - - function bindTexture( webglType, webglTexture ) { - - if ( currentTextureSlot === null ) { - - activeTexture(); - - } - - var boundTexture = currentBoundTextures[ currentTextureSlot ]; - - if ( boundTexture === undefined ) { - - boundTexture = { type: undefined, texture: undefined }; - currentBoundTextures[ currentTextureSlot ] = boundTexture; - - } - - if ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) { - - gl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] ); - - boundTexture.type = webglType; - boundTexture.texture = webglTexture; - - } - - } - - function compressedTexImage2D() { - - try { - - gl.compressedTexImage2D.apply( gl, arguments ); - - } catch ( error ) { - - console.error( 'THREE.WebGLState:', error ); - - } - - } - - function texImage2D() { - - try { - - gl.texImage2D.apply( gl, arguments ); - - } catch ( error ) { - - console.error( 'THREE.WebGLState:', error ); - - } - - } - - function texImage3D() { - - try { - - gl.texImage3D.apply( gl, arguments ); - - } catch ( error ) { - - console.error( 'THREE.WebGLState:', error ); - - } - - } - - // - - function scissor( scissor ) { - - if ( currentScissor.equals( scissor ) === false ) { - - gl.scissor( scissor.x, scissor.y, scissor.z, scissor.w ); - currentScissor.copy( scissor ); - - } - - } - - function viewport( viewport ) { - - if ( currentViewport.equals( viewport ) === false ) { - - gl.viewport( viewport.x, viewport.y, viewport.z, viewport.w ); - currentViewport.copy( viewport ); - - } - - } - - // - - function reset() { - - for ( var i = 0; i < enabledAttributes.length; i ++ ) { - - if ( enabledAttributes[ i ] === 1 ) { - - gl.disableVertexAttribArray( i ); - enabledAttributes[ i ] = 0; - - } - - } - - enabledCapabilities = {}; - - compressedTextureFormats = null; - - currentTextureSlot = null; - currentBoundTextures = {}; - - currentProgram = null; - - currentBlending = null; - - currentFlipSided = null; - currentCullFace = null; - - colorBuffer.reset(); - depthBuffer.reset(); - stencilBuffer.reset(); - - } - - return { - - buffers: { - color: colorBuffer, - depth: depthBuffer, - stencil: stencilBuffer - }, - - initAttributes: initAttributes, - enableAttribute: enableAttribute, - enableAttributeAndDivisor: enableAttributeAndDivisor, - disableUnusedAttributes: disableUnusedAttributes, - enable: enable, - disable: disable, - getCompressedTextureFormats: getCompressedTextureFormats, - - useProgram: useProgram, - - setBlending: setBlending, - setMaterial: setMaterial, - - setFlipSided: setFlipSided, - setCullFace: setCullFace, - - setLineWidth: setLineWidth, - setPolygonOffset: setPolygonOffset, - - setScissorTest: setScissorTest, - - activeTexture: activeTexture, - bindTexture: bindTexture, - compressedTexImage2D: compressedTexImage2D, - texImage2D: texImage2D, - texImage3D: texImage3D, - - scissor: scissor, - viewport: viewport, - - reset: reset - - }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) { - - var _videoTextures = {}; - var _canvas; - - // - - var useOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'; - - function createCanvas( width, height ) { - - // Use OffscreenCanvas when available. Specially needed in web workers - - return useOffscreenCanvas ? - new OffscreenCanvas( width, height ) : - document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ); - - } - - function resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) { - - var scale = 1; - - // handle case if texture exceeds max size - - if ( image.width > maxSize || image.height > maxSize ) { - - scale = maxSize / Math.max( image.width, image.height ); - - } - - // only perform resize if necessary - - if ( scale < 1 || needsPowerOfTwo === true ) { - - // only perform resize for certain image types - - if ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) || - ( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) || - ( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) { - - var floor = needsPowerOfTwo ? _Math.floorPowerOfTwo : Math.floor; - - var width = floor( scale * image.width ); - var height = floor( scale * image.height ); - - if ( _canvas === undefined ) _canvas = createCanvas( width, height ); - - // cube textures can't reuse the same canvas - - var canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas; - - canvas.width = width; - canvas.height = height; - - var context = canvas.getContext( '2d' ); - context.drawImage( image, 0, 0, width, height ); - - console.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' ); - - return canvas; - - } else { - - if ( 'data' in image ) { - - console.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' ); - - } - - return image; - - } - - } - - return image; - - } - - function isPowerOfTwo( image ) { - - return _Math.isPowerOfTwo( image.width ) && _Math.isPowerOfTwo( image.height ); - - } - - function textureNeedsPowerOfTwo( texture ) { - - if ( capabilities.isWebGL2 ) return false; - - return ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) || - ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ); - - } - - function textureNeedsGenerateMipmaps( texture, supportsMips ) { - - return texture.generateMipmaps && supportsMips && - texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter; - - } - - function generateMipmap( target, texture, width, height ) { - - _gl.generateMipmap( target ); - - var textureProperties = properties.get( texture ); - - // Note: Math.log( x ) * Math.LOG2E used instead of Math.log2( x ) which is not supported by IE11 - textureProperties.__maxMipLevel = Math.log( Math.max( width, height ) ) * Math.LOG2E; - - } - - function getInternalFormat( glFormat, glType ) { - - if ( ! capabilities.isWebGL2 ) return glFormat; - - var internalFormat = glFormat; - - if ( glFormat === 6403 ) { - - if ( glType === 5126 ) internalFormat = 33326; - if ( glType === 5131 ) internalFormat = 33325; - if ( glType === 5121 ) internalFormat = 33321; - - } - - if ( glFormat === 6407 ) { - - if ( glType === 5126 ) internalFormat = 34837; - if ( glType === 5131 ) internalFormat = 34843; - if ( glType === 5121 ) internalFormat = 32849; - - } - - if ( glFormat === 6408 ) { - - if ( glType === 5126 ) internalFormat = 34836; - if ( glType === 5131 ) internalFormat = 34842; - if ( glType === 5121 ) internalFormat = 32856; - - } - - if ( internalFormat === 33325 || internalFormat === 33326 || - internalFormat === 34842 || internalFormat === 34836 ) { - - extensions.get( 'EXT_color_buffer_float' ); - - } else if ( internalFormat === 34843 || internalFormat === 34837 ) { - - console.warn( 'THREE.WebGLRenderer: Floating point textures with RGB format not supported. Please use RGBA instead.' ); - - } - - return internalFormat; - - } - - // Fallback filters for non-power-of-2 textures - - function filterFallback( f ) { - - if ( f === NearestFilter || f === NearestMipMapNearestFilter || f === NearestMipMapLinearFilter ) { - - return 9728; - - } - - return 9729; - - } - - // - - function onTextureDispose( event ) { - - var texture = event.target; - - texture.removeEventListener( 'dispose', onTextureDispose ); - - deallocateTexture( texture ); - - if ( texture.isVideoTexture ) { - - delete _videoTextures[ texture.id ]; - - } - - info.memory.textures --; - - } - - function onRenderTargetDispose( event ) { - - var renderTarget = event.target; - - renderTarget.removeEventListener( 'dispose', onRenderTargetDispose ); - - deallocateRenderTarget( renderTarget ); - - info.memory.textures --; - - } - - // - - function deallocateTexture( texture ) { - - var textureProperties = properties.get( texture ); - - if ( textureProperties.__webglInit === undefined ) return; - - _gl.deleteTexture( textureProperties.__webglTexture ); - - properties.remove( texture ); - - } - - function deallocateRenderTarget( renderTarget ) { - - var renderTargetProperties = properties.get( renderTarget ); - var textureProperties = properties.get( renderTarget.texture ); - - if ( ! renderTarget ) return; - - if ( textureProperties.__webglTexture !== undefined ) { - - _gl.deleteTexture( textureProperties.__webglTexture ); - - } - - if ( renderTarget.depthTexture ) { - - renderTarget.depthTexture.dispose(); - - } - - if ( renderTarget.isWebGLRenderTargetCube ) { - - for ( var i = 0; i < 6; i ++ ) { - - _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] ); - if ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] ); - - } - - } else { - - _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer ); - if ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer ); - - } - - properties.remove( renderTarget.texture ); - properties.remove( renderTarget ); - - } - - // - - var textureUnits = 0; - - function resetTextureUnits() { - - textureUnits = 0; - - } - - function allocateTextureUnit() { - - var textureUnit = textureUnits; - - if ( textureUnit >= capabilities.maxTextures ) { - - console.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures ); - - } - - textureUnits += 1; - - return textureUnit; - - } - - // - - function setTexture2D( texture, slot ) { - - var textureProperties = properties.get( texture ); - - if ( texture.isVideoTexture ) updateVideoTexture( texture ); - - if ( texture.version > 0 && textureProperties.__version !== texture.version ) { - - var image = texture.image; - - if ( image === undefined ) { - - console.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined' ); - - } else if ( image.complete === false ) { - - console.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' ); - - } else { - - uploadTexture( textureProperties, texture, slot ); - return; - - } - - } - - state.activeTexture( 33984 + slot ); - state.bindTexture( 3553, textureProperties.__webglTexture ); - - } - - function setTexture2DArray( texture, slot ) { - - var textureProperties = properties.get( texture ); - - if ( texture.version > 0 && textureProperties.__version !== texture.version ) { - - uploadTexture( textureProperties, texture, slot ); - return; - - } - - state.activeTexture( 33984 + slot ); - state.bindTexture( 35866, textureProperties.__webglTexture ); - - } - - function setTexture3D( texture, slot ) { - - var textureProperties = properties.get( texture ); - - if ( texture.version > 0 && textureProperties.__version !== texture.version ) { - - uploadTexture( textureProperties, texture, slot ); - return; - - } - - state.activeTexture( 33984 + slot ); - state.bindTexture( 32879, textureProperties.__webglTexture ); - - } - - function setTextureCube( texture, slot ) { - - var textureProperties = properties.get( texture ); - - if ( texture.image.length === 6 ) { - - if ( texture.version > 0 && textureProperties.__version !== texture.version ) { - - initTexture( textureProperties, texture ); - - state.activeTexture( 33984 + slot ); - state.bindTexture( 34067, textureProperties.__webglTexture ); - - _gl.pixelStorei( 37440, texture.flipY ); - - var isCompressed = ( texture && texture.isCompressedTexture ); - var isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture ); - - var cubeImage = []; - - for ( var i = 0; i < 6; i ++ ) { - - if ( ! isCompressed && ! isDataTexture ) { - - cubeImage[ i ] = resizeImage( texture.image[ i ], false, true, capabilities.maxCubemapSize ); - - } else { - - cubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ]; - - } - - } - - var image = cubeImage[ 0 ], - supportsMips = isPowerOfTwo( image ) || capabilities.isWebGL2, - glFormat = utils.convert( texture.format ), - glType = utils.convert( texture.type ), - glInternalFormat = getInternalFormat( glFormat, glType ); - - setTextureParameters( 34067, texture, supportsMips ); - - for ( var i = 0; i < 6; i ++ ) { - - if ( ! isCompressed ) { - - if ( isDataTexture ) { - - state.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data ); - - } else { - - state.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] ); - - } - - } else { - - var mipmap, mipmaps = cubeImage[ i ].mipmaps; - - for ( var j = 0, jl = mipmaps.length; j < jl; j ++ ) { - - mipmap = mipmaps[ j ]; - - if ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) { - - if ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) { - - state.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data ); - - } else { - - console.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' ); - - } - - } else { - - state.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); - - } - - } - - } - - } - - if ( ! isCompressed ) { - - textureProperties.__maxMipLevel = 0; - - } else { - - textureProperties.__maxMipLevel = mipmaps.length - 1; - - } - - if ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) { - - // We assume images for cube map have the same size. - generateMipmap( 34067, texture, image.width, image.height ); - - } - - textureProperties.__version = texture.version; - - if ( texture.onUpdate ) texture.onUpdate( texture ); - - } else { - - state.activeTexture( 33984 + slot ); - state.bindTexture( 34067, textureProperties.__webglTexture ); - - } - - } - - } - - function setTextureCubeDynamic( texture, slot ) { - - state.activeTexture( 33984 + slot ); - state.bindTexture( 34067, properties.get( texture ).__webglTexture ); - - } - - function setTextureParameters( textureType, texture, supportsMips ) { - - var extension; - - if ( supportsMips ) { - - _gl.texParameteri( textureType, 10242, utils.convert( texture.wrapS ) ); - _gl.texParameteri( textureType, 10243, utils.convert( texture.wrapT ) ); - - if ( textureType === 32879 || textureType === 35866 ) { - - _gl.texParameteri( textureType, 32882, utils.convert( texture.wrapR ) ); - - } - - _gl.texParameteri( textureType, 10240, utils.convert( texture.magFilter ) ); - _gl.texParameteri( textureType, 10241, utils.convert( texture.minFilter ) ); - - } else { - - _gl.texParameteri( textureType, 10242, 33071 ); - _gl.texParameteri( textureType, 10243, 33071 ); - - if ( textureType === 32879 || textureType === 35866 ) { - - _gl.texParameteri( textureType, 32882, 33071 ); - - } - - if ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) { - - console.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' ); - - } - - _gl.texParameteri( textureType, 10240, filterFallback( texture.magFilter ) ); - _gl.texParameteri( textureType, 10241, filterFallback( texture.minFilter ) ); - - if ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) { - - console.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' ); - - } - - } - - extension = extensions.get( 'EXT_texture_filter_anisotropic' ); - - if ( extension ) { - - if ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return; - if ( texture.type === HalfFloatType && ( capabilities.isWebGL2 || extensions.get( 'OES_texture_half_float_linear' ) ) === null ) return; - - if ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) { - - _gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) ); - properties.get( texture ).__currentAnisotropy = texture.anisotropy; - - } - - } - - } - - function initTexture( textureProperties, texture ) { - - if ( textureProperties.__webglInit === undefined ) { - - textureProperties.__webglInit = true; - - texture.addEventListener( 'dispose', onTextureDispose ); - - textureProperties.__webglTexture = _gl.createTexture(); - - info.memory.textures ++; - - } - - } - - function uploadTexture( textureProperties, texture, slot ) { - - var textureType = 3553; - - if ( texture.isDataTexture2DArray ) textureType = 35866; - if ( texture.isDataTexture3D ) textureType = 32879; - - initTexture( textureProperties, texture ); - - state.activeTexture( 33984 + slot ); - state.bindTexture( textureType, textureProperties.__webglTexture ); - - _gl.pixelStorei( 37440, texture.flipY ); - _gl.pixelStorei( 37441, texture.premultiplyAlpha ); - _gl.pixelStorei( 3317, texture.unpackAlignment ); - - var needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( texture.image ) === false; - var image = resizeImage( texture.image, needsPowerOfTwo, false, capabilities.maxTextureSize ); - - var supportsMips = isPowerOfTwo( image ) || capabilities.isWebGL2, - glFormat = utils.convert( texture.format ), - glType = utils.convert( texture.type ), - glInternalFormat = getInternalFormat( glFormat, glType ); - - setTextureParameters( textureType, texture, supportsMips ); - - var mipmap, mipmaps = texture.mipmaps; - - if ( texture.isDepthTexture ) { - - // populate depth texture with dummy data - - glInternalFormat = 6402; - - if ( texture.type === FloatType ) { - - if ( ! capabilities.isWebGL2 ) throw new Error( 'Float Depth Texture only supported in WebGL2.0' ); - glInternalFormat = 36012; - - } else if ( capabilities.isWebGL2 ) { - - // WebGL 2.0 requires signed internalformat for glTexImage2D - glInternalFormat = 33189; - - } - - if ( texture.format === DepthFormat && glInternalFormat === 6402 ) { - - // The error INVALID_OPERATION is generated by texImage2D if format and internalformat are - // DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT - // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/) - if ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) { - - console.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' ); - - texture.type = UnsignedShortType; - glType = utils.convert( texture.type ); - - } - - } - - // Depth stencil textures need the DEPTH_STENCIL internal format - // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/) - if ( texture.format === DepthStencilFormat ) { - - glInternalFormat = 34041; - - // The error INVALID_OPERATION is generated by texImage2D if format and internalformat are - // DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL. - // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/) - if ( texture.type !== UnsignedInt248Type ) { - - console.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' ); - - texture.type = UnsignedInt248Type; - glType = utils.convert( texture.type ); - - } - - } - - state.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null ); - - } else if ( texture.isDataTexture ) { - - // use manually created mipmaps if available - // if there are no manual mipmaps - // set 0 level mipmap and then use GL to generate other mipmap levels - - if ( mipmaps.length > 0 && supportsMips ) { - - for ( var i = 0, il = mipmaps.length; i < il; i ++ ) { - - mipmap = mipmaps[ i ]; - state.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); - - } - - texture.generateMipmaps = false; - textureProperties.__maxMipLevel = mipmaps.length - 1; - - } else { - - state.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data ); - textureProperties.__maxMipLevel = 0; - - } - - } else if ( texture.isCompressedTexture ) { - - for ( var i = 0, il = mipmaps.length; i < il; i ++ ) { - - mipmap = mipmaps[ i ]; - - if ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) { - - if ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) { - - state.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data ); - - } else { - - console.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' ); - - } - - } else { - - state.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); - - } - - } - - textureProperties.__maxMipLevel = mipmaps.length - 1; - - } else if ( texture.isDataTexture2DArray ) { - - state.texImage3D( 35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data ); - textureProperties.__maxMipLevel = 0; - - } else if ( texture.isDataTexture3D ) { - - state.texImage3D( 32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data ); - textureProperties.__maxMipLevel = 0; - - } else { - - // regular Texture (image, video, canvas) - - // use manually created mipmaps if available - // if there are no manual mipmaps - // set 0 level mipmap and then use GL to generate other mipmap levels - - if ( mipmaps.length > 0 && supportsMips ) { - - for ( var i = 0, il = mipmaps.length; i < il; i ++ ) { - - mipmap = mipmaps[ i ]; - state.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap ); - - } - - texture.generateMipmaps = false; - textureProperties.__maxMipLevel = mipmaps.length - 1; - - } else { - - state.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image ); - textureProperties.__maxMipLevel = 0; - - } - - } - - if ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) { - - generateMipmap( 3553, texture, image.width, image.height ); - - } - - textureProperties.__version = texture.version; - - if ( texture.onUpdate ) texture.onUpdate( texture ); - - } - - // Render targets - - // Setup storage for target texture and bind it to correct framebuffer - function setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) { - - var glFormat = utils.convert( renderTarget.texture.format ); - var glType = utils.convert( renderTarget.texture.type ); - var glInternalFormat = getInternalFormat( glFormat, glType ); - state.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null ); - _gl.bindFramebuffer( 36160, framebuffer ); - _gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 ); - _gl.bindFramebuffer( 36160, null ); - - } - - // Setup storage for internal depth/stencil buffers and bind to correct framebuffer - function setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) { - - _gl.bindRenderbuffer( 36161, renderbuffer ); - - if ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) { - - if ( isMultisample ) { - - var samples = getRenderTargetSamples( renderTarget ); - - _gl.renderbufferStorageMultisample( 36161, samples, 33189, renderTarget.width, renderTarget.height ); - - } else { - - _gl.renderbufferStorage( 36161, 33189, renderTarget.width, renderTarget.height ); - - } - - _gl.framebufferRenderbuffer( 36160, 36096, 36161, renderbuffer ); - - } else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) { - - if ( isMultisample ) { - - var samples = getRenderTargetSamples( renderTarget ); - - _gl.renderbufferStorageMultisample( 36161, samples, 34041, renderTarget.width, renderTarget.height ); - - } else { - - _gl.renderbufferStorage( 36161, 34041, renderTarget.width, renderTarget.height ); - - } - - - _gl.framebufferRenderbuffer( 36160, 33306, 36161, renderbuffer ); - - } else { - - var glFormat = utils.convert( renderTarget.texture.format ); - var glType = utils.convert( renderTarget.texture.type ); - var glInternalFormat = getInternalFormat( glFormat, glType ); - - if ( isMultisample ) { - - var samples = getRenderTargetSamples( renderTarget ); - - _gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height ); - - } else { - - _gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height ); - - } - - } - - _gl.bindRenderbuffer( 36161, null ); - - } - - // Setup resources for a Depth Texture for a FBO (needs an extension) - function setupDepthTexture( framebuffer, renderTarget ) { - - var isCube = ( renderTarget && renderTarget.isWebGLRenderTargetCube ); - if ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' ); - - _gl.bindFramebuffer( 36160, framebuffer ); - - if ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) { - - throw new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' ); - - } - - // upload an empty depth texture with framebuffer size - if ( ! properties.get( renderTarget.depthTexture ).__webglTexture || - renderTarget.depthTexture.image.width !== renderTarget.width || - renderTarget.depthTexture.image.height !== renderTarget.height ) { - - renderTarget.depthTexture.image.width = renderTarget.width; - renderTarget.depthTexture.image.height = renderTarget.height; - renderTarget.depthTexture.needsUpdate = true; - - } - - setTexture2D( renderTarget.depthTexture, 0 ); - - var webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture; - - if ( renderTarget.depthTexture.format === DepthFormat ) { - - _gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 ); - - } else if ( renderTarget.depthTexture.format === DepthStencilFormat ) { - - _gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 ); - - } else { - - throw new Error( 'Unknown depthTexture format' ); - - } - - } - - // Setup GL resources for a non-texture depth buffer - function setupDepthRenderbuffer( renderTarget ) { - - var renderTargetProperties = properties.get( renderTarget ); - - var isCube = ( renderTarget.isWebGLRenderTargetCube === true ); - - if ( renderTarget.depthTexture ) { - - if ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' ); - - setupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget ); - - } else { - - if ( isCube ) { - - renderTargetProperties.__webglDepthbuffer = []; - - for ( var i = 0; i < 6; i ++ ) { - - _gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer[ i ] ); - renderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer(); - setupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget ); - - } - - } else { - - _gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer ); - renderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer(); - setupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget ); - - } - - } - - _gl.bindFramebuffer( 36160, null ); - - } - - // Set up GL resources for the render target - function setupRenderTarget( renderTarget ) { - - var renderTargetProperties = properties.get( renderTarget ); - var textureProperties = properties.get( renderTarget.texture ); - - renderTarget.addEventListener( 'dispose', onRenderTargetDispose ); - - textureProperties.__webglTexture = _gl.createTexture(); - - info.memory.textures ++; - - var isCube = ( renderTarget.isWebGLRenderTargetCube === true ); - var isMultisample = ( renderTarget.isWebGLMultisampleRenderTarget === true ); - var supportsMips = isPowerOfTwo( renderTarget ) || capabilities.isWebGL2; - - // Setup framebuffer - - if ( isCube ) { - - renderTargetProperties.__webglFramebuffer = []; - - for ( var i = 0; i < 6; i ++ ) { - - renderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer(); - - } - - } else { - - renderTargetProperties.__webglFramebuffer = _gl.createFramebuffer(); - - if ( isMultisample ) { - - if ( capabilities.isWebGL2 ) { - - renderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer(); - renderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer(); - - _gl.bindRenderbuffer( 36161, renderTargetProperties.__webglColorRenderbuffer ); - var glFormat = utils.convert( renderTarget.texture.format ); - var glType = utils.convert( renderTarget.texture.type ); - var glInternalFormat = getInternalFormat( glFormat, glType ); - var samples = getRenderTargetSamples( renderTarget ); - _gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height ); - - _gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer ); - _gl.framebufferRenderbuffer( 36160, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer ); - _gl.bindRenderbuffer( 36161, null ); - - if ( renderTarget.depthBuffer ) { - - renderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer(); - setupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true ); - - } - - _gl.bindFramebuffer( 36160, null ); - - - } else { - - console.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' ); - - } - - } - - } - - // Setup color buffer - - if ( isCube ) { - - state.bindTexture( 34067, textureProperties.__webglTexture ); - setTextureParameters( 34067, renderTarget.texture, supportsMips ); - - for ( var i = 0; i < 6; i ++ ) { - - setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, 36064, 34069 + i ); - - } - - if ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) { - - generateMipmap( 34067, renderTarget.texture, renderTarget.width, renderTarget.height ); - - } - - state.bindTexture( 34067, null ); - - } else { - - state.bindTexture( 3553, textureProperties.__webglTexture ); - setTextureParameters( 3553, renderTarget.texture, supportsMips ); - setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, 36064, 3553 ); - - if ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) { - - generateMipmap( 3553, renderTarget.texture, renderTarget.width, renderTarget.height ); - - } - - state.bindTexture( 3553, null ); - - } - - // Setup depth and stencil buffers - - if ( renderTarget.depthBuffer ) { - - setupDepthRenderbuffer( renderTarget ); - - } - - } - - function updateRenderTargetMipmap( renderTarget ) { - - var texture = renderTarget.texture; - var supportsMips = isPowerOfTwo( renderTarget ) || capabilities.isWebGL2; - - if ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) { - - var target = renderTarget.isWebGLRenderTargetCube ? 34067 : 3553; - var webglTexture = properties.get( texture ).__webglTexture; - - state.bindTexture( target, webglTexture ); - generateMipmap( target, texture, renderTarget.width, renderTarget.height ); - state.bindTexture( target, null ); - - } - - } - - function updateMultisampleRenderTarget( renderTarget ) { - - if ( renderTarget.isWebGLMultisampleRenderTarget ) { - - if ( capabilities.isWebGL2 ) { - - var renderTargetProperties = properties.get( renderTarget ); - - _gl.bindFramebuffer( 36008, renderTargetProperties.__webglMultisampledFramebuffer ); - _gl.bindFramebuffer( 36009, renderTargetProperties.__webglFramebuffer ); - - var width = renderTarget.width; - var height = renderTarget.height; - var mask = 16384; - - if ( renderTarget.depthBuffer ) mask |= 256; - if ( renderTarget.stencilBuffer ) mask |= 1024; - - _gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, 9728 ); - - } else { - - console.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' ); - - } - - } - - } - - function getRenderTargetSamples( renderTarget ) { - - return ( capabilities.isWebGL2 && renderTarget.isWebGLMultisampleRenderTarget ) ? - Math.min( capabilities.maxSamples, renderTarget.samples ) : 0; - - } - - function updateVideoTexture( texture ) { - - var id = texture.id; - var frame = info.render.frame; - - // Check the last frame we updated the VideoTexture - - if ( _videoTextures[ id ] !== frame ) { - - _videoTextures[ id ] = frame; - texture.update(); - - } - - } - - // backwards compatibility - - var warnedTexture2D = false; - var warnedTextureCube = false; - - function safeSetTexture2D( texture, slot ) { - - if ( texture && texture.isWebGLRenderTarget ) { - - if ( warnedTexture2D === false ) { - - console.warn( "THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead." ); - warnedTexture2D = true; - - } - - texture = texture.texture; - - } - - setTexture2D( texture, slot ); - - } - - function safeSetTextureCube( texture, slot ) { - - if ( texture && texture.isWebGLRenderTargetCube ) { - - if ( warnedTextureCube === false ) { - - console.warn( "THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead." ); - warnedTextureCube = true; - - } - - texture = texture.texture; - - } - - // currently relying on the fact that WebGLRenderTargetCube.texture is a Texture and NOT a CubeTexture - // TODO: unify these code paths - if ( ( texture && texture.isCubeTexture ) || - ( Array.isArray( texture.image ) && texture.image.length === 6 ) ) { - - // CompressedTexture can have Array in image :/ - - // this function alone should take care of cube textures - setTextureCube( texture, slot ); - - } else { - - // assumed: texture property of THREE.WebGLRenderTargetCube - setTextureCubeDynamic( texture, slot ); - - } - - } - - // - - this.allocateTextureUnit = allocateTextureUnit; - this.resetTextureUnits = resetTextureUnits; - - this.setTexture2D = setTexture2D; - this.setTexture2DArray = setTexture2DArray; - this.setTexture3D = setTexture3D; - this.setTextureCube = setTextureCube; - this.setTextureCubeDynamic = setTextureCubeDynamic; - this.setupRenderTarget = setupRenderTarget; - this.updateRenderTargetMipmap = updateRenderTargetMipmap; - this.updateMultisampleRenderTarget = updateMultisampleRenderTarget; - - this.safeSetTexture2D = safeSetTexture2D; - this.safeSetTextureCube = safeSetTextureCube; - - } - - /** - * @author thespite / http://www.twitter.com/thespite - */ - - function WebGLUtils( gl, extensions, capabilities ) { - - function convert( p ) { - - var extension; - - if ( p === RepeatWrapping ) return 10497; - if ( p === ClampToEdgeWrapping ) return 33071; - if ( p === MirroredRepeatWrapping ) return 33648; - - if ( p === NearestFilter ) return 9728; - if ( p === NearestMipMapNearestFilter ) return 9984; - if ( p === NearestMipMapLinearFilter ) return 9986; - - if ( p === LinearFilter ) return 9729; - if ( p === LinearMipMapNearestFilter ) return 9985; - if ( p === LinearMipMapLinearFilter ) return 9987; - - if ( p === UnsignedByteType ) return 5121; - if ( p === UnsignedShort4444Type ) return 32819; - if ( p === UnsignedShort5551Type ) return 32820; - if ( p === UnsignedShort565Type ) return 33635; - - if ( p === ByteType ) return 5120; - if ( p === ShortType ) return 5122; - if ( p === UnsignedShortType ) return 5123; - if ( p === IntType ) return 5124; - if ( p === UnsignedIntType ) return 5125; - if ( p === FloatType ) return 5126; - - if ( p === HalfFloatType ) { - - if ( capabilities.isWebGL2 ) return 5131; - - extension = extensions.get( 'OES_texture_half_float' ); - - if ( extension !== null ) return extension.HALF_FLOAT_OES; - - } - - if ( p === AlphaFormat ) return 6406; - if ( p === RGBFormat ) return 6407; - if ( p === RGBAFormat ) return 6408; - if ( p === LuminanceFormat ) return 6409; - if ( p === LuminanceAlphaFormat ) return 6410; - if ( p === DepthFormat ) return 6402; - if ( p === DepthStencilFormat ) return 34041; - if ( p === RedFormat ) return 6403; - - if ( p === AddEquation ) return 32774; - if ( p === SubtractEquation ) return 32778; - if ( p === ReverseSubtractEquation ) return 32779; - - if ( p === ZeroFactor ) return 0; - if ( p === OneFactor ) return 1; - if ( p === SrcColorFactor ) return 768; - if ( p === OneMinusSrcColorFactor ) return 769; - if ( p === SrcAlphaFactor ) return 770; - if ( p === OneMinusSrcAlphaFactor ) return 771; - if ( p === DstAlphaFactor ) return 772; - if ( p === OneMinusDstAlphaFactor ) return 773; - - if ( p === DstColorFactor ) return 774; - if ( p === OneMinusDstColorFactor ) return 775; - if ( p === SrcAlphaSaturateFactor ) return 776; - - if ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || - p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) { - - extension = extensions.get( 'WEBGL_compressed_texture_s3tc' ); - - if ( extension !== null ) { - - if ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT; - if ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT; - if ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT; - if ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT; - - } - - } - - if ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || - p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) { - - extension = extensions.get( 'WEBGL_compressed_texture_pvrtc' ); - - if ( extension !== null ) { - - if ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG; - if ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG; - if ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; - if ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG; - - } - - } - - if ( p === RGB_ETC1_Format ) { - - extension = extensions.get( 'WEBGL_compressed_texture_etc1' ); - - if ( extension !== null ) return extension.COMPRESSED_RGB_ETC1_WEBGL; - - } - - if ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format || - p === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format || - p === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format || - p === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format || - p === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ) { - - extension = extensions.get( 'WEBGL_compressed_texture_astc' ); - - if ( extension !== null ) { - - return p; - - } - - } - - if ( p === MinEquation || p === MaxEquation ) { - - if ( capabilities.isWebGL2 ) { - - if ( p === MinEquation ) return 32775; - if ( p === MaxEquation ) return 32776; - - } - - extension = extensions.get( 'EXT_blend_minmax' ); - - if ( extension !== null ) { - - if ( p === MinEquation ) return extension.MIN_EXT; - if ( p === MaxEquation ) return extension.MAX_EXT; - - } - - } - - if ( p === UnsignedInt248Type ) { - - if ( capabilities.isWebGL2 ) return 34042; - - extension = extensions.get( 'WEBGL_depth_texture' ); - - if ( extension !== null ) return extension.UNSIGNED_INT_24_8_WEBGL; - - } - - return 0; - - } - - return { convert: convert }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function Group() { - - Object3D.call( this ); - - this.type = 'Group'; - - } - - Group.prototype = Object.assign( Object.create( Object3D.prototype ), { - - constructor: Group, - - isGroup: true - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author mikael emtinger / http://gomo.se/ - * @author WestLangley / http://github.com/WestLangley - */ - - function Camera() { - - Object3D.call( this ); - - this.type = 'Camera'; - - this.matrixWorldInverse = new Matrix4(); - - this.projectionMatrix = new Matrix4(); - this.projectionMatrixInverse = new Matrix4(); - - } - - Camera.prototype = Object.assign( Object.create( Object3D.prototype ), { - - constructor: Camera, - - isCamera: true, - - copy: function ( source, recursive ) { - - Object3D.prototype.copy.call( this, source, recursive ); - - this.matrixWorldInverse.copy( source.matrixWorldInverse ); - - this.projectionMatrix.copy( source.projectionMatrix ); - this.projectionMatrixInverse.copy( source.projectionMatrixInverse ); - - return this; - - }, - - getWorldDirection: function ( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Camera: .getWorldDirection() target is now required' ); - target = new Vector3(); - - } - - this.updateMatrixWorld( true ); - - var e = this.matrixWorld.elements; - - return target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize(); - - }, - - updateMatrixWorld: function ( force ) { - - Object3D.prototype.updateMatrixWorld.call( this, force ); - - this.matrixWorldInverse.getInverse( this.matrixWorld ); - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author greggman / http://games.greggman.com/ - * @author zz85 / http://www.lab4games.net/zz85/blog - * @author tschw - */ - - function PerspectiveCamera( fov, aspect, near, far ) { - - Camera.call( this ); - - this.type = 'PerspectiveCamera'; - - this.fov = fov !== undefined ? fov : 50; - this.zoom = 1; - - this.near = near !== undefined ? near : 0.1; - this.far = far !== undefined ? far : 2000; - this.focus = 10; - - this.aspect = aspect !== undefined ? aspect : 1; - this.view = null; - - this.filmGauge = 35; // width of the film (default in millimeters) - this.filmOffset = 0; // horizontal film offset (same unit as gauge) - - this.updateProjectionMatrix(); - - } - - PerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), { - - constructor: PerspectiveCamera, - - isPerspectiveCamera: true, - - copy: function ( source, recursive ) { - - Camera.prototype.copy.call( this, source, recursive ); - - this.fov = source.fov; - this.zoom = source.zoom; - - this.near = source.near; - this.far = source.far; - this.focus = source.focus; - - this.aspect = source.aspect; - this.view = source.view === null ? null : Object.assign( {}, source.view ); - - this.filmGauge = source.filmGauge; - this.filmOffset = source.filmOffset; - - return this; - - }, - - /** - * Sets the FOV by focal length in respect to the current .filmGauge. - * - * The default film gauge is 35, so that the focal length can be specified for - * a 35mm (full frame) camera. - * - * Values for focal length and film gauge must have the same unit. - */ - setFocalLength: function ( focalLength ) { - - // see http://www.bobatkins.com/photography/technical/field_of_view.html - var vExtentSlope = 0.5 * this.getFilmHeight() / focalLength; - - this.fov = _Math.RAD2DEG * 2 * Math.atan( vExtentSlope ); - this.updateProjectionMatrix(); - - }, - - /** - * Calculates the focal length from the current .fov and .filmGauge. - */ - getFocalLength: function () { - - var vExtentSlope = Math.tan( _Math.DEG2RAD * 0.5 * this.fov ); - - return 0.5 * this.getFilmHeight() / vExtentSlope; - - }, - - getEffectiveFOV: function () { - - return _Math.RAD2DEG * 2 * Math.atan( - Math.tan( _Math.DEG2RAD * 0.5 * this.fov ) / this.zoom ); - - }, - - getFilmWidth: function () { - - // film not completely covered in portrait format (aspect < 1) - return this.filmGauge * Math.min( this.aspect, 1 ); - - }, - - getFilmHeight: function () { - - // film not completely covered in landscape format (aspect > 1) - return this.filmGauge / Math.max( this.aspect, 1 ); - - }, - - /** - * Sets an offset in a larger frustum. This is useful for multi-window or - * multi-monitor/multi-machine setups. - * - * For example, if you have 3x2 monitors and each monitor is 1920x1080 and - * the monitors are in grid like this - * - * +---+---+---+ - * | A | B | C | - * +---+---+---+ - * | D | E | F | - * +---+---+---+ - * - * then for each monitor you would call it like this - * - * var w = 1920; - * var h = 1080; - * var fullWidth = w * 3; - * var fullHeight = h * 2; - * - * --A-- - * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h ); - * --B-- - * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h ); - * --C-- - * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h ); - * --D-- - * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h ); - * --E-- - * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h ); - * --F-- - * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h ); - * - * Note there is no reason monitors have to be the same size or in a grid. - */ - setViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) { - - this.aspect = fullWidth / fullHeight; - - if ( this.view === null ) { - - this.view = { - enabled: true, - fullWidth: 1, - fullHeight: 1, - offsetX: 0, - offsetY: 0, - width: 1, - height: 1 - }; - - } - - this.view.enabled = true; - this.view.fullWidth = fullWidth; - this.view.fullHeight = fullHeight; - this.view.offsetX = x; - this.view.offsetY = y; - this.view.width = width; - this.view.height = height; - - this.updateProjectionMatrix(); - - }, - - clearViewOffset: function () { - - if ( this.view !== null ) { - - this.view.enabled = false; - - } - - this.updateProjectionMatrix(); - - }, - - updateProjectionMatrix: function () { - - var near = this.near, - top = near * Math.tan( _Math.DEG2RAD * 0.5 * this.fov ) / this.zoom, - height = 2 * top, - width = this.aspect * height, - left = - 0.5 * width, - view = this.view; - - if ( this.view !== null && this.view.enabled ) { - - var fullWidth = view.fullWidth, - fullHeight = view.fullHeight; - - left += view.offsetX * width / fullWidth; - top -= view.offsetY * height / fullHeight; - width *= view.width / fullWidth; - height *= view.height / fullHeight; - - } - - var skew = this.filmOffset; - if ( skew !== 0 ) left += near * skew / this.getFilmWidth(); - - this.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far ); - - this.projectionMatrixInverse.getInverse( this.projectionMatrix ); - - }, - - toJSON: function ( meta ) { - - var data = Object3D.prototype.toJSON.call( this, meta ); - - data.object.fov = this.fov; - data.object.zoom = this.zoom; - - data.object.near = this.near; - data.object.far = this.far; - data.object.focus = this.focus; - - data.object.aspect = this.aspect; - - if ( this.view !== null ) data.object.view = Object.assign( {}, this.view ); - - data.object.filmGauge = this.filmGauge; - data.object.filmOffset = this.filmOffset; - - return data; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function ArrayCamera( array ) { - - PerspectiveCamera.call( this ); - - this.cameras = array || []; - - } - - ArrayCamera.prototype = Object.assign( Object.create( PerspectiveCamera.prototype ), { - - constructor: ArrayCamera, - - isArrayCamera: true - - } ); - - /** - * @author jsantell / https://www.jsantell.com/ - * @author mrdoob / http://mrdoob.com/ - */ - - var cameraLPos = new Vector3(); - var cameraRPos = new Vector3(); - - /** - * Assumes 2 cameras that are parallel and share an X-axis, and that - * the cameras' projection and world matrices have already been set. - * And that near and far planes are identical for both cameras. - * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765 - */ - function setProjectionFromUnion( camera, cameraL, cameraR ) { - - cameraLPos.setFromMatrixPosition( cameraL.matrixWorld ); - cameraRPos.setFromMatrixPosition( cameraR.matrixWorld ); - - var ipd = cameraLPos.distanceTo( cameraRPos ); - - var projL = cameraL.projectionMatrix.elements; - var projR = cameraR.projectionMatrix.elements; - - // VR systems will have identical far and near planes, and - // most likely identical top and bottom frustum extents. - // Use the left camera for these values. - var near = projL[ 14 ] / ( projL[ 10 ] - 1 ); - var far = projL[ 14 ] / ( projL[ 10 ] + 1 ); - var topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ]; - var bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ]; - - var leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ]; - var rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ]; - var left = near * leftFov; - var right = near * rightFov; - - // Calculate the new camera's position offset from the - // left camera. xOffset should be roughly half `ipd`. - var zOffset = ipd / ( - leftFov + rightFov ); - var xOffset = zOffset * - leftFov; - - // TODO: Better way to apply this offset? - cameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale ); - camera.translateX( xOffset ); - camera.translateZ( zOffset ); - camera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale ); - camera.matrixWorldInverse.getInverse( camera.matrixWorld ); - - // Find the union of the frustum values of the cameras and scale - // the values so that the near plane's position does not change in world space, - // although must now be relative to the new union camera. - var near2 = near + zOffset; - var far2 = far + zOffset; - var left2 = left - xOffset; - var right2 = right + ( ipd - xOffset ); - var top2 = topFov * far / far2 * near2; - var bottom2 = bottomFov * far / far2 * near2; - - camera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 ); - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function WebVRManager( renderer ) { - - var renderWidth, renderHeight; - var scope = this; - - var device = null; - var frameData = null; - - var poseTarget = null; - - var controllers = []; - var standingMatrix = new Matrix4(); - var standingMatrixInverse = new Matrix4(); - - var framebufferScaleFactor = 1.0; - - var referenceSpaceType = 'local-floor'; - - if ( typeof window !== 'undefined' && 'VRFrameData' in window ) { - - frameData = new window.VRFrameData(); - window.addEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange, false ); - - } - - var matrixWorldInverse = new Matrix4(); - var tempQuaternion = new Quaternion(); - var tempPosition = new Vector3(); - - var cameraL = new PerspectiveCamera(); - cameraL.viewport = new Vector4(); - cameraL.layers.enable( 1 ); - - var cameraR = new PerspectiveCamera(); - cameraR.viewport = new Vector4(); - cameraR.layers.enable( 2 ); - - var cameraVR = new ArrayCamera( [ cameraL, cameraR ] ); - cameraVR.layers.enable( 1 ); - cameraVR.layers.enable( 2 ); - - // - - function isPresenting() { - - return device !== null && device.isPresenting === true; - - } - - var currentSize = new Vector2(), currentPixelRatio; - - function onVRDisplayPresentChange() { - - if ( isPresenting() ) { - - var eyeParameters = device.getEyeParameters( 'left' ); - renderWidth = 2 * eyeParameters.renderWidth * framebufferScaleFactor; - renderHeight = eyeParameters.renderHeight * framebufferScaleFactor; - - currentPixelRatio = renderer.getPixelRatio(); - renderer.getSize( currentSize ); - - renderer.setDrawingBufferSize( renderWidth, renderHeight, 1 ); - - cameraL.viewport.set( 0, 0, renderWidth / 2, renderHeight ); - cameraR.viewport.set( renderWidth / 2, 0, renderWidth / 2, renderHeight ); - - animation.start(); - - } else { - - if ( scope.enabled ) { - - renderer.setDrawingBufferSize( currentSize.width, currentSize.height, currentPixelRatio ); - - } - - animation.stop(); - - } - - } - - // - - var triggers = []; - - function findGamepad( id ) { - - var gamepads = navigator.getGamepads && navigator.getGamepads(); - - for ( var i = 0, j = 0, l = gamepads.length; i < l; i ++ ) { - - var gamepad = gamepads[ i ]; - - if ( gamepad && ( gamepad.id === 'Daydream Controller' || - gamepad.id === 'Gear VR Controller' || gamepad.id === 'Oculus Go Controller' || - gamepad.id === 'OpenVR Gamepad' || gamepad.id.startsWith( 'Oculus Touch' ) || - gamepad.id.startsWith( 'Spatial Controller' ) ) ) { - - if ( j === id ) return gamepad; - - j ++; - - } - - } - - } - - function updateControllers() { - - for ( var i = 0; i < controllers.length; i ++ ) { - - var controller = controllers[ i ]; - - var gamepad = findGamepad( i ); - - if ( gamepad !== undefined && gamepad.pose !== undefined ) { - - if ( gamepad.pose === null ) return; - - // Pose - - var pose = gamepad.pose; - - if ( pose.hasPosition === false ) controller.position.set( 0.2, - 0.6, - 0.05 ); - - if ( pose.position !== null ) controller.position.fromArray( pose.position ); - if ( pose.orientation !== null ) controller.quaternion.fromArray( pose.orientation ); - controller.matrix.compose( controller.position, controller.quaternion, controller.scale ); - controller.matrix.premultiply( standingMatrix ); - controller.matrix.decompose( controller.position, controller.quaternion, controller.scale ); - controller.matrixWorldNeedsUpdate = true; - controller.visible = true; - - // Trigger - - var buttonId = gamepad.id === 'Daydream Controller' ? 0 : 1; - - if ( triggers[ i ] === undefined ) triggers[ i ] = false; - - if ( triggers[ i ] !== gamepad.buttons[ buttonId ].pressed ) { - - triggers[ i ] = gamepad.buttons[ buttonId ].pressed; - - if ( triggers[ i ] === true ) { - - controller.dispatchEvent( { type: 'selectstart' } ); - - } else { - - controller.dispatchEvent( { type: 'selectend' } ); - controller.dispatchEvent( { type: 'select' } ); - - } - - } - - } else { - - controller.visible = false; - - } - - } - - } - - function updateViewportFromBounds( viewport, bounds ) { - - if ( bounds !== null && bounds.length === 4 ) { - - viewport.set( bounds[ 0 ] * renderWidth, bounds[ 1 ] * renderHeight, bounds[ 2 ] * renderWidth, bounds[ 3 ] * renderHeight ); - - } - - } - - // - - this.enabled = false; - - this.getController = function ( id ) { - - var controller = controllers[ id ]; - - if ( controller === undefined ) { - - controller = new Group(); - controller.matrixAutoUpdate = false; - controller.visible = false; - - controllers[ id ] = controller; - - } - - return controller; - - }; - - this.getDevice = function () { - - return device; - - }; - - this.setDevice = function ( value ) { - - if ( value !== undefined ) device = value; - - animation.setContext( value ); - - }; - - this.setFramebufferScaleFactor = function ( value ) { - - framebufferScaleFactor = value; - - }; - - this.setReferenceSpaceType = function ( value ) { - - referenceSpaceType = value; - - }; - - this.setPoseTarget = function ( object ) { - - if ( object !== undefined ) poseTarget = object; - - }; - - this.getCamera = function ( camera ) { - - var userHeight = referenceSpaceType === 'local-floor' ? 1.6 : 0; - - if ( isPresenting() === false ) { - - camera.position.set( 0, userHeight, 0 ); - camera.rotation.set( 0, 0, 0 ); - - return camera; - - } - - device.depthNear = camera.near; - device.depthFar = camera.far; - - device.getFrameData( frameData ); - - // - - if ( referenceSpaceType === 'local-floor' ) { - - var stageParameters = device.stageParameters; - - if ( stageParameters ) { - - standingMatrix.fromArray( stageParameters.sittingToStandingTransform ); - - } else { - - standingMatrix.makeTranslation( 0, userHeight, 0 ); - - } - - } - - - var pose = frameData.pose; - var poseObject = poseTarget !== null ? poseTarget : camera; - - // We want to manipulate poseObject by its position and quaternion components since users may rely on them. - poseObject.matrix.copy( standingMatrix ); - poseObject.matrix.decompose( poseObject.position, poseObject.quaternion, poseObject.scale ); - - if ( pose.orientation !== null ) { - - tempQuaternion.fromArray( pose.orientation ); - poseObject.quaternion.multiply( tempQuaternion ); - - } - - if ( pose.position !== null ) { - - tempQuaternion.setFromRotationMatrix( standingMatrix ); - tempPosition.fromArray( pose.position ); - tempPosition.applyQuaternion( tempQuaternion ); - poseObject.position.add( tempPosition ); - - } - - poseObject.updateMatrixWorld(); - - // - - cameraL.near = camera.near; - cameraR.near = camera.near; - - cameraL.far = camera.far; - cameraR.far = camera.far; - - cameraL.matrixWorldInverse.fromArray( frameData.leftViewMatrix ); - cameraR.matrixWorldInverse.fromArray( frameData.rightViewMatrix ); - - // TODO (mrdoob) Double check this code - - standingMatrixInverse.getInverse( standingMatrix ); - - if ( referenceSpaceType === 'local-floor' ) { - - cameraL.matrixWorldInverse.multiply( standingMatrixInverse ); - cameraR.matrixWorldInverse.multiply( standingMatrixInverse ); - - } - - var parent = poseObject.parent; - - if ( parent !== null ) { - - matrixWorldInverse.getInverse( parent.matrixWorld ); - - cameraL.matrixWorldInverse.multiply( matrixWorldInverse ); - cameraR.matrixWorldInverse.multiply( matrixWorldInverse ); - - } - - // envMap and Mirror needs camera.matrixWorld - - cameraL.matrixWorld.getInverse( cameraL.matrixWorldInverse ); - cameraR.matrixWorld.getInverse( cameraR.matrixWorldInverse ); - - cameraL.projectionMatrix.fromArray( frameData.leftProjectionMatrix ); - cameraR.projectionMatrix.fromArray( frameData.rightProjectionMatrix ); - - setProjectionFromUnion( cameraVR, cameraL, cameraR ); - - // - - var layers = device.getLayers(); - - if ( layers.length ) { - - var layer = layers[ 0 ]; - - updateViewportFromBounds( cameraL.viewport, layer.leftBounds ); - updateViewportFromBounds( cameraR.viewport, layer.rightBounds ); - - } - - updateControllers(); - - return cameraVR; - - }; - - this.getStandingMatrix = function () { - - return standingMatrix; - - }; - - this.isPresenting = isPresenting; - - // Animation Loop - - var animation = new WebGLAnimation(); - - this.setAnimationLoop = function ( callback ) { - - animation.setAnimationLoop( callback ); - - if ( isPresenting() ) animation.start(); - - }; - - this.submitFrame = function () { - - if ( isPresenting() ) device.submitFrame(); - - }; - - this.dispose = function () { - - if ( typeof window !== 'undefined' ) { - - window.removeEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange ); - - } - - }; - - // DEPRECATED - - this.setFrameOfReferenceType = function () { - - console.warn( 'THREE.WebVRManager: setFrameOfReferenceType() has been deprecated.' ); - - }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function WebXRManager( renderer ) { - - var gl = renderer.context; - - var session = null; - - var referenceSpace = null; - var referenceSpaceType = 'local-floor'; - - var pose = null; - - var controllers = []; - var inputSources = []; - - function isPresenting() { - - return session !== null && referenceSpace !== null; - - } - - // - - var cameraL = new PerspectiveCamera(); - cameraL.layers.enable( 1 ); - cameraL.viewport = new Vector4(); - - var cameraR = new PerspectiveCamera(); - cameraR.layers.enable( 2 ); - cameraR.viewport = new Vector4(); - - var cameraVR = new ArrayCamera( [ cameraL, cameraR ] ); - cameraVR.layers.enable( 1 ); - cameraVR.layers.enable( 2 ); - - // - - this.enabled = false; - - this.getController = function ( id ) { - - var controller = controllers[ id ]; - - if ( controller === undefined ) { - - controller = new Group(); - controller.matrixAutoUpdate = false; - controller.visible = false; - - controllers[ id ] = controller; - - } - - return controller; - - }; - - // - - function onSessionEvent( event ) { - - for ( var i = 0; i < controllers.length; i ++ ) { - - if ( inputSources[ i ] === event.inputSource ) { - - controllers[ i ].dispatchEvent( { type: event.type } ); - - } - - } - - } - - function onSessionEnd() { - - renderer.setFramebuffer( null ); - renderer.setRenderTarget( renderer.getRenderTarget() ); // Hack #15830 - animation.stop(); - - } - - function onRequestReferenceSpace( value ) { - - referenceSpace = value; - - animation.setContext( session ); - animation.start(); - - } - - this.setFramebufferScaleFactor = function ( value ) { - - }; - - this.setReferenceSpaceType = function ( value ) { - - referenceSpaceType = value; - - }; - - this.getSession = function () { - - return session; - - }; - - this.setSession = function ( value ) { - - session = value; - - if ( session !== null ) { - - session.addEventListener( 'select', onSessionEvent ); - session.addEventListener( 'selectstart', onSessionEvent ); - session.addEventListener( 'selectend', onSessionEvent ); - session.addEventListener( 'end', onSessionEnd ); - - session.updateRenderState( { baseLayer: new XRWebGLLayer( session, gl ) } ); - - session.requestReferenceSpace( referenceSpaceType ).then( onRequestReferenceSpace ); - - // - - inputSources = session.inputSources; - - session.addEventListener( 'inputsourceschange', function () { - - inputSources = session.inputSources; - console.log( inputSources ); - - for ( var i = 0; i < controllers.length; i ++ ) { - - var controller = controllers[ i ]; - controller.userData.inputSource = inputSources[ i ]; - - } - - } ); - - } - - }; - - function updateCamera( camera, parent ) { - - if ( parent === null ) { - - camera.matrixWorld.copy( camera.matrix ); - - } else { - - camera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix ); - - } - - camera.matrixWorldInverse.getInverse( camera.matrixWorld ); - - } - - this.getCamera = function ( camera ) { - - if ( isPresenting() ) { - - var parent = camera.parent; - var cameras = cameraVR.cameras; - - updateCamera( cameraVR, parent ); - - for ( var i = 0; i < cameras.length; i ++ ) { - - updateCamera( cameras[ i ], parent ); - - } - - // update camera and its children - - camera.matrixWorld.copy( cameraVR.matrixWorld ); - - var children = camera.children; - - for ( var i = 0, l = children.length; i < l; i ++ ) { - - children[ i ].updateMatrixWorld( true ); - - } - - setProjectionFromUnion( cameraVR, cameraL, cameraR ); - - return cameraVR; - - } - - return camera; - - }; - - this.isPresenting = isPresenting; - - // Animation Loop - - var onAnimationFrameCallback = null; - - function onAnimationFrame( time, frame ) { - - pose = frame.getViewerPose( referenceSpace ); - - if ( pose !== null ) { - - var views = pose.views; - var baseLayer = session.renderState.baseLayer; - - renderer.setFramebuffer( baseLayer.framebuffer ); - - for ( var i = 0; i < views.length; i ++ ) { - - var view = views[ i ]; - var viewport = baseLayer.getViewport( view ); - var viewMatrix = view.transform.inverse.matrix; - - var camera = cameraVR.cameras[ i ]; - camera.matrix.fromArray( viewMatrix ).getInverse( camera.matrix ); - camera.projectionMatrix.fromArray( view.projectionMatrix ); - camera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height ); - - if ( i === 0 ) { - - cameraVR.matrix.copy( camera.matrix ); - - } - - } - - } - - // - - for ( var i = 0; i < controllers.length; i ++ ) { - - var controller = controllers[ i ]; - - var inputSource = inputSources[ i ]; - - if ( inputSource ) { - - var inputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace ); - - if ( inputPose !== null ) { - - controller.matrix.fromArray( inputPose.transform.matrix ); - controller.matrix.decompose( controller.position, controller.rotation, controller.scale ); - controller.visible = true; - - continue; - - } - - } - - controller.visible = false; - - } - - if ( onAnimationFrameCallback ) onAnimationFrameCallback( time ); - - } - - var animation = new WebGLAnimation(); - animation.setAnimationLoop( onAnimationFrame ); - - this.setAnimationLoop = function ( callback ) { - - onAnimationFrameCallback = callback; - - }; - - this.dispose = function () {}; - - // DEPRECATED - - this.getStandingMatrix = function () { - - console.warn( 'THREE.WebXRManager: getStandingMatrix() is no longer needed.' ); - return new Matrix4(); - - }; - - this.getDevice = function () { - - console.warn( 'THREE.WebXRManager: getDevice() has been deprecated.' ); - - }; - - this.setDevice = function () { - - console.warn( 'THREE.WebXRManager: setDevice() has been deprecated.' ); - - }; - - this.setFrameOfReferenceType = function () { - - console.warn( 'THREE.WebXRManager: setFrameOfReferenceType() has been deprecated.' ); - - }; - - this.submitFrame = function () {}; - - } - - /** - * @author supereggbert / http://www.paulbrunt.co.uk/ - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - * @author szimek / https://github.com/szimek/ - * @author tschw - */ - - function WebGLRenderer( parameters ) { - - console.log( 'THREE.WebGLRenderer', REVISION ); - - parameters = parameters || {}; - - var _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ), - _context = parameters.context !== undefined ? parameters.context : null, - - _alpha = parameters.alpha !== undefined ? parameters.alpha : false, - _depth = parameters.depth !== undefined ? parameters.depth : true, - _stencil = parameters.stencil !== undefined ? parameters.stencil : true, - _antialias = parameters.antialias !== undefined ? parameters.antialias : false, - _premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true, - _preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false, - _powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default', - _failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false; - - var currentRenderList = null; - var currentRenderState = null; - - // public properties - - this.domElement = _canvas; - this.context = null; - - // Debug configuration container - this.debug = { - - /** - * Enables error checking and reporting when shader programs are being compiled - * @type {boolean} - */ - checkShaderErrors: true - }; - - // clearing - - this.autoClear = true; - this.autoClearColor = true; - this.autoClearDepth = true; - this.autoClearStencil = true; - - // scene graph - - this.sortObjects = true; - - // user-defined clipping - - this.clippingPlanes = []; - this.localClippingEnabled = false; - - // physically based shading - - this.gammaFactor = 2.0; // for backwards compatibility - this.gammaInput = false; - this.gammaOutput = false; - - // physical lights - - this.physicallyCorrectLights = false; - - // tone mapping - - this.toneMapping = LinearToneMapping; - this.toneMappingExposure = 1.0; - this.toneMappingWhitePoint = 1.0; - - // morphs - - this.maxMorphTargets = 8; - this.maxMorphNormals = 4; - - // internal properties - - var _this = this, - - _isContextLost = false, - - // internal state cache - - _framebuffer = null, - - _currentActiveCubeFace = 0, - _currentActiveMipmapLevel = 0, - _currentRenderTarget = null, - _currentFramebuffer = null, - _currentMaterialId = - 1, - - // geometry and program caching - - _currentGeometryProgram = { - geometry: null, - program: null, - wireframe: false - }, - - _currentCamera = null, - _currentArrayCamera = null, - - _currentViewport = new Vector4(), - _currentScissor = new Vector4(), - _currentScissorTest = null, - - // - - _width = _canvas.width, - _height = _canvas.height, - - _pixelRatio = 1, - - _viewport = new Vector4( 0, 0, _width, _height ), - _scissor = new Vector4( 0, 0, _width, _height ), - _scissorTest = false, - - // frustum - - _frustum = new Frustum(), - - // clipping - - _clipping = new WebGLClipping(), - _clippingEnabled = false, - _localClippingEnabled = false, - - // camera matrices cache - - _projScreenMatrix = new Matrix4(), - - _vector3 = new Vector3(); - - function getTargetPixelRatio() { - - return _currentRenderTarget === null ? _pixelRatio : 1; - - } - - // initialize - - var _gl; - - try { - - var contextAttributes = { - alpha: _alpha, - depth: _depth, - stencil: _stencil, - antialias: _antialias, - premultipliedAlpha: _premultipliedAlpha, - preserveDrawingBuffer: _preserveDrawingBuffer, - powerPreference: _powerPreference, - failIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat, - xrCompatible: true - }; - - // event listeners must be registered before WebGL context is created, see #12753 - - _canvas.addEventListener( 'webglcontextlost', onContextLost, false ); - _canvas.addEventListener( 'webglcontextrestored', onContextRestore, false ); - - _gl = _context || _canvas.getContext( 'webgl', contextAttributes ) || _canvas.getContext( 'experimental-webgl', contextAttributes ); - - if ( _gl === null ) { - - if ( _canvas.getContext( 'webgl' ) !== null ) { - - throw new Error( 'Error creating WebGL context with your selected attributes.' ); - - } else { - - throw new Error( 'Error creating WebGL context.' ); - - } - - } - - // Some experimental-webgl implementations do not have getShaderPrecisionFormat - - if ( _gl.getShaderPrecisionFormat === undefined ) { - - _gl.getShaderPrecisionFormat = function () { - - return { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 }; - - }; - - } - - } catch ( error ) { - - console.error( 'THREE.WebGLRenderer: ' + error.message ); - throw error; - - } - - var extensions, capabilities, state, info; - var properties, textures, attributes, geometries, objects; - var programCache, renderLists, renderStates; - - var background, morphtargets, bufferRenderer, indexedBufferRenderer; - - var utils; - - function initGLContext() { - - extensions = new WebGLExtensions( _gl ); - - capabilities = new WebGLCapabilities( _gl, extensions, parameters ); - - if ( ! capabilities.isWebGL2 ) { - - extensions.get( 'WEBGL_depth_texture' ); - extensions.get( 'OES_texture_float' ); - extensions.get( 'OES_texture_half_float' ); - extensions.get( 'OES_texture_half_float_linear' ); - extensions.get( 'OES_standard_derivatives' ); - extensions.get( 'OES_element_index_uint' ); - extensions.get( 'ANGLE_instanced_arrays' ); - - } - - extensions.get( 'OES_texture_float_linear' ); - - utils = new WebGLUtils( _gl, extensions, capabilities ); - - state = new WebGLState( _gl, extensions, utils, capabilities ); - state.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ) ); - state.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ) ); - - info = new WebGLInfo( _gl ); - properties = new WebGLProperties(); - textures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ); - attributes = new WebGLAttributes( _gl ); - geometries = new WebGLGeometries( _gl, attributes, info ); - objects = new WebGLObjects( geometries, info ); - morphtargets = new WebGLMorphtargets( _gl ); - programCache = new WebGLPrograms( _this, extensions, capabilities, textures ); - renderLists = new WebGLRenderLists(); - renderStates = new WebGLRenderStates(); - - background = new WebGLBackground( _this, state, objects, _premultipliedAlpha ); - - bufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities ); - indexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities ); - - info.programs = programCache.programs; - - _this.context = _gl; - _this.capabilities = capabilities; - _this.extensions = extensions; - _this.properties = properties; - _this.renderLists = renderLists; - _this.state = state; - _this.info = info; - - } - - initGLContext(); - - // vr - - var vr = ( typeof navigator !== 'undefined' && 'xr' in navigator && 'supportsSession' in navigator.xr ) ? new WebXRManager( _this ) : new WebVRManager( _this ); - - this.vr = vr; - - // shadow map - - var shadowMap = new WebGLShadowMap( _this, objects, capabilities.maxTextureSize ); - - this.shadowMap = shadowMap; - - // API - - this.getContext = function () { - - return _gl; - - }; - - this.getContextAttributes = function () { - - return _gl.getContextAttributes(); - - }; - - this.forceContextLoss = function () { - - var extension = extensions.get( 'WEBGL_lose_context' ); - if ( extension ) extension.loseContext(); - - }; - - this.forceContextRestore = function () { - - var extension = extensions.get( 'WEBGL_lose_context' ); - if ( extension ) extension.restoreContext(); - - }; - - this.getPixelRatio = function () { - - return _pixelRatio; - - }; - - this.setPixelRatio = function ( value ) { - - if ( value === undefined ) return; - - _pixelRatio = value; - - this.setSize( _width, _height, false ); - - }; - - this.getSize = function ( target ) { - - if ( target === undefined ) { - - console.warn( 'WebGLRenderer: .getsize() now requires a Vector2 as an argument' ); - - target = new Vector2(); - - } - - return target.set( _width, _height ); - - }; - - this.setSize = function ( width, height, updateStyle ) { - - if ( vr.isPresenting() ) { - - console.warn( 'THREE.WebGLRenderer: Can\'t change size while VR device is presenting.' ); - return; - - } - - _width = width; - _height = height; - - _canvas.width = width * _pixelRatio; - _canvas.height = height * _pixelRatio; - - if ( updateStyle !== false ) { - - _canvas.style.width = width + 'px'; - _canvas.style.height = height + 'px'; - - } - - this.setViewport( 0, 0, width, height ); - - }; - - this.getDrawingBufferSize = function ( target ) { - - if ( target === undefined ) { - - console.warn( 'WebGLRenderer: .getdrawingBufferSize() now requires a Vector2 as an argument' ); - - target = new Vector2(); - - } - - return target.set( _width * _pixelRatio, _height * _pixelRatio ); - - }; - - this.setDrawingBufferSize = function ( width, height, pixelRatio ) { - - _width = width; - _height = height; - - _pixelRatio = pixelRatio; - - _canvas.width = width * pixelRatio; - _canvas.height = height * pixelRatio; - - this.setViewport( 0, 0, width, height ); - - }; - - this.getCurrentViewport = function ( target ) { - - if ( target === undefined ) { - - console.warn( 'WebGLRenderer: .getCurrentViewport() now requires a Vector4 as an argument' ); - - target = new Vector4(); - - } - - return target.copy( _currentViewport ); - - }; - - this.getViewport = function ( target ) { - - return target.copy( _viewport ); - - }; - - this.setViewport = function ( x, y, width, height ) { - - if ( x.isVector4 ) { - - _viewport.set( x.x, x.y, x.z, x.w ); - - } else { - - _viewport.set( x, y, width, height ); - - } - - state.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ) ); - - }; - - this.getScissor = function ( target ) { - - return target.copy( _scissor ); - - }; - - this.setScissor = function ( x, y, width, height ) { - - if ( x.isVector4 ) { - - _scissor.set( x.x, x.y, x.z, x.w ); - - } else { - - _scissor.set( x, y, width, height ); - - } - - state.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ) ); - - }; - - this.getScissorTest = function () { - - return _scissorTest; - - }; - - this.setScissorTest = function ( boolean ) { - - state.setScissorTest( _scissorTest = boolean ); - - }; - - // Clearing - - this.getClearColor = function () { - - return background.getClearColor(); - - }; - - this.setClearColor = function () { - - background.setClearColor.apply( background, arguments ); - - }; - - this.getClearAlpha = function () { - - return background.getClearAlpha(); - - }; - - this.setClearAlpha = function () { - - background.setClearAlpha.apply( background, arguments ); - - }; - - this.clear = function ( color, depth, stencil ) { - - var bits = 0; - - if ( color === undefined || color ) bits |= 16384; - if ( depth === undefined || depth ) bits |= 256; - if ( stencil === undefined || stencil ) bits |= 1024; - - _gl.clear( bits ); - - }; - - this.clearColor = function () { - - this.clear( true, false, false ); - - }; - - this.clearDepth = function () { - - this.clear( false, true, false ); - - }; - - this.clearStencil = function () { - - this.clear( false, false, true ); - - }; - - // - - this.dispose = function () { - - _canvas.removeEventListener( 'webglcontextlost', onContextLost, false ); - _canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false ); - - renderLists.dispose(); - renderStates.dispose(); - properties.dispose(); - objects.dispose(); - - vr.dispose(); - - animation.stop(); - - }; - - // Events - - function onContextLost( event ) { - - event.preventDefault(); - - console.log( 'THREE.WebGLRenderer: Context Lost.' ); - - _isContextLost = true; - - } - - function onContextRestore( /* event */ ) { - - console.log( 'THREE.WebGLRenderer: Context Restored.' ); - - _isContextLost = false; - - initGLContext(); - - } - - function onMaterialDispose( event ) { - - var material = event.target; - - material.removeEventListener( 'dispose', onMaterialDispose ); - - deallocateMaterial( material ); - - } - - // Buffer deallocation - - function deallocateMaterial( material ) { - - releaseMaterialProgramReference( material ); - - properties.remove( material ); - - } - - - function releaseMaterialProgramReference( material ) { - - var programInfo = properties.get( material ).program; - - material.program = undefined; - - if ( programInfo !== undefined ) { - - programCache.releaseProgram( programInfo ); - - } - - } - - // Buffer rendering - - function renderObjectImmediate( object, program ) { - - object.render( function ( object ) { - - _this.renderBufferImmediate( object, program ); - - } ); - - } - - this.renderBufferImmediate = function ( object, program ) { - - state.initAttributes(); - - var buffers = properties.get( object ); - - if ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer(); - if ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer(); - if ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer(); - if ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer(); - - var programAttributes = program.getAttributes(); - - if ( object.hasPositions ) { - - _gl.bindBuffer( 34962, buffers.position ); - _gl.bufferData( 34962, object.positionArray, 35048 ); - - state.enableAttribute( programAttributes.position ); - _gl.vertexAttribPointer( programAttributes.position, 3, 5126, false, 0, 0 ); - - } - - if ( object.hasNormals ) { - - _gl.bindBuffer( 34962, buffers.normal ); - _gl.bufferData( 34962, object.normalArray, 35048 ); - - state.enableAttribute( programAttributes.normal ); - _gl.vertexAttribPointer( programAttributes.normal, 3, 5126, false, 0, 0 ); - - } - - if ( object.hasUvs ) { - - _gl.bindBuffer( 34962, buffers.uv ); - _gl.bufferData( 34962, object.uvArray, 35048 ); - - state.enableAttribute( programAttributes.uv ); - _gl.vertexAttribPointer( programAttributes.uv, 2, 5126, false, 0, 0 ); - - } - - if ( object.hasColors ) { - - _gl.bindBuffer( 34962, buffers.color ); - _gl.bufferData( 34962, object.colorArray, 35048 ); - - state.enableAttribute( programAttributes.color ); - _gl.vertexAttribPointer( programAttributes.color, 3, 5126, false, 0, 0 ); - - } - - state.disableUnusedAttributes(); - - _gl.drawArrays( 4, 0, object.count ); - - object.count = 0; - - }; - - this.renderBufferDirect = function ( camera, fog, geometry, material, object, group ) { - - var frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 ); - - state.setMaterial( material, frontFaceCW ); - - var program = setProgram( camera, fog, material, object ); - - var updateBuffers = false; - - if ( _currentGeometryProgram.geometry !== geometry.id || - _currentGeometryProgram.program !== program.id || - _currentGeometryProgram.wireframe !== ( material.wireframe === true ) ) { - - _currentGeometryProgram.geometry = geometry.id; - _currentGeometryProgram.program = program.id; - _currentGeometryProgram.wireframe = material.wireframe === true; - updateBuffers = true; - - } - - if ( object.morphTargetInfluences ) { - - morphtargets.update( object, geometry, material, program ); - - updateBuffers = true; - - } - - // - - var index = geometry.index; - var position = geometry.attributes.position; - var rangeFactor = 1; - - if ( material.wireframe === true ) { - - index = geometries.getWireframeAttribute( geometry ); - rangeFactor = 2; - - } - - var attribute; - var renderer = bufferRenderer; - - if ( index !== null ) { - - attribute = attributes.get( index ); - - renderer = indexedBufferRenderer; - renderer.setIndex( attribute ); - - } - - if ( updateBuffers ) { - - setupVertexAttributes( material, program, geometry ); - - if ( index !== null ) { - - _gl.bindBuffer( 34963, attribute.buffer ); - - } - - } - - // - - var dataCount = Infinity; - - if ( index !== null ) { - - dataCount = index.count; - - } else if ( position !== undefined ) { - - dataCount = position.count; - - } - - var rangeStart = geometry.drawRange.start * rangeFactor; - var rangeCount = geometry.drawRange.count * rangeFactor; - - var groupStart = group !== null ? group.start * rangeFactor : 0; - var groupCount = group !== null ? group.count * rangeFactor : Infinity; - - var drawStart = Math.max( rangeStart, groupStart ); - var drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1; - - var drawCount = Math.max( 0, drawEnd - drawStart + 1 ); - - if ( drawCount === 0 ) return; - - // - - if ( object.isMesh ) { - - if ( material.wireframe === true ) { - - state.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() ); - renderer.setMode( 1 ); - - } else { - - switch ( object.drawMode ) { - - case TrianglesDrawMode: - renderer.setMode( 4 ); - break; - - case TriangleStripDrawMode: - renderer.setMode( 5 ); - break; - - case TriangleFanDrawMode: - renderer.setMode( 6 ); - break; - - } - - } - - - } else if ( object.isLine ) { - - var lineWidth = material.linewidth; - - if ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material - - state.setLineWidth( lineWidth * getTargetPixelRatio() ); - - if ( object.isLineSegments ) { - - renderer.setMode( 1 ); - - } else if ( object.isLineLoop ) { - - renderer.setMode( 2 ); - - } else { - - renderer.setMode( 3 ); - - } - - } else if ( object.isPoints ) { - - renderer.setMode( 0 ); - - } else if ( object.isSprite ) { - - renderer.setMode( 4 ); - - } - - if ( geometry && geometry.isInstancedBufferGeometry ) { - - if ( geometry.maxInstancedCount > 0 ) { - - renderer.renderInstances( geometry, drawStart, drawCount ); - - } - - } else { - - renderer.render( drawStart, drawCount ); - - } - - }; - - function setupVertexAttributes( material, program, geometry ) { - - if ( geometry && geometry.isInstancedBufferGeometry && ! capabilities.isWebGL2 ) { - - if ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) { - - console.error( 'THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' ); - return; - - } - - } - - state.initAttributes(); - - var geometryAttributes = geometry.attributes; - - var programAttributes = program.getAttributes(); - - var materialDefaultAttributeValues = material.defaultAttributeValues; - - for ( var name in programAttributes ) { - - var programAttribute = programAttributes[ name ]; - - if ( programAttribute >= 0 ) { - - var geometryAttribute = geometryAttributes[ name ]; - - if ( geometryAttribute !== undefined ) { - - var normalized = geometryAttribute.normalized; - var size = geometryAttribute.itemSize; - - var attribute = attributes.get( geometryAttribute ); - - // TODO Attribute may not be available on context restore - - if ( attribute === undefined ) continue; - - var buffer = attribute.buffer; - var type = attribute.type; - var bytesPerElement = attribute.bytesPerElement; - - if ( geometryAttribute.isInterleavedBufferAttribute ) { - - var data = geometryAttribute.data; - var stride = data.stride; - var offset = geometryAttribute.offset; - - if ( data && data.isInstancedInterleavedBuffer ) { - - state.enableAttributeAndDivisor( programAttribute, data.meshPerAttribute ); - - if ( geometry.maxInstancedCount === undefined ) { - - geometry.maxInstancedCount = data.meshPerAttribute * data.count; - - } - - } else { - - state.enableAttribute( programAttribute ); - - } - - _gl.bindBuffer( 34962, buffer ); - _gl.vertexAttribPointer( programAttribute, size, type, normalized, stride * bytesPerElement, offset * bytesPerElement ); - - } else { - - if ( geometryAttribute.isInstancedBufferAttribute ) { - - state.enableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute ); - - if ( geometry.maxInstancedCount === undefined ) { - - geometry.maxInstancedCount = geometryAttribute.meshPerAttribute * geometryAttribute.count; - - } - - } else { - - state.enableAttribute( programAttribute ); - - } - - _gl.bindBuffer( 34962, buffer ); - _gl.vertexAttribPointer( programAttribute, size, type, normalized, 0, 0 ); - - } - - } else if ( materialDefaultAttributeValues !== undefined ) { - - var value = materialDefaultAttributeValues[ name ]; - - if ( value !== undefined ) { - - switch ( value.length ) { - - case 2: - _gl.vertexAttrib2fv( programAttribute, value ); - break; - - case 3: - _gl.vertexAttrib3fv( programAttribute, value ); - break; - - case 4: - _gl.vertexAttrib4fv( programAttribute, value ); - break; - - default: - _gl.vertexAttrib1fv( programAttribute, value ); - - } - - } - - } - - } - - } - - state.disableUnusedAttributes(); - - } - - // Compile - - this.compile = function ( scene, camera ) { - - currentRenderState = renderStates.get( scene, camera ); - currentRenderState.init(); - - scene.traverse( function ( object ) { - - if ( object.isLight ) { - - currentRenderState.pushLight( object ); - - if ( object.castShadow ) { - - currentRenderState.pushShadow( object ); - - } - - } - - } ); - - currentRenderState.setupLights( camera ); - - scene.traverse( function ( object ) { - - if ( object.material ) { - - if ( Array.isArray( object.material ) ) { - - for ( var i = 0; i < object.material.length; i ++ ) { - - initMaterial( object.material[ i ], scene.fog, object ); - - } - - } else { - - initMaterial( object.material, scene.fog, object ); - - } - - } - - } ); - - }; - - // Animation Loop - - var onAnimationFrameCallback = null; - - function onAnimationFrame( time ) { - - if ( vr.isPresenting() ) return; - if ( onAnimationFrameCallback ) onAnimationFrameCallback( time ); - - } - - var animation = new WebGLAnimation(); - animation.setAnimationLoop( onAnimationFrame ); - - if ( typeof window !== 'undefined' ) animation.setContext( window ); - - this.setAnimationLoop = function ( callback ) { - - onAnimationFrameCallback = callback; - vr.setAnimationLoop( callback ); - - animation.start(); - - }; - - // Rendering - - this.render = function ( scene, camera ) { - - var renderTarget, forceClear; - - if ( arguments[ 2 ] !== undefined ) { - - console.warn( 'THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead.' ); - renderTarget = arguments[ 2 ]; - - } - - if ( arguments[ 3 ] !== undefined ) { - - console.warn( 'THREE.WebGLRenderer.render(): the forceClear argument has been removed. Use .clear() instead.' ); - forceClear = arguments[ 3 ]; - - } - - if ( ! ( camera && camera.isCamera ) ) { - - console.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' ); - return; - - } - - if ( _isContextLost ) return; - - // reset caching for this frame - - _currentGeometryProgram.geometry = null; - _currentGeometryProgram.program = null; - _currentGeometryProgram.wireframe = false; - _currentMaterialId = - 1; - _currentCamera = null; - - // update scene graph - - if ( scene.autoUpdate === true ) scene.updateMatrixWorld(); - - // update camera matrices and frustum - - if ( camera.parent === null ) camera.updateMatrixWorld(); - - if ( vr.enabled ) { - - camera = vr.getCamera( camera ); - - } - - // - - currentRenderState = renderStates.get( scene, camera ); - currentRenderState.init(); - - scene.onBeforeRender( _this, scene, camera, renderTarget || _currentRenderTarget ); - - _projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse ); - _frustum.setFromMatrix( _projScreenMatrix ); - - _localClippingEnabled = this.localClippingEnabled; - _clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera ); - - currentRenderList = renderLists.get( scene, camera ); - currentRenderList.init(); - - projectObject( scene, camera, 0, _this.sortObjects ); - - if ( _this.sortObjects === true ) { - - currentRenderList.sort(); - - } - - // - - if ( _clippingEnabled ) _clipping.beginShadows(); - - var shadowsArray = currentRenderState.state.shadowsArray; - - shadowMap.render( shadowsArray, scene, camera ); - - currentRenderState.setupLights( camera ); - - if ( _clippingEnabled ) _clipping.endShadows(); - - // - - if ( this.info.autoReset ) this.info.reset(); - - if ( renderTarget !== undefined ) { - - this.setRenderTarget( renderTarget ); - - } - - // - - background.render( currentRenderList, scene, camera, forceClear ); - - // render scene - - var opaqueObjects = currentRenderList.opaque; - var transparentObjects = currentRenderList.transparent; - - if ( scene.overrideMaterial ) { - - var overrideMaterial = scene.overrideMaterial; - - if ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera, overrideMaterial ); - if ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera, overrideMaterial ); - - } else { - - // opaque pass (front-to-back order) - - if ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera ); - - // transparent pass (back-to-front order) - - if ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera ); - - } - - // - - scene.onAfterRender( _this, scene, camera ); - - // - - if ( _currentRenderTarget !== null ) { - - // Generate mipmap if we're using any kind of mipmap filtering - - textures.updateRenderTargetMipmap( _currentRenderTarget ); - - // resolve multisample renderbuffers to a single-sample texture if necessary - - textures.updateMultisampleRenderTarget( _currentRenderTarget ); - - } - - // Ensure depth buffer writing is enabled so it can be cleared on next render - - state.buffers.depth.setTest( true ); - state.buffers.depth.setMask( true ); - state.buffers.color.setMask( true ); - - state.setPolygonOffset( false ); - - if ( vr.enabled ) { - - vr.submitFrame(); - - } - - // _gl.finish(); - - currentRenderList = null; - currentRenderState = null; - - }; - - function projectObject( object, camera, groupOrder, sortObjects ) { - - if ( object.visible === false ) return; - - var visible = object.layers.test( camera.layers ); - - if ( visible ) { - - if ( object.isGroup ) { - - groupOrder = object.renderOrder; - - } else if ( object.isLight ) { - - currentRenderState.pushLight( object ); - - if ( object.castShadow ) { - - currentRenderState.pushShadow( object ); - - } - - } else if ( object.isSprite ) { - - if ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) { - - if ( sortObjects ) { - - _vector3.setFromMatrixPosition( object.matrixWorld ) - .applyMatrix4( _projScreenMatrix ); - - } - - var geometry = objects.update( object ); - var material = object.material; - - if ( material.visible ) { - - currentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null ); - - } - - } - - } else if ( object.isImmediateRenderObject ) { - - if ( sortObjects ) { - - _vector3.setFromMatrixPosition( object.matrixWorld ) - .applyMatrix4( _projScreenMatrix ); - - } - - currentRenderList.push( object, null, object.material, groupOrder, _vector3.z, null ); - - } else if ( object.isMesh || object.isLine || object.isPoints ) { - - if ( object.isSkinnedMesh ) { - - object.skeleton.update(); - - } - - if ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) { - - if ( sortObjects ) { - - _vector3.setFromMatrixPosition( object.matrixWorld ) - .applyMatrix4( _projScreenMatrix ); - - } - - var geometry = objects.update( object ); - var material = object.material; - - if ( Array.isArray( material ) ) { - - var groups = geometry.groups; - - for ( var i = 0, l = groups.length; i < l; i ++ ) { - - var group = groups[ i ]; - var groupMaterial = material[ group.materialIndex ]; - - if ( groupMaterial && groupMaterial.visible ) { - - currentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group ); - - } - - } - - } else if ( material.visible ) { - - currentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null ); - - } - - } - - } - - } - - var children = object.children; - - for ( var i = 0, l = children.length; i < l; i ++ ) { - - projectObject( children[ i ], camera, groupOrder, sortObjects ); - - } - - } - - function renderObjects( renderList, scene, camera, overrideMaterial ) { - - for ( var i = 0, l = renderList.length; i < l; i ++ ) { - - var renderItem = renderList[ i ]; - - var object = renderItem.object; - var geometry = renderItem.geometry; - var material = overrideMaterial === undefined ? renderItem.material : overrideMaterial; - var group = renderItem.group; - - if ( camera.isArrayCamera ) { - - _currentArrayCamera = camera; - - var cameras = camera.cameras; - - for ( var j = 0, jl = cameras.length; j < jl; j ++ ) { - - var camera2 = cameras[ j ]; - - if ( object.layers.test( camera2.layers ) ) { - - state.viewport( _currentViewport.copy( camera2.viewport ) ); - - currentRenderState.setupLights( camera2 ); - - renderObject( object, scene, camera2, geometry, material, group ); - - } - - } - - } else { - - _currentArrayCamera = null; - - renderObject( object, scene, camera, geometry, material, group ); - - } - - } - - } - - function renderObject( object, scene, camera, geometry, material, group ) { - - object.onBeforeRender( _this, scene, camera, geometry, material, group ); - currentRenderState = renderStates.get( scene, _currentArrayCamera || camera ); - - object.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld ); - object.normalMatrix.getNormalMatrix( object.modelViewMatrix ); - - if ( object.isImmediateRenderObject ) { - - state.setMaterial( material ); - - var program = setProgram( camera, scene.fog, material, object ); - - _currentGeometryProgram.geometry = null; - _currentGeometryProgram.program = null; - _currentGeometryProgram.wireframe = false; - - renderObjectImmediate( object, program ); - - } else { - - _this.renderBufferDirect( camera, scene.fog, geometry, material, object, group ); - - } - - object.onAfterRender( _this, scene, camera, geometry, material, group ); - currentRenderState = renderStates.get( scene, _currentArrayCamera || camera ); - - } - - function initMaterial( material, fog, object ) { - - var materialProperties = properties.get( material ); - - var lights = currentRenderState.state.lights; - var shadowsArray = currentRenderState.state.shadowsArray; - - var lightsHash = materialProperties.lightsHash; - var lightsStateHash = lights.state.hash; - - var parameters = programCache.getParameters( - material, lights.state, shadowsArray, fog, _clipping.numPlanes, _clipping.numIntersection, object ); - - var code = programCache.getProgramCode( material, parameters ); - - var program = materialProperties.program; - var programChange = true; - - if ( program === undefined ) { - - // new material - material.addEventListener( 'dispose', onMaterialDispose ); - - } else if ( program.code !== code ) { - - // changed glsl or parameters - releaseMaterialProgramReference( material ); - - } else if ( lightsHash.stateID !== lightsStateHash.stateID || - lightsHash.directionalLength !== lightsStateHash.directionalLength || - lightsHash.pointLength !== lightsStateHash.pointLength || - lightsHash.spotLength !== lightsStateHash.spotLength || - lightsHash.rectAreaLength !== lightsStateHash.rectAreaLength || - lightsHash.hemiLength !== lightsStateHash.hemiLength || - lightsHash.shadowsLength !== lightsStateHash.shadowsLength ) { - - lightsHash.stateID = lightsStateHash.stateID; - lightsHash.directionalLength = lightsStateHash.directionalLength; - lightsHash.pointLength = lightsStateHash.pointLength; - lightsHash.spotLength = lightsStateHash.spotLength; - lightsHash.rectAreaLength = lightsStateHash.rectAreaLength; - lightsHash.hemiLength = lightsStateHash.hemiLength; - lightsHash.shadowsLength = lightsStateHash.shadowsLength; - - programChange = false; - - } else if ( parameters.shaderID !== undefined ) { - - // same glsl and uniform list - return; - - } else { - - // only rebuild uniform list - programChange = false; - - } - - if ( programChange ) { - - if ( parameters.shaderID ) { - - var shader = ShaderLib[ parameters.shaderID ]; - - materialProperties.shader = { - name: material.type, - uniforms: cloneUniforms( shader.uniforms ), - vertexShader: shader.vertexShader, - fragmentShader: shader.fragmentShader - }; - - } else { - - materialProperties.shader = { - name: material.type, - uniforms: material.uniforms, - vertexShader: material.vertexShader, - fragmentShader: material.fragmentShader - }; - - } - - material.onBeforeCompile( materialProperties.shader, _this ); - - // Computing code again as onBeforeCompile may have changed the shaders - code = programCache.getProgramCode( material, parameters ); - - program = programCache.acquireProgram( material, materialProperties.shader, parameters, code ); - - materialProperties.program = program; - material.program = program; - - } - - var programAttributes = program.getAttributes(); - - if ( material.morphTargets ) { - - material.numSupportedMorphTargets = 0; - - for ( var i = 0; i < _this.maxMorphTargets; i ++ ) { - - if ( programAttributes[ 'morphTarget' + i ] >= 0 ) { - - material.numSupportedMorphTargets ++; - - } - - } - - } - - if ( material.morphNormals ) { - - material.numSupportedMorphNormals = 0; - - for ( var i = 0; i < _this.maxMorphNormals; i ++ ) { - - if ( programAttributes[ 'morphNormal' + i ] >= 0 ) { - - material.numSupportedMorphNormals ++; - - } - - } - - } - - var uniforms = materialProperties.shader.uniforms; - - if ( ! material.isShaderMaterial && - ! material.isRawShaderMaterial || - material.clipping === true ) { - - materialProperties.numClippingPlanes = _clipping.numPlanes; - materialProperties.numIntersection = _clipping.numIntersection; - uniforms.clippingPlanes = _clipping.uniform; - - } - - materialProperties.fog = fog; - - // store the light setup it was created for - if ( lightsHash === undefined ) { - - materialProperties.lightsHash = lightsHash = {}; - - } - - lightsHash.stateID = lightsStateHash.stateID; - lightsHash.directionalLength = lightsStateHash.directionalLength; - lightsHash.pointLength = lightsStateHash.pointLength; - lightsHash.spotLength = lightsStateHash.spotLength; - lightsHash.rectAreaLength = lightsStateHash.rectAreaLength; - lightsHash.hemiLength = lightsStateHash.hemiLength; - lightsHash.shadowsLength = lightsStateHash.shadowsLength; - - if ( material.lights ) { - - // wire up the material to this renderer's lighting state - - uniforms.ambientLightColor.value = lights.state.ambient; - uniforms.lightProbe.value = lights.state.probe; - uniforms.directionalLights.value = lights.state.directional; - uniforms.spotLights.value = lights.state.spot; - uniforms.rectAreaLights.value = lights.state.rectArea; - uniforms.pointLights.value = lights.state.point; - uniforms.hemisphereLights.value = lights.state.hemi; - - uniforms.directionalShadowMap.value = lights.state.directionalShadowMap; - uniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix; - uniforms.spotShadowMap.value = lights.state.spotShadowMap; - uniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix; - uniforms.pointShadowMap.value = lights.state.pointShadowMap; - uniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix; - // TODO (abelnation): add area lights shadow info to uniforms - - } - - var progUniforms = materialProperties.program.getUniforms(), - uniformsList = - WebGLUniforms.seqWithValue( progUniforms.seq, uniforms ); - - materialProperties.uniformsList = uniformsList; - - } - - function setProgram( camera, fog, material, object ) { - - textures.resetTextureUnits(); - - var materialProperties = properties.get( material ); - var lights = currentRenderState.state.lights; - - var lightsHash = materialProperties.lightsHash; - var lightsStateHash = lights.state.hash; - - if ( _clippingEnabled ) { - - if ( _localClippingEnabled || camera !== _currentCamera ) { - - var useCache = - camera === _currentCamera && - material.id === _currentMaterialId; - - // we might want to call this function with some ClippingGroup - // object instead of the material, once it becomes feasible - // (#8465, #8379) - _clipping.setState( - material.clippingPlanes, material.clipIntersection, material.clipShadows, - camera, materialProperties, useCache ); - - } - - } - - if ( material.needsUpdate === false ) { - - if ( materialProperties.program === undefined ) { - - material.needsUpdate = true; - - } else if ( material.fog && materialProperties.fog !== fog ) { - - material.needsUpdate = true; - - } else if ( material.lights && ( lightsHash.stateID !== lightsStateHash.stateID || - lightsHash.directionalLength !== lightsStateHash.directionalLength || - lightsHash.pointLength !== lightsStateHash.pointLength || - lightsHash.spotLength !== lightsStateHash.spotLength || - lightsHash.rectAreaLength !== lightsStateHash.rectAreaLength || - lightsHash.hemiLength !== lightsStateHash.hemiLength || - lightsHash.shadowsLength !== lightsStateHash.shadowsLength ) ) { - - material.needsUpdate = true; - - } else if ( materialProperties.numClippingPlanes !== undefined && - ( materialProperties.numClippingPlanes !== _clipping.numPlanes || - materialProperties.numIntersection !== _clipping.numIntersection ) ) { - - material.needsUpdate = true; - - } - - } - - if ( material.needsUpdate ) { - - initMaterial( material, fog, object ); - material.needsUpdate = false; - - } - - var refreshProgram = false; - var refreshMaterial = false; - var refreshLights = false; - - var program = materialProperties.program, - p_uniforms = program.getUniforms(), - m_uniforms = materialProperties.shader.uniforms; - - if ( state.useProgram( program.program ) ) { - - refreshProgram = true; - refreshMaterial = true; - refreshLights = true; - - } - - if ( material.id !== _currentMaterialId ) { - - _currentMaterialId = material.id; - - refreshMaterial = true; - - } - - if ( refreshProgram || _currentCamera !== camera ) { - - p_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix ); - - if ( capabilities.logarithmicDepthBuffer ) { - - p_uniforms.setValue( _gl, 'logDepthBufFC', - 2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) ); - - } - - if ( _currentCamera !== camera ) { - - _currentCamera = camera; - - // lighting uniforms depend on the camera so enforce an update - // now, in case this material supports lights - or later, when - // the next material that does gets activated: - - refreshMaterial = true; // set to true on material change - refreshLights = true; // remains set until update done - - } - - // load material specific uniforms - // (shader material also gets them for the sake of genericity) - - if ( material.isShaderMaterial || - material.isMeshPhongMaterial || - material.isMeshStandardMaterial || - material.envMap ) { - - var uCamPos = p_uniforms.map.cameraPosition; - - if ( uCamPos !== undefined ) { - - uCamPos.setValue( _gl, - _vector3.setFromMatrixPosition( camera.matrixWorld ) ); - - } - - } - - if ( material.isMeshPhongMaterial || - material.isMeshLambertMaterial || - material.isMeshBasicMaterial || - material.isMeshStandardMaterial || - material.isShaderMaterial || - material.skinning ) { - - p_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse ); - - } - - } - - // skinning uniforms must be set even if material didn't change - // auto-setting of texture unit for bone texture must go before other textures - // not sure why, but otherwise weird things happen - - if ( material.skinning ) { - - p_uniforms.setOptional( _gl, object, 'bindMatrix' ); - p_uniforms.setOptional( _gl, object, 'bindMatrixInverse' ); - - var skeleton = object.skeleton; - - if ( skeleton ) { - - var bones = skeleton.bones; - - if ( capabilities.floatVertexTextures ) { - - if ( skeleton.boneTexture === undefined ) { - - // layout (1 matrix = 4 pixels) - // RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4) - // with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8) - // 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16) - // 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32) - // 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64) - - - var size = Math.sqrt( bones.length * 4 ); // 4 pixels needed for 1 matrix - size = _Math.ceilPowerOfTwo( size ); - size = Math.max( size, 4 ); - - var boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel - boneMatrices.set( skeleton.boneMatrices ); // copy current values - - var boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType ); - boneTexture.needsUpdate = true; - - skeleton.boneMatrices = boneMatrices; - skeleton.boneTexture = boneTexture; - skeleton.boneTextureSize = size; - - } - - p_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures ); - p_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize ); - - } else { - - p_uniforms.setOptional( _gl, skeleton, 'boneMatrices' ); - - } - - } - - } - - if ( refreshMaterial ) { - - p_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure ); - p_uniforms.setValue( _gl, 'toneMappingWhitePoint', _this.toneMappingWhitePoint ); - - if ( material.lights ) { - - // the current material requires lighting info - - // note: all lighting uniforms are always set correctly - // they simply reference the renderer's state for their - // values - // - // use the current material's .needsUpdate flags to set - // the GL state when required - - markUniformsLightsNeedsUpdate( m_uniforms, refreshLights ); - - } - - // refresh uniforms common to several materials - - if ( fog && material.fog ) { - - refreshUniformsFog( m_uniforms, fog ); - - } - - if ( material.isMeshBasicMaterial ) { - - refreshUniformsCommon( m_uniforms, material ); - - } else if ( material.isMeshLambertMaterial ) { - - refreshUniformsCommon( m_uniforms, material ); - refreshUniformsLambert( m_uniforms, material ); - - } else if ( material.isMeshPhongMaterial ) { - - refreshUniformsCommon( m_uniforms, material ); - - if ( material.isMeshToonMaterial ) { - - refreshUniformsToon( m_uniforms, material ); - - } else { - - refreshUniformsPhong( m_uniforms, material ); - - } - - } else if ( material.isMeshStandardMaterial ) { - - refreshUniformsCommon( m_uniforms, material ); - - if ( material.isMeshPhysicalMaterial ) { - - refreshUniformsPhysical( m_uniforms, material ); - - } else { - - refreshUniformsStandard( m_uniforms, material ); - - } - - } else if ( material.isMeshMatcapMaterial ) { - - refreshUniformsCommon( m_uniforms, material ); - - refreshUniformsMatcap( m_uniforms, material ); - - } else if ( material.isMeshDepthMaterial ) { - - refreshUniformsCommon( m_uniforms, material ); - refreshUniformsDepth( m_uniforms, material ); - - } else if ( material.isMeshDistanceMaterial ) { - - refreshUniformsCommon( m_uniforms, material ); - refreshUniformsDistance( m_uniforms, material ); - - } else if ( material.isMeshNormalMaterial ) { - - refreshUniformsCommon( m_uniforms, material ); - refreshUniformsNormal( m_uniforms, material ); - - } else if ( material.isLineBasicMaterial ) { - - refreshUniformsLine( m_uniforms, material ); - - if ( material.isLineDashedMaterial ) { - - refreshUniformsDash( m_uniforms, material ); - - } - - } else if ( material.isPointsMaterial ) { - - refreshUniformsPoints( m_uniforms, material ); - - } else if ( material.isSpriteMaterial ) { - - refreshUniformsSprites( m_uniforms, material ); - - } else if ( material.isShadowMaterial ) { - - m_uniforms.color.value.copy( material.color ); - m_uniforms.opacity.value = material.opacity; - - } - - // RectAreaLight Texture - // TODO (mrdoob): Find a nicer implementation - - if ( m_uniforms.ltc_1 !== undefined ) m_uniforms.ltc_1.value = UniformsLib.LTC_1; - if ( m_uniforms.ltc_2 !== undefined ) m_uniforms.ltc_2.value = UniformsLib.LTC_2; - - WebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures ); - - } - - if ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) { - - WebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures ); - material.uniformsNeedUpdate = false; - - } - - if ( material.isSpriteMaterial ) { - - p_uniforms.setValue( _gl, 'center', object.center ); - - } - - // common matrices - - p_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix ); - p_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix ); - p_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld ); - - return program; - - } - - // Uniforms (refresh uniforms objects) - - function refreshUniformsCommon( uniforms, material ) { - - uniforms.opacity.value = material.opacity; - - if ( material.color ) { - - uniforms.diffuse.value.copy( material.color ); - - } - - if ( material.emissive ) { - - uniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity ); - - } - - if ( material.map ) { - - uniforms.map.value = material.map; - - } - - if ( material.alphaMap ) { - - uniforms.alphaMap.value = material.alphaMap; - - } - - if ( material.specularMap ) { - - uniforms.specularMap.value = material.specularMap; - - } - - if ( material.envMap ) { - - uniforms.envMap.value = material.envMap; - - // don't flip CubeTexture envMaps, flip everything else: - // WebGLRenderTargetCube will be flipped for backwards compatibility - // WebGLRenderTargetCube.texture will be flipped because it's a Texture and NOT a CubeTexture - // this check must be handled differently, or removed entirely, if WebGLRenderTargetCube uses a CubeTexture in the future - uniforms.flipEnvMap.value = material.envMap.isCubeTexture ? - 1 : 1; - - uniforms.reflectivity.value = material.reflectivity; - uniforms.refractionRatio.value = material.refractionRatio; - - uniforms.maxMipLevel.value = properties.get( material.envMap ).__maxMipLevel; - - } - - if ( material.lightMap ) { - - uniforms.lightMap.value = material.lightMap; - uniforms.lightMapIntensity.value = material.lightMapIntensity; - - } - - if ( material.aoMap ) { - - uniforms.aoMap.value = material.aoMap; - uniforms.aoMapIntensity.value = material.aoMapIntensity; - - } - - // uv repeat and offset setting priorities - // 1. color map - // 2. specular map - // 3. normal map - // 4. bump map - // 5. alpha map - // 6. emissive map - - var uvScaleMap; - - if ( material.map ) { - - uvScaleMap = material.map; - - } else if ( material.specularMap ) { - - uvScaleMap = material.specularMap; - - } else if ( material.displacementMap ) { - - uvScaleMap = material.displacementMap; - - } else if ( material.normalMap ) { - - uvScaleMap = material.normalMap; - - } else if ( material.bumpMap ) { - - uvScaleMap = material.bumpMap; - - } else if ( material.roughnessMap ) { - - uvScaleMap = material.roughnessMap; - - } else if ( material.metalnessMap ) { - - uvScaleMap = material.metalnessMap; - - } else if ( material.alphaMap ) { - - uvScaleMap = material.alphaMap; - - } else if ( material.emissiveMap ) { - - uvScaleMap = material.emissiveMap; - - } - - if ( uvScaleMap !== undefined ) { - - // backwards compatibility - if ( uvScaleMap.isWebGLRenderTarget ) { - - uvScaleMap = uvScaleMap.texture; - - } - - if ( uvScaleMap.matrixAutoUpdate === true ) { - - uvScaleMap.updateMatrix(); - - } - - uniforms.uvTransform.value.copy( uvScaleMap.matrix ); - - } - - } - - function refreshUniformsLine( uniforms, material ) { - - uniforms.diffuse.value.copy( material.color ); - uniforms.opacity.value = material.opacity; - - } - - function refreshUniformsDash( uniforms, material ) { - - uniforms.dashSize.value = material.dashSize; - uniforms.totalSize.value = material.dashSize + material.gapSize; - uniforms.scale.value = material.scale; - - } - - function refreshUniformsPoints( uniforms, material ) { - - uniforms.diffuse.value.copy( material.color ); - uniforms.opacity.value = material.opacity; - uniforms.size.value = material.size * _pixelRatio; - uniforms.scale.value = _height * 0.5; - - uniforms.map.value = material.map; - - if ( material.map !== null ) { - - if ( material.map.matrixAutoUpdate === true ) { - - material.map.updateMatrix(); - - } - - uniforms.uvTransform.value.copy( material.map.matrix ); - - } - - } - - function refreshUniformsSprites( uniforms, material ) { - - uniforms.diffuse.value.copy( material.color ); - uniforms.opacity.value = material.opacity; - uniforms.rotation.value = material.rotation; - uniforms.map.value = material.map; - - if ( material.map !== null ) { - - if ( material.map.matrixAutoUpdate === true ) { - - material.map.updateMatrix(); - - } - - uniforms.uvTransform.value.copy( material.map.matrix ); - - } - - } - - function refreshUniformsFog( uniforms, fog ) { - - uniforms.fogColor.value.copy( fog.color ); - - if ( fog.isFog ) { - - uniforms.fogNear.value = fog.near; - uniforms.fogFar.value = fog.far; - - } else if ( fog.isFogExp2 ) { - - uniforms.fogDensity.value = fog.density; - - } - - } - - function refreshUniformsLambert( uniforms, material ) { - - if ( material.emissiveMap ) { - - uniforms.emissiveMap.value = material.emissiveMap; - - } - - } - - function refreshUniformsPhong( uniforms, material ) { - - uniforms.specular.value.copy( material.specular ); - uniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 ) - - if ( material.emissiveMap ) { - - uniforms.emissiveMap.value = material.emissiveMap; - - } - - if ( material.bumpMap ) { - - uniforms.bumpMap.value = material.bumpMap; - uniforms.bumpScale.value = material.bumpScale; - if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1; - - } - - if ( material.normalMap ) { - - uniforms.normalMap.value = material.normalMap; - uniforms.normalScale.value.copy( material.normalScale ); - if ( material.side === BackSide ) uniforms.normalScale.value.negate(); - - } - - if ( material.displacementMap ) { - - uniforms.displacementMap.value = material.displacementMap; - uniforms.displacementScale.value = material.displacementScale; - uniforms.displacementBias.value = material.displacementBias; - - } - - } - - function refreshUniformsToon( uniforms, material ) { - - refreshUniformsPhong( uniforms, material ); - - if ( material.gradientMap ) { - - uniforms.gradientMap.value = material.gradientMap; - - } - - } - - function refreshUniformsStandard( uniforms, material ) { - - uniforms.roughness.value = material.roughness; - uniforms.metalness.value = material.metalness; - - if ( material.roughnessMap ) { - - uniforms.roughnessMap.value = material.roughnessMap; - - } - - if ( material.metalnessMap ) { - - uniforms.metalnessMap.value = material.metalnessMap; - - } - - if ( material.emissiveMap ) { - - uniforms.emissiveMap.value = material.emissiveMap; - - } - - if ( material.bumpMap ) { - - uniforms.bumpMap.value = material.bumpMap; - uniforms.bumpScale.value = material.bumpScale; - if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1; - - } - - if ( material.normalMap ) { - - uniforms.normalMap.value = material.normalMap; - uniforms.normalScale.value.copy( material.normalScale ); - if ( material.side === BackSide ) uniforms.normalScale.value.negate(); - - } - - if ( material.displacementMap ) { - - uniforms.displacementMap.value = material.displacementMap; - uniforms.displacementScale.value = material.displacementScale; - uniforms.displacementBias.value = material.displacementBias; - - } - - if ( material.envMap ) { - - //uniforms.envMap.value = material.envMap; // part of uniforms common - uniforms.envMapIntensity.value = material.envMapIntensity; - - } - - } - - function refreshUniformsPhysical( uniforms, material ) { - - refreshUniformsStandard( uniforms, material ); - - uniforms.reflectivity.value = material.reflectivity; // also part of uniforms common - - uniforms.clearCoat.value = material.clearCoat; - uniforms.clearCoatRoughness.value = material.clearCoatRoughness; - - } - - function refreshUniformsMatcap( uniforms, material ) { - - if ( material.matcap ) { - - uniforms.matcap.value = material.matcap; - - } - - if ( material.bumpMap ) { - - uniforms.bumpMap.value = material.bumpMap; - uniforms.bumpScale.value = material.bumpScale; - if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1; - - } - - if ( material.normalMap ) { - - uniforms.normalMap.value = material.normalMap; - uniforms.normalScale.value.copy( material.normalScale ); - if ( material.side === BackSide ) uniforms.normalScale.value.negate(); - - } - - if ( material.displacementMap ) { - - uniforms.displacementMap.value = material.displacementMap; - uniforms.displacementScale.value = material.displacementScale; - uniforms.displacementBias.value = material.displacementBias; - - } - - } - - function refreshUniformsDepth( uniforms, material ) { - - if ( material.displacementMap ) { - - uniforms.displacementMap.value = material.displacementMap; - uniforms.displacementScale.value = material.displacementScale; - uniforms.displacementBias.value = material.displacementBias; - - } - - } - - function refreshUniformsDistance( uniforms, material ) { - - if ( material.displacementMap ) { - - uniforms.displacementMap.value = material.displacementMap; - uniforms.displacementScale.value = material.displacementScale; - uniforms.displacementBias.value = material.displacementBias; - - } - - uniforms.referencePosition.value.copy( material.referencePosition ); - uniforms.nearDistance.value = material.nearDistance; - uniforms.farDistance.value = material.farDistance; - - } - - function refreshUniformsNormal( uniforms, material ) { - - if ( material.bumpMap ) { - - uniforms.bumpMap.value = material.bumpMap; - uniforms.bumpScale.value = material.bumpScale; - if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1; - - } - - if ( material.normalMap ) { - - uniforms.normalMap.value = material.normalMap; - uniforms.normalScale.value.copy( material.normalScale ); - if ( material.side === BackSide ) uniforms.normalScale.value.negate(); - - } - - if ( material.displacementMap ) { - - uniforms.displacementMap.value = material.displacementMap; - uniforms.displacementScale.value = material.displacementScale; - uniforms.displacementBias.value = material.displacementBias; - - } - - } - - // If uniforms are marked as clean, they don't need to be loaded to the GPU. - - function markUniformsLightsNeedsUpdate( uniforms, value ) { - - uniforms.ambientLightColor.needsUpdate = value; - uniforms.lightProbe.needsUpdate = value; - - uniforms.directionalLights.needsUpdate = value; - uniforms.pointLights.needsUpdate = value; - uniforms.spotLights.needsUpdate = value; - uniforms.rectAreaLights.needsUpdate = value; - uniforms.hemisphereLights.needsUpdate = value; - - } - - // - this.setFramebuffer = function ( value ) { - - if ( _framebuffer !== value ) _gl.bindFramebuffer( 36160, value ); - - _framebuffer = value; - - }; - - this.getActiveCubeFace = function () { - - return _currentActiveCubeFace; - - }; - - this.getActiveMipMapLevel = function () { - - return _currentActiveMipmapLevel; - - }; - - this.getRenderTarget = function () { - - return _currentRenderTarget; - - }; - - this.setRenderTarget = function ( renderTarget, activeCubeFace, activeMipMapLevel ) { - - _currentRenderTarget = renderTarget; - _currentActiveCubeFace = activeCubeFace; - _currentActiveMipmapLevel = activeMipMapLevel; - - if ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) { - - textures.setupRenderTarget( renderTarget ); - - } - - var framebuffer = _framebuffer; - var isCube = false; - - if ( renderTarget ) { - - var __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer; - - if ( renderTarget.isWebGLRenderTargetCube ) { - - framebuffer = __webglFramebuffer[ activeCubeFace || 0 ]; - isCube = true; - - } else if ( renderTarget.isWebGLMultisampleRenderTarget ) { - - framebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer; - - } else { - - framebuffer = __webglFramebuffer; - - } - - _currentViewport.copy( renderTarget.viewport ); - _currentScissor.copy( renderTarget.scissor ); - _currentScissorTest = renderTarget.scissorTest; - - } else { - - _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ); - _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ); - _currentScissorTest = _scissorTest; - - } - - if ( _currentFramebuffer !== framebuffer ) { - - _gl.bindFramebuffer( 36160, framebuffer ); - _currentFramebuffer = framebuffer; - - } - - state.viewport( _currentViewport ); - state.scissor( _currentScissor ); - state.setScissorTest( _currentScissorTest ); - - if ( isCube ) { - - var textureProperties = properties.get( renderTarget.texture ); - _gl.framebufferTexture2D( 36160, 36064, 34069 + ( activeCubeFace || 0 ), textureProperties.__webglTexture, activeMipMapLevel || 0 ); - - } - - }; - - this.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) { - - if ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) { - - console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' ); - return; - - } - - var framebuffer = properties.get( renderTarget ).__webglFramebuffer; - - if ( renderTarget.isWebGLRenderTargetCube && activeCubeFaceIndex !== undefined ) { - - framebuffer = framebuffer[ activeCubeFaceIndex ]; - - } - - if ( framebuffer ) { - - var restore = false; - - if ( framebuffer !== _currentFramebuffer ) { - - _gl.bindFramebuffer( 36160, framebuffer ); - - restore = true; - - } - - try { - - var texture = renderTarget.texture; - var textureFormat = texture.format; - var textureType = texture.type; - - if ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) { - - console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' ); - return; - - } - - if ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // IE11, Edge and Chrome Mac < 52 (#9513) - ! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.get( 'OES_texture_float' ) || extensions.get( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox - ! ( textureType === HalfFloatType && ( capabilities.isWebGL2 ? extensions.get( 'EXT_color_buffer_float' ) : extensions.get( 'EXT_color_buffer_half_float' ) ) ) ) { - - console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' ); - return; - - } - - if ( _gl.checkFramebufferStatus( 36160 ) === 36053 ) { - - // the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604) - - if ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) { - - _gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer ); - - } - - } else { - - console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' ); - - } - - } finally { - - if ( restore ) { - - _gl.bindFramebuffer( 36160, _currentFramebuffer ); - - } - - } - - } - - }; - - this.copyFramebufferToTexture = function ( position, texture, level ) { - - var width = texture.image.width; - var height = texture.image.height; - var glFormat = utils.convert( texture.format ); - - textures.setTexture2D( texture, 0 ); - - _gl.copyTexImage2D( 3553, level || 0, glFormat, position.x, position.y, width, height, 0 ); - - }; - - this.copyTextureToTexture = function ( position, srcTexture, dstTexture, level ) { - - var width = srcTexture.image.width; - var height = srcTexture.image.height; - var glFormat = utils.convert( dstTexture.format ); - var glType = utils.convert( dstTexture.type ); - - textures.setTexture2D( dstTexture, 0 ); - - if ( srcTexture.isDataTexture ) { - - _gl.texSubImage2D( 3553, level || 0, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data ); - - } else { - - _gl.texSubImage2D( 3553, level || 0, position.x, position.y, glFormat, glType, srcTexture.image ); - - } - - }; - - /* - if ( typeof __THREE_DEVTOOLS__ !== undefined ) { - __THREE_DEVTOOLS__.dispatchEvent( { type: 'renderer', value: this } ); - } - */ - - } - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - */ - - function FogExp2( color, density ) { - - this.name = ''; - - this.color = new Color( color ); - this.density = ( density !== undefined ) ? density : 0.00025; - - } - - Object.assign( FogExp2.prototype, { - - isFogExp2: true, - - clone: function () { - - return new FogExp2( this.color, this.density ); - - }, - - toJSON: function ( /* meta */ ) { - - return { - type: 'FogExp2', - color: this.color.getHex(), - density: this.density - }; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - */ - - function Fog( color, near, far ) { - - this.name = ''; - - this.color = new Color( color ); - - this.near = ( near !== undefined ) ? near : 1; - this.far = ( far !== undefined ) ? far : 1000; - - } - - Object.assign( Fog.prototype, { - - isFog: true, - - clone: function () { - - return new Fog( this.color, this.near, this.far ); - - }, - - toJSON: function ( /* meta */ ) { - - return { - type: 'Fog', - color: this.color.getHex(), - near: this.near, - far: this.far - }; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function Scene() { - - Object3D.call( this ); - - this.type = 'Scene'; - - this.background = null; - this.fog = null; - this.overrideMaterial = null; - - this.autoUpdate = true; // checked by the renderer - - /* - if ( typeof __THREE_DEVTOOLS__ !== undefined ) { - __THREE_DEVTOOLS__.dispatchEvent( { type: 'scene', value: this } ); - } - */ - - } - - Scene.prototype = Object.assign( Object.create( Object3D.prototype ), { - - constructor: Scene, - - isScene: true, - - copy: function ( source, recursive ) { - - Object3D.prototype.copy.call( this, source, recursive ); - - if ( source.background !== null ) this.background = source.background.clone(); - if ( source.fog !== null ) this.fog = source.fog.clone(); - if ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone(); - - this.autoUpdate = source.autoUpdate; - this.matrixAutoUpdate = source.matrixAutoUpdate; - - return this; - - }, - - toJSON: function ( meta ) { - - var data = Object3D.prototype.toJSON.call( this, meta ); - - if ( this.background !== null ) data.object.background = this.background.toJSON( meta ); - if ( this.fog !== null ) data.object.fog = this.fog.toJSON(); - - return data; - - }, - - dispose: function () { - - this.dispatchEvent( { type: 'dispose' } ); - - } - - } ); - - /** - * @author benaadams / https://twitter.com/ben_a_adams - */ - - function InterleavedBuffer( array, stride ) { - - this.array = array; - this.stride = stride; - this.count = array !== undefined ? array.length / stride : 0; - - this.dynamic = false; - this.updateRange = { offset: 0, count: - 1 }; - - this.version = 0; - - } - - Object.defineProperty( InterleavedBuffer.prototype, 'needsUpdate', { - - set: function ( value ) { - - if ( value === true ) this.version ++; - - } - - } ); - - Object.assign( InterleavedBuffer.prototype, { - - isInterleavedBuffer: true, - - onUploadCallback: function () {}, - - setArray: function ( array ) { - - if ( Array.isArray( array ) ) { - - throw new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' ); - - } - - this.count = array !== undefined ? array.length / this.stride : 0; - this.array = array; - - return this; - - }, - - setDynamic: function ( value ) { - - this.dynamic = value; - - return this; - - }, - - copy: function ( source ) { - - this.array = new source.array.constructor( source.array ); - this.count = source.count; - this.stride = source.stride; - this.dynamic = source.dynamic; - - return this; - - }, - - copyAt: function ( index1, attribute, index2 ) { - - index1 *= this.stride; - index2 *= attribute.stride; - - for ( var i = 0, l = this.stride; i < l; i ++ ) { - - this.array[ index1 + i ] = attribute.array[ index2 + i ]; - - } - - return this; - - }, - - set: function ( value, offset ) { - - if ( offset === undefined ) offset = 0; - - this.array.set( value, offset ); - - return this; - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - onUpload: function ( callback ) { - - this.onUploadCallback = callback; - - return this; - - } - - } ); - - /** - * @author benaadams / https://twitter.com/ben_a_adams - */ - - function InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) { - - this.data = interleavedBuffer; - this.itemSize = itemSize; - this.offset = offset; - - this.normalized = normalized === true; - - } - - Object.defineProperties( InterleavedBufferAttribute.prototype, { - - count: { - - get: function () { - - return this.data.count; - - } - - }, - - array: { - - get: function () { - - return this.data.array; - - } - - } - - } ); - - Object.assign( InterleavedBufferAttribute.prototype, { - - isInterleavedBufferAttribute: true, - - setX: function ( index, x ) { - - this.data.array[ index * this.data.stride + this.offset ] = x; - - return this; - - }, - - setY: function ( index, y ) { - - this.data.array[ index * this.data.stride + this.offset + 1 ] = y; - - return this; - - }, - - setZ: function ( index, z ) { - - this.data.array[ index * this.data.stride + this.offset + 2 ] = z; - - return this; - - }, - - setW: function ( index, w ) { - - this.data.array[ index * this.data.stride + this.offset + 3 ] = w; - - return this; - - }, - - getX: function ( index ) { - - return this.data.array[ index * this.data.stride + this.offset ]; - - }, - - getY: function ( index ) { - - return this.data.array[ index * this.data.stride + this.offset + 1 ]; - - }, - - getZ: function ( index ) { - - return this.data.array[ index * this.data.stride + this.offset + 2 ]; - - }, - - getW: function ( index ) { - - return this.data.array[ index * this.data.stride + this.offset + 3 ]; - - }, - - setXY: function ( index, x, y ) { - - index = index * this.data.stride + this.offset; - - this.data.array[ index + 0 ] = x; - this.data.array[ index + 1 ] = y; - - return this; - - }, - - setXYZ: function ( index, x, y, z ) { - - index = index * this.data.stride + this.offset; - - this.data.array[ index + 0 ] = x; - this.data.array[ index + 1 ] = y; - this.data.array[ index + 2 ] = z; - - return this; - - }, - - setXYZW: function ( index, x, y, z, w ) { - - index = index * this.data.stride + this.offset; - - this.data.array[ index + 0 ] = x; - this.data.array[ index + 1 ] = y; - this.data.array[ index + 2 ] = z; - this.data.array[ index + 3 ] = w; - - return this; - - } - - } ); - - /** - * @author alteredq / http://alteredqualia.com/ - * - * parameters = { - * color: , - * map: new THREE.Texture( ), - * rotation: , - * sizeAttenuation: - * } - */ - - function SpriteMaterial( parameters ) { - - Material.call( this ); - - this.type = 'SpriteMaterial'; - - this.color = new Color( 0xffffff ); - this.map = null; - - this.rotation = 0; - - this.sizeAttenuation = true; - - this.lights = false; - this.transparent = true; - - this.setValues( parameters ); - - } - - SpriteMaterial.prototype = Object.create( Material.prototype ); - SpriteMaterial.prototype.constructor = SpriteMaterial; - SpriteMaterial.prototype.isSpriteMaterial = true; - - SpriteMaterial.prototype.copy = function ( source ) { - - Material.prototype.copy.call( this, source ); - - this.color.copy( source.color ); - this.map = source.map; - - this.rotation = source.rotation; - - this.sizeAttenuation = source.sizeAttenuation; - - return this; - - }; - - /** - * @author mikael emtinger / http://gomo.se/ - * @author alteredq / http://alteredqualia.com/ - */ - - var geometry; - - function Sprite( material ) { - - Object3D.call( this ); - - this.type = 'Sprite'; - - if ( geometry === undefined ) { - - geometry = new BufferGeometry(); - - var float32Array = new Float32Array( [ - - 0.5, - 0.5, 0, 0, 0, - 0.5, - 0.5, 0, 1, 0, - 0.5, 0.5, 0, 1, 1, - - 0.5, 0.5, 0, 0, 1 - ] ); - - var interleavedBuffer = new InterleavedBuffer( float32Array, 5 ); - - geometry.setIndex( [ 0, 1, 2, 0, 2, 3 ] ); - geometry.addAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) ); - geometry.addAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) ); - - } - - this.geometry = geometry; - this.material = ( material !== undefined ) ? material : new SpriteMaterial(); - - this.center = new Vector2( 0.5, 0.5 ); - - } - - Sprite.prototype = Object.assign( Object.create( Object3D.prototype ), { - - constructor: Sprite, - - isSprite: true, - - raycast: ( function () { - - var intersectPoint = new Vector3(); - var worldScale = new Vector3(); - var mvPosition = new Vector3(); - - var alignedPosition = new Vector2(); - var rotatedPosition = new Vector2(); - var viewWorldMatrix = new Matrix4(); - - var vA = new Vector3(); - var vB = new Vector3(); - var vC = new Vector3(); - - var uvA = new Vector2(); - var uvB = new Vector2(); - var uvC = new Vector2(); - - function transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) { - - // compute position in camera space - alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale ); - - // to check if rotation is not zero - if ( sin !== undefined ) { - - rotatedPosition.x = ( cos * alignedPosition.x ) - ( sin * alignedPosition.y ); - rotatedPosition.y = ( sin * alignedPosition.x ) + ( cos * alignedPosition.y ); - - } else { - - rotatedPosition.copy( alignedPosition ); - - } - - - vertexPosition.copy( mvPosition ); - vertexPosition.x += rotatedPosition.x; - vertexPosition.y += rotatedPosition.y; - - // transform to world space - vertexPosition.applyMatrix4( viewWorldMatrix ); - - } - - return function raycast( raycaster, intersects ) { - - worldScale.setFromMatrixScale( this.matrixWorld ); - viewWorldMatrix.getInverse( this.modelViewMatrix ).premultiply( this.matrixWorld ); - mvPosition.setFromMatrixPosition( this.modelViewMatrix ); - - var rotation = this.material.rotation; - var sin, cos; - if ( rotation !== 0 ) { - - cos = Math.cos( rotation ); - sin = Math.sin( rotation ); - - } - - var center = this.center; - - transformVertex( vA.set( - 0.5, - 0.5, 0 ), mvPosition, center, worldScale, sin, cos ); - transformVertex( vB.set( 0.5, - 0.5, 0 ), mvPosition, center, worldScale, sin, cos ); - transformVertex( vC.set( 0.5, 0.5, 0 ), mvPosition, center, worldScale, sin, cos ); - - uvA.set( 0, 0 ); - uvB.set( 1, 0 ); - uvC.set( 1, 1 ); - - // check first triangle - var intersect = raycaster.ray.intersectTriangle( vA, vB, vC, false, intersectPoint ); - - if ( intersect === null ) { - - // check second triangle - transformVertex( vB.set( - 0.5, 0.5, 0 ), mvPosition, center, worldScale, sin, cos ); - uvB.set( 0, 1 ); - - intersect = raycaster.ray.intersectTriangle( vA, vC, vB, false, intersectPoint ); - if ( intersect === null ) { - - return; - - } - - } - - var distance = raycaster.ray.origin.distanceTo( intersectPoint ); - - if ( distance < raycaster.near || distance > raycaster.far ) return; - - intersects.push( { - - distance: distance, - point: intersectPoint.clone(), - uv: Triangle.getUV( intersectPoint, vA, vB, vC, uvA, uvB, uvC, new Vector2() ), - face: null, - object: this - - } ); - - }; - - }() ), - - clone: function () { - - return new this.constructor( this.material ).copy( this ); - - }, - - copy: function ( source ) { - - Object3D.prototype.copy.call( this, source ); - - if ( source.center !== undefined ) this.center.copy( source.center ); - - return this; - - } - - - } ); - - /** - * @author mikael emtinger / http://gomo.se/ - * @author alteredq / http://alteredqualia.com/ - * @author mrdoob / http://mrdoob.com/ - */ - - function LOD() { - - Object3D.call( this ); - - this.type = 'LOD'; - - Object.defineProperties( this, { - levels: { - enumerable: true, - value: [] - } - } ); - - } - - LOD.prototype = Object.assign( Object.create( Object3D.prototype ), { - - constructor: LOD, - - isLOD: true, - - copy: function ( source ) { - - Object3D.prototype.copy.call( this, source, false ); - - var levels = source.levels; - - for ( var i = 0, l = levels.length; i < l; i ++ ) { - - var level = levels[ i ]; - - this.addLevel( level.object.clone(), level.distance ); - - } - - return this; - - }, - - addLevel: function ( object, distance ) { - - if ( distance === undefined ) distance = 0; - - distance = Math.abs( distance ); - - var levels = this.levels; - - for ( var l = 0; l < levels.length; l ++ ) { - - if ( distance < levels[ l ].distance ) { - - break; - - } - - } - - levels.splice( l, 0, { distance: distance, object: object } ); - - this.add( object ); - - return this; - - }, - - getObjectForDistance: function ( distance ) { - - var levels = this.levels; - - for ( var i = 1, l = levels.length; i < l; i ++ ) { - - if ( distance < levels[ i ].distance ) { - - break; - - } - - } - - return levels[ i - 1 ].object; - - }, - - raycast: ( function () { - - var matrixPosition = new Vector3(); - - return function raycast( raycaster, intersects ) { - - matrixPosition.setFromMatrixPosition( this.matrixWorld ); - - var distance = raycaster.ray.origin.distanceTo( matrixPosition ); - - this.getObjectForDistance( distance ).raycast( raycaster, intersects ); - - }; - - }() ), - - update: function () { - - var v1 = new Vector3(); - var v2 = new Vector3(); - - return function update( camera ) { - - var levels = this.levels; - - if ( levels.length > 1 ) { - - v1.setFromMatrixPosition( camera.matrixWorld ); - v2.setFromMatrixPosition( this.matrixWorld ); - - var distance = v1.distanceTo( v2 ); - - levels[ 0 ].object.visible = true; - - for ( var i = 1, l = levels.length; i < l; i ++ ) { - - if ( distance >= levels[ i ].distance ) { - - levels[ i - 1 ].object.visible = false; - levels[ i ].object.visible = true; - - } else { - - break; - - } - - } - - for ( ; i < l; i ++ ) { - - levels[ i ].object.visible = false; - - } - - } - - }; - - }(), - - toJSON: function ( meta ) { - - var data = Object3D.prototype.toJSON.call( this, meta ); - - data.object.levels = []; - - var levels = this.levels; - - for ( var i = 0, l = levels.length; i < l; i ++ ) { - - var level = levels[ i ]; - - data.object.levels.push( { - object: level.object.uuid, - distance: level.distance - } ); - - } - - return data; - - } - - } ); - - /** - * @author mikael emtinger / http://gomo.se/ - * @author alteredq / http://alteredqualia.com/ - * @author ikerr / http://verold.com - */ - - function SkinnedMesh( geometry, material ) { - - if ( geometry && geometry.isGeometry ) { - - console.error( 'THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' ); - - } - - Mesh.call( this, geometry, material ); - - this.type = 'SkinnedMesh'; - - this.bindMode = 'attached'; - this.bindMatrix = new Matrix4(); - this.bindMatrixInverse = new Matrix4(); - - } - - SkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), { - - constructor: SkinnedMesh, - - isSkinnedMesh: true, - - bind: function ( skeleton, bindMatrix ) { - - this.skeleton = skeleton; - - if ( bindMatrix === undefined ) { - - this.updateMatrixWorld( true ); - - this.skeleton.calculateInverses(); - - bindMatrix = this.matrixWorld; - - } - - this.bindMatrix.copy( bindMatrix ); - this.bindMatrixInverse.getInverse( bindMatrix ); - - }, - - pose: function () { - - this.skeleton.pose(); - - }, - - normalizeSkinWeights: function () { - - var vector = new Vector4(); - - var skinWeight = this.geometry.attributes.skinWeight; - - for ( var i = 0, l = skinWeight.count; i < l; i ++ ) { - - vector.x = skinWeight.getX( i ); - vector.y = skinWeight.getY( i ); - vector.z = skinWeight.getZ( i ); - vector.w = skinWeight.getW( i ); - - var scale = 1.0 / vector.manhattanLength(); - - if ( scale !== Infinity ) { - - vector.multiplyScalar( scale ); - - } else { - - vector.set( 1, 0, 0, 0 ); // do something reasonable - - } - - skinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w ); - - } - - }, - - updateMatrixWorld: function ( force ) { - - Mesh.prototype.updateMatrixWorld.call( this, force ); - - if ( this.bindMode === 'attached' ) { - - this.bindMatrixInverse.getInverse( this.matrixWorld ); - - } else if ( this.bindMode === 'detached' ) { - - this.bindMatrixInverse.getInverse( this.bindMatrix ); - - } else { - - console.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode ); - - } - - }, - - clone: function () { - - return new this.constructor( this.geometry, this.material ).copy( this ); - - } - - } ); - - /** - * @author mikael emtinger / http://gomo.se/ - * @author alteredq / http://alteredqualia.com/ - * @author michael guerrero / http://realitymeltdown.com - * @author ikerr / http://verold.com - */ - - function Skeleton( bones, boneInverses ) { - - // copy the bone array - - bones = bones || []; - - this.bones = bones.slice( 0 ); - this.boneMatrices = new Float32Array( this.bones.length * 16 ); - - // use the supplied bone inverses or calculate the inverses - - if ( boneInverses === undefined ) { - - this.calculateInverses(); - - } else { - - if ( this.bones.length === boneInverses.length ) { - - this.boneInverses = boneInverses.slice( 0 ); - - } else { - - console.warn( 'THREE.Skeleton boneInverses is the wrong length.' ); - - this.boneInverses = []; - - for ( var i = 0, il = this.bones.length; i < il; i ++ ) { - - this.boneInverses.push( new Matrix4() ); - - } - - } - - } - - } - - Object.assign( Skeleton.prototype, { - - calculateInverses: function () { - - this.boneInverses = []; - - for ( var i = 0, il = this.bones.length; i < il; i ++ ) { - - var inverse = new Matrix4(); - - if ( this.bones[ i ] ) { - - inverse.getInverse( this.bones[ i ].matrixWorld ); - - } - - this.boneInverses.push( inverse ); - - } - - }, - - pose: function () { - - var bone, i, il; - - // recover the bind-time world matrices - - for ( i = 0, il = this.bones.length; i < il; i ++ ) { - - bone = this.bones[ i ]; - - if ( bone ) { - - bone.matrixWorld.getInverse( this.boneInverses[ i ] ); - - } - - } - - // compute the local matrices, positions, rotations and scales - - for ( i = 0, il = this.bones.length; i < il; i ++ ) { - - bone = this.bones[ i ]; - - if ( bone ) { - - if ( bone.parent && bone.parent.isBone ) { - - bone.matrix.getInverse( bone.parent.matrixWorld ); - bone.matrix.multiply( bone.matrixWorld ); - - } else { - - bone.matrix.copy( bone.matrixWorld ); - - } - - bone.matrix.decompose( bone.position, bone.quaternion, bone.scale ); - - } - - } - - }, - - update: ( function () { - - var offsetMatrix = new Matrix4(); - var identityMatrix = new Matrix4(); - - return function update() { - - var bones = this.bones; - var boneInverses = this.boneInverses; - var boneMatrices = this.boneMatrices; - var boneTexture = this.boneTexture; - - // flatten bone matrices to array - - for ( var i = 0, il = bones.length; i < il; i ++ ) { - - // compute the offset between the current and the original transform - - var matrix = bones[ i ] ? bones[ i ].matrixWorld : identityMatrix; - - offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] ); - offsetMatrix.toArray( boneMatrices, i * 16 ); - - } - - if ( boneTexture !== undefined ) { - - boneTexture.needsUpdate = true; - - } - - }; - - } )(), - - clone: function () { - - return new Skeleton( this.bones, this.boneInverses ); - - }, - - getBoneByName: function ( name ) { - - for ( var i = 0, il = this.bones.length; i < il; i ++ ) { - - var bone = this.bones[ i ]; - - if ( bone.name === name ) { - - return bone; - - } - - } - - return undefined; - - } - - } ); - - /** - * @author mikael emtinger / http://gomo.se/ - * @author alteredq / http://alteredqualia.com/ - * @author ikerr / http://verold.com - */ - - function Bone() { - - Object3D.call( this ); - - this.type = 'Bone'; - - } - - Bone.prototype = Object.assign( Object.create( Object3D.prototype ), { - - constructor: Bone, - - isBone: true - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - * - * parameters = { - * color: , - * opacity: , - * - * linewidth: , - * linecap: "round", - * linejoin: "round" - * } - */ - - function LineBasicMaterial( parameters ) { - - Material.call( this ); - - this.type = 'LineBasicMaterial'; - - this.color = new Color( 0xffffff ); - - this.linewidth = 1; - this.linecap = 'round'; - this.linejoin = 'round'; - - this.lights = false; - - this.setValues( parameters ); - - } - - LineBasicMaterial.prototype = Object.create( Material.prototype ); - LineBasicMaterial.prototype.constructor = LineBasicMaterial; - - LineBasicMaterial.prototype.isLineBasicMaterial = true; - - LineBasicMaterial.prototype.copy = function ( source ) { - - Material.prototype.copy.call( this, source ); - - this.color.copy( source.color ); - - this.linewidth = source.linewidth; - this.linecap = source.linecap; - this.linejoin = source.linejoin; - - return this; - - }; - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function Line( geometry, material, mode ) { - - if ( mode === 1 ) { - - console.error( 'THREE.Line: parameter THREE.LinePieces no longer supported. Use THREE.LineSegments instead.' ); - - } - - Object3D.call( this ); - - this.type = 'Line'; - - this.geometry = geometry !== undefined ? geometry : new BufferGeometry(); - this.material = material !== undefined ? material : new LineBasicMaterial( { color: Math.random() * 0xffffff } ); - - } - - Line.prototype = Object.assign( Object.create( Object3D.prototype ), { - - constructor: Line, - - isLine: true, - - computeLineDistances: ( function () { - - var start = new Vector3(); - var end = new Vector3(); - - return function computeLineDistances() { - - var geometry = this.geometry; - - if ( geometry.isBufferGeometry ) { - - // we assume non-indexed geometry - - if ( geometry.index === null ) { - - var positionAttribute = geometry.attributes.position; - var lineDistances = [ 0 ]; - - for ( var i = 1, l = positionAttribute.count; i < l; i ++ ) { - - start.fromBufferAttribute( positionAttribute, i - 1 ); - end.fromBufferAttribute( positionAttribute, i ); - - lineDistances[ i ] = lineDistances[ i - 1 ]; - lineDistances[ i ] += start.distanceTo( end ); - - } - - geometry.addAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) ); - - } else { - - console.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' ); - - } - - } else if ( geometry.isGeometry ) { - - var vertices = geometry.vertices; - var lineDistances = geometry.lineDistances; - - lineDistances[ 0 ] = 0; - - for ( var i = 1, l = vertices.length; i < l; i ++ ) { - - lineDistances[ i ] = lineDistances[ i - 1 ]; - lineDistances[ i ] += vertices[ i - 1 ].distanceTo( vertices[ i ] ); - - } - - } - - return this; - - }; - - }() ), - - raycast: ( function () { - - var inverseMatrix = new Matrix4(); - var ray = new Ray(); - var sphere = new Sphere(); - - return function raycast( raycaster, intersects ) { - - var precision = raycaster.linePrecision; - - var geometry = this.geometry; - var matrixWorld = this.matrixWorld; - - // Checking boundingSphere distance to ray - - if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere(); - - sphere.copy( geometry.boundingSphere ); - sphere.applyMatrix4( matrixWorld ); - sphere.radius += precision; - - if ( raycaster.ray.intersectsSphere( sphere ) === false ) return; - - // - - inverseMatrix.getInverse( matrixWorld ); - ray.copy( raycaster.ray ).applyMatrix4( inverseMatrix ); - - var localPrecision = precision / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 ); - var localPrecisionSq = localPrecision * localPrecision; - - var vStart = new Vector3(); - var vEnd = new Vector3(); - var interSegment = new Vector3(); - var interRay = new Vector3(); - var step = ( this && this.isLineSegments ) ? 2 : 1; - - if ( geometry.isBufferGeometry ) { - - var index = geometry.index; - var attributes = geometry.attributes; - var positions = attributes.position.array; - - if ( index !== null ) { - - var indices = index.array; - - for ( var i = 0, l = indices.length - 1; i < l; i += step ) { - - var a = indices[ i ]; - var b = indices[ i + 1 ]; - - vStart.fromArray( positions, a * 3 ); - vEnd.fromArray( positions, b * 3 ); - - var distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment ); - - if ( distSq > localPrecisionSq ) continue; - - interRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation - - var distance = raycaster.ray.origin.distanceTo( interRay ); - - if ( distance < raycaster.near || distance > raycaster.far ) continue; - - intersects.push( { - - distance: distance, - // What do we want? intersection point on the ray or on the segment?? - // point: raycaster.ray.at( distance ), - point: interSegment.clone().applyMatrix4( this.matrixWorld ), - index: i, - face: null, - faceIndex: null, - object: this - - } ); - - } - - } else { - - for ( var i = 0, l = positions.length / 3 - 1; i < l; i += step ) { - - vStart.fromArray( positions, 3 * i ); - vEnd.fromArray( positions, 3 * i + 3 ); - - var distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment ); - - if ( distSq > localPrecisionSq ) continue; - - interRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation - - var distance = raycaster.ray.origin.distanceTo( interRay ); - - if ( distance < raycaster.near || distance > raycaster.far ) continue; - - intersects.push( { - - distance: distance, - // What do we want? intersection point on the ray or on the segment?? - // point: raycaster.ray.at( distance ), - point: interSegment.clone().applyMatrix4( this.matrixWorld ), - index: i, - face: null, - faceIndex: null, - object: this - - } ); - - } - - } - - } else if ( geometry.isGeometry ) { - - var vertices = geometry.vertices; - var nbVertices = vertices.length; - - for ( var i = 0; i < nbVertices - 1; i += step ) { - - var distSq = ray.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment ); - - if ( distSq > localPrecisionSq ) continue; - - interRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation - - var distance = raycaster.ray.origin.distanceTo( interRay ); - - if ( distance < raycaster.near || distance > raycaster.far ) continue; - - intersects.push( { - - distance: distance, - // What do we want? intersection point on the ray or on the segment?? - // point: raycaster.ray.at( distance ), - point: interSegment.clone().applyMatrix4( this.matrixWorld ), - index: i, - face: null, - faceIndex: null, - object: this - - } ); - - } - - } - - }; - - }() ), - - clone: function () { - - return new this.constructor( this.geometry, this.material ).copy( this ); - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function LineSegments( geometry, material ) { - - Line.call( this, geometry, material ); - - this.type = 'LineSegments'; - - } - - LineSegments.prototype = Object.assign( Object.create( Line.prototype ), { - - constructor: LineSegments, - - isLineSegments: true, - - computeLineDistances: ( function () { - - var start = new Vector3(); - var end = new Vector3(); - - return function computeLineDistances() { - - var geometry = this.geometry; - - if ( geometry.isBufferGeometry ) { - - // we assume non-indexed geometry - - if ( geometry.index === null ) { - - var positionAttribute = geometry.attributes.position; - var lineDistances = []; - - for ( var i = 0, l = positionAttribute.count; i < l; i += 2 ) { - - start.fromBufferAttribute( positionAttribute, i ); - end.fromBufferAttribute( positionAttribute, i + 1 ); - - lineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ]; - lineDistances[ i + 1 ] = lineDistances[ i ] + start.distanceTo( end ); - - } - - geometry.addAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) ); - - } else { - - console.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' ); - - } - - } else if ( geometry.isGeometry ) { - - var vertices = geometry.vertices; - var lineDistances = geometry.lineDistances; - - for ( var i = 0, l = vertices.length; i < l; i += 2 ) { - - start.copy( vertices[ i ] ); - end.copy( vertices[ i + 1 ] ); - - lineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ]; - lineDistances[ i + 1 ] = lineDistances[ i ] + start.distanceTo( end ); - - } - - } - - return this; - - }; - - }() ) - - } ); - - /** - * @author mgreter / http://github.com/mgreter - */ - - function LineLoop( geometry, material ) { - - Line.call( this, geometry, material ); - - this.type = 'LineLoop'; - - } - - LineLoop.prototype = Object.assign( Object.create( Line.prototype ), { - - constructor: LineLoop, - - isLineLoop: true, - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - * - * parameters = { - * color: , - * opacity: , - * map: new THREE.Texture( ), - * - * size: , - * sizeAttenuation: - * - * morphTargets: - * } - */ - - function PointsMaterial( parameters ) { - - Material.call( this ); - - this.type = 'PointsMaterial'; - - this.color = new Color( 0xffffff ); - - this.map = null; - - this.size = 1; - this.sizeAttenuation = true; - - this.morphTargets = false; - - this.lights = false; - - this.setValues( parameters ); - - } - - PointsMaterial.prototype = Object.create( Material.prototype ); - PointsMaterial.prototype.constructor = PointsMaterial; - - PointsMaterial.prototype.isPointsMaterial = true; - - PointsMaterial.prototype.copy = function ( source ) { - - Material.prototype.copy.call( this, source ); - - this.color.copy( source.color ); - - this.map = source.map; - - this.size = source.size; - this.sizeAttenuation = source.sizeAttenuation; - - this.morphTargets = source.morphTargets; - - return this; - - }; - - /** - * @author alteredq / http://alteredqualia.com/ - */ - - function Points( geometry, material ) { - - Object3D.call( this ); - - this.type = 'Points'; - - this.geometry = geometry !== undefined ? geometry : new BufferGeometry(); - this.material = material !== undefined ? material : new PointsMaterial( { color: Math.random() * 0xffffff } ); - - } - - Points.prototype = Object.assign( Object.create( Object3D.prototype ), { - - constructor: Points, - - isPoints: true, - - raycast: ( function () { - - var inverseMatrix = new Matrix4(); - var ray = new Ray(); - var sphere = new Sphere(); - - return function raycast( raycaster, intersects ) { - - var object = this; - var geometry = this.geometry; - var matrixWorld = this.matrixWorld; - var threshold = raycaster.params.Points.threshold; - - // Checking boundingSphere distance to ray - - if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere(); - - sphere.copy( geometry.boundingSphere ); - sphere.applyMatrix4( matrixWorld ); - sphere.radius += threshold; - - if ( raycaster.ray.intersectsSphere( sphere ) === false ) return; - - // - - inverseMatrix.getInverse( matrixWorld ); - ray.copy( raycaster.ray ).applyMatrix4( inverseMatrix ); - - var localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 ); - var localThresholdSq = localThreshold * localThreshold; - var position = new Vector3(); - var intersectPoint = new Vector3(); - - function testPoint( point, index ) { - - var rayPointDistanceSq = ray.distanceSqToPoint( point ); - - if ( rayPointDistanceSq < localThresholdSq ) { - - ray.closestPointToPoint( point, intersectPoint ); - intersectPoint.applyMatrix4( matrixWorld ); - - var distance = raycaster.ray.origin.distanceTo( intersectPoint ); - - if ( distance < raycaster.near || distance > raycaster.far ) return; - - intersects.push( { - - distance: distance, - distanceToRay: Math.sqrt( rayPointDistanceSq ), - point: intersectPoint.clone(), - index: index, - face: null, - object: object - - } ); - - } - - } - - if ( geometry.isBufferGeometry ) { - - var index = geometry.index; - var attributes = geometry.attributes; - var positions = attributes.position.array; - - if ( index !== null ) { - - var indices = index.array; - - for ( var i = 0, il = indices.length; i < il; i ++ ) { - - var a = indices[ i ]; - - position.fromArray( positions, a * 3 ); - - testPoint( position, a ); - - } - - } else { - - for ( var i = 0, l = positions.length / 3; i < l; i ++ ) { - - position.fromArray( positions, i * 3 ); - - testPoint( position, i ); - - } - - } - - } else { - - var vertices = geometry.vertices; - - for ( var i = 0, l = vertices.length; i < l; i ++ ) { - - testPoint( vertices[ i ], i ); - - } - - } - - }; - - }() ), - - clone: function () { - - return new this.constructor( this.geometry, this.material ).copy( this ); - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) { - - Texture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ); - - this.format = format !== undefined ? format : RGBFormat; - - this.minFilter = minFilter !== undefined ? minFilter : LinearFilter; - this.magFilter = magFilter !== undefined ? magFilter : LinearFilter; - - this.generateMipmaps = false; - - } - - VideoTexture.prototype = Object.assign( Object.create( Texture.prototype ), { - - constructor: VideoTexture, - - isVideoTexture: true, - - update: function () { - - var video = this.image; - - if ( video.readyState >= video.HAVE_CURRENT_DATA ) { - - this.needsUpdate = true; - - } - - } - - } ); - - /** - * @author alteredq / http://alteredqualia.com/ - */ - - function CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) { - - Texture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ); - - this.image = { width: width, height: height }; - this.mipmaps = mipmaps; - - // no flipping for cube textures - // (also flipping doesn't work for compressed textures ) - - this.flipY = false; - - // can't generate mipmaps for compressed textures - // mips must be embedded in DDS files - - this.generateMipmaps = false; - - } - - CompressedTexture.prototype = Object.create( Texture.prototype ); - CompressedTexture.prototype.constructor = CompressedTexture; - - CompressedTexture.prototype.isCompressedTexture = true; - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) { - - Texture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ); - - this.needsUpdate = true; - - } - - CanvasTexture.prototype = Object.create( Texture.prototype ); - CanvasTexture.prototype.constructor = CanvasTexture; - CanvasTexture.prototype.isCanvasTexture = true; - - /** - * @author Matt DesLauriers / @mattdesl - * @author atix / arthursilber.de - */ - - function DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) { - - format = format !== undefined ? format : DepthFormat; - - if ( format !== DepthFormat && format !== DepthStencilFormat ) { - - throw new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' ); - - } - - if ( type === undefined && format === DepthFormat ) type = UnsignedShortType; - if ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type; - - Texture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ); - - this.image = { width: width, height: height }; - - this.magFilter = magFilter !== undefined ? magFilter : NearestFilter; - this.minFilter = minFilter !== undefined ? minFilter : NearestFilter; - - this.flipY = false; - this.generateMipmaps = false; - - } - - DepthTexture.prototype = Object.create( Texture.prototype ); - DepthTexture.prototype.constructor = DepthTexture; - DepthTexture.prototype.isDepthTexture = true; - - /** - * @author mrdoob / http://mrdoob.com/ - * @author Mugen87 / https://github.com/Mugen87 - */ - - function WireframeGeometry( geometry ) { - - BufferGeometry.call( this ); - - this.type = 'WireframeGeometry'; - - // buffer - - var vertices = []; - - // helper variables - - var i, j, l, o, ol; - var edge = [ 0, 0 ], edges = {}, e, edge1, edge2; - var key, keys = [ 'a', 'b', 'c' ]; - var vertex; - - // different logic for Geometry and BufferGeometry - - if ( geometry && geometry.isGeometry ) { - - // create a data structure that contains all edges without duplicates - - var faces = geometry.faces; - - for ( i = 0, l = faces.length; i < l; i ++ ) { - - var face = faces[ i ]; - - for ( j = 0; j < 3; j ++ ) { - - edge1 = face[ keys[ j ] ]; - edge2 = face[ keys[ ( j + 1 ) % 3 ] ]; - edge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates - edge[ 1 ] = Math.max( edge1, edge2 ); - - key = edge[ 0 ] + ',' + edge[ 1 ]; - - if ( edges[ key ] === undefined ) { - - edges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] }; - - } - - } - - } - - // generate vertices - - for ( key in edges ) { - - e = edges[ key ]; - - vertex = geometry.vertices[ e.index1 ]; - vertices.push( vertex.x, vertex.y, vertex.z ); - - vertex = geometry.vertices[ e.index2 ]; - vertices.push( vertex.x, vertex.y, vertex.z ); - - } - - } else if ( geometry && geometry.isBufferGeometry ) { - - var position, indices, groups; - var group, start, count; - var index1, index2; - - vertex = new Vector3(); - - if ( geometry.index !== null ) { - - // indexed BufferGeometry - - position = geometry.attributes.position; - indices = geometry.index; - groups = geometry.groups; - - if ( groups.length === 0 ) { - - groups = [ { start: 0, count: indices.count, materialIndex: 0 } ]; - - } - - // create a data structure that contains all eges without duplicates - - for ( o = 0, ol = groups.length; o < ol; ++ o ) { - - group = groups[ o ]; - - start = group.start; - count = group.count; - - for ( i = start, l = ( start + count ); i < l; i += 3 ) { - - for ( j = 0; j < 3; j ++ ) { - - edge1 = indices.getX( i + j ); - edge2 = indices.getX( i + ( j + 1 ) % 3 ); - edge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates - edge[ 1 ] = Math.max( edge1, edge2 ); - - key = edge[ 0 ] + ',' + edge[ 1 ]; - - if ( edges[ key ] === undefined ) { - - edges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] }; - - } - - } - - } - - } - - // generate vertices - - for ( key in edges ) { - - e = edges[ key ]; - - vertex.fromBufferAttribute( position, e.index1 ); - vertices.push( vertex.x, vertex.y, vertex.z ); - - vertex.fromBufferAttribute( position, e.index2 ); - vertices.push( vertex.x, vertex.y, vertex.z ); - - } - - } else { - - // non-indexed BufferGeometry - - position = geometry.attributes.position; - - for ( i = 0, l = ( position.count / 3 ); i < l; i ++ ) { - - for ( j = 0; j < 3; j ++ ) { - - // three edges per triangle, an edge is represented as (index1, index2) - // e.g. the first triangle has the following edges: (0,1),(1,2),(2,0) - - index1 = 3 * i + j; - vertex.fromBufferAttribute( position, index1 ); - vertices.push( vertex.x, vertex.y, vertex.z ); - - index2 = 3 * i + ( ( j + 1 ) % 3 ); - vertex.fromBufferAttribute( position, index2 ); - vertices.push( vertex.x, vertex.y, vertex.z ); - - } - - } - - } - - } - - // build geometry - - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - - } - - WireframeGeometry.prototype = Object.create( BufferGeometry.prototype ); - WireframeGeometry.prototype.constructor = WireframeGeometry; - - /** - * @author zz85 / https://github.com/zz85 - * @author Mugen87 / https://github.com/Mugen87 - * - * Parametric Surfaces Geometry - * based on the brilliant article by @prideout http://prideout.net/blog/?p=44 - */ - - // ParametricGeometry - - function ParametricGeometry( func, slices, stacks ) { - - Geometry.call( this ); - - this.type = 'ParametricGeometry'; - - this.parameters = { - func: func, - slices: slices, - stacks: stacks - }; - - this.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) ); - this.mergeVertices(); - - } - - ParametricGeometry.prototype = Object.create( Geometry.prototype ); - ParametricGeometry.prototype.constructor = ParametricGeometry; - - // ParametricBufferGeometry - - function ParametricBufferGeometry( func, slices, stacks ) { - - BufferGeometry.call( this ); - - this.type = 'ParametricBufferGeometry'; - - this.parameters = { - func: func, - slices: slices, - stacks: stacks - }; - - // buffers - - var indices = []; - var vertices = []; - var normals = []; - var uvs = []; - - var EPS = 0.00001; - - var normal = new Vector3(); - - var p0 = new Vector3(), p1 = new Vector3(); - var pu = new Vector3(), pv = new Vector3(); - - var i, j; - - if ( func.length < 3 ) { - - console.error( 'THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.' ); - - } - - // generate vertices, normals and uvs - - var sliceCount = slices + 1; - - for ( i = 0; i <= stacks; i ++ ) { - - var v = i / stacks; - - for ( j = 0; j <= slices; j ++ ) { - - var u = j / slices; - - // vertex - - func( u, v, p0 ); - vertices.push( p0.x, p0.y, p0.z ); - - // normal - - // approximate tangent vectors via finite differences - - if ( u - EPS >= 0 ) { - - func( u - EPS, v, p1 ); - pu.subVectors( p0, p1 ); - - } else { - - func( u + EPS, v, p1 ); - pu.subVectors( p1, p0 ); - - } - - if ( v - EPS >= 0 ) { - - func( u, v - EPS, p1 ); - pv.subVectors( p0, p1 ); - - } else { - - func( u, v + EPS, p1 ); - pv.subVectors( p1, p0 ); - - } - - // cross product of tangent vectors returns surface normal - - normal.crossVectors( pu, pv ).normalize(); - normals.push( normal.x, normal.y, normal.z ); - - // uv - - uvs.push( u, v ); - - } - - } - - // generate indices - - for ( i = 0; i < stacks; i ++ ) { - - for ( j = 0; j < slices; j ++ ) { - - var a = i * sliceCount + j; - var b = i * sliceCount + j + 1; - var c = ( i + 1 ) * sliceCount + j + 1; - var d = ( i + 1 ) * sliceCount + j; - - // faces one and two - - indices.push( a, b, d ); - indices.push( b, c, d ); - - } - - } - - // build geometry - - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - - } - - ParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); - ParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry; - - /** - * @author clockworkgeek / https://github.com/clockworkgeek - * @author timothypratley / https://github.com/timothypratley - * @author WestLangley / http://github.com/WestLangley - * @author Mugen87 / https://github.com/Mugen87 - */ - - // PolyhedronGeometry - - function PolyhedronGeometry( vertices, indices, radius, detail ) { - - Geometry.call( this ); - - this.type = 'PolyhedronGeometry'; - - this.parameters = { - vertices: vertices, - indices: indices, - radius: radius, - detail: detail - }; - - this.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) ); - this.mergeVertices(); - - } - - PolyhedronGeometry.prototype = Object.create( Geometry.prototype ); - PolyhedronGeometry.prototype.constructor = PolyhedronGeometry; - - // PolyhedronBufferGeometry - - function PolyhedronBufferGeometry( vertices, indices, radius, detail ) { - - BufferGeometry.call( this ); - - this.type = 'PolyhedronBufferGeometry'; - - this.parameters = { - vertices: vertices, - indices: indices, - radius: radius, - detail: detail - }; - - radius = radius || 1; - detail = detail || 0; - - // default buffer data - - var vertexBuffer = []; - var uvBuffer = []; - - // the subdivision creates the vertex buffer data - - subdivide( detail ); - - // all vertices should lie on a conceptual sphere with a given radius - - appplyRadius( radius ); - - // finally, create the uv data - - generateUVs(); - - // build non-indexed geometry - - this.addAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) ); - - if ( detail === 0 ) { - - this.computeVertexNormals(); // flat normals - - } else { - - this.normalizeNormals(); // smooth normals - - } - - // helper functions - - function subdivide( detail ) { - - var a = new Vector3(); - var b = new Vector3(); - var c = new Vector3(); - - // iterate over all faces and apply a subdivison with the given detail value - - for ( var i = 0; i < indices.length; i += 3 ) { - - // get the vertices of the face - - getVertexByIndex( indices[ i + 0 ], a ); - getVertexByIndex( indices[ i + 1 ], b ); - getVertexByIndex( indices[ i + 2 ], c ); - - // perform subdivision - - subdivideFace( a, b, c, detail ); - - } - - } - - function subdivideFace( a, b, c, detail ) { - - var cols = Math.pow( 2, detail ); - - // we use this multidimensional array as a data structure for creating the subdivision - - var v = []; - - var i, j; - - // construct all of the vertices for this subdivision - - for ( i = 0; i <= cols; i ++ ) { - - v[ i ] = []; - - var aj = a.clone().lerp( c, i / cols ); - var bj = b.clone().lerp( c, i / cols ); - - var rows = cols - i; - - for ( j = 0; j <= rows; j ++ ) { - - if ( j === 0 && i === cols ) { - - v[ i ][ j ] = aj; - - } else { - - v[ i ][ j ] = aj.clone().lerp( bj, j / rows ); - - } - - } - - } - - // construct all of the faces - - for ( i = 0; i < cols; i ++ ) { - - for ( j = 0; j < 2 * ( cols - i ) - 1; j ++ ) { - - var k = Math.floor( j / 2 ); - - if ( j % 2 === 0 ) { - - pushVertex( v[ i ][ k + 1 ] ); - pushVertex( v[ i + 1 ][ k ] ); - pushVertex( v[ i ][ k ] ); - - } else { - - pushVertex( v[ i ][ k + 1 ] ); - pushVertex( v[ i + 1 ][ k + 1 ] ); - pushVertex( v[ i + 1 ][ k ] ); - - } - - } - - } - - } - - function appplyRadius( radius ) { - - var vertex = new Vector3(); - - // iterate over the entire buffer and apply the radius to each vertex - - for ( var i = 0; i < vertexBuffer.length; i += 3 ) { - - vertex.x = vertexBuffer[ i + 0 ]; - vertex.y = vertexBuffer[ i + 1 ]; - vertex.z = vertexBuffer[ i + 2 ]; - - vertex.normalize().multiplyScalar( radius ); - - vertexBuffer[ i + 0 ] = vertex.x; - vertexBuffer[ i + 1 ] = vertex.y; - vertexBuffer[ i + 2 ] = vertex.z; - - } - - } - - function generateUVs() { - - var vertex = new Vector3(); - - for ( var i = 0; i < vertexBuffer.length; i += 3 ) { - - vertex.x = vertexBuffer[ i + 0 ]; - vertex.y = vertexBuffer[ i + 1 ]; - vertex.z = vertexBuffer[ i + 2 ]; - - var u = azimuth( vertex ) / 2 / Math.PI + 0.5; - var v = inclination( vertex ) / Math.PI + 0.5; - uvBuffer.push( u, 1 - v ); - - } - - correctUVs(); - - correctSeam(); - - } - - function correctSeam() { - - // handle case when face straddles the seam, see #3269 - - for ( var i = 0; i < uvBuffer.length; i += 6 ) { - - // uv data of a single face - - var x0 = uvBuffer[ i + 0 ]; - var x1 = uvBuffer[ i + 2 ]; - var x2 = uvBuffer[ i + 4 ]; - - var max = Math.max( x0, x1, x2 ); - var min = Math.min( x0, x1, x2 ); - - // 0.9 is somewhat arbitrary - - if ( max > 0.9 && min < 0.1 ) { - - if ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1; - if ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1; - if ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1; - - } - - } - - } - - function pushVertex( vertex ) { - - vertexBuffer.push( vertex.x, vertex.y, vertex.z ); - - } - - function getVertexByIndex( index, vertex ) { - - var stride = index * 3; - - vertex.x = vertices[ stride + 0 ]; - vertex.y = vertices[ stride + 1 ]; - vertex.z = vertices[ stride + 2 ]; - - } - - function correctUVs() { - - var a = new Vector3(); - var b = new Vector3(); - var c = new Vector3(); - - var centroid = new Vector3(); - - var uvA = new Vector2(); - var uvB = new Vector2(); - var uvC = new Vector2(); - - for ( var i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) { - - a.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] ); - b.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] ); - c.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] ); - - uvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] ); - uvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] ); - uvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] ); - - centroid.copy( a ).add( b ).add( c ).divideScalar( 3 ); - - var azi = azimuth( centroid ); - - correctUV( uvA, j + 0, a, azi ); - correctUV( uvB, j + 2, b, azi ); - correctUV( uvC, j + 4, c, azi ); - - } - - } - - function correctUV( uv, stride, vector, azimuth ) { - - if ( ( azimuth < 0 ) && ( uv.x === 1 ) ) { - - uvBuffer[ stride ] = uv.x - 1; - - } - - if ( ( vector.x === 0 ) && ( vector.z === 0 ) ) { - - uvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5; - - } - - } - - // Angle around the Y axis, counter-clockwise when looking from above. - - function azimuth( vector ) { - - return Math.atan2( vector.z, - vector.x ); - - } - - - // Angle above the XZ plane. - - function inclination( vector ) { - - return Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) ); - - } - - } - - PolyhedronBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); - PolyhedronBufferGeometry.prototype.constructor = PolyhedronBufferGeometry; - - /** - * @author timothypratley / https://github.com/timothypratley - * @author Mugen87 / https://github.com/Mugen87 - */ - - // TetrahedronGeometry - - function TetrahedronGeometry( radius, detail ) { - - Geometry.call( this ); - - this.type = 'TetrahedronGeometry'; - - this.parameters = { - radius: radius, - detail: detail - }; - - this.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) ); - this.mergeVertices(); - - } - - TetrahedronGeometry.prototype = Object.create( Geometry.prototype ); - TetrahedronGeometry.prototype.constructor = TetrahedronGeometry; - - // TetrahedronBufferGeometry - - function TetrahedronBufferGeometry( radius, detail ) { - - var vertices = [ - 1, 1, 1, - 1, - 1, 1, - 1, 1, - 1, 1, - 1, - 1 - ]; - - var indices = [ - 2, 1, 0, 0, 3, 2, 1, 3, 0, 2, 3, 1 - ]; - - PolyhedronBufferGeometry.call( this, vertices, indices, radius, detail ); - - this.type = 'TetrahedronBufferGeometry'; - - this.parameters = { - radius: radius, - detail: detail - }; - - } - - TetrahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype ); - TetrahedronBufferGeometry.prototype.constructor = TetrahedronBufferGeometry; - - /** - * @author timothypratley / https://github.com/timothypratley - * @author Mugen87 / https://github.com/Mugen87 - */ - - // OctahedronGeometry - - function OctahedronGeometry( radius, detail ) { - - Geometry.call( this ); - - this.type = 'OctahedronGeometry'; - - this.parameters = { - radius: radius, - detail: detail - }; - - this.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) ); - this.mergeVertices(); - - } - - OctahedronGeometry.prototype = Object.create( Geometry.prototype ); - OctahedronGeometry.prototype.constructor = OctahedronGeometry; - - // OctahedronBufferGeometry - - function OctahedronBufferGeometry( radius, detail ) { - - var vertices = [ - 1, 0, 0, - 1, 0, 0, 0, 1, 0, - 0, - 1, 0, 0, 0, 1, 0, 0, - 1 - ]; - - var indices = [ - 0, 2, 4, 0, 4, 3, 0, 3, 5, - 0, 5, 2, 1, 2, 5, 1, 5, 3, - 1, 3, 4, 1, 4, 2 - ]; - - PolyhedronBufferGeometry.call( this, vertices, indices, radius, detail ); - - this.type = 'OctahedronBufferGeometry'; - - this.parameters = { - radius: radius, - detail: detail - }; - - } - - OctahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype ); - OctahedronBufferGeometry.prototype.constructor = OctahedronBufferGeometry; - - /** - * @author timothypratley / https://github.com/timothypratley - * @author Mugen87 / https://github.com/Mugen87 - */ - - // IcosahedronGeometry - - function IcosahedronGeometry( radius, detail ) { - - Geometry.call( this ); - - this.type = 'IcosahedronGeometry'; - - this.parameters = { - radius: radius, - detail: detail - }; - - this.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) ); - this.mergeVertices(); - - } - - IcosahedronGeometry.prototype = Object.create( Geometry.prototype ); - IcosahedronGeometry.prototype.constructor = IcosahedronGeometry; - - // IcosahedronBufferGeometry - - function IcosahedronBufferGeometry( radius, detail ) { - - var t = ( 1 + Math.sqrt( 5 ) ) / 2; - - var vertices = [ - - 1, t, 0, 1, t, 0, - 1, - t, 0, 1, - t, 0, - 0, - 1, t, 0, 1, t, 0, - 1, - t, 0, 1, - t, - t, 0, - 1, t, 0, 1, - t, 0, - 1, - t, 0, 1 - ]; - - var indices = [ - 0, 11, 5, 0, 5, 1, 0, 1, 7, 0, 7, 10, 0, 10, 11, - 1, 5, 9, 5, 11, 4, 11, 10, 2, 10, 7, 6, 7, 1, 8, - 3, 9, 4, 3, 4, 2, 3, 2, 6, 3, 6, 8, 3, 8, 9, - 4, 9, 5, 2, 4, 11, 6, 2, 10, 8, 6, 7, 9, 8, 1 - ]; - - PolyhedronBufferGeometry.call( this, vertices, indices, radius, detail ); - - this.type = 'IcosahedronBufferGeometry'; - - this.parameters = { - radius: radius, - detail: detail - }; - - } - - IcosahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype ); - IcosahedronBufferGeometry.prototype.constructor = IcosahedronBufferGeometry; - - /** - * @author Abe Pazos / https://hamoid.com - * @author Mugen87 / https://github.com/Mugen87 - */ - - // DodecahedronGeometry - - function DodecahedronGeometry( radius, detail ) { - - Geometry.call( this ); - - this.type = 'DodecahedronGeometry'; - - this.parameters = { - radius: radius, - detail: detail - }; - - this.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) ); - this.mergeVertices(); - - } - - DodecahedronGeometry.prototype = Object.create( Geometry.prototype ); - DodecahedronGeometry.prototype.constructor = DodecahedronGeometry; - - // DodecahedronBufferGeometry - - function DodecahedronBufferGeometry( radius, detail ) { - - var t = ( 1 + Math.sqrt( 5 ) ) / 2; - var r = 1 / t; - - var vertices = [ - - // (±1, ±1, ±1) - - 1, - 1, - 1, - 1, - 1, 1, - - 1, 1, - 1, - 1, 1, 1, - 1, - 1, - 1, 1, - 1, 1, - 1, 1, - 1, 1, 1, 1, - - // (0, ±1/φ, ±φ) - 0, - r, - t, 0, - r, t, - 0, r, - t, 0, r, t, - - // (±1/φ, ±φ, 0) - - r, - t, 0, - r, t, 0, - r, - t, 0, r, t, 0, - - // (±φ, 0, ±1/φ) - - t, 0, - r, t, 0, - r, - - t, 0, r, t, 0, r - ]; - - var indices = [ - 3, 11, 7, 3, 7, 15, 3, 15, 13, - 7, 19, 17, 7, 17, 6, 7, 6, 15, - 17, 4, 8, 17, 8, 10, 17, 10, 6, - 8, 0, 16, 8, 16, 2, 8, 2, 10, - 0, 12, 1, 0, 1, 18, 0, 18, 16, - 6, 10, 2, 6, 2, 13, 6, 13, 15, - 2, 16, 18, 2, 18, 3, 2, 3, 13, - 18, 1, 9, 18, 9, 11, 18, 11, 3, - 4, 14, 12, 4, 12, 0, 4, 0, 8, - 11, 9, 5, 11, 5, 19, 11, 19, 7, - 19, 5, 14, 19, 14, 4, 19, 4, 17, - 1, 12, 14, 1, 14, 5, 1, 5, 9 - ]; - - PolyhedronBufferGeometry.call( this, vertices, indices, radius, detail ); - - this.type = 'DodecahedronBufferGeometry'; - - this.parameters = { - radius: radius, - detail: detail - }; - - } - - DodecahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype ); - DodecahedronBufferGeometry.prototype.constructor = DodecahedronBufferGeometry; - - /** - * @author oosmoxiecode / https://github.com/oosmoxiecode - * @author WestLangley / https://github.com/WestLangley - * @author zz85 / https://github.com/zz85 - * @author miningold / https://github.com/miningold - * @author jonobr1 / https://github.com/jonobr1 - * @author Mugen87 / https://github.com/Mugen87 - * - */ - - // TubeGeometry - - function TubeGeometry( path, tubularSegments, radius, radialSegments, closed, taper ) { - - Geometry.call( this ); - - this.type = 'TubeGeometry'; - - this.parameters = { - path: path, - tubularSegments: tubularSegments, - radius: radius, - radialSegments: radialSegments, - closed: closed - }; - - if ( taper !== undefined ) console.warn( 'THREE.TubeGeometry: taper has been removed.' ); - - var bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ); - - // expose internals - - this.tangents = bufferGeometry.tangents; - this.normals = bufferGeometry.normals; - this.binormals = bufferGeometry.binormals; - - // create geometry - - this.fromBufferGeometry( bufferGeometry ); - this.mergeVertices(); - - } - - TubeGeometry.prototype = Object.create( Geometry.prototype ); - TubeGeometry.prototype.constructor = TubeGeometry; - - // TubeBufferGeometry - - function TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ) { - - BufferGeometry.call( this ); - - this.type = 'TubeBufferGeometry'; - - this.parameters = { - path: path, - tubularSegments: tubularSegments, - radius: radius, - radialSegments: radialSegments, - closed: closed - }; - - tubularSegments = tubularSegments || 64; - radius = radius || 1; - radialSegments = radialSegments || 8; - closed = closed || false; - - var frames = path.computeFrenetFrames( tubularSegments, closed ); - - // expose internals - - this.tangents = frames.tangents; - this.normals = frames.normals; - this.binormals = frames.binormals; - - // helper variables - - var vertex = new Vector3(); - var normal = new Vector3(); - var uv = new Vector2(); - var P = new Vector3(); - - var i, j; - - // buffer - - var vertices = []; - var normals = []; - var uvs = []; - var indices = []; - - // create buffer data - - generateBufferData(); - - // build geometry - - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - - // functions - - function generateBufferData() { - - for ( i = 0; i < tubularSegments; i ++ ) { - - generateSegment( i ); - - } - - // if the geometry is not closed, generate the last row of vertices and normals - // at the regular position on the given path - // - // if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ) - - generateSegment( ( closed === false ) ? tubularSegments : 0 ); - - // uvs are generated in a separate function. - // this makes it easy compute correct values for closed geometries - - generateUVs(); - - // finally create faces - - generateIndices(); - - } - - function generateSegment( i ) { - - // we use getPointAt to sample evenly distributed points from the given path - - P = path.getPointAt( i / tubularSegments, P ); - - // retrieve corresponding normal and binormal - - var N = frames.normals[ i ]; - var B = frames.binormals[ i ]; - - // generate normals and vertices for the current segment - - for ( j = 0; j <= radialSegments; j ++ ) { - - var v = j / radialSegments * Math.PI * 2; - - var sin = Math.sin( v ); - var cos = - Math.cos( v ); - - // normal - - normal.x = ( cos * N.x + sin * B.x ); - normal.y = ( cos * N.y + sin * B.y ); - normal.z = ( cos * N.z + sin * B.z ); - normal.normalize(); - - normals.push( normal.x, normal.y, normal.z ); - - // vertex - - vertex.x = P.x + radius * normal.x; - vertex.y = P.y + radius * normal.y; - vertex.z = P.z + radius * normal.z; - - vertices.push( vertex.x, vertex.y, vertex.z ); - - } - - } - - function generateIndices() { - - for ( j = 1; j <= tubularSegments; j ++ ) { - - for ( i = 1; i <= radialSegments; i ++ ) { - - var a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 ); - var b = ( radialSegments + 1 ) * j + ( i - 1 ); - var c = ( radialSegments + 1 ) * j + i; - var d = ( radialSegments + 1 ) * ( j - 1 ) + i; - - // faces - - indices.push( a, b, d ); - indices.push( b, c, d ); - - } - - } - - } - - function generateUVs() { - - for ( i = 0; i <= tubularSegments; i ++ ) { - - for ( j = 0; j <= radialSegments; j ++ ) { - - uv.x = i / tubularSegments; - uv.y = j / radialSegments; - - uvs.push( uv.x, uv.y ); - - } - - } - - } - - } - - TubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); - TubeBufferGeometry.prototype.constructor = TubeBufferGeometry; - - TubeBufferGeometry.prototype.toJSON = function () { - - var data = BufferGeometry.prototype.toJSON.call( this ); - - data.path = this.parameters.path.toJSON(); - - return data; - - }; - - /** - * @author oosmoxiecode - * @author Mugen87 / https://github.com/Mugen87 - * - * based on http://www.blackpawn.com/texts/pqtorus/ - */ - - // TorusKnotGeometry - - function TorusKnotGeometry( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) { - - Geometry.call( this ); - - this.type = 'TorusKnotGeometry'; - - this.parameters = { - radius: radius, - tube: tube, - tubularSegments: tubularSegments, - radialSegments: radialSegments, - p: p, - q: q - }; - - if ( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' ); - - this.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) ); - this.mergeVertices(); - - } - - TorusKnotGeometry.prototype = Object.create( Geometry.prototype ); - TorusKnotGeometry.prototype.constructor = TorusKnotGeometry; - - // TorusKnotBufferGeometry - - function TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) { - - BufferGeometry.call( this ); - - this.type = 'TorusKnotBufferGeometry'; - - this.parameters = { - radius: radius, - tube: tube, - tubularSegments: tubularSegments, - radialSegments: radialSegments, - p: p, - q: q - }; - - radius = radius || 1; - tube = tube || 0.4; - tubularSegments = Math.floor( tubularSegments ) || 64; - radialSegments = Math.floor( radialSegments ) || 8; - p = p || 2; - q = q || 3; - - // buffers - - var indices = []; - var vertices = []; - var normals = []; - var uvs = []; - - // helper variables - - var i, j; - - var vertex = new Vector3(); - var normal = new Vector3(); - - var P1 = new Vector3(); - var P2 = new Vector3(); - - var B = new Vector3(); - var T = new Vector3(); - var N = new Vector3(); - - // generate vertices, normals and uvs - - for ( i = 0; i <= tubularSegments; ++ i ) { - - // the radian "u" is used to calculate the position on the torus curve of the current tubular segement - - var u = i / tubularSegments * p * Math.PI * 2; - - // now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead. - // these points are used to create a special "coordinate space", which is necessary to calculate the correct vertex positions - - calculatePositionOnCurve( u, p, q, radius, P1 ); - calculatePositionOnCurve( u + 0.01, p, q, radius, P2 ); - - // calculate orthonormal basis - - T.subVectors( P2, P1 ); - N.addVectors( P2, P1 ); - B.crossVectors( T, N ); - N.crossVectors( B, T ); - - // normalize B, N. T can be ignored, we don't use it - - B.normalize(); - N.normalize(); - - for ( j = 0; j <= radialSegments; ++ j ) { - - // now calculate the vertices. they are nothing more than an extrusion of the torus curve. - // because we extrude a shape in the xy-plane, there is no need to calculate a z-value. - - var v = j / radialSegments * Math.PI * 2; - var cx = - tube * Math.cos( v ); - var cy = tube * Math.sin( v ); - - // now calculate the final vertex position. - // first we orient the extrusion with our basis vectos, then we add it to the current position on the curve - - vertex.x = P1.x + ( cx * N.x + cy * B.x ); - vertex.y = P1.y + ( cx * N.y + cy * B.y ); - vertex.z = P1.z + ( cx * N.z + cy * B.z ); - - vertices.push( vertex.x, vertex.y, vertex.z ); - - // normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal) - - normal.subVectors( vertex, P1 ).normalize(); - - normals.push( normal.x, normal.y, normal.z ); - - // uv - - uvs.push( i / tubularSegments ); - uvs.push( j / radialSegments ); - - } - - } - - // generate indices - - for ( j = 1; j <= tubularSegments; j ++ ) { - - for ( i = 1; i <= radialSegments; i ++ ) { - - // indices - - var a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 ); - var b = ( radialSegments + 1 ) * j + ( i - 1 ); - var c = ( radialSegments + 1 ) * j + i; - var d = ( radialSegments + 1 ) * ( j - 1 ) + i; - - // faces - - indices.push( a, b, d ); - indices.push( b, c, d ); - - } - - } - - // build geometry - - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - - // this function calculates the current position on the torus curve - - function calculatePositionOnCurve( u, p, q, radius, position ) { - - var cu = Math.cos( u ); - var su = Math.sin( u ); - var quOverP = q / p * u; - var cs = Math.cos( quOverP ); - - position.x = radius * ( 2 + cs ) * 0.5 * cu; - position.y = radius * ( 2 + cs ) * su * 0.5; - position.z = radius * Math.sin( quOverP ) * 0.5; - - } - - } - - TorusKnotBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); - TorusKnotBufferGeometry.prototype.constructor = TorusKnotBufferGeometry; - - /** - * @author oosmoxiecode - * @author mrdoob / http://mrdoob.com/ - * @author Mugen87 / https://github.com/Mugen87 - */ - - // TorusGeometry - - function TorusGeometry( radius, tube, radialSegments, tubularSegments, arc ) { - - Geometry.call( this ); - - this.type = 'TorusGeometry'; - - this.parameters = { - radius: radius, - tube: tube, - radialSegments: radialSegments, - tubularSegments: tubularSegments, - arc: arc - }; - - this.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) ); - this.mergeVertices(); - - } - - TorusGeometry.prototype = Object.create( Geometry.prototype ); - TorusGeometry.prototype.constructor = TorusGeometry; - - // TorusBufferGeometry - - function TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) { - - BufferGeometry.call( this ); - - this.type = 'TorusBufferGeometry'; - - this.parameters = { - radius: radius, - tube: tube, - radialSegments: radialSegments, - tubularSegments: tubularSegments, - arc: arc - }; - - radius = radius || 1; - tube = tube || 0.4; - radialSegments = Math.floor( radialSegments ) || 8; - tubularSegments = Math.floor( tubularSegments ) || 6; - arc = arc || Math.PI * 2; - - // buffers - - var indices = []; - var vertices = []; - var normals = []; - var uvs = []; - - // helper variables - - var center = new Vector3(); - var vertex = new Vector3(); - var normal = new Vector3(); - - var j, i; - - // generate vertices, normals and uvs - - for ( j = 0; j <= radialSegments; j ++ ) { - - for ( i = 0; i <= tubularSegments; i ++ ) { - - var u = i / tubularSegments * arc; - var v = j / radialSegments * Math.PI * 2; - - // vertex - - vertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u ); - vertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u ); - vertex.z = tube * Math.sin( v ); - - vertices.push( vertex.x, vertex.y, vertex.z ); - - // normal - - center.x = radius * Math.cos( u ); - center.y = radius * Math.sin( u ); - normal.subVectors( vertex, center ).normalize(); - - normals.push( normal.x, normal.y, normal.z ); - - // uv - - uvs.push( i / tubularSegments ); - uvs.push( j / radialSegments ); - - } - - } - - // generate indices - - for ( j = 1; j <= radialSegments; j ++ ) { - - for ( i = 1; i <= tubularSegments; i ++ ) { - - // indices - - var a = ( tubularSegments + 1 ) * j + i - 1; - var b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1; - var c = ( tubularSegments + 1 ) * ( j - 1 ) + i; - var d = ( tubularSegments + 1 ) * j + i; - - // faces - - indices.push( a, b, d ); - indices.push( b, c, d ); - - } - - } - - // build geometry - - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - - } - - TorusBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); - TorusBufferGeometry.prototype.constructor = TorusBufferGeometry; - - /** - * @author Mugen87 / https://github.com/Mugen87 - * Port from https://github.com/mapbox/earcut (v2.1.2) - */ - - var Earcut = { - - triangulate: function ( data, holeIndices, dim ) { - - dim = dim || 2; - - var hasHoles = holeIndices && holeIndices.length, - outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length, - outerNode = linkedList( data, 0, outerLen, dim, true ), - triangles = []; - - if ( ! outerNode ) return triangles; - - var minX, minY, maxX, maxY, x, y, invSize; - - if ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim ); - - // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox - - if ( data.length > 80 * dim ) { - - minX = maxX = data[ 0 ]; - minY = maxY = data[ 1 ]; - - for ( var i = dim; i < outerLen; i += dim ) { - - x = data[ i ]; - y = data[ i + 1 ]; - if ( x < minX ) minX = x; - if ( y < minY ) minY = y; - if ( x > maxX ) maxX = x; - if ( y > maxY ) maxY = y; - - } - - // minX, minY and invSize are later used to transform coords into integers for z-order calculation - - invSize = Math.max( maxX - minX, maxY - minY ); - invSize = invSize !== 0 ? 1 / invSize : 0; - - } - - earcutLinked( outerNode, triangles, dim, minX, minY, invSize ); - - return triangles; - - } - - }; - - // create a circular doubly linked list from polygon points in the specified winding order - - function linkedList( data, start, end, dim, clockwise ) { - - var i, last; - - if ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) { - - for ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last ); - - } else { - - for ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last ); - - } - - if ( last && equals( last, last.next ) ) { - - removeNode( last ); - last = last.next; - - } - - return last; - - } - - // eliminate colinear or duplicate points - - function filterPoints( start, end ) { - - if ( ! start ) return start; - if ( ! end ) end = start; - - var p = start, again; - - do { - - again = false; - - if ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) { - - removeNode( p ); - p = end = p.prev; - if ( p === p.next ) break; - again = true; - - } else { - - p = p.next; - - } - - } while ( again || p !== end ); - - return end; - - } - - // main ear slicing loop which triangulates a polygon (given as a linked list) - - function earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) { - - if ( ! ear ) return; - - // interlink polygon nodes in z-order - - if ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize ); - - var stop = ear, prev, next; - - // iterate through ears, slicing them one by one - - while ( ear.prev !== ear.next ) { - - prev = ear.prev; - next = ear.next; - - if ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) { - - // cut off the triangle - triangles.push( prev.i / dim ); - triangles.push( ear.i / dim ); - triangles.push( next.i / dim ); - - removeNode( ear ); - - // skipping the next vertice leads to less sliver triangles - ear = next.next; - stop = next.next; - - continue; - - } - - ear = next; - - // if we looped through the whole remaining polygon and can't find any more ears - - if ( ear === stop ) { - - // try filtering points and slicing again - - if ( ! pass ) { - - earcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 ); - - // if this didn't work, try curing all small self-intersections locally - - } else if ( pass === 1 ) { - - ear = cureLocalIntersections( ear, triangles, dim ); - earcutLinked( ear, triangles, dim, minX, minY, invSize, 2 ); - - // as a last resort, try splitting the remaining polygon into two - - } else if ( pass === 2 ) { - - splitEarcut( ear, triangles, dim, minX, minY, invSize ); - - } - - break; - - } - - } - - } - - // check whether a polygon node forms a valid ear with adjacent nodes - - function isEar( ear ) { - - var a = ear.prev, - b = ear, - c = ear.next; - - if ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear - - // now make sure we don't have other points inside the potential ear - var p = ear.next.next; - - while ( p !== ear.prev ) { - - if ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) { - - return false; - - } - - p = p.next; - - } - - return true; - - } - - function isEarHashed( ear, minX, minY, invSize ) { - - var a = ear.prev, - b = ear, - c = ear.next; - - if ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear - - // triangle bbox; min & max are calculated like this for speed - - var minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ), - minTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ), - maxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ), - maxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y ); - - // z-order range for the current triangle bbox; - - var minZ = zOrder( minTX, minTY, minX, minY, invSize ), - maxZ = zOrder( maxTX, maxTY, minX, minY, invSize ); - - // first look for points inside the triangle in increasing z-order - - var p = ear.nextZ; - - while ( p && p.z <= maxZ ) { - - if ( p !== ear.prev && p !== ear.next && - pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) && - area( p.prev, p, p.next ) >= 0 ) return false; - p = p.nextZ; - - } - - // then look for points in decreasing z-order - - p = ear.prevZ; - - while ( p && p.z >= minZ ) { - - if ( p !== ear.prev && p !== ear.next && - pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) && - area( p.prev, p, p.next ) >= 0 ) return false; - - p = p.prevZ; - - } - - return true; - - } - - // go through all polygon nodes and cure small local self-intersections - - function cureLocalIntersections( start, triangles, dim ) { - - var p = start; - - do { - - var a = p.prev, b = p.next.next; - - if ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) { - - triangles.push( a.i / dim ); - triangles.push( p.i / dim ); - triangles.push( b.i / dim ); - - // remove two nodes involved - - removeNode( p ); - removeNode( p.next ); - - p = start = b; - - } - - p = p.next; - - } while ( p !== start ); - - return p; - - } - - // try splitting polygon into two and triangulate them independently - - function splitEarcut( start, triangles, dim, minX, minY, invSize ) { - - // look for a valid diagonal that divides the polygon into two - - var a = start; - - do { - - var b = a.next.next; - - while ( b !== a.prev ) { - - if ( a.i !== b.i && isValidDiagonal( a, b ) ) { - - // split the polygon in two by the diagonal - - var c = splitPolygon( a, b ); - - // filter colinear points around the cuts - - a = filterPoints( a, a.next ); - c = filterPoints( c, c.next ); - - // run earcut on each half - - earcutLinked( a, triangles, dim, minX, minY, invSize ); - earcutLinked( c, triangles, dim, minX, minY, invSize ); - return; - - } - - b = b.next; - - } - - a = a.next; - - } while ( a !== start ); - - } - - // link every hole into the outer loop, producing a single-ring polygon without holes - - function eliminateHoles( data, holeIndices, outerNode, dim ) { - - var queue = [], i, len, start, end, list; - - for ( i = 0, len = holeIndices.length; i < len; i ++ ) { - - start = holeIndices[ i ] * dim; - end = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length; - list = linkedList( data, start, end, dim, false ); - if ( list === list.next ) list.steiner = true; - queue.push( getLeftmost( list ) ); - - } - - queue.sort( compareX ); - - // process holes from left to right - - for ( i = 0; i < queue.length; i ++ ) { - - eliminateHole( queue[ i ], outerNode ); - outerNode = filterPoints( outerNode, outerNode.next ); - - } - - return outerNode; - - } - - function compareX( a, b ) { - - return a.x - b.x; - - } - - // find a bridge between vertices that connects hole with an outer ring and and link it - - function eliminateHole( hole, outerNode ) { - - outerNode = findHoleBridge( hole, outerNode ); - - if ( outerNode ) { - - var b = splitPolygon( outerNode, hole ); - - filterPoints( b, b.next ); - - } - - } - - // David Eberly's algorithm for finding a bridge between hole and outer polygon - - function findHoleBridge( hole, outerNode ) { - - var p = outerNode, - hx = hole.x, - hy = hole.y, - qx = - Infinity, - m; - - // find a segment intersected by a ray from the hole's leftmost point to the left; - // segment's endpoint with lesser x will be potential connection point - - do { - - if ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) { - - var x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y ); - - if ( x <= hx && x > qx ) { - - qx = x; - - if ( x === hx ) { - - if ( hy === p.y ) return p; - if ( hy === p.next.y ) return p.next; - - } - - m = p.x < p.next.x ? p : p.next; - - } - - } - - p = p.next; - - } while ( p !== outerNode ); - - if ( ! m ) return null; - - if ( hx === qx ) return m.prev; // hole touches outer segment; pick lower endpoint - - // look for points inside the triangle of hole point, segment intersection and endpoint; - // if there are no points found, we have a valid connection; - // otherwise choose the point of the minimum angle with the ray as connection point - - var stop = m, - mx = m.x, - my = m.y, - tanMin = Infinity, - tan; - - p = m.next; - - while ( p !== stop ) { - - if ( hx >= p.x && p.x >= mx && hx !== p.x && - pointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) { - - tan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential - - if ( ( tan < tanMin || ( tan === tanMin && p.x > m.x ) ) && locallyInside( p, hole ) ) { - - m = p; - tanMin = tan; - - } - - } - - p = p.next; - - } - - return m; - - } - - // interlink polygon nodes in z-order - - function indexCurve( start, minX, minY, invSize ) { - - var p = start; - - do { - - if ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize ); - p.prevZ = p.prev; - p.nextZ = p.next; - p = p.next; - - } while ( p !== start ); - - p.prevZ.nextZ = null; - p.prevZ = null; - - sortLinked( p ); - - } - - // Simon Tatham's linked list merge sort algorithm - // http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html - - function sortLinked( list ) { - - var i, p, q, e, tail, numMerges, pSize, qSize, inSize = 1; - - do { - - p = list; - list = null; - tail = null; - numMerges = 0; - - while ( p ) { - - numMerges ++; - q = p; - pSize = 0; - - for ( i = 0; i < inSize; i ++ ) { - - pSize ++; - q = q.nextZ; - if ( ! q ) break; - - } - - qSize = inSize; - - while ( pSize > 0 || ( qSize > 0 && q ) ) { - - if ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) { - - e = p; - p = p.nextZ; - pSize --; - - } else { - - e = q; - q = q.nextZ; - qSize --; - - } - - if ( tail ) tail.nextZ = e; - else list = e; - - e.prevZ = tail; - tail = e; - - } - - p = q; - - } - - tail.nextZ = null; - inSize *= 2; - - } while ( numMerges > 1 ); - - return list; - - } - - // z-order of a point given coords and inverse of the longer side of data bbox - - function zOrder( x, y, minX, minY, invSize ) { - - // coords are transformed into non-negative 15-bit integer range - - x = 32767 * ( x - minX ) * invSize; - y = 32767 * ( y - minY ) * invSize; - - x = ( x | ( x << 8 ) ) & 0x00FF00FF; - x = ( x | ( x << 4 ) ) & 0x0F0F0F0F; - x = ( x | ( x << 2 ) ) & 0x33333333; - x = ( x | ( x << 1 ) ) & 0x55555555; - - y = ( y | ( y << 8 ) ) & 0x00FF00FF; - y = ( y | ( y << 4 ) ) & 0x0F0F0F0F; - y = ( y | ( y << 2 ) ) & 0x33333333; - y = ( y | ( y << 1 ) ) & 0x55555555; - - return x | ( y << 1 ); - - } - - // find the leftmost node of a polygon ring - - function getLeftmost( start ) { - - var p = start, leftmost = start; - - do { - - if ( p.x < leftmost.x ) leftmost = p; - p = p.next; - - } while ( p !== start ); - - return leftmost; - - } - - // check if a point lies within a convex triangle - - function pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) { - - return ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 && - ( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 && - ( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0; - - } - - // check if a diagonal between two polygon nodes is valid (lies in polygon interior) - - function isValidDiagonal( a, b ) { - - return a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && - locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ); - - } - - // signed area of a triangle - - function area( p, q, r ) { - - return ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y ); - - } - - // check if two points are equal - - function equals( p1, p2 ) { - - return p1.x === p2.x && p1.y === p2.y; - - } - - // check if two segments intersect - - function intersects( p1, q1, p2, q2 ) { - - if ( ( equals( p1, q1 ) && equals( p2, q2 ) ) || - ( equals( p1, q2 ) && equals( p2, q1 ) ) ) return true; - - return area( p1, q1, p2 ) > 0 !== area( p1, q1, q2 ) > 0 && - area( p2, q2, p1 ) > 0 !== area( p2, q2, q1 ) > 0; - - } - - // check if a polygon diagonal intersects any polygon segments - - function intersectsPolygon( a, b ) { - - var p = a; - - do { - - if ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && - intersects( p, p.next, a, b ) ) { - - return true; - - } - - p = p.next; - - } while ( p !== a ); - - return false; - - } - - // check if a polygon diagonal is locally inside the polygon - - function locallyInside( a, b ) { - - return area( a.prev, a, a.next ) < 0 ? - area( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 : - area( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0; - - } - - // check if the middle point of a polygon diagonal is inside the polygon - - function middleInside( a, b ) { - - var p = a, - inside = false, - px = ( a.x + b.x ) / 2, - py = ( a.y + b.y ) / 2; - - do { - - if ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y && - ( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) ) { - - inside = ! inside; - - } - - p = p.next; - - } while ( p !== a ); - - return inside; - - } - - // link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two; - // if one belongs to the outer ring and another to a hole, it merges it into a single ring - - function splitPolygon( a, b ) { - - var a2 = new Node( a.i, a.x, a.y ), - b2 = new Node( b.i, b.x, b.y ), - an = a.next, - bp = b.prev; - - a.next = b; - b.prev = a; - - a2.next = an; - an.prev = a2; - - b2.next = a2; - a2.prev = b2; - - bp.next = b2; - b2.prev = bp; - - return b2; - - } - - // create a node and optionally link it with previous one (in a circular doubly linked list) - - function insertNode( i, x, y, last ) { - - var p = new Node( i, x, y ); - - if ( ! last ) { - - p.prev = p; - p.next = p; - - } else { - - p.next = last.next; - p.prev = last; - last.next.prev = p; - last.next = p; - - } - - return p; - - } - - function removeNode( p ) { - - p.next.prev = p.prev; - p.prev.next = p.next; - - if ( p.prevZ ) p.prevZ.nextZ = p.nextZ; - if ( p.nextZ ) p.nextZ.prevZ = p.prevZ; - - } - - function Node( i, x, y ) { - - // vertice index in coordinates array - this.i = i; - - // vertex coordinates - this.x = x; - this.y = y; - - // previous and next vertice nodes in a polygon ring - this.prev = null; - this.next = null; - - // z-order curve value - this.z = null; - - // previous and next nodes in z-order - this.prevZ = null; - this.nextZ = null; - - // indicates whether this is a steiner point - this.steiner = false; - - } - - function signedArea( data, start, end, dim ) { - - var sum = 0; - - for ( var i = start, j = end - dim; i < end; i += dim ) { - - sum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] ); - j = i; - - } - - return sum; - - } - - /** - * @author zz85 / http://www.lab4games.net/zz85/blog - */ - - var ShapeUtils = { - - // calculate area of the contour polygon - - area: function ( contour ) { - - var n = contour.length; - var a = 0.0; - - for ( var p = n - 1, q = 0; q < n; p = q ++ ) { - - a += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y; - - } - - return a * 0.5; - - }, - - isClockWise: function ( pts ) { - - return ShapeUtils.area( pts ) < 0; - - }, - - triangulateShape: function ( contour, holes ) { - - var vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ] - var holeIndices = []; // array of hole indices - var faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ] - - removeDupEndPts( contour ); - addContour( vertices, contour ); - - // - - var holeIndex = contour.length; - - holes.forEach( removeDupEndPts ); - - for ( var i = 0; i < holes.length; i ++ ) { - - holeIndices.push( holeIndex ); - holeIndex += holes[ i ].length; - addContour( vertices, holes[ i ] ); - - } - - // - - var triangles = Earcut.triangulate( vertices, holeIndices ); - - // - - for ( var i = 0; i < triangles.length; i += 3 ) { - - faces.push( triangles.slice( i, i + 3 ) ); - - } - - return faces; - - } - - }; - - function removeDupEndPts( points ) { - - var l = points.length; - - if ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) { - - points.pop(); - - } - - } - - function addContour( vertices, contour ) { - - for ( var i = 0; i < contour.length; i ++ ) { - - vertices.push( contour[ i ].x ); - vertices.push( contour[ i ].y ); - - } - - } - - /** - * @author zz85 / http://www.lab4games.net/zz85/blog - * - * Creates extruded geometry from a path shape. - * - * parameters = { - * - * curveSegments: , // number of points on the curves - * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too - * depth: , // Depth to extrude the shape - * - * bevelEnabled: , // turn on bevel - * bevelThickness: , // how deep into the original shape bevel goes - * bevelSize: , // how far from shape outline (including bevelOffset) is bevel - * bevelOffset: , // how far from shape outline does bevel start - * bevelSegments: , // number of bevel layers - * - * extrudePath: // curve to extrude shape along - * - * UVGenerator: // object that provides UV generator functions - * - * } - */ - - // ExtrudeGeometry - - function ExtrudeGeometry( shapes, options ) { - - Geometry.call( this ); - - this.type = 'ExtrudeGeometry'; - - this.parameters = { - shapes: shapes, - options: options - }; - - this.fromBufferGeometry( new ExtrudeBufferGeometry( shapes, options ) ); - this.mergeVertices(); - - } - - ExtrudeGeometry.prototype = Object.create( Geometry.prototype ); - ExtrudeGeometry.prototype.constructor = ExtrudeGeometry; - - ExtrudeGeometry.prototype.toJSON = function () { - - var data = Geometry.prototype.toJSON.call( this ); - - var shapes = this.parameters.shapes; - var options = this.parameters.options; - - return toJSON( shapes, options, data ); - - }; - - // ExtrudeBufferGeometry - - function ExtrudeBufferGeometry( shapes, options ) { - - BufferGeometry.call( this ); - - this.type = 'ExtrudeBufferGeometry'; - - this.parameters = { - shapes: shapes, - options: options - }; - - shapes = Array.isArray( shapes ) ? shapes : [ shapes ]; - - var scope = this; - - var verticesArray = []; - var uvArray = []; - - for ( var i = 0, l = shapes.length; i < l; i ++ ) { - - var shape = shapes[ i ]; - addShape( shape ); - - } - - // build geometry - - this.addAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) ); - - this.computeVertexNormals(); - - // functions - - function addShape( shape ) { - - var placeholder = []; - - // options - - var curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12; - var steps = options.steps !== undefined ? options.steps : 1; - var depth = options.depth !== undefined ? options.depth : 100; - - var bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true; - var bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6; - var bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2; - var bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0; - var bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3; - - var extrudePath = options.extrudePath; - - var uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator; - - // deprecated options - - if ( options.amount !== undefined ) { - - console.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' ); - depth = options.amount; - - } - - // - - var extrudePts, extrudeByPath = false; - var splineTube, binormal, normal, position2; - - if ( extrudePath ) { - - extrudePts = extrudePath.getSpacedPoints( steps ); - - extrudeByPath = true; - bevelEnabled = false; // bevels not supported for path extrusion - - // SETUP TNB variables - - // TODO1 - have a .isClosed in spline? - - splineTube = extrudePath.computeFrenetFrames( steps, false ); - - // console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length); - - binormal = new Vector3(); - normal = new Vector3(); - position2 = new Vector3(); - - } - - // Safeguards if bevels are not enabled - - if ( ! bevelEnabled ) { - - bevelSegments = 0; - bevelThickness = 0; - bevelSize = 0; - bevelOffset = 0; - - } - - // Variables initialization - - var ahole, h, hl; // looping of holes - - var shapePoints = shape.extractPoints( curveSegments ); - - var vertices = shapePoints.shape; - var holes = shapePoints.holes; - - var reverse = ! ShapeUtils.isClockWise( vertices ); - - if ( reverse ) { - - vertices = vertices.reverse(); - - // Maybe we should also check if holes are in the opposite direction, just to be safe ... - - for ( h = 0, hl = holes.length; h < hl; h ++ ) { - - ahole = holes[ h ]; - - if ( ShapeUtils.isClockWise( ahole ) ) { - - holes[ h ] = ahole.reverse(); - - } - - } - - } - - - var faces = ShapeUtils.triangulateShape( vertices, holes ); - - /* Vertices */ - - var contour = vertices; // vertices has all points but contour has only points of circumference - - for ( h = 0, hl = holes.length; h < hl; h ++ ) { - - ahole = holes[ h ]; - - vertices = vertices.concat( ahole ); - - } - - - function scalePt2( pt, vec, size ) { - - if ( ! vec ) console.error( "THREE.ExtrudeGeometry: vec does not exist" ); - - return vec.clone().multiplyScalar( size ).add( pt ); - - } - - var b, bs, t, z, - vert, vlen = vertices.length, - face, flen = faces.length; - - - // Find directions for point movement - - - function getBevelVec( inPt, inPrev, inNext ) { - - // computes for inPt the corresponding point inPt' on a new contour - // shifted by 1 unit (length of normalized vector) to the left - // if we walk along contour clockwise, this new contour is outside the old one - // - // inPt' is the intersection of the two lines parallel to the two - // adjacent edges of inPt at a distance of 1 unit on the left side. - - var v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt - - // good reading for geometry algorithms (here: line-line intersection) - // http://geomalgorithms.com/a05-_intersect-1.html - - var v_prev_x = inPt.x - inPrev.x, - v_prev_y = inPt.y - inPrev.y; - var v_next_x = inNext.x - inPt.x, - v_next_y = inNext.y - inPt.y; - - var v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y ); - - // check for collinear edges - var collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x ); - - if ( Math.abs( collinear0 ) > Number.EPSILON ) { - - // not collinear - - // length of vectors for normalizing - - var v_prev_len = Math.sqrt( v_prev_lensq ); - var v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y ); - - // shift adjacent points by unit vectors to the left - - var ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len ); - var ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len ); - - var ptNextShift_x = ( inNext.x - v_next_y / v_next_len ); - var ptNextShift_y = ( inNext.y + v_next_x / v_next_len ); - - // scaling factor for v_prev to intersection point - - var sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y - - ( ptNextShift_y - ptPrevShift_y ) * v_next_x ) / - ( v_prev_x * v_next_y - v_prev_y * v_next_x ); - - // vector from inPt to intersection point - - v_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x ); - v_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y ); - - // Don't normalize!, otherwise sharp corners become ugly - // but prevent crazy spikes - var v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y ); - if ( v_trans_lensq <= 2 ) { - - return new Vector2( v_trans_x, v_trans_y ); - - } else { - - shrink_by = Math.sqrt( v_trans_lensq / 2 ); - - } - - } else { - - // handle special case of collinear edges - - var direction_eq = false; // assumes: opposite - if ( v_prev_x > Number.EPSILON ) { - - if ( v_next_x > Number.EPSILON ) { - - direction_eq = true; - - } - - } else { - - if ( v_prev_x < - Number.EPSILON ) { - - if ( v_next_x < - Number.EPSILON ) { - - direction_eq = true; - - } - - } else { - - if ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) { - - direction_eq = true; - - } - - } - - } - - if ( direction_eq ) { - - // console.log("Warning: lines are a straight sequence"); - v_trans_x = - v_prev_y; - v_trans_y = v_prev_x; - shrink_by = Math.sqrt( v_prev_lensq ); - - } else { - - // console.log("Warning: lines are a straight spike"); - v_trans_x = v_prev_x; - v_trans_y = v_prev_y; - shrink_by = Math.sqrt( v_prev_lensq / 2 ); - - } - - } - - return new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by ); - - } - - - var contourMovements = []; - - for ( var i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) { - - if ( j === il ) j = 0; - if ( k === il ) k = 0; - - // (j)---(i)---(k) - // console.log('i,j,k', i, j , k) - - contourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] ); - - } - - var holesMovements = [], - oneHoleMovements, verticesMovements = contourMovements.concat(); - - for ( h = 0, hl = holes.length; h < hl; h ++ ) { - - ahole = holes[ h ]; - - oneHoleMovements = []; - - for ( i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) { - - if ( j === il ) j = 0; - if ( k === il ) k = 0; - - // (j)---(i)---(k) - oneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] ); - - } - - holesMovements.push( oneHoleMovements ); - verticesMovements = verticesMovements.concat( oneHoleMovements ); - - } - - - // Loop bevelSegments, 1 for the front, 1 for the back - - for ( b = 0; b < bevelSegments; b ++ ) { - - //for ( b = bevelSegments; b > 0; b -- ) { - - t = b / bevelSegments; - z = bevelThickness * Math.cos( t * Math.PI / 2 ); - bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset; - - // contract shape - - for ( i = 0, il = contour.length; i < il; i ++ ) { - - vert = scalePt2( contour[ i ], contourMovements[ i ], bs ); - - v( vert.x, vert.y, - z ); - - } - - // expand holes - - for ( h = 0, hl = holes.length; h < hl; h ++ ) { - - ahole = holes[ h ]; - oneHoleMovements = holesMovements[ h ]; - - for ( i = 0, il = ahole.length; i < il; i ++ ) { - - vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs ); - - v( vert.x, vert.y, - z ); - - } - - } - - } - - bs = bevelSize + bevelOffset; - - // Back facing vertices - - for ( i = 0; i < vlen; i ++ ) { - - vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ]; - - if ( ! extrudeByPath ) { - - v( vert.x, vert.y, 0 ); - - } else { - - // v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x ); - - normal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x ); - binormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y ); - - position2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal ); - - v( position2.x, position2.y, position2.z ); - - } - - } - - // Add stepped vertices... - // Including front facing vertices - - var s; - - for ( s = 1; s <= steps; s ++ ) { - - for ( i = 0; i < vlen; i ++ ) { - - vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ]; - - if ( ! extrudeByPath ) { - - v( vert.x, vert.y, depth / steps * s ); - - } else { - - // v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x ); - - normal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x ); - binormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y ); - - position2.copy( extrudePts[ s ] ).add( normal ).add( binormal ); - - v( position2.x, position2.y, position2.z ); - - } - - } - - } - - - // Add bevel segments planes - - //for ( b = 1; b <= bevelSegments; b ++ ) { - for ( b = bevelSegments - 1; b >= 0; b -- ) { - - t = b / bevelSegments; - z = bevelThickness * Math.cos( t * Math.PI / 2 ); - bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset; - - // contract shape - - for ( i = 0, il = contour.length; i < il; i ++ ) { - - vert = scalePt2( contour[ i ], contourMovements[ i ], bs ); - v( vert.x, vert.y, depth + z ); - - } - - // expand holes - - for ( h = 0, hl = holes.length; h < hl; h ++ ) { - - ahole = holes[ h ]; - oneHoleMovements = holesMovements[ h ]; - - for ( i = 0, il = ahole.length; i < il; i ++ ) { - - vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs ); - - if ( ! extrudeByPath ) { - - v( vert.x, vert.y, depth + z ); - - } else { - - v( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z ); - - } - - } - - } - - } - - /* Faces */ - - // Top and bottom faces - - buildLidFaces(); - - // Sides faces - - buildSideFaces(); - - - ///// Internal functions - - function buildLidFaces() { - - var start = verticesArray.length / 3; - - if ( bevelEnabled ) { - - var layer = 0; // steps + 1 - var offset = vlen * layer; - - // Bottom faces - - for ( i = 0; i < flen; i ++ ) { - - face = faces[ i ]; - f3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset ); - - } - - layer = steps + bevelSegments * 2; - offset = vlen * layer; - - // Top faces - - for ( i = 0; i < flen; i ++ ) { - - face = faces[ i ]; - f3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset ); - - } - - } else { - - // Bottom faces - - for ( i = 0; i < flen; i ++ ) { - - face = faces[ i ]; - f3( face[ 2 ], face[ 1 ], face[ 0 ] ); - - } - - // Top faces - - for ( i = 0; i < flen; i ++ ) { - - face = faces[ i ]; - f3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps ); - - } - - } - - scope.addGroup( start, verticesArray.length / 3 - start, 0 ); - - } - - // Create faces for the z-sides of the shape - - function buildSideFaces() { - - var start = verticesArray.length / 3; - var layeroffset = 0; - sidewalls( contour, layeroffset ); - layeroffset += contour.length; - - for ( h = 0, hl = holes.length; h < hl; h ++ ) { - - ahole = holes[ h ]; - sidewalls( ahole, layeroffset ); - - //, true - layeroffset += ahole.length; - - } - - - scope.addGroup( start, verticesArray.length / 3 - start, 1 ); - - - } - - function sidewalls( contour, layeroffset ) { - - var j, k; - i = contour.length; - - while ( -- i >= 0 ) { - - j = i; - k = i - 1; - if ( k < 0 ) k = contour.length - 1; - - //console.log('b', i,j, i-1, k,vertices.length); - - var s = 0, - sl = steps + bevelSegments * 2; - - for ( s = 0; s < sl; s ++ ) { - - var slen1 = vlen * s; - var slen2 = vlen * ( s + 1 ); - - var a = layeroffset + j + slen1, - b = layeroffset + k + slen1, - c = layeroffset + k + slen2, - d = layeroffset + j + slen2; - - f4( a, b, c, d ); - - } - - } - - } - - function v( x, y, z ) { - - placeholder.push( x ); - placeholder.push( y ); - placeholder.push( z ); - - } - - - function f3( a, b, c ) { - - addVertex( a ); - addVertex( b ); - addVertex( c ); - - var nextIndex = verticesArray.length / 3; - var uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 ); - - addUV( uvs[ 0 ] ); - addUV( uvs[ 1 ] ); - addUV( uvs[ 2 ] ); - - } - - function f4( a, b, c, d ) { - - addVertex( a ); - addVertex( b ); - addVertex( d ); - - addVertex( b ); - addVertex( c ); - addVertex( d ); - - - var nextIndex = verticesArray.length / 3; - var uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 ); - - addUV( uvs[ 0 ] ); - addUV( uvs[ 1 ] ); - addUV( uvs[ 3 ] ); - - addUV( uvs[ 1 ] ); - addUV( uvs[ 2 ] ); - addUV( uvs[ 3 ] ); - - } - - function addVertex( index ) { - - verticesArray.push( placeholder[ index * 3 + 0 ] ); - verticesArray.push( placeholder[ index * 3 + 1 ] ); - verticesArray.push( placeholder[ index * 3 + 2 ] ); - - } - - - function addUV( vector2 ) { - - uvArray.push( vector2.x ); - uvArray.push( vector2.y ); - - } - - } - - } - - ExtrudeBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); - ExtrudeBufferGeometry.prototype.constructor = ExtrudeBufferGeometry; - - ExtrudeBufferGeometry.prototype.toJSON = function () { - - var data = BufferGeometry.prototype.toJSON.call( this ); - - var shapes = this.parameters.shapes; - var options = this.parameters.options; - - return toJSON( shapes, options, data ); - - }; - - // - - var WorldUVGenerator = { - - generateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) { - - var a_x = vertices[ indexA * 3 ]; - var a_y = vertices[ indexA * 3 + 1 ]; - var b_x = vertices[ indexB * 3 ]; - var b_y = vertices[ indexB * 3 + 1 ]; - var c_x = vertices[ indexC * 3 ]; - var c_y = vertices[ indexC * 3 + 1 ]; - - return [ - new Vector2( a_x, a_y ), - new Vector2( b_x, b_y ), - new Vector2( c_x, c_y ) - ]; - - }, - - generateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) { - - var a_x = vertices[ indexA * 3 ]; - var a_y = vertices[ indexA * 3 + 1 ]; - var a_z = vertices[ indexA * 3 + 2 ]; - var b_x = vertices[ indexB * 3 ]; - var b_y = vertices[ indexB * 3 + 1 ]; - var b_z = vertices[ indexB * 3 + 2 ]; - var c_x = vertices[ indexC * 3 ]; - var c_y = vertices[ indexC * 3 + 1 ]; - var c_z = vertices[ indexC * 3 + 2 ]; - var d_x = vertices[ indexD * 3 ]; - var d_y = vertices[ indexD * 3 + 1 ]; - var d_z = vertices[ indexD * 3 + 2 ]; - - if ( Math.abs( a_y - b_y ) < 0.01 ) { - - return [ - new Vector2( a_x, 1 - a_z ), - new Vector2( b_x, 1 - b_z ), - new Vector2( c_x, 1 - c_z ), - new Vector2( d_x, 1 - d_z ) - ]; - - } else { - - return [ - new Vector2( a_y, 1 - a_z ), - new Vector2( b_y, 1 - b_z ), - new Vector2( c_y, 1 - c_z ), - new Vector2( d_y, 1 - d_z ) - ]; - - } - - } - }; - - function toJSON( shapes, options, data ) { - - // - - data.shapes = []; - - if ( Array.isArray( shapes ) ) { - - for ( var i = 0, l = shapes.length; i < l; i ++ ) { - - var shape = shapes[ i ]; - - data.shapes.push( shape.uuid ); - - } - - } else { - - data.shapes.push( shapes.uuid ); - - } - - // - - if ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON(); - - return data; - - } - - /** - * @author zz85 / http://www.lab4games.net/zz85/blog - * @author alteredq / http://alteredqualia.com/ - * - * Text = 3D Text - * - * parameters = { - * font: , // font - * - * size: , // size of the text - * height: , // thickness to extrude text - * curveSegments: , // number of points on the curves - * - * bevelEnabled: , // turn on bevel - * bevelThickness: , // how deep into text bevel goes - * bevelSize: , // how far from text outline (including bevelOffset) is bevel - * bevelOffset: // how far from text outline does bevel start - * } - */ - - // TextGeometry - - function TextGeometry( text, parameters ) { - - Geometry.call( this ); - - this.type = 'TextGeometry'; - - this.parameters = { - text: text, - parameters: parameters - }; - - this.fromBufferGeometry( new TextBufferGeometry( text, parameters ) ); - this.mergeVertices(); - - } - - TextGeometry.prototype = Object.create( Geometry.prototype ); - TextGeometry.prototype.constructor = TextGeometry; - - // TextBufferGeometry - - function TextBufferGeometry( text, parameters ) { - - parameters = parameters || {}; - - var font = parameters.font; - - if ( ! ( font && font.isFont ) ) { - - console.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' ); - return new Geometry(); - - } - - var shapes = font.generateShapes( text, parameters.size ); - - // translate parameters to ExtrudeGeometry API - - parameters.depth = parameters.height !== undefined ? parameters.height : 50; - - // defaults - - if ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10; - if ( parameters.bevelSize === undefined ) parameters.bevelSize = 8; - if ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false; - - ExtrudeBufferGeometry.call( this, shapes, parameters ); - - this.type = 'TextBufferGeometry'; - - } - - TextBufferGeometry.prototype = Object.create( ExtrudeBufferGeometry.prototype ); - TextBufferGeometry.prototype.constructor = TextBufferGeometry; - - /** - * @author mrdoob / http://mrdoob.com/ - * @author benaadams / https://twitter.com/ben_a_adams - * @author Mugen87 / https://github.com/Mugen87 - */ - - // SphereGeometry - - function SphereGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) { - - Geometry.call( this ); - - this.type = 'SphereGeometry'; - - this.parameters = { - radius: radius, - widthSegments: widthSegments, - heightSegments: heightSegments, - phiStart: phiStart, - phiLength: phiLength, - thetaStart: thetaStart, - thetaLength: thetaLength - }; - - this.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) ); - this.mergeVertices(); - - } - - SphereGeometry.prototype = Object.create( Geometry.prototype ); - SphereGeometry.prototype.constructor = SphereGeometry; - - // SphereBufferGeometry - - function SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) { - - BufferGeometry.call( this ); - - this.type = 'SphereBufferGeometry'; - - this.parameters = { - radius: radius, - widthSegments: widthSegments, - heightSegments: heightSegments, - phiStart: phiStart, - phiLength: phiLength, - thetaStart: thetaStart, - thetaLength: thetaLength - }; - - radius = radius || 1; - - widthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 ); - heightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 ); - - phiStart = phiStart !== undefined ? phiStart : 0; - phiLength = phiLength !== undefined ? phiLength : Math.PI * 2; - - thetaStart = thetaStart !== undefined ? thetaStart : 0; - thetaLength = thetaLength !== undefined ? thetaLength : Math.PI; - - var thetaEnd = Math.min( thetaStart + thetaLength, Math.PI ); - - var ix, iy; - - var index = 0; - var grid = []; - - var vertex = new Vector3(); - var normal = new Vector3(); - - // buffers - - var indices = []; - var vertices = []; - var normals = []; - var uvs = []; - - // generate vertices, normals and uvs - - for ( iy = 0; iy <= heightSegments; iy ++ ) { - - var verticesRow = []; - - var v = iy / heightSegments; - - // special case for the poles - - var uOffset = 0; - - if ( iy == 0 && thetaStart == 0 ) { - - uOffset = 0.5 / widthSegments; - - } else if ( iy == heightSegments && thetaEnd == Math.PI ) { - - uOffset = - 0.5 / widthSegments; - - } - - for ( ix = 0; ix <= widthSegments; ix ++ ) { - - var u = ix / widthSegments; - - // vertex - - vertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength ); - vertex.y = radius * Math.cos( thetaStart + v * thetaLength ); - vertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength ); - - vertices.push( vertex.x, vertex.y, vertex.z ); - - // normal - - normal.copy( vertex ).normalize(); - normals.push( normal.x, normal.y, normal.z ); - - // uv - - uvs.push( u + uOffset, 1 - v ); - - verticesRow.push( index ++ ); - - } - - grid.push( verticesRow ); - - } - - // indices - - for ( iy = 0; iy < heightSegments; iy ++ ) { - - for ( ix = 0; ix < widthSegments; ix ++ ) { - - var a = grid[ iy ][ ix + 1 ]; - var b = grid[ iy ][ ix ]; - var c = grid[ iy + 1 ][ ix ]; - var d = grid[ iy + 1 ][ ix + 1 ]; - - if ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d ); - if ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d ); - - } - - } - - // build geometry - - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - - } - - SphereBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); - SphereBufferGeometry.prototype.constructor = SphereBufferGeometry; - - /** - * @author Kaleb Murphy - * @author Mugen87 / https://github.com/Mugen87 - */ - - // RingGeometry - - function RingGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) { - - Geometry.call( this ); - - this.type = 'RingGeometry'; - - this.parameters = { - innerRadius: innerRadius, - outerRadius: outerRadius, - thetaSegments: thetaSegments, - phiSegments: phiSegments, - thetaStart: thetaStart, - thetaLength: thetaLength - }; - - this.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) ); - this.mergeVertices(); - - } - - RingGeometry.prototype = Object.create( Geometry.prototype ); - RingGeometry.prototype.constructor = RingGeometry; - - // RingBufferGeometry - - function RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) { - - BufferGeometry.call( this ); - - this.type = 'RingBufferGeometry'; - - this.parameters = { - innerRadius: innerRadius, - outerRadius: outerRadius, - thetaSegments: thetaSegments, - phiSegments: phiSegments, - thetaStart: thetaStart, - thetaLength: thetaLength - }; - - innerRadius = innerRadius || 0.5; - outerRadius = outerRadius || 1; - - thetaStart = thetaStart !== undefined ? thetaStart : 0; - thetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2; - - thetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8; - phiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1; - - // buffers - - var indices = []; - var vertices = []; - var normals = []; - var uvs = []; - - // some helper variables - - var segment; - var radius = innerRadius; - var radiusStep = ( ( outerRadius - innerRadius ) / phiSegments ); - var vertex = new Vector3(); - var uv = new Vector2(); - var j, i; - - // generate vertices, normals and uvs - - for ( j = 0; j <= phiSegments; j ++ ) { - - for ( i = 0; i <= thetaSegments; i ++ ) { - - // values are generate from the inside of the ring to the outside - - segment = thetaStart + i / thetaSegments * thetaLength; - - // vertex - - vertex.x = radius * Math.cos( segment ); - vertex.y = radius * Math.sin( segment ); - - vertices.push( vertex.x, vertex.y, vertex.z ); - - // normal - - normals.push( 0, 0, 1 ); - - // uv - - uv.x = ( vertex.x / outerRadius + 1 ) / 2; - uv.y = ( vertex.y / outerRadius + 1 ) / 2; - - uvs.push( uv.x, uv.y ); - - } - - // increase the radius for next row of vertices - - radius += radiusStep; - - } - - // indices - - for ( j = 0; j < phiSegments; j ++ ) { - - var thetaSegmentLevel = j * ( thetaSegments + 1 ); - - for ( i = 0; i < thetaSegments; i ++ ) { - - segment = i + thetaSegmentLevel; - - var a = segment; - var b = segment + thetaSegments + 1; - var c = segment + thetaSegments + 2; - var d = segment + 1; - - // faces - - indices.push( a, b, d ); - indices.push( b, c, d ); - - } - - } - - // build geometry - - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - - } - - RingBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); - RingBufferGeometry.prototype.constructor = RingBufferGeometry; - - /** - * @author zz85 / https://github.com/zz85 - * @author bhouston / http://clara.io - * @author Mugen87 / https://github.com/Mugen87 - */ - - // LatheGeometry - - function LatheGeometry( points, segments, phiStart, phiLength ) { - - Geometry.call( this ); - - this.type = 'LatheGeometry'; - - this.parameters = { - points: points, - segments: segments, - phiStart: phiStart, - phiLength: phiLength - }; - - this.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) ); - this.mergeVertices(); - - } - - LatheGeometry.prototype = Object.create( Geometry.prototype ); - LatheGeometry.prototype.constructor = LatheGeometry; - - // LatheBufferGeometry - - function LatheBufferGeometry( points, segments, phiStart, phiLength ) { - - BufferGeometry.call( this ); - - this.type = 'LatheBufferGeometry'; - - this.parameters = { - points: points, - segments: segments, - phiStart: phiStart, - phiLength: phiLength - }; - - segments = Math.floor( segments ) || 12; - phiStart = phiStart || 0; - phiLength = phiLength || Math.PI * 2; - - // clamp phiLength so it's in range of [ 0, 2PI ] - - phiLength = _Math.clamp( phiLength, 0, Math.PI * 2 ); - - - // buffers - - var indices = []; - var vertices = []; - var uvs = []; - - // helper variables - - var base; - var inverseSegments = 1.0 / segments; - var vertex = new Vector3(); - var uv = new Vector2(); - var i, j; - - // generate vertices and uvs - - for ( i = 0; i <= segments; i ++ ) { - - var phi = phiStart + i * inverseSegments * phiLength; - - var sin = Math.sin( phi ); - var cos = Math.cos( phi ); - - for ( j = 0; j <= ( points.length - 1 ); j ++ ) { - - // vertex - - vertex.x = points[ j ].x * sin; - vertex.y = points[ j ].y; - vertex.z = points[ j ].x * cos; - - vertices.push( vertex.x, vertex.y, vertex.z ); - - // uv - - uv.x = i / segments; - uv.y = j / ( points.length - 1 ); - - uvs.push( uv.x, uv.y ); - - - } - - } - - // indices - - for ( i = 0; i < segments; i ++ ) { - - for ( j = 0; j < ( points.length - 1 ); j ++ ) { - - base = j + i * points.length; - - var a = base; - var b = base + points.length; - var c = base + points.length + 1; - var d = base + 1; - - // faces - - indices.push( a, b, d ); - indices.push( b, c, d ); - - } - - } - - // build geometry - - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - - // generate normals - - this.computeVertexNormals(); - - // if the geometry is closed, we need to average the normals along the seam. - // because the corresponding vertices are identical (but still have different UVs). - - if ( phiLength === Math.PI * 2 ) { - - var normals = this.attributes.normal.array; - var n1 = new Vector3(); - var n2 = new Vector3(); - var n = new Vector3(); - - // this is the buffer offset for the last line of vertices - - base = segments * points.length * 3; - - for ( i = 0, j = 0; i < points.length; i ++, j += 3 ) { - - // select the normal of the vertex in the first line - - n1.x = normals[ j + 0 ]; - n1.y = normals[ j + 1 ]; - n1.z = normals[ j + 2 ]; - - // select the normal of the vertex in the last line - - n2.x = normals[ base + j + 0 ]; - n2.y = normals[ base + j + 1 ]; - n2.z = normals[ base + j + 2 ]; - - // average normals - - n.addVectors( n1, n2 ).normalize(); - - // assign the new values to both normals - - normals[ j + 0 ] = normals[ base + j + 0 ] = n.x; - normals[ j + 1 ] = normals[ base + j + 1 ] = n.y; - normals[ j + 2 ] = normals[ base + j + 2 ] = n.z; - - } - - } - - } - - LatheBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); - LatheBufferGeometry.prototype.constructor = LatheBufferGeometry; - - /** - * @author jonobr1 / http://jonobr1.com - * @author Mugen87 / https://github.com/Mugen87 - */ - - // ShapeGeometry - - function ShapeGeometry( shapes, curveSegments ) { - - Geometry.call( this ); - - this.type = 'ShapeGeometry'; - - if ( typeof curveSegments === 'object' ) { - - console.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' ); - - curveSegments = curveSegments.curveSegments; - - } - - this.parameters = { - shapes: shapes, - curveSegments: curveSegments - }; - - this.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) ); - this.mergeVertices(); - - } - - ShapeGeometry.prototype = Object.create( Geometry.prototype ); - ShapeGeometry.prototype.constructor = ShapeGeometry; - - ShapeGeometry.prototype.toJSON = function () { - - var data = Geometry.prototype.toJSON.call( this ); - - var shapes = this.parameters.shapes; - - return toJSON$1( shapes, data ); - - }; - - // ShapeBufferGeometry - - function ShapeBufferGeometry( shapes, curveSegments ) { - - BufferGeometry.call( this ); - - this.type = 'ShapeBufferGeometry'; - - this.parameters = { - shapes: shapes, - curveSegments: curveSegments - }; - - curveSegments = curveSegments || 12; - - // buffers - - var indices = []; - var vertices = []; - var normals = []; - var uvs = []; - - // helper variables - - var groupStart = 0; - var groupCount = 0; - - // allow single and array values for "shapes" parameter - - if ( Array.isArray( shapes ) === false ) { - - addShape( shapes ); - - } else { - - for ( var i = 0; i < shapes.length; i ++ ) { - - addShape( shapes[ i ] ); - - this.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support - - groupStart += groupCount; - groupCount = 0; - - } - - } - - // build geometry - - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - - - // helper functions - - function addShape( shape ) { - - var i, l, shapeHole; - - var indexOffset = vertices.length / 3; - var points = shape.extractPoints( curveSegments ); - - var shapeVertices = points.shape; - var shapeHoles = points.holes; - - // check direction of vertices - - if ( ShapeUtils.isClockWise( shapeVertices ) === false ) { - - shapeVertices = shapeVertices.reverse(); - - } - - for ( i = 0, l = shapeHoles.length; i < l; i ++ ) { - - shapeHole = shapeHoles[ i ]; - - if ( ShapeUtils.isClockWise( shapeHole ) === true ) { - - shapeHoles[ i ] = shapeHole.reverse(); - - } - - } - - var faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles ); - - // join vertices of inner and outer paths to a single array - - for ( i = 0, l = shapeHoles.length; i < l; i ++ ) { - - shapeHole = shapeHoles[ i ]; - shapeVertices = shapeVertices.concat( shapeHole ); - - } - - // vertices, normals, uvs - - for ( i = 0, l = shapeVertices.length; i < l; i ++ ) { - - var vertex = shapeVertices[ i ]; - - vertices.push( vertex.x, vertex.y, 0 ); - normals.push( 0, 0, 1 ); - uvs.push( vertex.x, vertex.y ); // world uvs - - } - - // incides - - for ( i = 0, l = faces.length; i < l; i ++ ) { - - var face = faces[ i ]; - - var a = face[ 0 ] + indexOffset; - var b = face[ 1 ] + indexOffset; - var c = face[ 2 ] + indexOffset; - - indices.push( a, b, c ); - groupCount += 3; - - } - - } - - } - - ShapeBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); - ShapeBufferGeometry.prototype.constructor = ShapeBufferGeometry; - - ShapeBufferGeometry.prototype.toJSON = function () { - - var data = BufferGeometry.prototype.toJSON.call( this ); - - var shapes = this.parameters.shapes; - - return toJSON$1( shapes, data ); - - }; - - // - - function toJSON$1( shapes, data ) { - - data.shapes = []; - - if ( Array.isArray( shapes ) ) { - - for ( var i = 0, l = shapes.length; i < l; i ++ ) { - - var shape = shapes[ i ]; - - data.shapes.push( shape.uuid ); - - } - - } else { - - data.shapes.push( shapes.uuid ); - - } - - return data; - - } - - /** - * @author WestLangley / http://github.com/WestLangley - * @author Mugen87 / https://github.com/Mugen87 - */ - - function EdgesGeometry( geometry, thresholdAngle ) { - - BufferGeometry.call( this ); - - this.type = 'EdgesGeometry'; - - this.parameters = { - thresholdAngle: thresholdAngle - }; - - thresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1; - - // buffer - - var vertices = []; - - // helper variables - - var thresholdDot = Math.cos( _Math.DEG2RAD * thresholdAngle ); - var edge = [ 0, 0 ], edges = {}, edge1, edge2; - var key, keys = [ 'a', 'b', 'c' ]; - - // prepare source geometry - - var geometry2; - - if ( geometry.isBufferGeometry ) { - - geometry2 = new Geometry(); - geometry2.fromBufferGeometry( geometry ); - - } else { - - geometry2 = geometry.clone(); - - } - - geometry2.mergeVertices(); - geometry2.computeFaceNormals(); - - var sourceVertices = geometry2.vertices; - var faces = geometry2.faces; - - // now create a data structure where each entry represents an edge with its adjoining faces - - for ( var i = 0, l = faces.length; i < l; i ++ ) { - - var face = faces[ i ]; - - for ( var j = 0; j < 3; j ++ ) { - - edge1 = face[ keys[ j ] ]; - edge2 = face[ keys[ ( j + 1 ) % 3 ] ]; - edge[ 0 ] = Math.min( edge1, edge2 ); - edge[ 1 ] = Math.max( edge1, edge2 ); - - key = edge[ 0 ] + ',' + edge[ 1 ]; - - if ( edges[ key ] === undefined ) { - - edges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ], face1: i, face2: undefined }; - - } else { - - edges[ key ].face2 = i; - - } - - } - - } - - // generate vertices - - for ( key in edges ) { - - var e = edges[ key ]; - - // an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree. - - if ( e.face2 === undefined || faces[ e.face1 ].normal.dot( faces[ e.face2 ].normal ) <= thresholdDot ) { - - var vertex = sourceVertices[ e.index1 ]; - vertices.push( vertex.x, vertex.y, vertex.z ); - - vertex = sourceVertices[ e.index2 ]; - vertices.push( vertex.x, vertex.y, vertex.z ); - - } - - } - - // build geometry - - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - - } - - EdgesGeometry.prototype = Object.create( BufferGeometry.prototype ); - EdgesGeometry.prototype.constructor = EdgesGeometry; - - /** - * @author mrdoob / http://mrdoob.com/ - * @author Mugen87 / https://github.com/Mugen87 - */ - - // CylinderGeometry - - function CylinderGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) { - - Geometry.call( this ); - - this.type = 'CylinderGeometry'; - - this.parameters = { - radiusTop: radiusTop, - radiusBottom: radiusBottom, - height: height, - radialSegments: radialSegments, - heightSegments: heightSegments, - openEnded: openEnded, - thetaStart: thetaStart, - thetaLength: thetaLength - }; - - this.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) ); - this.mergeVertices(); - - } - - CylinderGeometry.prototype = Object.create( Geometry.prototype ); - CylinderGeometry.prototype.constructor = CylinderGeometry; - - // CylinderBufferGeometry - - function CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) { - - BufferGeometry.call( this ); - - this.type = 'CylinderBufferGeometry'; - - this.parameters = { - radiusTop: radiusTop, - radiusBottom: radiusBottom, - height: height, - radialSegments: radialSegments, - heightSegments: heightSegments, - openEnded: openEnded, - thetaStart: thetaStart, - thetaLength: thetaLength - }; - - var scope = this; - - radiusTop = radiusTop !== undefined ? radiusTop : 1; - radiusBottom = radiusBottom !== undefined ? radiusBottom : 1; - height = height || 1; - - radialSegments = Math.floor( radialSegments ) || 8; - heightSegments = Math.floor( heightSegments ) || 1; - - openEnded = openEnded !== undefined ? openEnded : false; - thetaStart = thetaStart !== undefined ? thetaStart : 0.0; - thetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2; - - // buffers - - var indices = []; - var vertices = []; - var normals = []; - var uvs = []; - - // helper variables - - var index = 0; - var indexArray = []; - var halfHeight = height / 2; - var groupStart = 0; - - // generate geometry - - generateTorso(); - - if ( openEnded === false ) { - - if ( radiusTop > 0 ) generateCap( true ); - if ( radiusBottom > 0 ) generateCap( false ); - - } - - // build geometry - - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - - function generateTorso() { - - var x, y; - var normal = new Vector3(); - var vertex = new Vector3(); - - var groupCount = 0; - - // this will be used to calculate the normal - var slope = ( radiusBottom - radiusTop ) / height; - - // generate vertices, normals and uvs - - for ( y = 0; y <= heightSegments; y ++ ) { - - var indexRow = []; - - var v = y / heightSegments; - - // calculate the radius of the current row - - var radius = v * ( radiusBottom - radiusTop ) + radiusTop; - - for ( x = 0; x <= radialSegments; x ++ ) { - - var u = x / radialSegments; - - var theta = u * thetaLength + thetaStart; - - var sinTheta = Math.sin( theta ); - var cosTheta = Math.cos( theta ); - - // vertex - - vertex.x = radius * sinTheta; - vertex.y = - v * height + halfHeight; - vertex.z = radius * cosTheta; - vertices.push( vertex.x, vertex.y, vertex.z ); - - // normal - - normal.set( sinTheta, slope, cosTheta ).normalize(); - normals.push( normal.x, normal.y, normal.z ); - - // uv - - uvs.push( u, 1 - v ); - - // save index of vertex in respective row - - indexRow.push( index ++ ); - - } - - // now save vertices of the row in our index array - - indexArray.push( indexRow ); - - } - - // generate indices - - for ( x = 0; x < radialSegments; x ++ ) { - - for ( y = 0; y < heightSegments; y ++ ) { - - // we use the index array to access the correct indices - - var a = indexArray[ y ][ x ]; - var b = indexArray[ y + 1 ][ x ]; - var c = indexArray[ y + 1 ][ x + 1 ]; - var d = indexArray[ y ][ x + 1 ]; - - // faces - - indices.push( a, b, d ); - indices.push( b, c, d ); - - // update group counter - - groupCount += 6; - - } - - } - - // add a group to the geometry. this will ensure multi material support - - scope.addGroup( groupStart, groupCount, 0 ); - - // calculate new start value for groups - - groupStart += groupCount; - - } - - function generateCap( top ) { - - var x, centerIndexStart, centerIndexEnd; - - var uv = new Vector2(); - var vertex = new Vector3(); - - var groupCount = 0; - - var radius = ( top === true ) ? radiusTop : radiusBottom; - var sign = ( top === true ) ? 1 : - 1; - - // save the index of the first center vertex - centerIndexStart = index; - - // first we generate the center vertex data of the cap. - // because the geometry needs one set of uvs per face, - // we must generate a center vertex per face/segment - - for ( x = 1; x <= radialSegments; x ++ ) { - - // vertex - - vertices.push( 0, halfHeight * sign, 0 ); - - // normal - - normals.push( 0, sign, 0 ); - - // uv - - uvs.push( 0.5, 0.5 ); - - // increase index - - index ++; - - } - - // save the index of the last center vertex - - centerIndexEnd = index; - - // now we generate the surrounding vertices, normals and uvs - - for ( x = 0; x <= radialSegments; x ++ ) { - - var u = x / radialSegments; - var theta = u * thetaLength + thetaStart; - - var cosTheta = Math.cos( theta ); - var sinTheta = Math.sin( theta ); - - // vertex - - vertex.x = radius * sinTheta; - vertex.y = halfHeight * sign; - vertex.z = radius * cosTheta; - vertices.push( vertex.x, vertex.y, vertex.z ); - - // normal - - normals.push( 0, sign, 0 ); - - // uv - - uv.x = ( cosTheta * 0.5 ) + 0.5; - uv.y = ( sinTheta * 0.5 * sign ) + 0.5; - uvs.push( uv.x, uv.y ); - - // increase index - - index ++; - - } - - // generate indices - - for ( x = 0; x < radialSegments; x ++ ) { - - var c = centerIndexStart + x; - var i = centerIndexEnd + x; - - if ( top === true ) { - - // face top - - indices.push( i, i + 1, c ); - - } else { - - // face bottom - - indices.push( i + 1, i, c ); - - } - - groupCount += 3; - - } - - // add a group to the geometry. this will ensure multi material support - - scope.addGroup( groupStart, groupCount, top === true ? 1 : 2 ); - - // calculate new start value for groups - - groupStart += groupCount; - - } - - } - - CylinderBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); - CylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry; - - /** - * @author abelnation / http://github.com/abelnation - */ - - // ConeGeometry - - function ConeGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) { - - CylinderGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ); - - this.type = 'ConeGeometry'; - - this.parameters = { - radius: radius, - height: height, - radialSegments: radialSegments, - heightSegments: heightSegments, - openEnded: openEnded, - thetaStart: thetaStart, - thetaLength: thetaLength - }; - - } - - ConeGeometry.prototype = Object.create( CylinderGeometry.prototype ); - ConeGeometry.prototype.constructor = ConeGeometry; - - // ConeBufferGeometry - - function ConeBufferGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) { - - CylinderBufferGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ); - - this.type = 'ConeBufferGeometry'; - - this.parameters = { - radius: radius, - height: height, - radialSegments: radialSegments, - heightSegments: heightSegments, - openEnded: openEnded, - thetaStart: thetaStart, - thetaLength: thetaLength - }; - - } - - ConeBufferGeometry.prototype = Object.create( CylinderBufferGeometry.prototype ); - ConeBufferGeometry.prototype.constructor = ConeBufferGeometry; - - /** - * @author benaadams / https://twitter.com/ben_a_adams - * @author Mugen87 / https://github.com/Mugen87 - * @author hughes - */ - - // CircleGeometry - - function CircleGeometry( radius, segments, thetaStart, thetaLength ) { - - Geometry.call( this ); - - this.type = 'CircleGeometry'; - - this.parameters = { - radius: radius, - segments: segments, - thetaStart: thetaStart, - thetaLength: thetaLength - }; - - this.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) ); - this.mergeVertices(); - - } - - CircleGeometry.prototype = Object.create( Geometry.prototype ); - CircleGeometry.prototype.constructor = CircleGeometry; - - // CircleBufferGeometry - - function CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) { - - BufferGeometry.call( this ); - - this.type = 'CircleBufferGeometry'; - - this.parameters = { - radius: radius, - segments: segments, - thetaStart: thetaStart, - thetaLength: thetaLength - }; - - radius = radius || 1; - segments = segments !== undefined ? Math.max( 3, segments ) : 8; - - thetaStart = thetaStart !== undefined ? thetaStart : 0; - thetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2; - - // buffers - - var indices = []; - var vertices = []; - var normals = []; - var uvs = []; - - // helper variables - - var i, s; - var vertex = new Vector3(); - var uv = new Vector2(); - - // center point - - vertices.push( 0, 0, 0 ); - normals.push( 0, 0, 1 ); - uvs.push( 0.5, 0.5 ); - - for ( s = 0, i = 3; s <= segments; s ++, i += 3 ) { - - var segment = thetaStart + s / segments * thetaLength; - - // vertex - - vertex.x = radius * Math.cos( segment ); - vertex.y = radius * Math.sin( segment ); - - vertices.push( vertex.x, vertex.y, vertex.z ); - - // normal - - normals.push( 0, 0, 1 ); - - // uvs - - uv.x = ( vertices[ i ] / radius + 1 ) / 2; - uv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2; - - uvs.push( uv.x, uv.y ); - - } - - // indices - - for ( i = 1; i <= segments; i ++ ) { - - indices.push( i, i + 1, 0 ); - - } - - // build geometry - - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - - } - - CircleBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); - CircleBufferGeometry.prototype.constructor = CircleBufferGeometry; - - - - var Geometries = /*#__PURE__*/Object.freeze({ - WireframeGeometry: WireframeGeometry, - ParametricGeometry: ParametricGeometry, - ParametricBufferGeometry: ParametricBufferGeometry, - TetrahedronGeometry: TetrahedronGeometry, - TetrahedronBufferGeometry: TetrahedronBufferGeometry, - OctahedronGeometry: OctahedronGeometry, - OctahedronBufferGeometry: OctahedronBufferGeometry, - IcosahedronGeometry: IcosahedronGeometry, - IcosahedronBufferGeometry: IcosahedronBufferGeometry, - DodecahedronGeometry: DodecahedronGeometry, - DodecahedronBufferGeometry: DodecahedronBufferGeometry, - PolyhedronGeometry: PolyhedronGeometry, - PolyhedronBufferGeometry: PolyhedronBufferGeometry, - TubeGeometry: TubeGeometry, - TubeBufferGeometry: TubeBufferGeometry, - TorusKnotGeometry: TorusKnotGeometry, - TorusKnotBufferGeometry: TorusKnotBufferGeometry, - TorusGeometry: TorusGeometry, - TorusBufferGeometry: TorusBufferGeometry, - TextGeometry: TextGeometry, - TextBufferGeometry: TextBufferGeometry, - SphereGeometry: SphereGeometry, - SphereBufferGeometry: SphereBufferGeometry, - RingGeometry: RingGeometry, - RingBufferGeometry: RingBufferGeometry, - PlaneGeometry: PlaneGeometry, - PlaneBufferGeometry: PlaneBufferGeometry, - LatheGeometry: LatheGeometry, - LatheBufferGeometry: LatheBufferGeometry, - ShapeGeometry: ShapeGeometry, - ShapeBufferGeometry: ShapeBufferGeometry, - ExtrudeGeometry: ExtrudeGeometry, - ExtrudeBufferGeometry: ExtrudeBufferGeometry, - EdgesGeometry: EdgesGeometry, - ConeGeometry: ConeGeometry, - ConeBufferGeometry: ConeBufferGeometry, - CylinderGeometry: CylinderGeometry, - CylinderBufferGeometry: CylinderBufferGeometry, - CircleGeometry: CircleGeometry, - CircleBufferGeometry: CircleBufferGeometry, - BoxGeometry: BoxGeometry, - BoxBufferGeometry: BoxBufferGeometry - }); - - /** - * @author mrdoob / http://mrdoob.com/ - * - * parameters = { - * color: - * } - */ - - function ShadowMaterial( parameters ) { - - Material.call( this ); - - this.type = 'ShadowMaterial'; - - this.color = new Color( 0x000000 ); - this.transparent = true; - - this.setValues( parameters ); - - } - - ShadowMaterial.prototype = Object.create( Material.prototype ); - ShadowMaterial.prototype.constructor = ShadowMaterial; - - ShadowMaterial.prototype.isShadowMaterial = true; - - ShadowMaterial.prototype.copy = function ( source ) { - - Material.prototype.copy.call( this, source ); - - this.color.copy( source.color ); - - return this; - - }; - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function RawShaderMaterial( parameters ) { - - ShaderMaterial.call( this, parameters ); - - this.type = 'RawShaderMaterial'; - - } - - RawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype ); - RawShaderMaterial.prototype.constructor = RawShaderMaterial; - - RawShaderMaterial.prototype.isRawShaderMaterial = true; - - /** - * @author WestLangley / http://github.com/WestLangley - * - * parameters = { - * color: , - * roughness: , - * metalness: , - * opacity: , - * - * map: new THREE.Texture( ), - * - * lightMap: new THREE.Texture( ), - * lightMapIntensity: - * - * aoMap: new THREE.Texture( ), - * aoMapIntensity: - * - * emissive: , - * emissiveIntensity: - * emissiveMap: new THREE.Texture( ), - * - * bumpMap: new THREE.Texture( ), - * bumpScale: , - * - * normalMap: new THREE.Texture( ), - * normalMapType: THREE.TangentSpaceNormalMap, - * normalScale: , - * - * displacementMap: new THREE.Texture( ), - * displacementScale: , - * displacementBias: , - * - * roughnessMap: new THREE.Texture( ), - * - * metalnessMap: new THREE.Texture( ), - * - * alphaMap: new THREE.Texture( ), - * - * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ), - * envMapIntensity: - * - * refractionRatio: , - * - * wireframe: , - * wireframeLinewidth: , - * - * skinning: , - * morphTargets: , - * morphNormals: - * } - */ - - function MeshStandardMaterial( parameters ) { - - Material.call( this ); - - this.defines = { 'STANDARD': '' }; - - this.type = 'MeshStandardMaterial'; - - this.color = new Color( 0xffffff ); // diffuse - this.roughness = 0.5; - this.metalness = 0.5; - - this.map = null; - - this.lightMap = null; - this.lightMapIntensity = 1.0; - - this.aoMap = null; - this.aoMapIntensity = 1.0; - - this.emissive = new Color( 0x000000 ); - this.emissiveIntensity = 1.0; - this.emissiveMap = null; - - this.bumpMap = null; - this.bumpScale = 1; - - this.normalMap = null; - this.normalMapType = TangentSpaceNormalMap; - this.normalScale = new Vector2( 1, 1 ); - - this.displacementMap = null; - this.displacementScale = 1; - this.displacementBias = 0; - - this.roughnessMap = null; - - this.metalnessMap = null; - - this.alphaMap = null; - - this.envMap = null; - this.envMapIntensity = 1.0; - - this.refractionRatio = 0.98; - - this.wireframe = false; - this.wireframeLinewidth = 1; - this.wireframeLinecap = 'round'; - this.wireframeLinejoin = 'round'; - - this.skinning = false; - this.morphTargets = false; - this.morphNormals = false; - - this.setValues( parameters ); - - } - - MeshStandardMaterial.prototype = Object.create( Material.prototype ); - MeshStandardMaterial.prototype.constructor = MeshStandardMaterial; - - MeshStandardMaterial.prototype.isMeshStandardMaterial = true; - - MeshStandardMaterial.prototype.copy = function ( source ) { - - Material.prototype.copy.call( this, source ); - - this.defines = { 'STANDARD': '' }; - - this.color.copy( source.color ); - this.roughness = source.roughness; - this.metalness = source.metalness; - - this.map = source.map; - - this.lightMap = source.lightMap; - this.lightMapIntensity = source.lightMapIntensity; - - this.aoMap = source.aoMap; - this.aoMapIntensity = source.aoMapIntensity; - - this.emissive.copy( source.emissive ); - this.emissiveMap = source.emissiveMap; - this.emissiveIntensity = source.emissiveIntensity; - - this.bumpMap = source.bumpMap; - this.bumpScale = source.bumpScale; - - this.normalMap = source.normalMap; - this.normalMapType = source.normalMapType; - this.normalScale.copy( source.normalScale ); - - this.displacementMap = source.displacementMap; - this.displacementScale = source.displacementScale; - this.displacementBias = source.displacementBias; - - this.roughnessMap = source.roughnessMap; - - this.metalnessMap = source.metalnessMap; - - this.alphaMap = source.alphaMap; - - this.envMap = source.envMap; - this.envMapIntensity = source.envMapIntensity; - - this.refractionRatio = source.refractionRatio; - - this.wireframe = source.wireframe; - this.wireframeLinewidth = source.wireframeLinewidth; - this.wireframeLinecap = source.wireframeLinecap; - this.wireframeLinejoin = source.wireframeLinejoin; - - this.skinning = source.skinning; - this.morphTargets = source.morphTargets; - this.morphNormals = source.morphNormals; - - return this; - - }; - - /** - * @author WestLangley / http://github.com/WestLangley - * - * parameters = { - * reflectivity: - * clearCoat: - * clearCoatRoughness: - * } - */ - - function MeshPhysicalMaterial( parameters ) { - - MeshStandardMaterial.call( this ); - - this.defines = { 'PHYSICAL': '' }; - - this.type = 'MeshPhysicalMaterial'; - - this.reflectivity = 0.5; // maps to F0 = 0.04 - - this.clearCoat = 0.0; - this.clearCoatRoughness = 0.0; - - this.setValues( parameters ); - - } - - MeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype ); - MeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial; - - MeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true; - - MeshPhysicalMaterial.prototype.copy = function ( source ) { - - MeshStandardMaterial.prototype.copy.call( this, source ); - - this.defines = { 'PHYSICAL': '' }; - - this.reflectivity = source.reflectivity; - - this.clearCoat = source.clearCoat; - this.clearCoatRoughness = source.clearCoatRoughness; - - return this; - - }; - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - * - * parameters = { - * color: , - * specular: , - * shininess: , - * opacity: , - * - * map: new THREE.Texture( ), - * - * lightMap: new THREE.Texture( ), - * lightMapIntensity: - * - * aoMap: new THREE.Texture( ), - * aoMapIntensity: - * - * emissive: , - * emissiveIntensity: - * emissiveMap: new THREE.Texture( ), - * - * bumpMap: new THREE.Texture( ), - * bumpScale: , - * - * normalMap: new THREE.Texture( ), - * normalMapType: THREE.TangentSpaceNormalMap, - * normalScale: , - * - * displacementMap: new THREE.Texture( ), - * displacementScale: , - * displacementBias: , - * - * specularMap: new THREE.Texture( ), - * - * alphaMap: new THREE.Texture( ), - * - * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ), - * combine: THREE.Multiply, - * reflectivity: , - * refractionRatio: , - * - * wireframe: , - * wireframeLinewidth: , - * - * skinning: , - * morphTargets: , - * morphNormals: - * } - */ - - function MeshPhongMaterial( parameters ) { - - Material.call( this ); - - this.type = 'MeshPhongMaterial'; - - this.color = new Color( 0xffffff ); // diffuse - this.specular = new Color( 0x111111 ); - this.shininess = 30; - - this.map = null; - - this.lightMap = null; - this.lightMapIntensity = 1.0; - - this.aoMap = null; - this.aoMapIntensity = 1.0; - - this.emissive = new Color( 0x000000 ); - this.emissiveIntensity = 1.0; - this.emissiveMap = null; - - this.bumpMap = null; - this.bumpScale = 1; - - this.normalMap = null; - this.normalMapType = TangentSpaceNormalMap; - this.normalScale = new Vector2( 1, 1 ); - - this.displacementMap = null; - this.displacementScale = 1; - this.displacementBias = 0; - - this.specularMap = null; - - this.alphaMap = null; - - this.envMap = null; - this.combine = MultiplyOperation; - this.reflectivity = 1; - this.refractionRatio = 0.98; - - this.wireframe = false; - this.wireframeLinewidth = 1; - this.wireframeLinecap = 'round'; - this.wireframeLinejoin = 'round'; - - this.skinning = false; - this.morphTargets = false; - this.morphNormals = false; - - this.setValues( parameters ); - - } - - MeshPhongMaterial.prototype = Object.create( Material.prototype ); - MeshPhongMaterial.prototype.constructor = MeshPhongMaterial; - - MeshPhongMaterial.prototype.isMeshPhongMaterial = true; - - MeshPhongMaterial.prototype.copy = function ( source ) { - - Material.prototype.copy.call( this, source ); - - this.color.copy( source.color ); - this.specular.copy( source.specular ); - this.shininess = source.shininess; - - this.map = source.map; - - this.lightMap = source.lightMap; - this.lightMapIntensity = source.lightMapIntensity; - - this.aoMap = source.aoMap; - this.aoMapIntensity = source.aoMapIntensity; - - this.emissive.copy( source.emissive ); - this.emissiveMap = source.emissiveMap; - this.emissiveIntensity = source.emissiveIntensity; - - this.bumpMap = source.bumpMap; - this.bumpScale = source.bumpScale; - - this.normalMap = source.normalMap; - this.normalMapType = source.normalMapType; - this.normalScale.copy( source.normalScale ); - - this.displacementMap = source.displacementMap; - this.displacementScale = source.displacementScale; - this.displacementBias = source.displacementBias; - - this.specularMap = source.specularMap; - - this.alphaMap = source.alphaMap; - - this.envMap = source.envMap; - this.combine = source.combine; - this.reflectivity = source.reflectivity; - this.refractionRatio = source.refractionRatio; - - this.wireframe = source.wireframe; - this.wireframeLinewidth = source.wireframeLinewidth; - this.wireframeLinecap = source.wireframeLinecap; - this.wireframeLinejoin = source.wireframeLinejoin; - - this.skinning = source.skinning; - this.morphTargets = source.morphTargets; - this.morphNormals = source.morphNormals; - - return this; - - }; - - /** - * @author takahirox / http://github.com/takahirox - * - * parameters = { - * gradientMap: new THREE.Texture( ) - * } - */ - - function MeshToonMaterial( parameters ) { - - MeshPhongMaterial.call( this ); - - this.defines = { 'TOON': '' }; - - this.type = 'MeshToonMaterial'; - - this.gradientMap = null; - - this.setValues( parameters ); - - } - - MeshToonMaterial.prototype = Object.create( MeshPhongMaterial.prototype ); - MeshToonMaterial.prototype.constructor = MeshToonMaterial; - - MeshToonMaterial.prototype.isMeshToonMaterial = true; - - MeshToonMaterial.prototype.copy = function ( source ) { - - MeshPhongMaterial.prototype.copy.call( this, source ); - - this.gradientMap = source.gradientMap; - - return this; - - }; - - /** - * @author mrdoob / http://mrdoob.com/ - * @author WestLangley / http://github.com/WestLangley - * - * parameters = { - * opacity: , - * - * bumpMap: new THREE.Texture( ), - * bumpScale: , - * - * normalMap: new THREE.Texture( ), - * normalMapType: THREE.TangentSpaceNormalMap, - * normalScale: , - * - * displacementMap: new THREE.Texture( ), - * displacementScale: , - * displacementBias: , - * - * wireframe: , - * wireframeLinewidth: - * - * skinning: , - * morphTargets: , - * morphNormals: - * } - */ - - function MeshNormalMaterial( parameters ) { - - Material.call( this ); - - this.type = 'MeshNormalMaterial'; - - this.bumpMap = null; - this.bumpScale = 1; - - this.normalMap = null; - this.normalMapType = TangentSpaceNormalMap; - this.normalScale = new Vector2( 1, 1 ); - - this.displacementMap = null; - this.displacementScale = 1; - this.displacementBias = 0; - - this.wireframe = false; - this.wireframeLinewidth = 1; - - this.fog = false; - this.lights = false; - - this.skinning = false; - this.morphTargets = false; - this.morphNormals = false; - - this.setValues( parameters ); - - } - - MeshNormalMaterial.prototype = Object.create( Material.prototype ); - MeshNormalMaterial.prototype.constructor = MeshNormalMaterial; - - MeshNormalMaterial.prototype.isMeshNormalMaterial = true; - - MeshNormalMaterial.prototype.copy = function ( source ) { - - Material.prototype.copy.call( this, source ); - - this.bumpMap = source.bumpMap; - this.bumpScale = source.bumpScale; - - this.normalMap = source.normalMap; - this.normalMapType = source.normalMapType; - this.normalScale.copy( source.normalScale ); - - this.displacementMap = source.displacementMap; - this.displacementScale = source.displacementScale; - this.displacementBias = source.displacementBias; - - this.wireframe = source.wireframe; - this.wireframeLinewidth = source.wireframeLinewidth; - - this.skinning = source.skinning; - this.morphTargets = source.morphTargets; - this.morphNormals = source.morphNormals; - - return this; - - }; - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - * - * parameters = { - * color: , - * opacity: , - * - * map: new THREE.Texture( ), - * - * lightMap: new THREE.Texture( ), - * lightMapIntensity: - * - * aoMap: new THREE.Texture( ), - * aoMapIntensity: - * - * emissive: , - * emissiveIntensity: - * emissiveMap: new THREE.Texture( ), - * - * specularMap: new THREE.Texture( ), - * - * alphaMap: new THREE.Texture( ), - * - * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ), - * combine: THREE.Multiply, - * reflectivity: , - * refractionRatio: , - * - * wireframe: , - * wireframeLinewidth: , - * - * skinning: , - * morphTargets: , - * morphNormals: - * } - */ - - function MeshLambertMaterial( parameters ) { - - Material.call( this ); - - this.type = 'MeshLambertMaterial'; - - this.color = new Color( 0xffffff ); // diffuse - - this.map = null; - - this.lightMap = null; - this.lightMapIntensity = 1.0; - - this.aoMap = null; - this.aoMapIntensity = 1.0; - - this.emissive = new Color( 0x000000 ); - this.emissiveIntensity = 1.0; - this.emissiveMap = null; - - this.specularMap = null; - - this.alphaMap = null; - - this.envMap = null; - this.combine = MultiplyOperation; - this.reflectivity = 1; - this.refractionRatio = 0.98; - - this.wireframe = false; - this.wireframeLinewidth = 1; - this.wireframeLinecap = 'round'; - this.wireframeLinejoin = 'round'; - - this.skinning = false; - this.morphTargets = false; - this.morphNormals = false; - - this.setValues( parameters ); - - } - - MeshLambertMaterial.prototype = Object.create( Material.prototype ); - MeshLambertMaterial.prototype.constructor = MeshLambertMaterial; - - MeshLambertMaterial.prototype.isMeshLambertMaterial = true; - - MeshLambertMaterial.prototype.copy = function ( source ) { - - Material.prototype.copy.call( this, source ); - - this.color.copy( source.color ); - - this.map = source.map; - - this.lightMap = source.lightMap; - this.lightMapIntensity = source.lightMapIntensity; - - this.aoMap = source.aoMap; - this.aoMapIntensity = source.aoMapIntensity; - - this.emissive.copy( source.emissive ); - this.emissiveMap = source.emissiveMap; - this.emissiveIntensity = source.emissiveIntensity; - - this.specularMap = source.specularMap; - - this.alphaMap = source.alphaMap; - - this.envMap = source.envMap; - this.combine = source.combine; - this.reflectivity = source.reflectivity; - this.refractionRatio = source.refractionRatio; - - this.wireframe = source.wireframe; - this.wireframeLinewidth = source.wireframeLinewidth; - this.wireframeLinecap = source.wireframeLinecap; - this.wireframeLinejoin = source.wireframeLinejoin; - - this.skinning = source.skinning; - this.morphTargets = source.morphTargets; - this.morphNormals = source.morphNormals; - - return this; - - }; - - /** - * @author WestLangley / http://github.com/WestLangley - * - * parameters = { - * color: , - * opacity: , - * - * matcap: new THREE.Texture( ), - * - * map: new THREE.Texture( ), - * - * bumpMap: new THREE.Texture( ), - * bumpScale: , - * - * normalMap: new THREE.Texture( ), - * normalMapType: THREE.TangentSpaceNormalMap, - * normalScale: , - * - * displacementMap: new THREE.Texture( ), - * displacementScale: , - * displacementBias: , - * - * alphaMap: new THREE.Texture( ), - * - * skinning: , - * morphTargets: , - * morphNormals: - * } - */ - - function MeshMatcapMaterial( parameters ) { - - Material.call( this ); - - this.defines = { 'MATCAP': '' }; - - this.type = 'MeshMatcapMaterial'; - - this.color = new Color( 0xffffff ); // diffuse - - this.matcap = null; - - this.map = null; - - this.bumpMap = null; - this.bumpScale = 1; - - this.normalMap = null; - this.normalMapType = TangentSpaceNormalMap; - this.normalScale = new Vector2( 1, 1 ); - - this.displacementMap = null; - this.displacementScale = 1; - this.displacementBias = 0; - - this.alphaMap = null; - - this.skinning = false; - this.morphTargets = false; - this.morphNormals = false; - - this.lights = false; - - this.setValues( parameters ); - - } - - MeshMatcapMaterial.prototype = Object.create( Material.prototype ); - MeshMatcapMaterial.prototype.constructor = MeshMatcapMaterial; - - MeshMatcapMaterial.prototype.isMeshMatcapMaterial = true; - - MeshMatcapMaterial.prototype.copy = function ( source ) { - - Material.prototype.copy.call( this, source ); - - this.defines = { 'MATCAP': '' }; - - this.color.copy( source.color ); - - this.matcap = source.matcap; - - this.map = source.map; - - this.bumpMap = source.bumpMap; - this.bumpScale = source.bumpScale; - - this.normalMap = source.normalMap; - this.normalMapType = source.normalMapType; - this.normalScale.copy( source.normalScale ); - - this.displacementMap = source.displacementMap; - this.displacementScale = source.displacementScale; - this.displacementBias = source.displacementBias; - - this.alphaMap = source.alphaMap; - - this.skinning = source.skinning; - this.morphTargets = source.morphTargets; - this.morphNormals = source.morphNormals; - - return this; - - }; - - /** - * @author alteredq / http://alteredqualia.com/ - * - * parameters = { - * color: , - * opacity: , - * - * linewidth: , - * - * scale: , - * dashSize: , - * gapSize: - * } - */ - - function LineDashedMaterial( parameters ) { - - LineBasicMaterial.call( this ); - - this.type = 'LineDashedMaterial'; - - this.scale = 1; - this.dashSize = 3; - this.gapSize = 1; - - this.setValues( parameters ); - - } - - LineDashedMaterial.prototype = Object.create( LineBasicMaterial.prototype ); - LineDashedMaterial.prototype.constructor = LineDashedMaterial; - - LineDashedMaterial.prototype.isLineDashedMaterial = true; - - LineDashedMaterial.prototype.copy = function ( source ) { - - LineBasicMaterial.prototype.copy.call( this, source ); - - this.scale = source.scale; - this.dashSize = source.dashSize; - this.gapSize = source.gapSize; - - return this; - - }; - - - - var Materials = /*#__PURE__*/Object.freeze({ - ShadowMaterial: ShadowMaterial, - SpriteMaterial: SpriteMaterial, - RawShaderMaterial: RawShaderMaterial, - ShaderMaterial: ShaderMaterial, - PointsMaterial: PointsMaterial, - MeshPhysicalMaterial: MeshPhysicalMaterial, - MeshStandardMaterial: MeshStandardMaterial, - MeshPhongMaterial: MeshPhongMaterial, - MeshToonMaterial: MeshToonMaterial, - MeshNormalMaterial: MeshNormalMaterial, - MeshLambertMaterial: MeshLambertMaterial, - MeshDepthMaterial: MeshDepthMaterial, - MeshDistanceMaterial: MeshDistanceMaterial, - MeshBasicMaterial: MeshBasicMaterial, - MeshMatcapMaterial: MeshMatcapMaterial, - LineDashedMaterial: LineDashedMaterial, - LineBasicMaterial: LineBasicMaterial, - Material: Material - }); - - /** - * @author tschw - * @author Ben Houston / http://clara.io/ - * @author David Sarno / http://lighthaus.us/ - */ - - var AnimationUtils = { - - // same as Array.prototype.slice, but also works on typed arrays - arraySlice: function ( array, from, to ) { - - if ( AnimationUtils.isTypedArray( array ) ) { - - // in ios9 array.subarray(from, undefined) will return empty array - // but array.subarray(from) or array.subarray(from, len) is correct - return new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) ); - - } - - return array.slice( from, to ); - - }, - - // converts an array to a specific type - convertArray: function ( array, type, forceClone ) { - - if ( ! array || // let 'undefined' and 'null' pass - ! forceClone && array.constructor === type ) return array; - - if ( typeof type.BYTES_PER_ELEMENT === 'number' ) { - - return new type( array ); // create typed array - - } - - return Array.prototype.slice.call( array ); // create Array - - }, - - isTypedArray: function ( object ) { - - return ArrayBuffer.isView( object ) && - ! ( object instanceof DataView ); - - }, - - // returns an array by which times and values can be sorted - getKeyframeOrder: function ( times ) { - - function compareTime( i, j ) { - - return times[ i ] - times[ j ]; - - } - - var n = times.length; - var result = new Array( n ); - for ( var i = 0; i !== n; ++ i ) result[ i ] = i; - - result.sort( compareTime ); - - return result; - - }, - - // uses the array previously returned by 'getKeyframeOrder' to sort data - sortedArray: function ( values, stride, order ) { - - var nValues = values.length; - var result = new values.constructor( nValues ); - - for ( var i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) { - - var srcOffset = order[ i ] * stride; - - for ( var j = 0; j !== stride; ++ j ) { - - result[ dstOffset ++ ] = values[ srcOffset + j ]; - - } - - } - - return result; - - }, - - // function for parsing AOS keyframe formats - flattenJSON: function ( jsonKeys, times, values, valuePropertyName ) { - - var i = 1, key = jsonKeys[ 0 ]; - - while ( key !== undefined && key[ valuePropertyName ] === undefined ) { - - key = jsonKeys[ i ++ ]; - - } - - if ( key === undefined ) return; // no data - - var value = key[ valuePropertyName ]; - if ( value === undefined ) return; // no data - - if ( Array.isArray( value ) ) { - - do { - - value = key[ valuePropertyName ]; - - if ( value !== undefined ) { - - times.push( key.time ); - values.push.apply( values, value ); // push all elements - - } - - key = jsonKeys[ i ++ ]; - - } while ( key !== undefined ); - - } else if ( value.toArray !== undefined ) { - - // ...assume THREE.Math-ish - - do { - - value = key[ valuePropertyName ]; - - if ( value !== undefined ) { - - times.push( key.time ); - value.toArray( values, values.length ); - - } - - key = jsonKeys[ i ++ ]; - - } while ( key !== undefined ); - - } else { - - // otherwise push as-is - - do { - - value = key[ valuePropertyName ]; - - if ( value !== undefined ) { - - times.push( key.time ); - values.push( value ); - - } - - key = jsonKeys[ i ++ ]; - - } while ( key !== undefined ); - - } - - } - - }; - - /** - * Abstract base class of interpolants over parametric samples. - * - * The parameter domain is one dimensional, typically the time or a path - * along a curve defined by the data. - * - * The sample values can have any dimensionality and derived classes may - * apply special interpretations to the data. - * - * This class provides the interval seek in a Template Method, deferring - * the actual interpolation to derived classes. - * - * Time complexity is O(1) for linear access crossing at most two points - * and O(log N) for random access, where N is the number of positions. - * - * References: - * - * http://www.oodesign.com/template-method-pattern.html - * - * @author tschw - */ - - function Interpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { - - this.parameterPositions = parameterPositions; - this._cachedIndex = 0; - - this.resultBuffer = resultBuffer !== undefined ? - resultBuffer : new sampleValues.constructor( sampleSize ); - this.sampleValues = sampleValues; - this.valueSize = sampleSize; - - } - - Object.assign( Interpolant.prototype, { - - evaluate: function ( t ) { - - var pp = this.parameterPositions, - i1 = this._cachedIndex, - - t1 = pp[ i1 ], - t0 = pp[ i1 - 1 ]; - - validate_interval: { - - seek: { - - var right; - - linear_scan: { - - //- See http://jsperf.com/comparison-to-undefined/3 - //- slower code: - //- - //- if ( t >= t1 || t1 === undefined ) { - forward_scan: if ( ! ( t < t1 ) ) { - - for ( var giveUpAt = i1 + 2; ; ) { - - if ( t1 === undefined ) { - - if ( t < t0 ) break forward_scan; - - // after end - - i1 = pp.length; - this._cachedIndex = i1; - return this.afterEnd_( i1 - 1, t, t0 ); - - } - - if ( i1 === giveUpAt ) break; // this loop - - t0 = t1; - t1 = pp[ ++ i1 ]; - - if ( t < t1 ) { - - // we have arrived at the sought interval - break seek; - - } - - } - - // prepare binary search on the right side of the index - right = pp.length; - break linear_scan; - - } - - //- slower code: - //- if ( t < t0 || t0 === undefined ) { - if ( ! ( t >= t0 ) ) { - - // looping? - - var t1global = pp[ 1 ]; - - if ( t < t1global ) { - - i1 = 2; // + 1, using the scan for the details - t0 = t1global; - - } - - // linear reverse scan - - for ( var giveUpAt = i1 - 2; ; ) { - - if ( t0 === undefined ) { - - // before start - - this._cachedIndex = 0; - return this.beforeStart_( 0, t, t1 ); - - } - - if ( i1 === giveUpAt ) break; // this loop - - t1 = t0; - t0 = pp[ -- i1 - 1 ]; - - if ( t >= t0 ) { - - // we have arrived at the sought interval - break seek; - - } - - } - - // prepare binary search on the left side of the index - right = i1; - i1 = 0; - break linear_scan; - - } - - // the interval is valid - - break validate_interval; - - } // linear scan - - // binary search - - while ( i1 < right ) { - - var mid = ( i1 + right ) >>> 1; - - if ( t < pp[ mid ] ) { - - right = mid; - - } else { - - i1 = mid + 1; - - } - - } - - t1 = pp[ i1 ]; - t0 = pp[ i1 - 1 ]; - - // check boundary cases, again - - if ( t0 === undefined ) { - - this._cachedIndex = 0; - return this.beforeStart_( 0, t, t1 ); - - } - - if ( t1 === undefined ) { - - i1 = pp.length; - this._cachedIndex = i1; - return this.afterEnd_( i1 - 1, t0, t ); - - } - - } // seek - - this._cachedIndex = i1; - - this.intervalChanged_( i1, t0, t1 ); - - } // validate_interval - - return this.interpolate_( i1, t0, t, t1 ); - - }, - - settings: null, // optional, subclass-specific settings structure - // Note: The indirection allows central control of many interpolants. - - // --- Protected interface - - DefaultSettings_: {}, - - getSettings_: function () { - - return this.settings || this.DefaultSettings_; - - }, - - copySampleValue_: function ( index ) { - - // copies a sample value to the result buffer - - var result = this.resultBuffer, - values = this.sampleValues, - stride = this.valueSize, - offset = index * stride; - - for ( var i = 0; i !== stride; ++ i ) { - - result[ i ] = values[ offset + i ]; - - } - - return result; - - }, - - // Template methods for derived classes: - - interpolate_: function ( /* i1, t0, t, t1 */ ) { - - throw new Error( 'call to abstract method' ); - // implementations shall return this.resultBuffer - - }, - - intervalChanged_: function ( /* i1, t0, t1 */ ) { - - // empty - - } - - } ); - - //!\ DECLARE ALIAS AFTER assign prototype ! - Object.assign( Interpolant.prototype, { - - //( 0, t, t0 ), returns this.resultBuffer - beforeStart_: Interpolant.prototype.copySampleValue_, - - //( N-1, tN-1, t ), returns this.resultBuffer - afterEnd_: Interpolant.prototype.copySampleValue_, - - } ); - - /** - * Fast and simple cubic spline interpolant. - * - * It was derived from a Hermitian construction setting the first derivative - * at each sample position to the linear slope between neighboring positions - * over their parameter interval. - * - * @author tschw - */ - - function CubicInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { - - Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); - - this._weightPrev = - 0; - this._offsetPrev = - 0; - this._weightNext = - 0; - this._offsetNext = - 0; - - } - - CubicInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), { - - constructor: CubicInterpolant, - - DefaultSettings_: { - - endingStart: ZeroCurvatureEnding, - endingEnd: ZeroCurvatureEnding - - }, - - intervalChanged_: function ( i1, t0, t1 ) { - - var pp = this.parameterPositions, - iPrev = i1 - 2, - iNext = i1 + 1, - - tPrev = pp[ iPrev ], - tNext = pp[ iNext ]; - - if ( tPrev === undefined ) { - - switch ( this.getSettings_().endingStart ) { - - case ZeroSlopeEnding: - - // f'(t0) = 0 - iPrev = i1; - tPrev = 2 * t0 - t1; - - break; - - case WrapAroundEnding: - - // use the other end of the curve - iPrev = pp.length - 2; - tPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ]; - - break; - - default: // ZeroCurvatureEnding - - // f''(t0) = 0 a.k.a. Natural Spline - iPrev = i1; - tPrev = t1; - - } - - } - - if ( tNext === undefined ) { - - switch ( this.getSettings_().endingEnd ) { - - case ZeroSlopeEnding: - - // f'(tN) = 0 - iNext = i1; - tNext = 2 * t1 - t0; - - break; - - case WrapAroundEnding: - - // use the other end of the curve - iNext = 1; - tNext = t1 + pp[ 1 ] - pp[ 0 ]; - - break; - - default: // ZeroCurvatureEnding - - // f''(tN) = 0, a.k.a. Natural Spline - iNext = i1 - 1; - tNext = t0; - - } - - } - - var halfDt = ( t1 - t0 ) * 0.5, - stride = this.valueSize; - - this._weightPrev = halfDt / ( t0 - tPrev ); - this._weightNext = halfDt / ( tNext - t1 ); - this._offsetPrev = iPrev * stride; - this._offsetNext = iNext * stride; - - }, - - interpolate_: function ( i1, t0, t, t1 ) { - - var result = this.resultBuffer, - values = this.sampleValues, - stride = this.valueSize, - - o1 = i1 * stride, o0 = o1 - stride, - oP = this._offsetPrev, oN = this._offsetNext, - wP = this._weightPrev, wN = this._weightNext, - - p = ( t - t0 ) / ( t1 - t0 ), - pp = p * p, - ppp = pp * p; - - // evaluate polynomials - - var sP = - wP * ppp + 2 * wP * pp - wP * p; - var s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1; - var s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p; - var sN = wN * ppp - wN * pp; - - // combine data linearly - - for ( var i = 0; i !== stride; ++ i ) { - - result[ i ] = - sP * values[ oP + i ] + - s0 * values[ o0 + i ] + - s1 * values[ o1 + i ] + - sN * values[ oN + i ]; - - } - - return result; - - } - - } ); - - /** - * @author tschw - */ - - function LinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { - - Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); - - } - - LinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), { - - constructor: LinearInterpolant, - - interpolate_: function ( i1, t0, t, t1 ) { - - var result = this.resultBuffer, - values = this.sampleValues, - stride = this.valueSize, - - offset1 = i1 * stride, - offset0 = offset1 - stride, - - weight1 = ( t - t0 ) / ( t1 - t0 ), - weight0 = 1 - weight1; - - for ( var i = 0; i !== stride; ++ i ) { - - result[ i ] = - values[ offset0 + i ] * weight0 + - values[ offset1 + i ] * weight1; - - } - - return result; - - } - - } ); - - /** - * - * Interpolant that evaluates to the sample value at the position preceeding - * the parameter. - * - * @author tschw - */ - - function DiscreteInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { - - Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); - - } - - DiscreteInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), { - - constructor: DiscreteInterpolant, - - interpolate_: function ( i1 /*, t0, t, t1 */ ) { - - return this.copySampleValue_( i1 - 1 ); - - } - - } ); - - /** - * - * A timed sequence of keyframes for a specific property. - * - * - * @author Ben Houston / http://clara.io/ - * @author David Sarno / http://lighthaus.us/ - * @author tschw - */ - - function KeyframeTrack( name, times, values, interpolation ) { - - if ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' ); - if ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name ); - - this.name = name; - - this.times = AnimationUtils.convertArray( times, this.TimeBufferType ); - this.values = AnimationUtils.convertArray( values, this.ValueBufferType ); - - this.setInterpolation( interpolation || this.DefaultInterpolation ); - - } - - // Static methods - - Object.assign( KeyframeTrack, { - - // Serialization (in static context, because of constructor invocation - // and automatic invocation of .toJSON): - - toJSON: function ( track ) { - - var trackType = track.constructor; - - var json; - - // derived classes can define a static toJSON method - if ( trackType.toJSON !== undefined ) { - - json = trackType.toJSON( track ); - - } else { - - // by default, we assume the data can be serialized as-is - json = { - - 'name': track.name, - 'times': AnimationUtils.convertArray( track.times, Array ), - 'values': AnimationUtils.convertArray( track.values, Array ) - - }; - - var interpolation = track.getInterpolation(); - - if ( interpolation !== track.DefaultInterpolation ) { - - json.interpolation = interpolation; - - } - - } - - json.type = track.ValueTypeName; // mandatory - - return json; - - } - - } ); - - Object.assign( KeyframeTrack.prototype, { - - constructor: KeyframeTrack, - - TimeBufferType: Float32Array, - - ValueBufferType: Float32Array, - - DefaultInterpolation: InterpolateLinear, - - InterpolantFactoryMethodDiscrete: function ( result ) { - - return new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result ); - - }, - - InterpolantFactoryMethodLinear: function ( result ) { - - return new LinearInterpolant( this.times, this.values, this.getValueSize(), result ); - - }, - - InterpolantFactoryMethodSmooth: function ( result ) { - - return new CubicInterpolant( this.times, this.values, this.getValueSize(), result ); - - }, - - setInterpolation: function ( interpolation ) { - - var factoryMethod; - - switch ( interpolation ) { - - case InterpolateDiscrete: - - factoryMethod = this.InterpolantFactoryMethodDiscrete; - - break; - - case InterpolateLinear: - - factoryMethod = this.InterpolantFactoryMethodLinear; - - break; - - case InterpolateSmooth: - - factoryMethod = this.InterpolantFactoryMethodSmooth; - - break; - - } - - if ( factoryMethod === undefined ) { - - var message = "unsupported interpolation for " + - this.ValueTypeName + " keyframe track named " + this.name; - - if ( this.createInterpolant === undefined ) { - - // fall back to default, unless the default itself is messed up - if ( interpolation !== this.DefaultInterpolation ) { - - this.setInterpolation( this.DefaultInterpolation ); - - } else { - - throw new Error( message ); // fatal, in this case - - } - - } - - console.warn( 'THREE.KeyframeTrack:', message ); - return this; - - } - - this.createInterpolant = factoryMethod; - - return this; - - }, - - getInterpolation: function () { - - switch ( this.createInterpolant ) { - - case this.InterpolantFactoryMethodDiscrete: - - return InterpolateDiscrete; - - case this.InterpolantFactoryMethodLinear: - - return InterpolateLinear; - - case this.InterpolantFactoryMethodSmooth: - - return InterpolateSmooth; - - } - - }, - - getValueSize: function () { - - return this.values.length / this.times.length; - - }, - - // move all keyframes either forwards or backwards in time - shift: function ( timeOffset ) { - - if ( timeOffset !== 0.0 ) { - - var times = this.times; - - for ( var i = 0, n = times.length; i !== n; ++ i ) { - - times[ i ] += timeOffset; - - } - - } - - return this; - - }, - - // scale all keyframe times by a factor (useful for frame <-> seconds conversions) - scale: function ( timeScale ) { - - if ( timeScale !== 1.0 ) { - - var times = this.times; - - for ( var i = 0, n = times.length; i !== n; ++ i ) { - - times[ i ] *= timeScale; - - } - - } - - return this; - - }, - - // removes keyframes before and after animation without changing any values within the range [startTime, endTime]. - // IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values - trim: function ( startTime, endTime ) { - - var times = this.times, - nKeys = times.length, - from = 0, - to = nKeys - 1; - - while ( from !== nKeys && times[ from ] < startTime ) { - - ++ from; - - } - - while ( to !== - 1 && times[ to ] > endTime ) { - - -- to; - - } - - ++ to; // inclusive -> exclusive bound - - if ( from !== 0 || to !== nKeys ) { - - // empty tracks are forbidden, so keep at least one keyframe - if ( from >= to ) to = Math.max( to, 1 ), from = to - 1; - - var stride = this.getValueSize(); - this.times = AnimationUtils.arraySlice( times, from, to ); - this.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride ); - - } - - return this; - - }, - - // ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable - validate: function () { - - var valid = true; - - var valueSize = this.getValueSize(); - if ( valueSize - Math.floor( valueSize ) !== 0 ) { - - console.error( 'THREE.KeyframeTrack: Invalid value size in track.', this ); - valid = false; - - } - - var times = this.times, - values = this.values, - - nKeys = times.length; - - if ( nKeys === 0 ) { - - console.error( 'THREE.KeyframeTrack: Track is empty.', this ); - valid = false; - - } - - var prevTime = null; - - for ( var i = 0; i !== nKeys; i ++ ) { - - var currTime = times[ i ]; - - if ( typeof currTime === 'number' && isNaN( currTime ) ) { - - console.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime ); - valid = false; - break; - - } - - if ( prevTime !== null && prevTime > currTime ) { - - console.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime ); - valid = false; - break; - - } - - prevTime = currTime; - - } - - if ( values !== undefined ) { - - if ( AnimationUtils.isTypedArray( values ) ) { - - for ( var i = 0, n = values.length; i !== n; ++ i ) { - - var value = values[ i ]; - - if ( isNaN( value ) ) { - - console.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value ); - valid = false; - break; - - } - - } - - } - - } - - return valid; - - }, - - // removes equivalent sequential keys as common in morph target sequences - // (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0) - optimize: function () { - - var times = this.times, - values = this.values, - stride = this.getValueSize(), - - smoothInterpolation = this.getInterpolation() === InterpolateSmooth, - - writeIndex = 1, - lastIndex = times.length - 1; - - for ( var i = 1; i < lastIndex; ++ i ) { - - var keep = false; - - var time = times[ i ]; - var timeNext = times[ i + 1 ]; - - // remove adjacent keyframes scheduled at the same time - - if ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) { - - if ( ! smoothInterpolation ) { - - // remove unnecessary keyframes same as their neighbors - - var offset = i * stride, - offsetP = offset - stride, - offsetN = offset + stride; - - for ( var j = 0; j !== stride; ++ j ) { - - var value = values[ offset + j ]; - - if ( value !== values[ offsetP + j ] || - value !== values[ offsetN + j ] ) { - - keep = true; - break; - - } - - } - - } else { - - keep = true; - - } - - } - - // in-place compaction - - if ( keep ) { - - if ( i !== writeIndex ) { - - times[ writeIndex ] = times[ i ]; - - var readOffset = i * stride, - writeOffset = writeIndex * stride; - - for ( var j = 0; j !== stride; ++ j ) { - - values[ writeOffset + j ] = values[ readOffset + j ]; - - } - - } - - ++ writeIndex; - - } - - } - - // flush last keyframe (compaction looks ahead) - - if ( lastIndex > 0 ) { - - times[ writeIndex ] = times[ lastIndex ]; - - for ( var readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) { - - values[ writeOffset + j ] = values[ readOffset + j ]; - - } - - ++ writeIndex; - - } - - if ( writeIndex !== times.length ) { - - this.times = AnimationUtils.arraySlice( times, 0, writeIndex ); - this.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride ); - - } - - return this; - - }, - - clone: function () { - - var times = AnimationUtils.arraySlice( this.times, 0 ); - var values = AnimationUtils.arraySlice( this.values, 0 ); - - var TypedKeyframeTrack = this.constructor; - var track = new TypedKeyframeTrack( this.name, times, values ); - - // Interpolant argument to constructor is not saved, so copy the factory method directly. - track.createInterpolant = this.createInterpolant; - - return track; - - } - - } ); - - /** - * - * A Track of Boolean keyframe values. - * - * - * @author Ben Houston / http://clara.io/ - * @author David Sarno / http://lighthaus.us/ - * @author tschw - */ - - function BooleanKeyframeTrack( name, times, values ) { - - KeyframeTrack.call( this, name, times, values ); - - } - - BooleanKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { - - constructor: BooleanKeyframeTrack, - - ValueTypeName: 'bool', - ValueBufferType: Array, - - DefaultInterpolation: InterpolateDiscrete, - - InterpolantFactoryMethodLinear: undefined, - InterpolantFactoryMethodSmooth: undefined - - // Note: Actually this track could have a optimized / compressed - // representation of a single value and a custom interpolant that - // computes "firstValue ^ isOdd( index )". - - } ); - - /** - * - * A Track of keyframe values that represent color. - * - * - * @author Ben Houston / http://clara.io/ - * @author David Sarno / http://lighthaus.us/ - * @author tschw - */ - - function ColorKeyframeTrack( name, times, values, interpolation ) { - - KeyframeTrack.call( this, name, times, values, interpolation ); - - } - - ColorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { - - constructor: ColorKeyframeTrack, - - ValueTypeName: 'color' - - // ValueBufferType is inherited - - // DefaultInterpolation is inherited - - // Note: Very basic implementation and nothing special yet. - // However, this is the place for color space parameterization. - - } ); - - /** - * - * A Track of numeric keyframe values. - * - * @author Ben Houston / http://clara.io/ - * @author David Sarno / http://lighthaus.us/ - * @author tschw - */ - - function NumberKeyframeTrack( name, times, values, interpolation ) { - - KeyframeTrack.call( this, name, times, values, interpolation ); - - } - - NumberKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { - - constructor: NumberKeyframeTrack, - - ValueTypeName: 'number' - - // ValueBufferType is inherited - - // DefaultInterpolation is inherited - - } ); - - /** - * Spherical linear unit quaternion interpolant. - * - * @author tschw - */ - - function QuaternionLinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { - - Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); - - } - - QuaternionLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), { - - constructor: QuaternionLinearInterpolant, - - interpolate_: function ( i1, t0, t, t1 ) { - - var result = this.resultBuffer, - values = this.sampleValues, - stride = this.valueSize, - - offset = i1 * stride, - - alpha = ( t - t0 ) / ( t1 - t0 ); - - for ( var end = offset + stride; offset !== end; offset += 4 ) { - - Quaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha ); - - } - - return result; - - } - - } ); - - /** - * - * A Track of quaternion keyframe values. - * - * @author Ben Houston / http://clara.io/ - * @author David Sarno / http://lighthaus.us/ - * @author tschw - */ - - function QuaternionKeyframeTrack( name, times, values, interpolation ) { - - KeyframeTrack.call( this, name, times, values, interpolation ); - - } - - QuaternionKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { - - constructor: QuaternionKeyframeTrack, - - ValueTypeName: 'quaternion', - - // ValueBufferType is inherited - - DefaultInterpolation: InterpolateLinear, - - InterpolantFactoryMethodLinear: function ( result ) { - - return new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result ); - - }, - - InterpolantFactoryMethodSmooth: undefined // not yet implemented - - } ); - - /** - * - * A Track that interpolates Strings - * - * - * @author Ben Houston / http://clara.io/ - * @author David Sarno / http://lighthaus.us/ - * @author tschw - */ - - function StringKeyframeTrack( name, times, values, interpolation ) { - - KeyframeTrack.call( this, name, times, values, interpolation ); - - } - - StringKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { - - constructor: StringKeyframeTrack, - - ValueTypeName: 'string', - ValueBufferType: Array, - - DefaultInterpolation: InterpolateDiscrete, - - InterpolantFactoryMethodLinear: undefined, - - InterpolantFactoryMethodSmooth: undefined - - } ); - - /** - * - * A Track of vectored keyframe values. - * - * - * @author Ben Houston / http://clara.io/ - * @author David Sarno / http://lighthaus.us/ - * @author tschw - */ - - function VectorKeyframeTrack( name, times, values, interpolation ) { - - KeyframeTrack.call( this, name, times, values, interpolation ); - - } - - VectorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { - - constructor: VectorKeyframeTrack, - - ValueTypeName: 'vector' - - // ValueBufferType is inherited - - // DefaultInterpolation is inherited - - } ); - - /** - * - * Reusable set of Tracks that represent an animation. - * - * @author Ben Houston / http://clara.io/ - * @author David Sarno / http://lighthaus.us/ - */ - - function AnimationClip( name, duration, tracks ) { - - this.name = name; - this.tracks = tracks; - this.duration = ( duration !== undefined ) ? duration : - 1; - - this.uuid = _Math.generateUUID(); - - // this means it should figure out its duration by scanning the tracks - if ( this.duration < 0 ) { - - this.resetDuration(); - - } - - } - - function getTrackTypeForValueTypeName( typeName ) { - - switch ( typeName.toLowerCase() ) { - - case 'scalar': - case 'double': - case 'float': - case 'number': - case 'integer': - - return NumberKeyframeTrack; - - case 'vector': - case 'vector2': - case 'vector3': - case 'vector4': - - return VectorKeyframeTrack; - - case 'color': - - return ColorKeyframeTrack; - - case 'quaternion': - - return QuaternionKeyframeTrack; - - case 'bool': - case 'boolean': - - return BooleanKeyframeTrack; - - case 'string': - - return StringKeyframeTrack; - - } - - throw new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName ); - - } - - function parseKeyframeTrack( json ) { - - if ( json.type === undefined ) { - - throw new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' ); - - } - - var trackType = getTrackTypeForValueTypeName( json.type ); - - if ( json.times === undefined ) { - - var times = [], values = []; - - AnimationUtils.flattenJSON( json.keys, times, values, 'value' ); - - json.times = times; - json.values = values; - - } - - // derived classes can define a static parse method - if ( trackType.parse !== undefined ) { - - return trackType.parse( json ); - - } else { - - // by default, we assume a constructor compatible with the base - return new trackType( json.name, json.times, json.values, json.interpolation ); - - } - - } - - Object.assign( AnimationClip, { - - parse: function ( json ) { - - var tracks = [], - jsonTracks = json.tracks, - frameTime = 1.0 / ( json.fps || 1.0 ); - - for ( var i = 0, n = jsonTracks.length; i !== n; ++ i ) { - - tracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) ); - - } - - return new AnimationClip( json.name, json.duration, tracks ); - - }, - - toJSON: function ( clip ) { - - var tracks = [], - clipTracks = clip.tracks; - - var json = { - - 'name': clip.name, - 'duration': clip.duration, - 'tracks': tracks, - 'uuid': clip.uuid - - }; - - for ( var i = 0, n = clipTracks.length; i !== n; ++ i ) { - - tracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) ); - - } - - return json; - - }, - - CreateFromMorphTargetSequence: function ( name, morphTargetSequence, fps, noLoop ) { - - var numMorphTargets = morphTargetSequence.length; - var tracks = []; - - for ( var i = 0; i < numMorphTargets; i ++ ) { - - var times = []; - var values = []; - - times.push( - ( i + numMorphTargets - 1 ) % numMorphTargets, - i, - ( i + 1 ) % numMorphTargets ); - - values.push( 0, 1, 0 ); - - var order = AnimationUtils.getKeyframeOrder( times ); - times = AnimationUtils.sortedArray( times, 1, order ); - values = AnimationUtils.sortedArray( values, 1, order ); - - // if there is a key at the first frame, duplicate it as the - // last frame as well for perfect loop. - if ( ! noLoop && times[ 0 ] === 0 ) { - - times.push( numMorphTargets ); - values.push( values[ 0 ] ); - - } - - tracks.push( - new NumberKeyframeTrack( - '.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']', - times, values - ).scale( 1.0 / fps ) ); - - } - - return new AnimationClip( name, - 1, tracks ); - - }, - - findByName: function ( objectOrClipArray, name ) { - - var clipArray = objectOrClipArray; - - if ( ! Array.isArray( objectOrClipArray ) ) { - - var o = objectOrClipArray; - clipArray = o.geometry && o.geometry.animations || o.animations; - - } - - for ( var i = 0; i < clipArray.length; i ++ ) { - - if ( clipArray[ i ].name === name ) { - - return clipArray[ i ]; - - } - - } - - return null; - - }, - - CreateClipsFromMorphTargetSequences: function ( morphTargets, fps, noLoop ) { - - var animationToMorphTargets = {}; - - // tested with https://regex101.com/ on trick sequences - // such flamingo_flyA_003, flamingo_run1_003, crdeath0059 - var pattern = /^([\w-]*?)([\d]+)$/; - - // sort morph target names into animation groups based - // patterns like Walk_001, Walk_002, Run_001, Run_002 - for ( var i = 0, il = morphTargets.length; i < il; i ++ ) { - - var morphTarget = morphTargets[ i ]; - var parts = morphTarget.name.match( pattern ); - - if ( parts && parts.length > 1 ) { - - var name = parts[ 1 ]; - - var animationMorphTargets = animationToMorphTargets[ name ]; - if ( ! animationMorphTargets ) { - - animationToMorphTargets[ name ] = animationMorphTargets = []; - - } - - animationMorphTargets.push( morphTarget ); - - } - - } - - var clips = []; - - for ( var name in animationToMorphTargets ) { - - clips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) ); - - } - - return clips; - - }, - - // parse the animation.hierarchy format - parseAnimation: function ( animation, bones ) { - - if ( ! animation ) { - - console.error( 'THREE.AnimationClip: No animation in JSONLoader data.' ); - return null; - - } - - var addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) { - - // only return track if there are actually keys. - if ( animationKeys.length !== 0 ) { - - var times = []; - var values = []; - - AnimationUtils.flattenJSON( animationKeys, times, values, propertyName ); - - // empty keys are filtered out, so check again - if ( times.length !== 0 ) { - - destTracks.push( new trackType( trackName, times, values ) ); - - } - - } - - }; - - var tracks = []; - - var clipName = animation.name || 'default'; - // automatic length determination in AnimationClip. - var duration = animation.length || - 1; - var fps = animation.fps || 30; - - var hierarchyTracks = animation.hierarchy || []; - - for ( var h = 0; h < hierarchyTracks.length; h ++ ) { - - var animationKeys = hierarchyTracks[ h ].keys; - - // skip empty tracks - if ( ! animationKeys || animationKeys.length === 0 ) continue; - - // process morph targets - if ( animationKeys[ 0 ].morphTargets ) { - - // figure out all morph targets used in this track - var morphTargetNames = {}; - - for ( var k = 0; k < animationKeys.length; k ++ ) { - - if ( animationKeys[ k ].morphTargets ) { - - for ( var m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) { - - morphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1; - - } - - } - - } - - // create a track for each morph target with all zero - // morphTargetInfluences except for the keys in which - // the morphTarget is named. - for ( var morphTargetName in morphTargetNames ) { - - var times = []; - var values = []; - - for ( var m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) { - - var animationKey = animationKeys[ k ]; - - times.push( animationKey.time ); - values.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 ); - - } - - tracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) ); - - } - - duration = morphTargetNames.length * ( fps || 1.0 ); - - } else { - - // ...assume skeletal animation - - var boneName = '.bones[' + bones[ h ].name + ']'; - - addNonemptyTrack( - VectorKeyframeTrack, boneName + '.position', - animationKeys, 'pos', tracks ); - - addNonemptyTrack( - QuaternionKeyframeTrack, boneName + '.quaternion', - animationKeys, 'rot', tracks ); - - addNonemptyTrack( - VectorKeyframeTrack, boneName + '.scale', - animationKeys, 'scl', tracks ); - - } - - } - - if ( tracks.length === 0 ) { - - return null; - - } - - var clip = new AnimationClip( clipName, duration, tracks ); - - return clip; - - } - - } ); - - Object.assign( AnimationClip.prototype, { - - resetDuration: function () { - - var tracks = this.tracks, duration = 0; - - for ( var i = 0, n = tracks.length; i !== n; ++ i ) { - - var track = this.tracks[ i ]; - - duration = Math.max( duration, track.times[ track.times.length - 1 ] ); - - } - - this.duration = duration; - - return this; - - }, - - trim: function () { - - for ( var i = 0; i < this.tracks.length; i ++ ) { - - this.tracks[ i ].trim( 0, this.duration ); - - } - - return this; - - }, - - validate: function () { - - var valid = true; - - for ( var i = 0; i < this.tracks.length; i ++ ) { - - valid = valid && this.tracks[ i ].validate(); - - } - - return valid; - - }, - - optimize: function () { - - for ( var i = 0; i < this.tracks.length; i ++ ) { - - this.tracks[ i ].optimize(); - - } - - return this; - - }, - - - clone: function () { - - var tracks = []; - - for ( var i = 0; i < this.tracks.length; i ++ ) { - - tracks.push( this.tracks[ i ].clone() ); - - } - - return new AnimationClip( this.name, this.duration, tracks ); - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - var Cache = { - - enabled: false, - - files: {}, - - add: function ( key, file ) { - - if ( this.enabled === false ) return; - - // console.log( 'THREE.Cache', 'Adding key:', key ); - - this.files[ key ] = file; - - }, - - get: function ( key ) { - - if ( this.enabled === false ) return; - - // console.log( 'THREE.Cache', 'Checking key:', key ); - - return this.files[ key ]; - - }, - - remove: function ( key ) { - - delete this.files[ key ]; - - }, - - clear: function () { - - this.files = {}; - - } - - }; - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function LoadingManager( onLoad, onProgress, onError ) { - - var scope = this; - - var isLoading = false; - var itemsLoaded = 0; - var itemsTotal = 0; - var urlModifier = undefined; - - // Refer to #5689 for the reason why we don't set .onStart - // in the constructor - - this.onStart = undefined; - this.onLoad = onLoad; - this.onProgress = onProgress; - this.onError = onError; - - this.itemStart = function ( url ) { - - itemsTotal ++; - - if ( isLoading === false ) { - - if ( scope.onStart !== undefined ) { - - scope.onStart( url, itemsLoaded, itemsTotal ); - - } - - } - - isLoading = true; - - }; - - this.itemEnd = function ( url ) { - - itemsLoaded ++; - - if ( scope.onProgress !== undefined ) { - - scope.onProgress( url, itemsLoaded, itemsTotal ); - - } - - if ( itemsLoaded === itemsTotal ) { - - isLoading = false; - - if ( scope.onLoad !== undefined ) { - - scope.onLoad(); - - } - - } - - }; - - this.itemError = function ( url ) { - - if ( scope.onError !== undefined ) { - - scope.onError( url ); - - } - - }; - - this.resolveURL = function ( url ) { - - if ( urlModifier ) { - - return urlModifier( url ); - - } - - return url; - - }; - - this.setURLModifier = function ( transform ) { - - urlModifier = transform; - return this; - - }; - - } - - var DefaultLoadingManager = new LoadingManager(); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - var loading = {}; - - function FileLoader( manager ) { - - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; - - } - - Object.assign( FileLoader.prototype, { - - load: function ( url, onLoad, onProgress, onError ) { - - if ( url === undefined ) url = ''; - - if ( this.path !== undefined ) url = this.path + url; - - url = this.manager.resolveURL( url ); - - var scope = this; - - var cached = Cache.get( url ); - - if ( cached !== undefined ) { - - scope.manager.itemStart( url ); - - setTimeout( function () { - - if ( onLoad ) onLoad( cached ); - - scope.manager.itemEnd( url ); - - }, 0 ); - - return cached; - - } - - // Check if request is duplicate - - if ( loading[ url ] !== undefined ) { - - loading[ url ].push( { - - onLoad: onLoad, - onProgress: onProgress, - onError: onError - - } ); - - return; - - } - - // Check for data: URI - var dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/; - var dataUriRegexResult = url.match( dataUriRegex ); - - // Safari can not handle Data URIs through XMLHttpRequest so process manually - if ( dataUriRegexResult ) { - - var mimeType = dataUriRegexResult[ 1 ]; - var isBase64 = !! dataUriRegexResult[ 2 ]; - var data = dataUriRegexResult[ 3 ]; - - data = decodeURIComponent( data ); - - if ( isBase64 ) data = atob( data ); - - try { - - var response; - var responseType = ( this.responseType || '' ).toLowerCase(); - - switch ( responseType ) { - - case 'arraybuffer': - case 'blob': - - var view = new Uint8Array( data.length ); - - for ( var i = 0; i < data.length; i ++ ) { - - view[ i ] = data.charCodeAt( i ); - - } - - if ( responseType === 'blob' ) { - - response = new Blob( [ view.buffer ], { type: mimeType } ); - - } else { - - response = view.buffer; - - } - - break; - - case 'document': - - var parser = new DOMParser(); - response = parser.parseFromString( data, mimeType ); - - break; - - case 'json': - - response = JSON.parse( data ); - - break; - - default: // 'text' or other - - response = data; - - break; - - } - - // Wait for next browser tick like standard XMLHttpRequest event dispatching does - setTimeout( function () { - - if ( onLoad ) onLoad( response ); - - scope.manager.itemEnd( url ); - - }, 0 ); - - } catch ( error ) { - - // Wait for next browser tick like standard XMLHttpRequest event dispatching does - setTimeout( function () { - - if ( onError ) onError( error ); - - scope.manager.itemError( url ); - scope.manager.itemEnd( url ); - - }, 0 ); - - } - - } else { - - // Initialise array for duplicate requests - - loading[ url ] = []; - - loading[ url ].push( { - - onLoad: onLoad, - onProgress: onProgress, - onError: onError - - } ); - - var request = new XMLHttpRequest(); - - request.open( 'GET', url, true ); - - request.addEventListener( 'load', function ( event ) { - - var response = this.response; - - Cache.add( url, response ); - - var callbacks = loading[ url ]; - - delete loading[ url ]; - - if ( this.status === 200 || this.status === 0 ) { - - // Some browsers return HTTP Status 0 when using non-http protocol - // e.g. 'file://' or 'data://'. Handle as success. - - if ( this.status === 0 ) console.warn( 'THREE.FileLoader: HTTP Status 0 received.' ); - - for ( var i = 0, il = callbacks.length; i < il; i ++ ) { - - var callback = callbacks[ i ]; - if ( callback.onLoad ) callback.onLoad( response ); - - } - - scope.manager.itemEnd( url ); - - } else { - - for ( var i = 0, il = callbacks.length; i < il; i ++ ) { - - var callback = callbacks[ i ]; - if ( callback.onError ) callback.onError( event ); - - } - - scope.manager.itemError( url ); - scope.manager.itemEnd( url ); - - } - - }, false ); - - request.addEventListener( 'progress', function ( event ) { - - var callbacks = loading[ url ]; - - for ( var i = 0, il = callbacks.length; i < il; i ++ ) { - - var callback = callbacks[ i ]; - if ( callback.onProgress ) callback.onProgress( event ); - - } - - }, false ); - - request.addEventListener( 'error', function ( event ) { - - var callbacks = loading[ url ]; - - delete loading[ url ]; - - for ( var i = 0, il = callbacks.length; i < il; i ++ ) { - - var callback = callbacks[ i ]; - if ( callback.onError ) callback.onError( event ); - - } - - scope.manager.itemError( url ); - scope.manager.itemEnd( url ); - - }, false ); - - request.addEventListener( 'abort', function ( event ) { - - var callbacks = loading[ url ]; - - delete loading[ url ]; - - for ( var i = 0, il = callbacks.length; i < il; i ++ ) { - - var callback = callbacks[ i ]; - if ( callback.onError ) callback.onError( event ); - - } - - scope.manager.itemError( url ); - scope.manager.itemEnd( url ); - - }, false ); - - if ( this.responseType !== undefined ) request.responseType = this.responseType; - if ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials; - - if ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' ); - - for ( var header in this.requestHeader ) { - - request.setRequestHeader( header, this.requestHeader[ header ] ); - - } - - request.send( null ); - - } - - scope.manager.itemStart( url ); - - return request; - - }, - - setPath: function ( value ) { - - this.path = value; - return this; - - }, - - setResponseType: function ( value ) { - - this.responseType = value; - return this; - - }, - - setWithCredentials: function ( value ) { - - this.withCredentials = value; - return this; - - }, - - setMimeType: function ( value ) { - - this.mimeType = value; - return this; - - }, - - setRequestHeader: function ( value ) { - - this.requestHeader = value; - return this; - - } - - } ); - - /** - * @author bhouston / http://clara.io/ - */ - - function AnimationLoader( manager ) { - - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; - - } - - Object.assign( AnimationLoader.prototype, { - - load: function ( url, onLoad, onProgress, onError ) { - - var scope = this; - - var loader = new FileLoader( scope.manager ); - loader.setPath( scope.path ); - loader.load( url, function ( text ) { - - onLoad( scope.parse( JSON.parse( text ) ) ); - - }, onProgress, onError ); - - }, - - parse: function ( json ) { - - var animations = []; - - for ( var i = 0; i < json.length; i ++ ) { - - var clip = AnimationClip.parse( json[ i ] ); - - animations.push( clip ); - - } - - return animations; - - }, - - setPath: function ( value ) { - - this.path = value; - return this; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * - * Abstract Base class to block based textures loader (dds, pvr, ...) - */ - - function CompressedTextureLoader( manager ) { - - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; - - // override in sub classes - this._parser = null; - - } - - Object.assign( CompressedTextureLoader.prototype, { - - load: function ( url, onLoad, onProgress, onError ) { - - var scope = this; - - var images = []; - - var texture = new CompressedTexture(); - texture.image = images; - - var loader = new FileLoader( this.manager ); - loader.setPath( this.path ); - loader.setResponseType( 'arraybuffer' ); - - function loadTexture( i ) { - - loader.load( url[ i ], function ( buffer ) { - - var texDatas = scope._parser( buffer, true ); - - images[ i ] = { - width: texDatas.width, - height: texDatas.height, - format: texDatas.format, - mipmaps: texDatas.mipmaps - }; - - loaded += 1; - - if ( loaded === 6 ) { - - if ( texDatas.mipmapCount === 1 ) - texture.minFilter = LinearFilter; - - texture.format = texDatas.format; - texture.needsUpdate = true; - - if ( onLoad ) onLoad( texture ); - - } - - }, onProgress, onError ); - - } - - if ( Array.isArray( url ) ) { - - var loaded = 0; - - for ( var i = 0, il = url.length; i < il; ++ i ) { - - loadTexture( i ); - - } - - } else { - - // compressed cubemap texture stored in a single DDS file - - loader.load( url, function ( buffer ) { - - var texDatas = scope._parser( buffer, true ); - - if ( texDatas.isCubemap ) { - - var faces = texDatas.mipmaps.length / texDatas.mipmapCount; - - for ( var f = 0; f < faces; f ++ ) { - - images[ f ] = { mipmaps: [] }; - - for ( var i = 0; i < texDatas.mipmapCount; i ++ ) { - - images[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] ); - images[ f ].format = texDatas.format; - images[ f ].width = texDatas.width; - images[ f ].height = texDatas.height; - - } - - } - - } else { - - texture.image.width = texDatas.width; - texture.image.height = texDatas.height; - texture.mipmaps = texDatas.mipmaps; - - } - - if ( texDatas.mipmapCount === 1 ) { - - texture.minFilter = LinearFilter; - - } - - texture.format = texDatas.format; - texture.needsUpdate = true; - - if ( onLoad ) onLoad( texture ); - - }, onProgress, onError ); - - } - - return texture; - - }, - - setPath: function ( value ) { - - this.path = value; - return this; - - } - - } ); - - /** - * @author Nikos M. / https://github.com/foo123/ - * - * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...) - */ - - function DataTextureLoader( manager ) { - - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; - - // override in sub classes - this._parser = null; - - } - - Object.assign( DataTextureLoader.prototype, { - - load: function ( url, onLoad, onProgress, onError ) { - - var scope = this; - - var texture = new DataTexture(); - - var loader = new FileLoader( this.manager ); - loader.setResponseType( 'arraybuffer' ); - loader.setPath( this.path ); - loader.load( url, function ( buffer ) { - - var texData = scope._parser( buffer ); - - if ( ! texData ) return; - - if ( texData.image !== undefined ) { - - texture.image = texData.image; - - } else if ( texData.data !== undefined ) { - - texture.image.width = texData.width; - texture.image.height = texData.height; - texture.image.data = texData.data; - - } - - texture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping; - texture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping; - - texture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter; - texture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearMipMapLinearFilter; - - texture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1; - - if ( texData.format !== undefined ) { - - texture.format = texData.format; - - } - if ( texData.type !== undefined ) { - - texture.type = texData.type; - - } - - if ( texData.mipmaps !== undefined ) { - - texture.mipmaps = texData.mipmaps; - - } - - if ( texData.mipmapCount === 1 ) { - - texture.minFilter = LinearFilter; - - } - - texture.needsUpdate = true; - - if ( onLoad ) onLoad( texture, texData ); - - }, onProgress, onError ); - - - return texture; - - }, - - setPath: function ( value ) { - - this.path = value; - return this; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - - function ImageLoader( manager ) { - - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; - - } - - Object.assign( ImageLoader.prototype, { - - crossOrigin: 'anonymous', - - load: function ( url, onLoad, onProgress, onError ) { - - if ( url === undefined ) url = ''; - - if ( this.path !== undefined ) url = this.path + url; - - url = this.manager.resolveURL( url ); - - var scope = this; - - var cached = Cache.get( url ); - - if ( cached !== undefined ) { - - scope.manager.itemStart( url ); - - setTimeout( function () { - - if ( onLoad ) onLoad( cached ); - - scope.manager.itemEnd( url ); - - }, 0 ); - - return cached; - - } - - var image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' ); - - function onImageLoad() { - - image.removeEventListener( 'load', onImageLoad, false ); - image.removeEventListener( 'error', onImageError, false ); - - Cache.add( url, this ); - - if ( onLoad ) onLoad( this ); - - scope.manager.itemEnd( url ); - - } - - function onImageError( event ) { - - image.removeEventListener( 'load', onImageLoad, false ); - image.removeEventListener( 'error', onImageError, false ); - - if ( onError ) onError( event ); - - scope.manager.itemError( url ); - scope.manager.itemEnd( url ); - - } - - image.addEventListener( 'load', onImageLoad, false ); - image.addEventListener( 'error', onImageError, false ); - - if ( url.substr( 0, 5 ) !== 'data:' ) { - - if ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin; - - } - - scope.manager.itemStart( url ); - - image.src = url; - - return image; - - }, - - setCrossOrigin: function ( value ) { - - this.crossOrigin = value; - return this; - - }, - - setPath: function ( value ) { - - this.path = value; - return this; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - - function CubeTextureLoader( manager ) { - - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; - - } - - Object.assign( CubeTextureLoader.prototype, { - - crossOrigin: 'anonymous', - - load: function ( urls, onLoad, onProgress, onError ) { - - var texture = new CubeTexture(); - - var loader = new ImageLoader( this.manager ); - loader.setCrossOrigin( this.crossOrigin ); - loader.setPath( this.path ); - - var loaded = 0; - - function loadTexture( i ) { - - loader.load( urls[ i ], function ( image ) { - - texture.images[ i ] = image; - - loaded ++; - - if ( loaded === 6 ) { - - texture.needsUpdate = true; - - if ( onLoad ) onLoad( texture ); - - } - - }, undefined, onError ); - - } - - for ( var i = 0; i < urls.length; ++ i ) { - - loadTexture( i ); - - } - - return texture; - - }, - - setCrossOrigin: function ( value ) { - - this.crossOrigin = value; - return this; - - }, - - setPath: function ( value ) { - - this.path = value; - return this; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - - function TextureLoader( manager ) { - - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; - - } - - Object.assign( TextureLoader.prototype, { - - crossOrigin: 'anonymous', - - load: function ( url, onLoad, onProgress, onError ) { - - var texture = new Texture(); - - var loader = new ImageLoader( this.manager ); - loader.setCrossOrigin( this.crossOrigin ); - loader.setPath( this.path ); - - loader.load( url, function ( image ) { - - texture.image = image; - - // JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB. - var isJPEG = url.search( /\.jpe?g($|\?)/i ) > 0 || url.search( /^data\:image\/jpeg/ ) === 0; - - texture.format = isJPEG ? RGBFormat : RGBAFormat; - texture.needsUpdate = true; - - if ( onLoad !== undefined ) { - - onLoad( texture ); - - } - - }, onProgress, onError ); - - return texture; - - }, - - setCrossOrigin: function ( value ) { - - this.crossOrigin = value; - return this; - - }, - - setPath: function ( value ) { - - this.path = value; - return this; - - } - - } ); - - /** - * @author zz85 / http://www.lab4games.net/zz85/blog - * Extensible curve object - * - * Some common of curve methods: - * .getPoint( t, optionalTarget ), .getTangent( t ) - * .getPointAt( u, optionalTarget ), .getTangentAt( u ) - * .getPoints(), .getSpacedPoints() - * .getLength() - * .updateArcLengths() - * - * This following curves inherit from THREE.Curve: - * - * -- 2D curves -- - * THREE.ArcCurve - * THREE.CubicBezierCurve - * THREE.EllipseCurve - * THREE.LineCurve - * THREE.QuadraticBezierCurve - * THREE.SplineCurve - * - * -- 3D curves -- - * THREE.CatmullRomCurve3 - * THREE.CubicBezierCurve3 - * THREE.LineCurve3 - * THREE.QuadraticBezierCurve3 - * - * A series of curves can be represented as a THREE.CurvePath. - * - **/ - - /************************************************************** - * Abstract Curve base class - **************************************************************/ - - function Curve() { - - this.type = 'Curve'; - - this.arcLengthDivisions = 200; - - } - - Object.assign( Curve.prototype, { - - // Virtual base class method to overwrite and implement in subclasses - // - t [0 .. 1] - - getPoint: function ( /* t, optionalTarget */ ) { - - console.warn( 'THREE.Curve: .getPoint() not implemented.' ); - return null; - - }, - - // Get point at relative position in curve according to arc length - // - u [0 .. 1] - - getPointAt: function ( u, optionalTarget ) { - - var t = this.getUtoTmapping( u ); - return this.getPoint( t, optionalTarget ); - - }, - - // Get sequence of points using getPoint( t ) - - getPoints: function ( divisions ) { - - if ( divisions === undefined ) divisions = 5; - - var points = []; - - for ( var d = 0; d <= divisions; d ++ ) { - - points.push( this.getPoint( d / divisions ) ); - - } - - return points; - - }, - - // Get sequence of points using getPointAt( u ) - - getSpacedPoints: function ( divisions ) { - - if ( divisions === undefined ) divisions = 5; - - var points = []; - - for ( var d = 0; d <= divisions; d ++ ) { - - points.push( this.getPointAt( d / divisions ) ); - - } - - return points; - - }, - - // Get total curve arc length - - getLength: function () { - - var lengths = this.getLengths(); - return lengths[ lengths.length - 1 ]; - - }, - - // Get list of cumulative segment lengths - - getLengths: function ( divisions ) { - - if ( divisions === undefined ) divisions = this.arcLengthDivisions; - - if ( this.cacheArcLengths && - ( this.cacheArcLengths.length === divisions + 1 ) && - ! this.needsUpdate ) { - - return this.cacheArcLengths; - - } - - this.needsUpdate = false; - - var cache = []; - var current, last = this.getPoint( 0 ); - var p, sum = 0; - - cache.push( 0 ); - - for ( p = 1; p <= divisions; p ++ ) { - - current = this.getPoint( p / divisions ); - sum += current.distanceTo( last ); - cache.push( sum ); - last = current; - - } - - this.cacheArcLengths = cache; - - return cache; // { sums: cache, sum: sum }; Sum is in the last element. - - }, - - updateArcLengths: function () { - - this.needsUpdate = true; - this.getLengths(); - - }, - - // Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant - - getUtoTmapping: function ( u, distance ) { - - var arcLengths = this.getLengths(); - - var i = 0, il = arcLengths.length; - - var targetArcLength; // The targeted u distance value to get - - if ( distance ) { - - targetArcLength = distance; - - } else { - - targetArcLength = u * arcLengths[ il - 1 ]; - - } - - // binary search for the index with largest value smaller than target u distance - - var low = 0, high = il - 1, comparison; - - while ( low <= high ) { - - i = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats - - comparison = arcLengths[ i ] - targetArcLength; - - if ( comparison < 0 ) { - - low = i + 1; - - } else if ( comparison > 0 ) { - - high = i - 1; - - } else { - - high = i; - break; - - // DONE - - } - - } - - i = high; - - if ( arcLengths[ i ] === targetArcLength ) { - - return i / ( il - 1 ); - - } - - // we could get finer grain at lengths, or use simple interpolation between two points - - var lengthBefore = arcLengths[ i ]; - var lengthAfter = arcLengths[ i + 1 ]; - - var segmentLength = lengthAfter - lengthBefore; - - // determine where we are between the 'before' and 'after' points - - var segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength; - - // add that fractional amount to t - - var t = ( i + segmentFraction ) / ( il - 1 ); - - return t; - - }, - - // Returns a unit vector tangent at t - // In case any sub curve does not implement its tangent derivation, - // 2 points a small delta apart will be used to find its gradient - // which seems to give a reasonable approximation - - getTangent: function ( t ) { - - var delta = 0.0001; - var t1 = t - delta; - var t2 = t + delta; - - // Capping in case of danger - - if ( t1 < 0 ) t1 = 0; - if ( t2 > 1 ) t2 = 1; - - var pt1 = this.getPoint( t1 ); - var pt2 = this.getPoint( t2 ); - - var vec = pt2.clone().sub( pt1 ); - return vec.normalize(); - - }, - - getTangentAt: function ( u ) { - - var t = this.getUtoTmapping( u ); - return this.getTangent( t ); - - }, - - computeFrenetFrames: function ( segments, closed ) { - - // see http://www.cs.indiana.edu/pub/techreports/TR425.pdf - - var normal = new Vector3(); - - var tangents = []; - var normals = []; - var binormals = []; - - var vec = new Vector3(); - var mat = new Matrix4(); - - var i, u, theta; - - // compute the tangent vectors for each segment on the curve - - for ( i = 0; i <= segments; i ++ ) { - - u = i / segments; - - tangents[ i ] = this.getTangentAt( u ); - tangents[ i ].normalize(); - - } - - // select an initial normal vector perpendicular to the first tangent vector, - // and in the direction of the minimum tangent xyz component - - normals[ 0 ] = new Vector3(); - binormals[ 0 ] = new Vector3(); - var min = Number.MAX_VALUE; - var tx = Math.abs( tangents[ 0 ].x ); - var ty = Math.abs( tangents[ 0 ].y ); - var tz = Math.abs( tangents[ 0 ].z ); - - if ( tx <= min ) { - - min = tx; - normal.set( 1, 0, 0 ); - - } - - if ( ty <= min ) { - - min = ty; - normal.set( 0, 1, 0 ); - - } - - if ( tz <= min ) { - - normal.set( 0, 0, 1 ); - - } - - vec.crossVectors( tangents[ 0 ], normal ).normalize(); - - normals[ 0 ].crossVectors( tangents[ 0 ], vec ); - binormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] ); - - - // compute the slowly-varying normal and binormal vectors for each segment on the curve - - for ( i = 1; i <= segments; i ++ ) { - - normals[ i ] = normals[ i - 1 ].clone(); - - binormals[ i ] = binormals[ i - 1 ].clone(); - - vec.crossVectors( tangents[ i - 1 ], tangents[ i ] ); - - if ( vec.length() > Number.EPSILON ) { - - vec.normalize(); - - theta = Math.acos( _Math.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors - - normals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) ); - - } - - binormals[ i ].crossVectors( tangents[ i ], normals[ i ] ); - - } - - // if the curve is closed, postprocess the vectors so the first and last normal vectors are the same - - if ( closed === true ) { - - theta = Math.acos( _Math.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) ); - theta /= segments; - - if ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) { - - theta = - theta; - - } - - for ( i = 1; i <= segments; i ++ ) { - - // twist a little... - normals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) ); - binormals[ i ].crossVectors( tangents[ i ], normals[ i ] ); - - } - - } - - return { - tangents: tangents, - normals: normals, - binormals: binormals - }; - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( source ) { - - this.arcLengthDivisions = source.arcLengthDivisions; - - return this; - - }, - - toJSON: function () { - - var data = { - metadata: { - version: 4.5, - type: 'Curve', - generator: 'Curve.toJSON' - } - }; - - data.arcLengthDivisions = this.arcLengthDivisions; - data.type = this.type; - - return data; - - }, - - fromJSON: function ( json ) { - - this.arcLengthDivisions = json.arcLengthDivisions; - - return this; - - } - - } ); - - function EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) { - - Curve.call( this ); - - this.type = 'EllipseCurve'; - - this.aX = aX || 0; - this.aY = aY || 0; - - this.xRadius = xRadius || 1; - this.yRadius = yRadius || 1; - - this.aStartAngle = aStartAngle || 0; - this.aEndAngle = aEndAngle || 2 * Math.PI; - - this.aClockwise = aClockwise || false; - - this.aRotation = aRotation || 0; - - } - - EllipseCurve.prototype = Object.create( Curve.prototype ); - EllipseCurve.prototype.constructor = EllipseCurve; - - EllipseCurve.prototype.isEllipseCurve = true; - - EllipseCurve.prototype.getPoint = function ( t, optionalTarget ) { - - var point = optionalTarget || new Vector2(); - - var twoPi = Math.PI * 2; - var deltaAngle = this.aEndAngle - this.aStartAngle; - var samePoints = Math.abs( deltaAngle ) < Number.EPSILON; - - // ensures that deltaAngle is 0 .. 2 PI - while ( deltaAngle < 0 ) deltaAngle += twoPi; - while ( deltaAngle > twoPi ) deltaAngle -= twoPi; - - if ( deltaAngle < Number.EPSILON ) { - - if ( samePoints ) { - - deltaAngle = 0; - - } else { - - deltaAngle = twoPi; - - } - - } - - if ( this.aClockwise === true && ! samePoints ) { - - if ( deltaAngle === twoPi ) { - - deltaAngle = - twoPi; - - } else { - - deltaAngle = deltaAngle - twoPi; - - } - - } - - var angle = this.aStartAngle + t * deltaAngle; - var x = this.aX + this.xRadius * Math.cos( angle ); - var y = this.aY + this.yRadius * Math.sin( angle ); - - if ( this.aRotation !== 0 ) { - - var cos = Math.cos( this.aRotation ); - var sin = Math.sin( this.aRotation ); - - var tx = x - this.aX; - var ty = y - this.aY; - - // Rotate the point about the center of the ellipse. - x = tx * cos - ty * sin + this.aX; - y = tx * sin + ty * cos + this.aY; - - } - - return point.set( x, y ); - - }; - - EllipseCurve.prototype.copy = function ( source ) { - - Curve.prototype.copy.call( this, source ); - - this.aX = source.aX; - this.aY = source.aY; - - this.xRadius = source.xRadius; - this.yRadius = source.yRadius; - - this.aStartAngle = source.aStartAngle; - this.aEndAngle = source.aEndAngle; - - this.aClockwise = source.aClockwise; - - this.aRotation = source.aRotation; - - return this; - - }; - - - EllipseCurve.prototype.toJSON = function () { - - var data = Curve.prototype.toJSON.call( this ); - - data.aX = this.aX; - data.aY = this.aY; - - data.xRadius = this.xRadius; - data.yRadius = this.yRadius; - - data.aStartAngle = this.aStartAngle; - data.aEndAngle = this.aEndAngle; - - data.aClockwise = this.aClockwise; - - data.aRotation = this.aRotation; - - return data; - - }; - - EllipseCurve.prototype.fromJSON = function ( json ) { - - Curve.prototype.fromJSON.call( this, json ); - - this.aX = json.aX; - this.aY = json.aY; - - this.xRadius = json.xRadius; - this.yRadius = json.yRadius; - - this.aStartAngle = json.aStartAngle; - this.aEndAngle = json.aEndAngle; - - this.aClockwise = json.aClockwise; - - this.aRotation = json.aRotation; - - return this; - - }; - - function ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) { - - EllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise ); - - this.type = 'ArcCurve'; - - } - - ArcCurve.prototype = Object.create( EllipseCurve.prototype ); - ArcCurve.prototype.constructor = ArcCurve; - - ArcCurve.prototype.isArcCurve = true; - - /** - * @author zz85 https://github.com/zz85 - * - * Centripetal CatmullRom Curve - which is useful for avoiding - * cusps and self-intersections in non-uniform catmull rom curves. - * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf - * - * curve.type accepts centripetal(default), chordal and catmullrom - * curve.tension is used for catmullrom which defaults to 0.5 - */ - - - /* - Based on an optimized c++ solution in - - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/ - - http://ideone.com/NoEbVM - - This CubicPoly class could be used for reusing some variables and calculations, - but for three.js curve use, it could be possible inlined and flatten into a single function call - which can be placed in CurveUtils. - */ - - function CubicPoly() { - - var c0 = 0, c1 = 0, c2 = 0, c3 = 0; - - /* - * Compute coefficients for a cubic polynomial - * p(s) = c0 + c1*s + c2*s^2 + c3*s^3 - * such that - * p(0) = x0, p(1) = x1 - * and - * p'(0) = t0, p'(1) = t1. - */ - function init( x0, x1, t0, t1 ) { - - c0 = x0; - c1 = t0; - c2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1; - c3 = 2 * x0 - 2 * x1 + t0 + t1; - - } - - return { - - initCatmullRom: function ( x0, x1, x2, x3, tension ) { - - init( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) ); - - }, - - initNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) { - - // compute tangents when parameterized in [t1,t2] - var t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1; - var t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2; - - // rescale tangents for parametrization in [0,1] - t1 *= dt1; - t2 *= dt1; - - init( x1, x2, t1, t2 ); - - }, - - calc: function ( t ) { - - var t2 = t * t; - var t3 = t2 * t; - return c0 + c1 * t + c2 * t2 + c3 * t3; - - } - - }; - - } - - // - - var tmp = new Vector3(); - var px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly(); - - function CatmullRomCurve3( points, closed, curveType, tension ) { - - Curve.call( this ); - - this.type = 'CatmullRomCurve3'; - - this.points = points || []; - this.closed = closed || false; - this.curveType = curveType || 'centripetal'; - this.tension = tension || 0.5; - - } - - CatmullRomCurve3.prototype = Object.create( Curve.prototype ); - CatmullRomCurve3.prototype.constructor = CatmullRomCurve3; - - CatmullRomCurve3.prototype.isCatmullRomCurve3 = true; - - CatmullRomCurve3.prototype.getPoint = function ( t, optionalTarget ) { - - var point = optionalTarget || new Vector3(); - - var points = this.points; - var l = points.length; - - var p = ( l - ( this.closed ? 0 : 1 ) ) * t; - var intPoint = Math.floor( p ); - var weight = p - intPoint; - - if ( this.closed ) { - - intPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l; - - } else if ( weight === 0 && intPoint === l - 1 ) { - - intPoint = l - 2; - weight = 1; - - } - - var p0, p1, p2, p3; // 4 points - - if ( this.closed || intPoint > 0 ) { - - p0 = points[ ( intPoint - 1 ) % l ]; - - } else { - - // extrapolate first point - tmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] ); - p0 = tmp; - - } - - p1 = points[ intPoint % l ]; - p2 = points[ ( intPoint + 1 ) % l ]; - - if ( this.closed || intPoint + 2 < l ) { - - p3 = points[ ( intPoint + 2 ) % l ]; - - } else { - - // extrapolate last point - tmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] ); - p3 = tmp; - - } - - if ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) { - - // init Centripetal / Chordal Catmull-Rom - var pow = this.curveType === 'chordal' ? 0.5 : 0.25; - var dt0 = Math.pow( p0.distanceToSquared( p1 ), pow ); - var dt1 = Math.pow( p1.distanceToSquared( p2 ), pow ); - var dt2 = Math.pow( p2.distanceToSquared( p3 ), pow ); - - // safety check for repeated points - if ( dt1 < 1e-4 ) dt1 = 1.0; - if ( dt0 < 1e-4 ) dt0 = dt1; - if ( dt2 < 1e-4 ) dt2 = dt1; - - px.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 ); - py.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 ); - pz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 ); - - } else if ( this.curveType === 'catmullrom' ) { - - px.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension ); - py.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension ); - pz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension ); - - } - - point.set( - px.calc( weight ), - py.calc( weight ), - pz.calc( weight ) - ); - - return point; - - }; - - CatmullRomCurve3.prototype.copy = function ( source ) { - - Curve.prototype.copy.call( this, source ); - - this.points = []; - - for ( var i = 0, l = source.points.length; i < l; i ++ ) { - - var point = source.points[ i ]; - - this.points.push( point.clone() ); - - } - - this.closed = source.closed; - this.curveType = source.curveType; - this.tension = source.tension; - - return this; - - }; - - CatmullRomCurve3.prototype.toJSON = function () { - - var data = Curve.prototype.toJSON.call( this ); - - data.points = []; - - for ( var i = 0, l = this.points.length; i < l; i ++ ) { - - var point = this.points[ i ]; - data.points.push( point.toArray() ); - - } - - data.closed = this.closed; - data.curveType = this.curveType; - data.tension = this.tension; - - return data; - - }; - - CatmullRomCurve3.prototype.fromJSON = function ( json ) { - - Curve.prototype.fromJSON.call( this, json ); - - this.points = []; - - for ( var i = 0, l = json.points.length; i < l; i ++ ) { - - var point = json.points[ i ]; - this.points.push( new Vector3().fromArray( point ) ); - - } - - this.closed = json.closed; - this.curveType = json.curveType; - this.tension = json.tension; - - return this; - - }; - - /** - * @author zz85 / http://www.lab4games.net/zz85/blog - * - * Bezier Curves formulas obtained from - * http://en.wikipedia.org/wiki/Bézier_curve - */ - - function CatmullRom( t, p0, p1, p2, p3 ) { - - var v0 = ( p2 - p0 ) * 0.5; - var v1 = ( p3 - p1 ) * 0.5; - var t2 = t * t; - var t3 = t * t2; - return ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1; - - } - - // - - function QuadraticBezierP0( t, p ) { - - var k = 1 - t; - return k * k * p; - - } - - function QuadraticBezierP1( t, p ) { - - return 2 * ( 1 - t ) * t * p; - - } - - function QuadraticBezierP2( t, p ) { - - return t * t * p; - - } - - function QuadraticBezier( t, p0, p1, p2 ) { - - return QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) + - QuadraticBezierP2( t, p2 ); - - } - - // - - function CubicBezierP0( t, p ) { - - var k = 1 - t; - return k * k * k * p; - - } - - function CubicBezierP1( t, p ) { - - var k = 1 - t; - return 3 * k * k * t * p; - - } - - function CubicBezierP2( t, p ) { - - return 3 * ( 1 - t ) * t * t * p; - - } - - function CubicBezierP3( t, p ) { - - return t * t * t * p; - - } - - function CubicBezier( t, p0, p1, p2, p3 ) { - - return CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) + - CubicBezierP3( t, p3 ); - - } - - function CubicBezierCurve( v0, v1, v2, v3 ) { - - Curve.call( this ); - - this.type = 'CubicBezierCurve'; - - this.v0 = v0 || new Vector2(); - this.v1 = v1 || new Vector2(); - this.v2 = v2 || new Vector2(); - this.v3 = v3 || new Vector2(); - - } - - CubicBezierCurve.prototype = Object.create( Curve.prototype ); - CubicBezierCurve.prototype.constructor = CubicBezierCurve; - - CubicBezierCurve.prototype.isCubicBezierCurve = true; - - CubicBezierCurve.prototype.getPoint = function ( t, optionalTarget ) { - - var point = optionalTarget || new Vector2(); - - var v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3; - - point.set( - CubicBezier( t, v0.x, v1.x, v2.x, v3.x ), - CubicBezier( t, v0.y, v1.y, v2.y, v3.y ) - ); - - return point; - - }; - - CubicBezierCurve.prototype.copy = function ( source ) { - - Curve.prototype.copy.call( this, source ); - - this.v0.copy( source.v0 ); - this.v1.copy( source.v1 ); - this.v2.copy( source.v2 ); - this.v3.copy( source.v3 ); - - return this; - - }; - - CubicBezierCurve.prototype.toJSON = function () { - - var data = Curve.prototype.toJSON.call( this ); - - data.v0 = this.v0.toArray(); - data.v1 = this.v1.toArray(); - data.v2 = this.v2.toArray(); - data.v3 = this.v3.toArray(); - - return data; - - }; - - CubicBezierCurve.prototype.fromJSON = function ( json ) { - - Curve.prototype.fromJSON.call( this, json ); - - this.v0.fromArray( json.v0 ); - this.v1.fromArray( json.v1 ); - this.v2.fromArray( json.v2 ); - this.v3.fromArray( json.v3 ); - - return this; - - }; - - function CubicBezierCurve3( v0, v1, v2, v3 ) { - - Curve.call( this ); - - this.type = 'CubicBezierCurve3'; - - this.v0 = v0 || new Vector3(); - this.v1 = v1 || new Vector3(); - this.v2 = v2 || new Vector3(); - this.v3 = v3 || new Vector3(); - - } - - CubicBezierCurve3.prototype = Object.create( Curve.prototype ); - CubicBezierCurve3.prototype.constructor = CubicBezierCurve3; - - CubicBezierCurve3.prototype.isCubicBezierCurve3 = true; - - CubicBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) { - - var point = optionalTarget || new Vector3(); - - var v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3; - - point.set( - CubicBezier( t, v0.x, v1.x, v2.x, v3.x ), - CubicBezier( t, v0.y, v1.y, v2.y, v3.y ), - CubicBezier( t, v0.z, v1.z, v2.z, v3.z ) - ); - - return point; - - }; - - CubicBezierCurve3.prototype.copy = function ( source ) { - - Curve.prototype.copy.call( this, source ); - - this.v0.copy( source.v0 ); - this.v1.copy( source.v1 ); - this.v2.copy( source.v2 ); - this.v3.copy( source.v3 ); - - return this; - - }; - - CubicBezierCurve3.prototype.toJSON = function () { - - var data = Curve.prototype.toJSON.call( this ); - - data.v0 = this.v0.toArray(); - data.v1 = this.v1.toArray(); - data.v2 = this.v2.toArray(); - data.v3 = this.v3.toArray(); - - return data; - - }; - - CubicBezierCurve3.prototype.fromJSON = function ( json ) { - - Curve.prototype.fromJSON.call( this, json ); - - this.v0.fromArray( json.v0 ); - this.v1.fromArray( json.v1 ); - this.v2.fromArray( json.v2 ); - this.v3.fromArray( json.v3 ); - - return this; - - }; - - function LineCurve( v1, v2 ) { - - Curve.call( this ); - - this.type = 'LineCurve'; - - this.v1 = v1 || new Vector2(); - this.v2 = v2 || new Vector2(); - - } - - LineCurve.prototype = Object.create( Curve.prototype ); - LineCurve.prototype.constructor = LineCurve; - - LineCurve.prototype.isLineCurve = true; - - LineCurve.prototype.getPoint = function ( t, optionalTarget ) { - - var point = optionalTarget || new Vector2(); - - if ( t === 1 ) { - - point.copy( this.v2 ); - - } else { - - point.copy( this.v2 ).sub( this.v1 ); - point.multiplyScalar( t ).add( this.v1 ); - - } - - return point; - - }; - - // Line curve is linear, so we can overwrite default getPointAt - - LineCurve.prototype.getPointAt = function ( u, optionalTarget ) { - - return this.getPoint( u, optionalTarget ); - - }; - - LineCurve.prototype.getTangent = function ( /* t */ ) { - - var tangent = this.v2.clone().sub( this.v1 ); - - return tangent.normalize(); - - }; - - LineCurve.prototype.copy = function ( source ) { - - Curve.prototype.copy.call( this, source ); - - this.v1.copy( source.v1 ); - this.v2.copy( source.v2 ); - - return this; - - }; - - LineCurve.prototype.toJSON = function () { - - var data = Curve.prototype.toJSON.call( this ); - - data.v1 = this.v1.toArray(); - data.v2 = this.v2.toArray(); - - return data; - - }; - - LineCurve.prototype.fromJSON = function ( json ) { - - Curve.prototype.fromJSON.call( this, json ); - - this.v1.fromArray( json.v1 ); - this.v2.fromArray( json.v2 ); - - return this; - - }; - - function LineCurve3( v1, v2 ) { - - Curve.call( this ); - - this.type = 'LineCurve3'; - - this.v1 = v1 || new Vector3(); - this.v2 = v2 || new Vector3(); - - } - - LineCurve3.prototype = Object.create( Curve.prototype ); - LineCurve3.prototype.constructor = LineCurve3; - - LineCurve3.prototype.isLineCurve3 = true; - - LineCurve3.prototype.getPoint = function ( t, optionalTarget ) { - - var point = optionalTarget || new Vector3(); - - if ( t === 1 ) { - - point.copy( this.v2 ); - - } else { - - point.copy( this.v2 ).sub( this.v1 ); - point.multiplyScalar( t ).add( this.v1 ); - - } - - return point; - - }; - - // Line curve is linear, so we can overwrite default getPointAt - - LineCurve3.prototype.getPointAt = function ( u, optionalTarget ) { - - return this.getPoint( u, optionalTarget ); - - }; - - LineCurve3.prototype.copy = function ( source ) { - - Curve.prototype.copy.call( this, source ); - - this.v1.copy( source.v1 ); - this.v2.copy( source.v2 ); - - return this; - - }; - - LineCurve3.prototype.toJSON = function () { - - var data = Curve.prototype.toJSON.call( this ); - - data.v1 = this.v1.toArray(); - data.v2 = this.v2.toArray(); - - return data; - - }; - - LineCurve3.prototype.fromJSON = function ( json ) { - - Curve.prototype.fromJSON.call( this, json ); - - this.v1.fromArray( json.v1 ); - this.v2.fromArray( json.v2 ); - - return this; - - }; - - function QuadraticBezierCurve( v0, v1, v2 ) { - - Curve.call( this ); - - this.type = 'QuadraticBezierCurve'; - - this.v0 = v0 || new Vector2(); - this.v1 = v1 || new Vector2(); - this.v2 = v2 || new Vector2(); - - } - - QuadraticBezierCurve.prototype = Object.create( Curve.prototype ); - QuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve; - - QuadraticBezierCurve.prototype.isQuadraticBezierCurve = true; - - QuadraticBezierCurve.prototype.getPoint = function ( t, optionalTarget ) { - - var point = optionalTarget || new Vector2(); - - var v0 = this.v0, v1 = this.v1, v2 = this.v2; - - point.set( - QuadraticBezier( t, v0.x, v1.x, v2.x ), - QuadraticBezier( t, v0.y, v1.y, v2.y ) - ); - - return point; - - }; - - QuadraticBezierCurve.prototype.copy = function ( source ) { - - Curve.prototype.copy.call( this, source ); - - this.v0.copy( source.v0 ); - this.v1.copy( source.v1 ); - this.v2.copy( source.v2 ); - - return this; - - }; - - QuadraticBezierCurve.prototype.toJSON = function () { - - var data = Curve.prototype.toJSON.call( this ); - - data.v0 = this.v0.toArray(); - data.v1 = this.v1.toArray(); - data.v2 = this.v2.toArray(); - - return data; - - }; - - QuadraticBezierCurve.prototype.fromJSON = function ( json ) { - - Curve.prototype.fromJSON.call( this, json ); - - this.v0.fromArray( json.v0 ); - this.v1.fromArray( json.v1 ); - this.v2.fromArray( json.v2 ); - - return this; - - }; - - function QuadraticBezierCurve3( v0, v1, v2 ) { - - Curve.call( this ); - - this.type = 'QuadraticBezierCurve3'; - - this.v0 = v0 || new Vector3(); - this.v1 = v1 || new Vector3(); - this.v2 = v2 || new Vector3(); - - } - - QuadraticBezierCurve3.prototype = Object.create( Curve.prototype ); - QuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3; - - QuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true; - - QuadraticBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) { - - var point = optionalTarget || new Vector3(); - - var v0 = this.v0, v1 = this.v1, v2 = this.v2; - - point.set( - QuadraticBezier( t, v0.x, v1.x, v2.x ), - QuadraticBezier( t, v0.y, v1.y, v2.y ), - QuadraticBezier( t, v0.z, v1.z, v2.z ) - ); - - return point; - - }; - - QuadraticBezierCurve3.prototype.copy = function ( source ) { - - Curve.prototype.copy.call( this, source ); - - this.v0.copy( source.v0 ); - this.v1.copy( source.v1 ); - this.v2.copy( source.v2 ); - - return this; - - }; - - QuadraticBezierCurve3.prototype.toJSON = function () { - - var data = Curve.prototype.toJSON.call( this ); - - data.v0 = this.v0.toArray(); - data.v1 = this.v1.toArray(); - data.v2 = this.v2.toArray(); - - return data; - - }; - - QuadraticBezierCurve3.prototype.fromJSON = function ( json ) { - - Curve.prototype.fromJSON.call( this, json ); - - this.v0.fromArray( json.v0 ); - this.v1.fromArray( json.v1 ); - this.v2.fromArray( json.v2 ); - - return this; - - }; - - function SplineCurve( points /* array of Vector2 */ ) { - - Curve.call( this ); - - this.type = 'SplineCurve'; - - this.points = points || []; - - } - - SplineCurve.prototype = Object.create( Curve.prototype ); - SplineCurve.prototype.constructor = SplineCurve; - - SplineCurve.prototype.isSplineCurve = true; - - SplineCurve.prototype.getPoint = function ( t, optionalTarget ) { - - var point = optionalTarget || new Vector2(); - - var points = this.points; - var p = ( points.length - 1 ) * t; - - var intPoint = Math.floor( p ); - var weight = p - intPoint; - - var p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ]; - var p1 = points[ intPoint ]; - var p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ]; - var p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ]; - - point.set( - CatmullRom( weight, p0.x, p1.x, p2.x, p3.x ), - CatmullRom( weight, p0.y, p1.y, p2.y, p3.y ) - ); - - return point; - - }; - - SplineCurve.prototype.copy = function ( source ) { - - Curve.prototype.copy.call( this, source ); - - this.points = []; - - for ( var i = 0, l = source.points.length; i < l; i ++ ) { - - var point = source.points[ i ]; - - this.points.push( point.clone() ); - - } - - return this; - - }; - - SplineCurve.prototype.toJSON = function () { - - var data = Curve.prototype.toJSON.call( this ); - - data.points = []; - - for ( var i = 0, l = this.points.length; i < l; i ++ ) { - - var point = this.points[ i ]; - data.points.push( point.toArray() ); - - } - - return data; - - }; - - SplineCurve.prototype.fromJSON = function ( json ) { - - Curve.prototype.fromJSON.call( this, json ); - - this.points = []; - - for ( var i = 0, l = json.points.length; i < l; i ++ ) { - - var point = json.points[ i ]; - this.points.push( new Vector2().fromArray( point ) ); - - } - - return this; - - }; - - - - var Curves = /*#__PURE__*/Object.freeze({ - ArcCurve: ArcCurve, - CatmullRomCurve3: CatmullRomCurve3, - CubicBezierCurve: CubicBezierCurve, - CubicBezierCurve3: CubicBezierCurve3, - EllipseCurve: EllipseCurve, - LineCurve: LineCurve, - LineCurve3: LineCurve3, - QuadraticBezierCurve: QuadraticBezierCurve, - QuadraticBezierCurve3: QuadraticBezierCurve3, - SplineCurve: SplineCurve - }); - - /** - * @author zz85 / http://www.lab4games.net/zz85/blog - * - **/ - - /************************************************************** - * Curved Path - a curve path is simply a array of connected - * curves, but retains the api of a curve - **************************************************************/ - - function CurvePath() { - - Curve.call( this ); - - this.type = 'CurvePath'; - - this.curves = []; - this.autoClose = false; // Automatically closes the path - - } - - CurvePath.prototype = Object.assign( Object.create( Curve.prototype ), { - - constructor: CurvePath, - - add: function ( curve ) { - - this.curves.push( curve ); - - }, - - closePath: function () { - - // Add a line curve if start and end of lines are not connected - var startPoint = this.curves[ 0 ].getPoint( 0 ); - var endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 ); - - if ( ! startPoint.equals( endPoint ) ) { - - this.curves.push( new LineCurve( endPoint, startPoint ) ); - - } - - }, - - // To get accurate point with reference to - // entire path distance at time t, - // following has to be done: - - // 1. Length of each sub path have to be known - // 2. Locate and identify type of curve - // 3. Get t for the curve - // 4. Return curve.getPointAt(t') - - getPoint: function ( t ) { - - var d = t * this.getLength(); - var curveLengths = this.getCurveLengths(); - var i = 0; - - // To think about boundaries points. - - while ( i < curveLengths.length ) { - - if ( curveLengths[ i ] >= d ) { - - var diff = curveLengths[ i ] - d; - var curve = this.curves[ i ]; - - var segmentLength = curve.getLength(); - var u = segmentLength === 0 ? 0 : 1 - diff / segmentLength; - - return curve.getPointAt( u ); - - } - - i ++; - - } - - return null; - - // loop where sum != 0, sum > d , sum+1 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) { - - points.push( points[ 0 ] ); - - } - - return points; - - }, - - copy: function ( source ) { - - Curve.prototype.copy.call( this, source ); - - this.curves = []; - - for ( var i = 0, l = source.curves.length; i < l; i ++ ) { - - var curve = source.curves[ i ]; - - this.curves.push( curve.clone() ); - - } - - this.autoClose = source.autoClose; - - return this; - - }, - - toJSON: function () { - - var data = Curve.prototype.toJSON.call( this ); - - data.autoClose = this.autoClose; - data.curves = []; - - for ( var i = 0, l = this.curves.length; i < l; i ++ ) { - - var curve = this.curves[ i ]; - data.curves.push( curve.toJSON() ); - - } - - return data; - - }, - - fromJSON: function ( json ) { - - Curve.prototype.fromJSON.call( this, json ); - - this.autoClose = json.autoClose; - this.curves = []; - - for ( var i = 0, l = json.curves.length; i < l; i ++ ) { - - var curve = json.curves[ i ]; - this.curves.push( new Curves[ curve.type ]().fromJSON( curve ) ); - - } - - return this; - - } - - } ); - - /** - * @author zz85 / http://www.lab4games.net/zz85/blog - * Creates free form 2d path using series of points, lines or curves. - **/ - - function Path( points ) { - - CurvePath.call( this ); - - this.type = 'Path'; - - this.currentPoint = new Vector2(); - - if ( points ) { - - this.setFromPoints( points ); - - } - - } - - Path.prototype = Object.assign( Object.create( CurvePath.prototype ), { - - constructor: Path, - - setFromPoints: function ( points ) { - - this.moveTo( points[ 0 ].x, points[ 0 ].y ); - - for ( var i = 1, l = points.length; i < l; i ++ ) { - - this.lineTo( points[ i ].x, points[ i ].y ); - - } - - }, - - moveTo: function ( x, y ) { - - this.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying? - - }, - - lineTo: function ( x, y ) { - - var curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) ); - this.curves.push( curve ); - - this.currentPoint.set( x, y ); - - }, - - quadraticCurveTo: function ( aCPx, aCPy, aX, aY ) { - - var curve = new QuadraticBezierCurve( - this.currentPoint.clone(), - new Vector2( aCPx, aCPy ), - new Vector2( aX, aY ) - ); - - this.curves.push( curve ); - - this.currentPoint.set( aX, aY ); - - }, - - bezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) { - - var curve = new CubicBezierCurve( - this.currentPoint.clone(), - new Vector2( aCP1x, aCP1y ), - new Vector2( aCP2x, aCP2y ), - new Vector2( aX, aY ) - ); - - this.curves.push( curve ); - - this.currentPoint.set( aX, aY ); - - }, - - splineThru: function ( pts /*Array of Vector*/ ) { - - var npts = [ this.currentPoint.clone() ].concat( pts ); - - var curve = new SplineCurve( npts ); - this.curves.push( curve ); - - this.currentPoint.copy( pts[ pts.length - 1 ] ); - - }, - - arc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) { - - var x0 = this.currentPoint.x; - var y0 = this.currentPoint.y; - - this.absarc( aX + x0, aY + y0, aRadius, - aStartAngle, aEndAngle, aClockwise ); - - }, - - absarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) { - - this.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise ); - - }, - - ellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) { - - var x0 = this.currentPoint.x; - var y0 = this.currentPoint.y; - - this.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ); - - }, - - absellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) { - - var curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ); - - if ( this.curves.length > 0 ) { - - // if a previous curve is present, attempt to join - var firstPoint = curve.getPoint( 0 ); - - if ( ! firstPoint.equals( this.currentPoint ) ) { - - this.lineTo( firstPoint.x, firstPoint.y ); - - } - - } - - this.curves.push( curve ); - - var lastPoint = curve.getPoint( 1 ); - this.currentPoint.copy( lastPoint ); - - }, - - copy: function ( source ) { - - CurvePath.prototype.copy.call( this, source ); - - this.currentPoint.copy( source.currentPoint ); - - return this; - - }, - - toJSON: function () { - - var data = CurvePath.prototype.toJSON.call( this ); - - data.currentPoint = this.currentPoint.toArray(); - - return data; - - }, - - fromJSON: function ( json ) { - - CurvePath.prototype.fromJSON.call( this, json ); - - this.currentPoint.fromArray( json.currentPoint ); - - return this; - - } - - } ); - - /** - * @author zz85 / http://www.lab4games.net/zz85/blog - * Defines a 2d shape plane using paths. - **/ - - // STEP 1 Create a path. - // STEP 2 Turn path into shape. - // STEP 3 ExtrudeGeometry takes in Shape/Shapes - // STEP 3a - Extract points from each shape, turn to vertices - // STEP 3b - Triangulate each shape, add faces. - - function Shape( points ) { - - Path.call( this, points ); - - this.uuid = _Math.generateUUID(); - - this.type = 'Shape'; - - this.holes = []; - - } - - Shape.prototype = Object.assign( Object.create( Path.prototype ), { - - constructor: Shape, - - getPointsHoles: function ( divisions ) { - - var holesPts = []; - - for ( var i = 0, l = this.holes.length; i < l; i ++ ) { - - holesPts[ i ] = this.holes[ i ].getPoints( divisions ); - - } - - return holesPts; - - }, - - // get points of shape and holes (keypoints based on segments parameter) - - extractPoints: function ( divisions ) { - - return { - - shape: this.getPoints( divisions ), - holes: this.getPointsHoles( divisions ) - - }; - - }, - - copy: function ( source ) { - - Path.prototype.copy.call( this, source ); - - this.holes = []; - - for ( var i = 0, l = source.holes.length; i < l; i ++ ) { - - var hole = source.holes[ i ]; - - this.holes.push( hole.clone() ); - - } - - return this; - - }, - - toJSON: function () { - - var data = Path.prototype.toJSON.call( this ); - - data.uuid = this.uuid; - data.holes = []; - - for ( var i = 0, l = this.holes.length; i < l; i ++ ) { - - var hole = this.holes[ i ]; - data.holes.push( hole.toJSON() ); - - } - - return data; - - }, - - fromJSON: function ( json ) { - - Path.prototype.fromJSON.call( this, json ); - - this.uuid = json.uuid; - this.holes = []; - - for ( var i = 0, l = json.holes.length; i < l; i ++ ) { - - var hole = json.holes[ i ]; - this.holes.push( new Path().fromJSON( hole ) ); - - } - - return this; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - */ - - function Light( color, intensity ) { - - Object3D.call( this ); - - this.type = 'Light'; - - this.color = new Color( color ); - this.intensity = intensity !== undefined ? intensity : 1; - - this.receiveShadow = undefined; - - } - - Light.prototype = Object.assign( Object.create( Object3D.prototype ), { - - constructor: Light, - - isLight: true, - - copy: function ( source ) { - - Object3D.prototype.copy.call( this, source ); - - this.color.copy( source.color ); - this.intensity = source.intensity; - - return this; - - }, - - toJSON: function ( meta ) { - - var data = Object3D.prototype.toJSON.call( this, meta ); - - data.object.color = this.color.getHex(); - data.object.intensity = this.intensity; - - if ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex(); - - if ( this.distance !== undefined ) data.object.distance = this.distance; - if ( this.angle !== undefined ) data.object.angle = this.angle; - if ( this.decay !== undefined ) data.object.decay = this.decay; - if ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra; - - if ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON(); - - return data; - - } - - } ); - - /** - * @author alteredq / http://alteredqualia.com/ - */ - - function HemisphereLight( skyColor, groundColor, intensity ) { - - Light.call( this, skyColor, intensity ); - - this.type = 'HemisphereLight'; - - this.castShadow = undefined; - - this.position.copy( Object3D.DefaultUp ); - this.updateMatrix(); - - this.groundColor = new Color( groundColor ); - - } - - HemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), { - - constructor: HemisphereLight, - - isHemisphereLight: true, - - copy: function ( source ) { - - Light.prototype.copy.call( this, source ); - - this.groundColor.copy( source.groundColor ); - - return this; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function LightShadow( camera ) { - - this.camera = camera; - - this.bias = 0; - this.radius = 1; - - this.mapSize = new Vector2( 512, 512 ); - - this.map = null; - this.matrix = new Matrix4(); - - } - - Object.assign( LightShadow.prototype, { - - copy: function ( source ) { - - this.camera = source.camera.clone(); - - this.bias = source.bias; - this.radius = source.radius; - - this.mapSize.copy( source.mapSize ); - - return this; - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - toJSON: function () { - - var object = {}; - - if ( this.bias !== 0 ) object.bias = this.bias; - if ( this.radius !== 1 ) object.radius = this.radius; - if ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray(); - - object.camera = this.camera.toJSON( false ).object; - delete object.camera.matrix; - - return object; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function SpotLightShadow() { - - LightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) ); - - } - - SpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), { - - constructor: SpotLightShadow, - - isSpotLightShadow: true, - - update: function ( light ) { - - var camera = this.camera; - - var fov = _Math.RAD2DEG * 2 * light.angle; - var aspect = this.mapSize.width / this.mapSize.height; - var far = light.distance || camera.far; - - if ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) { - - camera.fov = fov; - camera.aspect = aspect; - camera.far = far; - camera.updateProjectionMatrix(); - - } - - } - - } ); - - /** - * @author alteredq / http://alteredqualia.com/ - */ - - function SpotLight( color, intensity, distance, angle, penumbra, decay ) { - - Light.call( this, color, intensity ); - - this.type = 'SpotLight'; - - this.position.copy( Object3D.DefaultUp ); - this.updateMatrix(); - - this.target = new Object3D(); - - Object.defineProperty( this, 'power', { - get: function () { - - // intensity = power per solid angle. - // ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf - return this.intensity * Math.PI; - - }, - set: function ( power ) { - - // intensity = power per solid angle. - // ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf - this.intensity = power / Math.PI; - - } - } ); - - this.distance = ( distance !== undefined ) ? distance : 0; - this.angle = ( angle !== undefined ) ? angle : Math.PI / 3; - this.penumbra = ( penumbra !== undefined ) ? penumbra : 0; - this.decay = ( decay !== undefined ) ? decay : 1; // for physically correct lights, should be 2. - - this.shadow = new SpotLightShadow(); - - } - - SpotLight.prototype = Object.assign( Object.create( Light.prototype ), { - - constructor: SpotLight, - - isSpotLight: true, - - copy: function ( source ) { - - Light.prototype.copy.call( this, source ); - - this.distance = source.distance; - this.angle = source.angle; - this.penumbra = source.penumbra; - this.decay = source.decay; - - this.target = source.target.clone(); - - this.shadow = source.shadow.clone(); - - return this; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - - function PointLight( color, intensity, distance, decay ) { - - Light.call( this, color, intensity ); - - this.type = 'PointLight'; - - Object.defineProperty( this, 'power', { - get: function () { - - // intensity = power per solid angle. - // ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf - return this.intensity * 4 * Math.PI; - - }, - set: function ( power ) { - - // intensity = power per solid angle. - // ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf - this.intensity = power / ( 4 * Math.PI ); - - } - } ); - - this.distance = ( distance !== undefined ) ? distance : 0; - this.decay = ( decay !== undefined ) ? decay : 1; // for physically correct lights, should be 2. - - this.shadow = new LightShadow( new PerspectiveCamera( 90, 1, 0.5, 500 ) ); - - } - - PointLight.prototype = Object.assign( Object.create( Light.prototype ), { - - constructor: PointLight, - - isPointLight: true, - - copy: function ( source ) { - - Light.prototype.copy.call( this, source ); - - this.distance = source.distance; - this.decay = source.decay; - - this.shadow = source.shadow.clone(); - - return this; - - } - - } ); - - /** - * @author alteredq / http://alteredqualia.com/ - * @author arose / http://github.com/arose - */ - - function OrthographicCamera( left, right, top, bottom, near, far ) { - - Camera.call( this ); - - this.type = 'OrthographicCamera'; - - this.zoom = 1; - this.view = null; - - this.left = ( left !== undefined ) ? left : - 1; - this.right = ( right !== undefined ) ? right : 1; - this.top = ( top !== undefined ) ? top : 1; - this.bottom = ( bottom !== undefined ) ? bottom : - 1; - - this.near = ( near !== undefined ) ? near : 0.1; - this.far = ( far !== undefined ) ? far : 2000; - - this.updateProjectionMatrix(); - - } - - OrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), { - - constructor: OrthographicCamera, - - isOrthographicCamera: true, - - copy: function ( source, recursive ) { - - Camera.prototype.copy.call( this, source, recursive ); - - this.left = source.left; - this.right = source.right; - this.top = source.top; - this.bottom = source.bottom; - this.near = source.near; - this.far = source.far; - - this.zoom = source.zoom; - this.view = source.view === null ? null : Object.assign( {}, source.view ); - - return this; - - }, - - setViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) { - - if ( this.view === null ) { - - this.view = { - enabled: true, - fullWidth: 1, - fullHeight: 1, - offsetX: 0, - offsetY: 0, - width: 1, - height: 1 - }; - - } - - this.view.enabled = true; - this.view.fullWidth = fullWidth; - this.view.fullHeight = fullHeight; - this.view.offsetX = x; - this.view.offsetY = y; - this.view.width = width; - this.view.height = height; - - this.updateProjectionMatrix(); - - }, - - clearViewOffset: function () { - - if ( this.view !== null ) { - - this.view.enabled = false; - - } - - this.updateProjectionMatrix(); - - }, - - updateProjectionMatrix: function () { - - var dx = ( this.right - this.left ) / ( 2 * this.zoom ); - var dy = ( this.top - this.bottom ) / ( 2 * this.zoom ); - var cx = ( this.right + this.left ) / 2; - var cy = ( this.top + this.bottom ) / 2; - - var left = cx - dx; - var right = cx + dx; - var top = cy + dy; - var bottom = cy - dy; - - if ( this.view !== null && this.view.enabled ) { - - var zoomW = this.zoom / ( this.view.width / this.view.fullWidth ); - var zoomH = this.zoom / ( this.view.height / this.view.fullHeight ); - var scaleW = ( this.right - this.left ) / this.view.width; - var scaleH = ( this.top - this.bottom ) / this.view.height; - - left += scaleW * ( this.view.offsetX / zoomW ); - right = left + scaleW * ( this.view.width / zoomW ); - top -= scaleH * ( this.view.offsetY / zoomH ); - bottom = top - scaleH * ( this.view.height / zoomH ); - - } - - this.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far ); - - this.projectionMatrixInverse.getInverse( this.projectionMatrix ); - - }, - - toJSON: function ( meta ) { - - var data = Object3D.prototype.toJSON.call( this, meta ); - - data.object.zoom = this.zoom; - data.object.left = this.left; - data.object.right = this.right; - data.object.top = this.top; - data.object.bottom = this.bottom; - data.object.near = this.near; - data.object.far = this.far; - - if ( this.view !== null ) data.object.view = Object.assign( {}, this.view ); - - return data; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function DirectionalLightShadow( ) { - - LightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) ); - - } - - DirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), { - - constructor: DirectionalLightShadow - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - */ - - function DirectionalLight( color, intensity ) { - - Light.call( this, color, intensity ); - - this.type = 'DirectionalLight'; - - this.position.copy( Object3D.DefaultUp ); - this.updateMatrix(); - - this.target = new Object3D(); - - this.shadow = new DirectionalLightShadow(); - - } - - DirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), { - - constructor: DirectionalLight, - - isDirectionalLight: true, - - copy: function ( source ) { - - Light.prototype.copy.call( this, source ); - - this.target = source.target.clone(); - - this.shadow = source.shadow.clone(); - - return this; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function AmbientLight( color, intensity ) { - - Light.call( this, color, intensity ); - - this.type = 'AmbientLight'; - - this.castShadow = undefined; - - } - - AmbientLight.prototype = Object.assign( Object.create( Light.prototype ), { - - constructor: AmbientLight, - - isAmbientLight: true - - } ); - - /** - * @author abelnation / http://github.com/abelnation - */ - - function RectAreaLight( color, intensity, width, height ) { - - Light.call( this, color, intensity ); - - this.type = 'RectAreaLight'; - - this.width = ( width !== undefined ) ? width : 10; - this.height = ( height !== undefined ) ? height : 10; - - } - - RectAreaLight.prototype = Object.assign( Object.create( Light.prototype ), { - - constructor: RectAreaLight, - - isRectAreaLight: true, - - copy: function ( source ) { - - Light.prototype.copy.call( this, source ); - - this.width = source.width; - this.height = source.height; - - return this; - - }, - - toJSON: function ( meta ) { - - var data = Light.prototype.toJSON.call( this, meta ); - - data.object.width = this.width; - data.object.height = this.height; - - return data; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function MaterialLoader( manager ) { - - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; - this.textures = {}; - - } - - Object.assign( MaterialLoader.prototype, { - - load: function ( url, onLoad, onProgress, onError ) { - - var scope = this; - - var loader = new FileLoader( scope.manager ); - loader.setPath( scope.path ); - loader.load( url, function ( text ) { - - onLoad( scope.parse( JSON.parse( text ) ) ); - - }, onProgress, onError ); - - }, - - parse: function ( json ) { - - var textures = this.textures; - - function getTexture( name ) { - - if ( textures[ name ] === undefined ) { - - console.warn( 'THREE.MaterialLoader: Undefined texture', name ); - - } - - return textures[ name ]; - - } - - var material = new Materials[ json.type ](); - - if ( json.uuid !== undefined ) material.uuid = json.uuid; - if ( json.name !== undefined ) material.name = json.name; - if ( json.color !== undefined ) material.color.setHex( json.color ); - if ( json.roughness !== undefined ) material.roughness = json.roughness; - if ( json.metalness !== undefined ) material.metalness = json.metalness; - if ( json.emissive !== undefined ) material.emissive.setHex( json.emissive ); - if ( json.specular !== undefined ) material.specular.setHex( json.specular ); - if ( json.shininess !== undefined ) material.shininess = json.shininess; - if ( json.clearCoat !== undefined ) material.clearCoat = json.clearCoat; - if ( json.clearCoatRoughness !== undefined ) material.clearCoatRoughness = json.clearCoatRoughness; - if ( json.vertexColors !== undefined ) material.vertexColors = json.vertexColors; - if ( json.fog !== undefined ) material.fog = json.fog; - if ( json.flatShading !== undefined ) material.flatShading = json.flatShading; - if ( json.blending !== undefined ) material.blending = json.blending; - if ( json.combine !== undefined ) material.combine = json.combine; - if ( json.side !== undefined ) material.side = json.side; - if ( json.opacity !== undefined ) material.opacity = json.opacity; - if ( json.transparent !== undefined ) material.transparent = json.transparent; - if ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest; - if ( json.depthTest !== undefined ) material.depthTest = json.depthTest; - if ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite; - if ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite; - if ( json.wireframe !== undefined ) material.wireframe = json.wireframe; - if ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth; - if ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap; - if ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin; - - if ( json.rotation !== undefined ) material.rotation = json.rotation; - - if ( json.linewidth !== 1 ) material.linewidth = json.linewidth; - if ( json.dashSize !== undefined ) material.dashSize = json.dashSize; - if ( json.gapSize !== undefined ) material.gapSize = json.gapSize; - if ( json.scale !== undefined ) material.scale = json.scale; - - if ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset; - if ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor; - if ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits; - - if ( json.skinning !== undefined ) material.skinning = json.skinning; - if ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets; - if ( json.dithering !== undefined ) material.dithering = json.dithering; - - if ( json.visible !== undefined ) material.visible = json.visible; - if ( json.userData !== undefined ) material.userData = json.userData; - - // Shader Material - - if ( json.uniforms !== undefined ) { - - for ( var name in json.uniforms ) { - - var uniform = json.uniforms[ name ]; - - material.uniforms[ name ] = {}; - - switch ( uniform.type ) { - - case 't': - material.uniforms[ name ].value = getTexture( uniform.value ); - break; - - case 'c': - material.uniforms[ name ].value = new Color().setHex( uniform.value ); - break; - - case 'v2': - material.uniforms[ name ].value = new Vector2().fromArray( uniform.value ); - break; - - case 'v3': - material.uniforms[ name ].value = new Vector3().fromArray( uniform.value ); - break; - - case 'v4': - material.uniforms[ name ].value = new Vector4().fromArray( uniform.value ); - break; - - case 'm3': - material.uniforms[ name ].value = new Matrix3().fromArray( uniform.value ); - - case 'm4': - material.uniforms[ name ].value = new Matrix4().fromArray( uniform.value ); - break; - - default: - material.uniforms[ name ].value = uniform.value; - - } - - } - - } - - if ( json.defines !== undefined ) material.defines = json.defines; - if ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader; - if ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader; - - if ( json.extensions !== undefined ) { - - for ( var key in json.extensions ) { - - material.extensions[ key ] = json.extensions[ key ]; - - } - - } - - // Deprecated - - if ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading - - // for PointsMaterial - - if ( json.size !== undefined ) material.size = json.size; - if ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation; - - // maps - - if ( json.map !== undefined ) material.map = getTexture( json.map ); - if ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap ); - - if ( json.alphaMap !== undefined ) { - - material.alphaMap = getTexture( json.alphaMap ); - material.transparent = true; - - } - - if ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap ); - if ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale; - - if ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap ); - if ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType; - if ( json.normalScale !== undefined ) { - - var normalScale = json.normalScale; - - if ( Array.isArray( normalScale ) === false ) { - - // Blender exporter used to export a scalar. See #7459 - - normalScale = [ normalScale, normalScale ]; - - } - - material.normalScale = new Vector2().fromArray( normalScale ); - - } - - if ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap ); - if ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale; - if ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias; - - if ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap ); - if ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap ); - - if ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap ); - if ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity; - - if ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap ); - - if ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap ); - if ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity; - - if ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity; - - if ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap ); - if ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity; - - if ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap ); - if ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity; - - if ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap ); - - return material; - - }, - - setPath: function ( value ) { - - this.path = value; - return this; - - }, - - setTextures: function ( value ) { - - this.textures = value; - return this; - - } - - } ); - - /** - * @author Don McCurdy / https://www.donmccurdy.com - */ - - var LoaderUtils = { - - decodeText: function ( array ) { - - if ( typeof TextDecoder !== 'undefined' ) { - - return new TextDecoder().decode( array ); - - } - - // Avoid the String.fromCharCode.apply(null, array) shortcut, which - // throws a "maximum call stack size exceeded" error for large arrays. - - var s = ''; - - for ( var i = 0, il = array.length; i < il; i ++ ) { - - // Implicitly assumes little-endian. - s += String.fromCharCode( array[ i ] ); - - } - - try { - - // merges multi-byte utf-8 characters. - - return decodeURIComponent( escape( s ) ); - - } catch ( e ) { // see #16358 - - return s; - - } - - }, - - extractUrlBase: function ( url ) { - - var index = url.lastIndexOf( '/' ); - - if ( index === - 1 ) return './'; - - return url.substr( 0, index + 1 ); - - } - - }; - - /** - * @author benaadams / https://twitter.com/ben_a_adams - */ - - function InstancedBufferGeometry() { - - BufferGeometry.call( this ); - - this.type = 'InstancedBufferGeometry'; - this.maxInstancedCount = undefined; - - } - - InstancedBufferGeometry.prototype = Object.assign( Object.create( BufferGeometry.prototype ), { - - constructor: InstancedBufferGeometry, - - isInstancedBufferGeometry: true, - - copy: function ( source ) { - - BufferGeometry.prototype.copy.call( this, source ); - - this.maxInstancedCount = source.maxInstancedCount; - - return this; - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - toJSON: function () { - - var data = BufferGeometry.prototype.toJSON.call( this ); - - data.maxInstancedCount = this.maxInstancedCount; - - data.isInstancedBufferGeometry = true; - - return data; - - } - - } ); - - /** - * @author benaadams / https://twitter.com/ben_a_adams - */ - - function InstancedBufferAttribute( array, itemSize, normalized, meshPerAttribute ) { - - if ( typeof ( normalized ) === 'number' ) { - - meshPerAttribute = normalized; - - normalized = false; - - console.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' ); - - } - - BufferAttribute.call( this, array, itemSize, normalized ); - - this.meshPerAttribute = meshPerAttribute || 1; - - } - - InstancedBufferAttribute.prototype = Object.assign( Object.create( BufferAttribute.prototype ), { - - constructor: InstancedBufferAttribute, - - isInstancedBufferAttribute: true, - - copy: function ( source ) { - - BufferAttribute.prototype.copy.call( this, source ); - - this.meshPerAttribute = source.meshPerAttribute; - - return this; - - }, - - toJSON: function () { - - var data = BufferAttribute.prototype.toJSON.call( this ); - - data.meshPerAttribute = this.meshPerAttribute; - - data.isInstancedBufferAttribute = true; - - return data; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function BufferGeometryLoader( manager ) { - - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; - - } - - Object.assign( BufferGeometryLoader.prototype, { - - load: function ( url, onLoad, onProgress, onError ) { - - var scope = this; - - var loader = new FileLoader( scope.manager ); - loader.setPath( scope.path ); - loader.load( url, function ( text ) { - - onLoad( scope.parse( JSON.parse( text ) ) ); - - }, onProgress, onError ); - - }, - - parse: function ( json ) { - - var geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry(); - - var index = json.data.index; - - if ( index !== undefined ) { - - var typedArray = new TYPED_ARRAYS[ index.type ]( index.array ); - geometry.setIndex( new BufferAttribute( typedArray, 1 ) ); - - } - - var attributes = json.data.attributes; - - for ( var key in attributes ) { - - var attribute = attributes[ key ]; - var typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array ); - var bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute; - var bufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized ); - if ( attribute.name !== undefined ) bufferAttribute.name = attribute.name; - geometry.addAttribute( key, bufferAttribute ); - - } - - var morphAttributes = json.data.morphAttributes; - - if ( morphAttributes ) { - - for ( var key in morphAttributes ) { - - var attributeArray = morphAttributes[ key ]; - - var array = []; - - for ( var i = 0, il = attributeArray.length; i < il; i ++ ) { - - var attribute = attributeArray[ i ]; - var typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array ); - - var bufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized ); - if ( attribute.name !== undefined ) bufferAttribute.name = attribute.name; - array.push( bufferAttribute ); - - } - - geometry.morphAttributes[ key ] = array; - - } - - } - - var groups = json.data.groups || json.data.drawcalls || json.data.offsets; - - if ( groups !== undefined ) { - - for ( var i = 0, n = groups.length; i !== n; ++ i ) { - - var group = groups[ i ]; - - geometry.addGroup( group.start, group.count, group.materialIndex ); - - } - - } - - var boundingSphere = json.data.boundingSphere; - - if ( boundingSphere !== undefined ) { - - var center = new Vector3(); - - if ( boundingSphere.center !== undefined ) { - - center.fromArray( boundingSphere.center ); - - } - - geometry.boundingSphere = new Sphere( center, boundingSphere.radius ); - - } - - if ( json.name ) geometry.name = json.name; - if ( json.userData ) geometry.userData = json.userData; - - return geometry; - - }, - - setPath: function ( value ) { - - this.path = value; - return this; - - } - - } ); - - var TYPED_ARRAYS = { - Int8Array: Int8Array, - Uint8Array: Uint8Array, - // Workaround for IE11 pre KB2929437. See #11440 - Uint8ClampedArray: typeof Uint8ClampedArray !== 'undefined' ? Uint8ClampedArray : Uint8Array, - Int16Array: Int16Array, - Uint16Array: Uint16Array, - Int32Array: Int32Array, - Uint32Array: Uint32Array, - Float32Array: Float32Array, - Float64Array: Float64Array - }; - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function ObjectLoader( manager ) { - - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; - this.resourcePath = ''; - - } - - Object.assign( ObjectLoader.prototype, { - - crossOrigin: 'anonymous', - - load: function ( url, onLoad, onProgress, onError ) { - - var scope = this; - - var path = ( this.path === undefined ) ? LoaderUtils.extractUrlBase( url ) : this.path; - this.resourcePath = this.resourcePath || path; - - var loader = new FileLoader( scope.manager ); - loader.setPath( this.path ); - loader.load( url, function ( text ) { - - var json = null; - - try { - - json = JSON.parse( text ); - - } catch ( error ) { - - if ( onError !== undefined ) onError( error ); - - console.error( 'THREE:ObjectLoader: Can\'t parse ' + url + '.', error.message ); - - return; - - } - - var metadata = json.metadata; - - if ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) { - - console.error( 'THREE.ObjectLoader: Can\'t load ' + url ); - return; - - } - - scope.parse( json, onLoad ); - - }, onProgress, onError ); - - }, - - setPath: function ( value ) { - - this.path = value; - return this; - - }, - - setResourcePath: function ( value ) { - - this.resourcePath = value; - return this; - - }, - - setCrossOrigin: function ( value ) { - - this.crossOrigin = value; - return this; - - }, - - parse: function ( json, onLoad ) { - - var shapes = this.parseShape( json.shapes ); - var geometries = this.parseGeometries( json.geometries, shapes ); - - var images = this.parseImages( json.images, function () { - - if ( onLoad !== undefined ) onLoad( object ); - - } ); - - var textures = this.parseTextures( json.textures, images ); - var materials = this.parseMaterials( json.materials, textures ); - - var object = this.parseObject( json.object, geometries, materials ); - - if ( json.animations ) { - - object.animations = this.parseAnimations( json.animations ); - - } - - if ( json.images === undefined || json.images.length === 0 ) { - - if ( onLoad !== undefined ) onLoad( object ); - - } - - return object; - - }, - - parseShape: function ( json ) { - - var shapes = {}; - - if ( json !== undefined ) { - - for ( var i = 0, l = json.length; i < l; i ++ ) { - - var shape = new Shape().fromJSON( json[ i ] ); - - shapes[ shape.uuid ] = shape; - - } - - } - - return shapes; - - }, - - parseGeometries: function ( json, shapes ) { - - var geometries = {}; - - if ( json !== undefined ) { - - var bufferGeometryLoader = new BufferGeometryLoader(); - - for ( var i = 0, l = json.length; i < l; i ++ ) { - - var geometry; - var data = json[ i ]; - - switch ( data.type ) { - - case 'PlaneGeometry': - case 'PlaneBufferGeometry': - - geometry = new Geometries[ data.type ]( - data.width, - data.height, - data.widthSegments, - data.heightSegments - ); - - break; - - case 'BoxGeometry': - case 'BoxBufferGeometry': - case 'CubeGeometry': // backwards compatible - - geometry = new Geometries[ data.type ]( - data.width, - data.height, - data.depth, - data.widthSegments, - data.heightSegments, - data.depthSegments - ); - - break; - - case 'CircleGeometry': - case 'CircleBufferGeometry': - - geometry = new Geometries[ data.type ]( - data.radius, - data.segments, - data.thetaStart, - data.thetaLength - ); - - break; - - case 'CylinderGeometry': - case 'CylinderBufferGeometry': - - geometry = new Geometries[ data.type ]( - data.radiusTop, - data.radiusBottom, - data.height, - data.radialSegments, - data.heightSegments, - data.openEnded, - data.thetaStart, - data.thetaLength - ); - - break; - - case 'ConeGeometry': - case 'ConeBufferGeometry': - - geometry = new Geometries[ data.type ]( - data.radius, - data.height, - data.radialSegments, - data.heightSegments, - data.openEnded, - data.thetaStart, - data.thetaLength - ); - - break; - - case 'SphereGeometry': - case 'SphereBufferGeometry': - - geometry = new Geometries[ data.type ]( - data.radius, - data.widthSegments, - data.heightSegments, - data.phiStart, - data.phiLength, - data.thetaStart, - data.thetaLength - ); - - break; - - case 'DodecahedronGeometry': - case 'DodecahedronBufferGeometry': - case 'IcosahedronGeometry': - case 'IcosahedronBufferGeometry': - case 'OctahedronGeometry': - case 'OctahedronBufferGeometry': - case 'TetrahedronGeometry': - case 'TetrahedronBufferGeometry': - - geometry = new Geometries[ data.type ]( - data.radius, - data.detail - ); - - break; - - case 'RingGeometry': - case 'RingBufferGeometry': - - geometry = new Geometries[ data.type ]( - data.innerRadius, - data.outerRadius, - data.thetaSegments, - data.phiSegments, - data.thetaStart, - data.thetaLength - ); - - break; - - case 'TorusGeometry': - case 'TorusBufferGeometry': - - geometry = new Geometries[ data.type ]( - data.radius, - data.tube, - data.radialSegments, - data.tubularSegments, - data.arc - ); - - break; - - case 'TorusKnotGeometry': - case 'TorusKnotBufferGeometry': - - geometry = new Geometries[ data.type ]( - data.radius, - data.tube, - data.tubularSegments, - data.radialSegments, - data.p, - data.q - ); - - break; - - case 'TubeGeometry': - case 'TubeBufferGeometry': - - // This only works for built-in curves (e.g. CatmullRomCurve3). - // User defined curves or instances of CurvePath will not be deserialized. - geometry = new Geometries[ data.type ]( - new Curves[ data.path.type ]().fromJSON( data.path ), - data.tubularSegments, - data.radius, - data.radialSegments, - data.closed - ); - - break; - - case 'LatheGeometry': - case 'LatheBufferGeometry': - - geometry = new Geometries[ data.type ]( - data.points, - data.segments, - data.phiStart, - data.phiLength - ); - - break; - - case 'PolyhedronGeometry': - case 'PolyhedronBufferGeometry': - - geometry = new Geometries[ data.type ]( - data.vertices, - data.indices, - data.radius, - data.details - ); - - break; - - case 'ShapeGeometry': - case 'ShapeBufferGeometry': - - var geometryShapes = []; - - for ( var j = 0, jl = data.shapes.length; j < jl; j ++ ) { - - var shape = shapes[ data.shapes[ j ] ]; - - geometryShapes.push( shape ); - - } - - geometry = new Geometries[ data.type ]( - geometryShapes, - data.curveSegments - ); - - break; - - - case 'ExtrudeGeometry': - case 'ExtrudeBufferGeometry': - - var geometryShapes = []; - - for ( var j = 0, jl = data.shapes.length; j < jl; j ++ ) { - - var shape = shapes[ data.shapes[ j ] ]; - - geometryShapes.push( shape ); - - } - - var extrudePath = data.options.extrudePath; - - if ( extrudePath !== undefined ) { - - data.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath ); - - } - - geometry = new Geometries[ data.type ]( - geometryShapes, - data.options - ); - - break; - - case 'BufferGeometry': - case 'InstancedBufferGeometry': - - geometry = bufferGeometryLoader.parse( data ); - - break; - - case 'Geometry': - - if ( 'THREE' in window && 'LegacyJSONLoader' in THREE ) { - - var geometryLoader = new THREE.LegacyJSONLoader(); - geometry = geometryLoader.parse( data, this.resourcePath ).geometry; - - - } else { - - console.error( 'THREE.ObjectLoader: You have to import LegacyJSONLoader in order load geometry data of type "Geometry".' ); - - } - - break; - - default: - - console.warn( 'THREE.ObjectLoader: Unsupported geometry type "' + data.type + '"' ); - - continue; - - } - - geometry.uuid = data.uuid; - - if ( data.name !== undefined ) geometry.name = data.name; - if ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData; - - geometries[ data.uuid ] = geometry; - - } - - } - - return geometries; - - }, - - parseMaterials: function ( json, textures ) { - - var cache = {}; // MultiMaterial - var materials = {}; - - if ( json !== undefined ) { - - var loader = new MaterialLoader(); - loader.setTextures( textures ); - - for ( var i = 0, l = json.length; i < l; i ++ ) { - - var data = json[ i ]; - - if ( data.type === 'MultiMaterial' ) { - - // Deprecated - - var array = []; - - for ( var j = 0; j < data.materials.length; j ++ ) { - - var material = data.materials[ j ]; - - if ( cache[ material.uuid ] === undefined ) { - - cache[ material.uuid ] = loader.parse( material ); - - } - - array.push( cache[ material.uuid ] ); - - } - - materials[ data.uuid ] = array; - - } else { - - if ( cache[ data.uuid ] === undefined ) { - - cache[ data.uuid ] = loader.parse( data ); - - } - - materials[ data.uuid ] = cache[ data.uuid ]; - - } - - } - - } - - return materials; - - }, - - parseAnimations: function ( json ) { - - var animations = []; - - for ( var i = 0; i < json.length; i ++ ) { - - var data = json[ i ]; - - var clip = AnimationClip.parse( data ); - - if ( data.uuid !== undefined ) clip.uuid = data.uuid; - - animations.push( clip ); - - } - - return animations; - - }, - - parseImages: function ( json, onLoad ) { - - var scope = this; - var images = {}; - - function loadImage( url ) { - - scope.manager.itemStart( url ); - - return loader.load( url, function () { - - scope.manager.itemEnd( url ); - - }, undefined, function () { - - scope.manager.itemError( url ); - scope.manager.itemEnd( url ); - - } ); - - } - - if ( json !== undefined && json.length > 0 ) { - - var manager = new LoadingManager( onLoad ); - - var loader = new ImageLoader( manager ); - loader.setCrossOrigin( this.crossOrigin ); - - for ( var i = 0, il = json.length; i < il; i ++ ) { - - var image = json[ i ]; - var url = image.url; - - if ( Array.isArray( url ) ) { - - // load array of images e.g CubeTexture - - images[ image.uuid ] = []; - - for ( var j = 0, jl = url.length; j < jl; j ++ ) { - - var currentUrl = url[ j ]; - - var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( currentUrl ) ? currentUrl : scope.resourcePath + currentUrl; - - images[ image.uuid ].push( loadImage( path ) ); - - } - - } else { - - // load single image - - var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( image.url ) ? image.url : scope.resourcePath + image.url; - - images[ image.uuid ] = loadImage( path ); - - } - - } - - } - - return images; - - }, - - parseTextures: function ( json, images ) { - - function parseConstant( value, type ) { - - if ( typeof value === 'number' ) return value; - - console.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value ); - - return type[ value ]; - - } - - var textures = {}; - - if ( json !== undefined ) { - - for ( var i = 0, l = json.length; i < l; i ++ ) { - - var data = json[ i ]; - - if ( data.image === undefined ) { - - console.warn( 'THREE.ObjectLoader: No "image" specified for', data.uuid ); - - } - - if ( images[ data.image ] === undefined ) { - - console.warn( 'THREE.ObjectLoader: Undefined image', data.image ); - - } - - var texture; - - if ( Array.isArray( images[ data.image ] ) ) { - - texture = new CubeTexture( images[ data.image ] ); - - } else { - - texture = new Texture( images[ data.image ] ); - - } - - texture.needsUpdate = true; - - texture.uuid = data.uuid; - - if ( data.name !== undefined ) texture.name = data.name; - - if ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING ); - - if ( data.offset !== undefined ) texture.offset.fromArray( data.offset ); - if ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat ); - if ( data.center !== undefined ) texture.center.fromArray( data.center ); - if ( data.rotation !== undefined ) texture.rotation = data.rotation; - - if ( data.wrap !== undefined ) { - - texture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING ); - texture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING ); - - } - - if ( data.format !== undefined ) texture.format = data.format; - if ( data.type !== undefined ) texture.type = data.type; - if ( data.encoding !== undefined ) texture.encoding = data.encoding; - - if ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER ); - if ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER ); - if ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy; - - if ( data.flipY !== undefined ) texture.flipY = data.flipY; - - if ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha; - if ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment; - - textures[ data.uuid ] = texture; - - } - - } - - return textures; - - }, - - parseObject: function ( data, geometries, materials ) { - - var object; - - function getGeometry( name ) { - - if ( geometries[ name ] === undefined ) { - - console.warn( 'THREE.ObjectLoader: Undefined geometry', name ); - - } - - return geometries[ name ]; - - } - - function getMaterial( name ) { - - if ( name === undefined ) return undefined; - - if ( Array.isArray( name ) ) { - - var array = []; - - for ( var i = 0, l = name.length; i < l; i ++ ) { - - var uuid = name[ i ]; - - if ( materials[ uuid ] === undefined ) { - - console.warn( 'THREE.ObjectLoader: Undefined material', uuid ); - - } - - array.push( materials[ uuid ] ); - - } - - return array; - - } - - if ( materials[ name ] === undefined ) { - - console.warn( 'THREE.ObjectLoader: Undefined material', name ); - - } - - return materials[ name ]; - - } - - switch ( data.type ) { - - case 'Scene': - - object = new Scene(); - - if ( data.background !== undefined ) { - - if ( Number.isInteger( data.background ) ) { - - object.background = new Color( data.background ); - - } - - } - - if ( data.fog !== undefined ) { - - if ( data.fog.type === 'Fog' ) { - - object.fog = new Fog( data.fog.color, data.fog.near, data.fog.far ); - - } else if ( data.fog.type === 'FogExp2' ) { - - object.fog = new FogExp2( data.fog.color, data.fog.density ); - - } - - } - - break; - - case 'PerspectiveCamera': - - object = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far ); - - if ( data.focus !== undefined ) object.focus = data.focus; - if ( data.zoom !== undefined ) object.zoom = data.zoom; - if ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge; - if ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset; - if ( data.view !== undefined ) object.view = Object.assign( {}, data.view ); - - break; - - case 'OrthographicCamera': - - object = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far ); - - if ( data.zoom !== undefined ) object.zoom = data.zoom; - if ( data.view !== undefined ) object.view = Object.assign( {}, data.view ); - - break; - - case 'AmbientLight': - - object = new AmbientLight( data.color, data.intensity ); - - break; - - case 'DirectionalLight': - - object = new DirectionalLight( data.color, data.intensity ); - - break; - - case 'PointLight': - - object = new PointLight( data.color, data.intensity, data.distance, data.decay ); - - break; - - case 'RectAreaLight': - - object = new RectAreaLight( data.color, data.intensity, data.width, data.height ); - - break; - - case 'SpotLight': - - object = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay ); - - break; - - case 'HemisphereLight': - - object = new HemisphereLight( data.color, data.groundColor, data.intensity ); - - break; - - case 'SkinnedMesh': - - console.warn( 'THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.' ); - - case 'Mesh': - - var geometry = getGeometry( data.geometry ); - var material = getMaterial( data.material ); - - if ( geometry.bones && geometry.bones.length > 0 ) { - - object = new SkinnedMesh( geometry, material ); - - } else { - - object = new Mesh( geometry, material ); - - } - - if ( data.drawMode !== undefined ) object.setDrawMode( data.drawMode ); - - break; - - case 'LOD': - - object = new LOD(); - - break; - - case 'Line': - - object = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode ); - - break; - - case 'LineLoop': - - object = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) ); - - break; - - case 'LineSegments': - - object = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) ); - - break; - - case 'PointCloud': - case 'Points': - - object = new Points( getGeometry( data.geometry ), getMaterial( data.material ) ); - - break; - - case 'Sprite': - - object = new Sprite( getMaterial( data.material ) ); - - break; - - case 'Group': - - object = new Group(); - - break; - - default: - - object = new Object3D(); - - } - - object.uuid = data.uuid; - - if ( data.name !== undefined ) object.name = data.name; - - if ( data.matrix !== undefined ) { - - object.matrix.fromArray( data.matrix ); - - if ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate; - if ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale ); - - } else { - - if ( data.position !== undefined ) object.position.fromArray( data.position ); - if ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation ); - if ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion ); - if ( data.scale !== undefined ) object.scale.fromArray( data.scale ); - - } - - if ( data.castShadow !== undefined ) object.castShadow = data.castShadow; - if ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow; - - if ( data.shadow ) { - - if ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias; - if ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius; - if ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize ); - if ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera ); - - } - - if ( data.visible !== undefined ) object.visible = data.visible; - if ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled; - if ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder; - if ( data.userData !== undefined ) object.userData = data.userData; - if ( data.layers !== undefined ) object.layers.mask = data.layers; - - if ( data.children !== undefined ) { - - var children = data.children; - - for ( var i = 0; i < children.length; i ++ ) { - - object.add( this.parseObject( children[ i ], geometries, materials ) ); - - } - - } - - if ( data.type === 'LOD' ) { - - var levels = data.levels; - - for ( var l = 0; l < levels.length; l ++ ) { - - var level = levels[ l ]; - var child = object.getObjectByProperty( 'uuid', level.object ); - - if ( child !== undefined ) { - - object.addLevel( child, level.distance ); - - } - - } - - } - - return object; - - } - - } ); - - var TEXTURE_MAPPING = { - UVMapping: UVMapping, - CubeReflectionMapping: CubeReflectionMapping, - CubeRefractionMapping: CubeRefractionMapping, - EquirectangularReflectionMapping: EquirectangularReflectionMapping, - EquirectangularRefractionMapping: EquirectangularRefractionMapping, - SphericalReflectionMapping: SphericalReflectionMapping, - CubeUVReflectionMapping: CubeUVReflectionMapping, - CubeUVRefractionMapping: CubeUVRefractionMapping - }; - - var TEXTURE_WRAPPING = { - RepeatWrapping: RepeatWrapping, - ClampToEdgeWrapping: ClampToEdgeWrapping, - MirroredRepeatWrapping: MirroredRepeatWrapping - }; - - var TEXTURE_FILTER = { - NearestFilter: NearestFilter, - NearestMipMapNearestFilter: NearestMipMapNearestFilter, - NearestMipMapLinearFilter: NearestMipMapLinearFilter, - LinearFilter: LinearFilter, - LinearMipMapNearestFilter: LinearMipMapNearestFilter, - LinearMipMapLinearFilter: LinearMipMapLinearFilter - }; - - /** - * @author thespite / http://clicktorelease.com/ - */ - - - function ImageBitmapLoader( manager ) { - - if ( typeof createImageBitmap === 'undefined' ) { - - console.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' ); - - } - - if ( typeof fetch === 'undefined' ) { - - console.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' ); - - } - - this.manager = manager !== undefined ? manager : DefaultLoadingManager; - this.options = undefined; - - } - - ImageBitmapLoader.prototype = { - - constructor: ImageBitmapLoader, - - setOptions: function setOptions( options ) { - - this.options = options; - - return this; - - }, - - load: function ( url, onLoad, onProgress, onError ) { - - if ( url === undefined ) url = ''; - - if ( this.path !== undefined ) url = this.path + url; - - url = this.manager.resolveURL( url ); - - var scope = this; - - var cached = Cache.get( url ); - - if ( cached !== undefined ) { - - scope.manager.itemStart( url ); - - setTimeout( function () { - - if ( onLoad ) onLoad( cached ); - - scope.manager.itemEnd( url ); - - }, 0 ); - - return cached; - - } - - fetch( url ).then( function ( res ) { - - return res.blob(); - - } ).then( function ( blob ) { - - if ( scope.options === undefined ) { - - // Workaround for FireFox. It causes an error if you pass options. - return createImageBitmap( blob ); - - } else { - - return createImageBitmap( blob, scope.options ); - - } - - } ).then( function ( imageBitmap ) { - - Cache.add( url, imageBitmap ); - - if ( onLoad ) onLoad( imageBitmap ); - - scope.manager.itemEnd( url ); - - } ).catch( function ( e ) { - - if ( onError ) onError( e ); - - scope.manager.itemError( url ); - scope.manager.itemEnd( url ); - - } ); - - scope.manager.itemStart( url ); - - }, - - setCrossOrigin: function ( /* value */ ) { - - return this; - - }, - - setPath: function ( value ) { - - this.path = value; - return this; - - } - - }; - - /** - * @author zz85 / http://www.lab4games.net/zz85/blog - * minimal class for proxing functions to Path. Replaces old "extractSubpaths()" - **/ - - function ShapePath() { - - this.type = 'ShapePath'; - - this.color = new Color(); - - this.subPaths = []; - this.currentPath = null; - - } - - Object.assign( ShapePath.prototype, { - - moveTo: function ( x, y ) { - - this.currentPath = new Path(); - this.subPaths.push( this.currentPath ); - this.currentPath.moveTo( x, y ); - - }, - - lineTo: function ( x, y ) { - - this.currentPath.lineTo( x, y ); - - }, - - quadraticCurveTo: function ( aCPx, aCPy, aX, aY ) { - - this.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY ); - - }, - - bezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) { - - this.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ); - - }, - - splineThru: function ( pts ) { - - this.currentPath.splineThru( pts ); - - }, - - toShapes: function ( isCCW, noHoles ) { - - function toShapesNoHoles( inSubpaths ) { - - var shapes = []; - - for ( var i = 0, l = inSubpaths.length; i < l; i ++ ) { - - var tmpPath = inSubpaths[ i ]; - - var tmpShape = new Shape(); - tmpShape.curves = tmpPath.curves; - - shapes.push( tmpShape ); - - } - - return shapes; - - } - - function isPointInsidePolygon( inPt, inPolygon ) { - - var polyLen = inPolygon.length; - - // inPt on polygon contour => immediate success or - // toggling of inside/outside at every single! intersection point of an edge - // with the horizontal line through inPt, left of inPt - // not counting lowerY endpoints of edges and whole edges on that line - var inside = false; - for ( var p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) { - - var edgeLowPt = inPolygon[ p ]; - var edgeHighPt = inPolygon[ q ]; - - var edgeDx = edgeHighPt.x - edgeLowPt.x; - var edgeDy = edgeHighPt.y - edgeLowPt.y; - - if ( Math.abs( edgeDy ) > Number.EPSILON ) { - - // not parallel - if ( edgeDy < 0 ) { - - edgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx; - edgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy; - - } - if ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) continue; - - if ( inPt.y === edgeLowPt.y ) { - - if ( inPt.x === edgeLowPt.x ) return true; // inPt is on contour ? - // continue; // no intersection or edgeLowPt => doesn't count !!! - - } else { - - var perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y ); - if ( perpEdge === 0 ) return true; // inPt is on contour ? - if ( perpEdge < 0 ) continue; - inside = ! inside; // true intersection left of inPt - - } - - } else { - - // parallel or collinear - if ( inPt.y !== edgeLowPt.y ) continue; // parallel - // edge lies on the same horizontal line as inPt - if ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) || - ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) ) return true; // inPt: Point on contour ! - // continue; - - } - - } - - return inside; - - } - - var isClockWise = ShapeUtils.isClockWise; - - var subPaths = this.subPaths; - if ( subPaths.length === 0 ) return []; - - if ( noHoles === true ) return toShapesNoHoles( subPaths ); - - - var solid, tmpPath, tmpShape, shapes = []; - - if ( subPaths.length === 1 ) { - - tmpPath = subPaths[ 0 ]; - tmpShape = new Shape(); - tmpShape.curves = tmpPath.curves; - shapes.push( tmpShape ); - return shapes; - - } - - var holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() ); - holesFirst = isCCW ? ! holesFirst : holesFirst; - - // console.log("Holes first", holesFirst); - - var betterShapeHoles = []; - var newShapes = []; - var newShapeHoles = []; - var mainIdx = 0; - var tmpPoints; - - newShapes[ mainIdx ] = undefined; - newShapeHoles[ mainIdx ] = []; - - for ( var i = 0, l = subPaths.length; i < l; i ++ ) { - - tmpPath = subPaths[ i ]; - tmpPoints = tmpPath.getPoints(); - solid = isClockWise( tmpPoints ); - solid = isCCW ? ! solid : solid; - - if ( solid ) { - - if ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) ) mainIdx ++; - - newShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints }; - newShapes[ mainIdx ].s.curves = tmpPath.curves; - - if ( holesFirst ) mainIdx ++; - newShapeHoles[ mainIdx ] = []; - - //console.log('cw', i); - - } else { - - newShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } ); - - //console.log('ccw', i); - - } - - } - - // only Holes? -> probably all Shapes with wrong orientation - if ( ! newShapes[ 0 ] ) return toShapesNoHoles( subPaths ); - - - if ( newShapes.length > 1 ) { - - var ambiguous = false; - var toChange = []; - - for ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) { - - betterShapeHoles[ sIdx ] = []; - - } - - for ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) { - - var sho = newShapeHoles[ sIdx ]; - - for ( var hIdx = 0; hIdx < sho.length; hIdx ++ ) { - - var ho = sho[ hIdx ]; - var hole_unassigned = true; - - for ( var s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) { - - if ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) { - - if ( sIdx !== s2Idx ) toChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } ); - if ( hole_unassigned ) { - - hole_unassigned = false; - betterShapeHoles[ s2Idx ].push( ho ); - - } else { - - ambiguous = true; - - } - - } - - } - if ( hole_unassigned ) { - - betterShapeHoles[ sIdx ].push( ho ); - - } - - } - - } - // console.log("ambiguous: ", ambiguous); - if ( toChange.length > 0 ) { - - // console.log("to change: ", toChange); - if ( ! ambiguous ) newShapeHoles = betterShapeHoles; - - } - - } - - var tmpHoles; - - for ( var i = 0, il = newShapes.length; i < il; i ++ ) { - - tmpShape = newShapes[ i ].s; - shapes.push( tmpShape ); - tmpHoles = newShapeHoles[ i ]; - - for ( var j = 0, jl = tmpHoles.length; j < jl; j ++ ) { - - tmpShape.holes.push( tmpHoles[ j ].h ); - - } - - } - - //console.log("shape", shapes); - - return shapes; - - } - - } ); - - /** - * @author zz85 / http://www.lab4games.net/zz85/blog - * @author mrdoob / http://mrdoob.com/ - */ - - - function Font( data ) { - - this.type = 'Font'; - - this.data = data; - - } - - Object.assign( Font.prototype, { - - isFont: true, - - generateShapes: function ( text, size ) { - - if ( size === undefined ) size = 100; - - var shapes = []; - var paths = createPaths( text, size, this.data ); - - for ( var p = 0, pl = paths.length; p < pl; p ++ ) { - - Array.prototype.push.apply( shapes, paths[ p ].toShapes() ); - - } - - return shapes; - - } - - } ); - - function createPaths( text, size, data ) { - - var chars = Array.from ? Array.from( text ) : String( text ).split( '' ); // see #13988 - var scale = size / data.resolution; - var line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale; - - var paths = []; - - var offsetX = 0, offsetY = 0; - - for ( var i = 0; i < chars.length; i ++ ) { - - var char = chars[ i ]; - - if ( char === '\n' ) { - - offsetX = 0; - offsetY -= line_height; - - } else { - - var ret = createPath( char, scale, offsetX, offsetY, data ); - offsetX += ret.offsetX; - paths.push( ret.path ); - - } - - } - - return paths; - - } - - function createPath( char, scale, offsetX, offsetY, data ) { - - var glyph = data.glyphs[ char ] || data.glyphs[ '?' ]; - - if ( ! glyph ) return; - - var path = new ShapePath(); - - var x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2; - - if ( glyph.o ) { - - var outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) ); - - for ( var i = 0, l = outline.length; i < l; ) { - - var action = outline[ i ++ ]; - - switch ( action ) { - - case 'm': // moveTo - - x = outline[ i ++ ] * scale + offsetX; - y = outline[ i ++ ] * scale + offsetY; - - path.moveTo( x, y ); - - break; - - case 'l': // lineTo - - x = outline[ i ++ ] * scale + offsetX; - y = outline[ i ++ ] * scale + offsetY; - - path.lineTo( x, y ); - - break; - - case 'q': // quadraticCurveTo - - cpx = outline[ i ++ ] * scale + offsetX; - cpy = outline[ i ++ ] * scale + offsetY; - cpx1 = outline[ i ++ ] * scale + offsetX; - cpy1 = outline[ i ++ ] * scale + offsetY; - - path.quadraticCurveTo( cpx1, cpy1, cpx, cpy ); - - break; - - case 'b': // bezierCurveTo - - cpx = outline[ i ++ ] * scale + offsetX; - cpy = outline[ i ++ ] * scale + offsetY; - cpx1 = outline[ i ++ ] * scale + offsetX; - cpy1 = outline[ i ++ ] * scale + offsetY; - cpx2 = outline[ i ++ ] * scale + offsetX; - cpy2 = outline[ i ++ ] * scale + offsetY; - - path.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy ); - - break; - - } - - } - - } - - return { offsetX: glyph.ha * scale, path: path }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function FontLoader( manager ) { - - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; - - } - - Object.assign( FontLoader.prototype, { - - load: function ( url, onLoad, onProgress, onError ) { - - var scope = this; - - var loader = new FileLoader( this.manager ); - loader.setPath( this.path ); - loader.load( url, function ( text ) { - - var json; - - try { - - json = JSON.parse( text ); - - } catch ( e ) { - - console.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' ); - json = JSON.parse( text.substring( 65, text.length - 2 ) ); - - } - - var font = scope.parse( json ); - - if ( onLoad ) onLoad( font ); - - }, onProgress, onError ); - - }, - - parse: function ( json ) { - - return new Font( json ); - - }, - - setPath: function ( value ) { - - this.path = value; - return this; - - } - - } ); - - /** - * @author alteredq / http://alteredqualia.com/ - */ - - function Loader() {} - - Loader.Handlers = { - - handlers: [], - - add: function ( regex, loader ) { - - this.handlers.push( regex, loader ); - - }, - - get: function ( file ) { - - var handlers = this.handlers; - - for ( var i = 0, l = handlers.length; i < l; i += 2 ) { - - var regex = handlers[ i ]; - var loader = handlers[ i + 1 ]; - - if ( regex.test( file ) ) { - - return loader; - - } - - } - - return null; - - } - - }; - - Object.assign( Loader.prototype, { - - crossOrigin: 'anonymous', - - onLoadStart: function () {}, - - onLoadProgress: function () {}, - - onLoadComplete: function () {}, - - initMaterials: function ( materials, texturePath, crossOrigin ) { - - var array = []; - - for ( var i = 0; i < materials.length; ++ i ) { - - array[ i ] = this.createMaterial( materials[ i ], texturePath, crossOrigin ); - - } - - return array; - - }, - - createMaterial: ( function () { - - var BlendingMode = { - NoBlending: NoBlending, - NormalBlending: NormalBlending, - AdditiveBlending: AdditiveBlending, - SubtractiveBlending: SubtractiveBlending, - MultiplyBlending: MultiplyBlending, - CustomBlending: CustomBlending - }; - - var color = new Color(); - var textureLoader = new TextureLoader(); - var materialLoader = new MaterialLoader(); - - return function createMaterial( m, texturePath, crossOrigin ) { - - // convert from old material format - - var textures = {}; - - function loadTexture( path, repeat, offset, wrap, anisotropy ) { - - var fullPath = texturePath + path; - var loader = Loader.Handlers.get( fullPath ); - - var texture; - - if ( loader !== null ) { - - texture = loader.load( fullPath ); - - } else { - - textureLoader.setCrossOrigin( crossOrigin ); - texture = textureLoader.load( fullPath ); - - } - - if ( repeat !== undefined ) { - - texture.repeat.fromArray( repeat ); - - if ( repeat[ 0 ] !== 1 ) texture.wrapS = RepeatWrapping; - if ( repeat[ 1 ] !== 1 ) texture.wrapT = RepeatWrapping; - - } - - if ( offset !== undefined ) { - - texture.offset.fromArray( offset ); - - } - - if ( wrap !== undefined ) { - - if ( wrap[ 0 ] === 'repeat' ) texture.wrapS = RepeatWrapping; - if ( wrap[ 0 ] === 'mirror' ) texture.wrapS = MirroredRepeatWrapping; - - if ( wrap[ 1 ] === 'repeat' ) texture.wrapT = RepeatWrapping; - if ( wrap[ 1 ] === 'mirror' ) texture.wrapT = MirroredRepeatWrapping; - - } - - if ( anisotropy !== undefined ) { - - texture.anisotropy = anisotropy; - - } - - var uuid = _Math.generateUUID(); - - textures[ uuid ] = texture; - - return uuid; - - } - - // - - var json = { - uuid: _Math.generateUUID(), - type: 'MeshLambertMaterial' - }; - - for ( var name in m ) { - - var value = m[ name ]; - - switch ( name ) { - - case 'DbgColor': - case 'DbgIndex': - case 'opticalDensity': - case 'illumination': - break; - case 'DbgName': - json.name = value; - break; - case 'blending': - json.blending = BlendingMode[ value ]; - break; - case 'colorAmbient': - case 'mapAmbient': - console.warn( 'THREE.Loader.createMaterial:', name, 'is no longer supported.' ); - break; - case 'colorDiffuse': - json.color = color.fromArray( value ).getHex(); - break; - case 'colorSpecular': - json.specular = color.fromArray( value ).getHex(); - break; - case 'colorEmissive': - json.emissive = color.fromArray( value ).getHex(); - break; - case 'specularCoef': - json.shininess = value; - break; - case 'shading': - if ( value.toLowerCase() === 'basic' ) json.type = 'MeshBasicMaterial'; - if ( value.toLowerCase() === 'phong' ) json.type = 'MeshPhongMaterial'; - if ( value.toLowerCase() === 'standard' ) json.type = 'MeshStandardMaterial'; - break; - case 'mapDiffuse': - json.map = loadTexture( value, m.mapDiffuseRepeat, m.mapDiffuseOffset, m.mapDiffuseWrap, m.mapDiffuseAnisotropy ); - break; - case 'mapDiffuseRepeat': - case 'mapDiffuseOffset': - case 'mapDiffuseWrap': - case 'mapDiffuseAnisotropy': - break; - case 'mapEmissive': - json.emissiveMap = loadTexture( value, m.mapEmissiveRepeat, m.mapEmissiveOffset, m.mapEmissiveWrap, m.mapEmissiveAnisotropy ); - break; - case 'mapEmissiveRepeat': - case 'mapEmissiveOffset': - case 'mapEmissiveWrap': - case 'mapEmissiveAnisotropy': - break; - case 'mapLight': - json.lightMap = loadTexture( value, m.mapLightRepeat, m.mapLightOffset, m.mapLightWrap, m.mapLightAnisotropy ); - break; - case 'mapLightRepeat': - case 'mapLightOffset': - case 'mapLightWrap': - case 'mapLightAnisotropy': - break; - case 'mapAO': - json.aoMap = loadTexture( value, m.mapAORepeat, m.mapAOOffset, m.mapAOWrap, m.mapAOAnisotropy ); - break; - case 'mapAORepeat': - case 'mapAOOffset': - case 'mapAOWrap': - case 'mapAOAnisotropy': - break; - case 'mapBump': - json.bumpMap = loadTexture( value, m.mapBumpRepeat, m.mapBumpOffset, m.mapBumpWrap, m.mapBumpAnisotropy ); - break; - case 'mapBumpScale': - json.bumpScale = value; - break; - case 'mapBumpRepeat': - case 'mapBumpOffset': - case 'mapBumpWrap': - case 'mapBumpAnisotropy': - break; - case 'mapNormal': - json.normalMap = loadTexture( value, m.mapNormalRepeat, m.mapNormalOffset, m.mapNormalWrap, m.mapNormalAnisotropy ); - break; - case 'mapNormalFactor': - json.normalScale = value; - break; - case 'mapNormalRepeat': - case 'mapNormalOffset': - case 'mapNormalWrap': - case 'mapNormalAnisotropy': - break; - case 'mapSpecular': - json.specularMap = loadTexture( value, m.mapSpecularRepeat, m.mapSpecularOffset, m.mapSpecularWrap, m.mapSpecularAnisotropy ); - break; - case 'mapSpecularRepeat': - case 'mapSpecularOffset': - case 'mapSpecularWrap': - case 'mapSpecularAnisotropy': - break; - case 'mapMetalness': - json.metalnessMap = loadTexture( value, m.mapMetalnessRepeat, m.mapMetalnessOffset, m.mapMetalnessWrap, m.mapMetalnessAnisotropy ); - break; - case 'mapMetalnessRepeat': - case 'mapMetalnessOffset': - case 'mapMetalnessWrap': - case 'mapMetalnessAnisotropy': - break; - case 'mapRoughness': - json.roughnessMap = loadTexture( value, m.mapRoughnessRepeat, m.mapRoughnessOffset, m.mapRoughnessWrap, m.mapRoughnessAnisotropy ); - break; - case 'mapRoughnessRepeat': - case 'mapRoughnessOffset': - case 'mapRoughnessWrap': - case 'mapRoughnessAnisotropy': - break; - case 'mapAlpha': - json.alphaMap = loadTexture( value, m.mapAlphaRepeat, m.mapAlphaOffset, m.mapAlphaWrap, m.mapAlphaAnisotropy ); - break; - case 'mapAlphaRepeat': - case 'mapAlphaOffset': - case 'mapAlphaWrap': - case 'mapAlphaAnisotropy': - break; - case 'flipSided': - json.side = BackSide; - break; - case 'doubleSided': - json.side = DoubleSide; - break; - case 'transparency': - console.warn( 'THREE.Loader.createMaterial: transparency has been renamed to opacity' ); - json.opacity = value; - break; - case 'depthTest': - case 'depthWrite': - case 'colorWrite': - case 'opacity': - case 'reflectivity': - case 'transparent': - case 'visible': - case 'wireframe': - json[ name ] = value; - break; - case 'vertexColors': - if ( value === true ) json.vertexColors = VertexColors; - if ( value === 'face' ) json.vertexColors = FaceColors; - break; - default: - console.error( 'THREE.Loader.createMaterial: Unsupported', name, value ); - break; - - } - - } - - if ( json.type === 'MeshBasicMaterial' ) delete json.emissive; - if ( json.type !== 'MeshPhongMaterial' ) delete json.specular; - - if ( json.opacity < 1 ) json.transparent = true; - - materialLoader.setTextures( textures ); - - return materialLoader.parse( json ); - - }; - - } )() - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - var context; - - var AudioContext = { - - getContext: function () { - - if ( context === undefined ) { - - context = new ( window.AudioContext || window.webkitAudioContext )(); - - } - - return context; - - }, - - setContext: function ( value ) { - - context = value; - - } - - }; - - /** - * @author Reece Aaron Lecrivain / http://reecenotes.com/ - */ - - function AudioLoader( manager ) { - - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; - - } - - Object.assign( AudioLoader.prototype, { - - load: function ( url, onLoad, onProgress, onError ) { - - var loader = new FileLoader( this.manager ); - loader.setResponseType( 'arraybuffer' ); - loader.setPath( this.path ); - loader.load( url, function ( buffer ) { - - // Create a copy of the buffer. The `decodeAudioData` method - // detaches the buffer when complete, preventing reuse. - var bufferCopy = buffer.slice( 0 ); - - var context = AudioContext.getContext(); - context.decodeAudioData( bufferCopy, function ( audioBuffer ) { - - onLoad( audioBuffer ); - - } ); - - }, onProgress, onError ); - - }, - - setPath: function ( value ) { - - this.path = value; - return this; - - } - - } ); - - /** - * @author bhouston / http://clara.io - * @author WestLangley / http://github.com/WestLangley - * - * Primary reference: - * https://graphics.stanford.edu/papers/envmap/envmap.pdf - * - * Secondary reference: - * https://www.ppsloan.org/publications/StupidSH36.pdf - */ - - // 3-band SH defined by 9 coefficients - - function SphericalHarmonics3() { - - this.coefficients = []; - - for ( var i = 0; i < 9; i ++ ) { - - this.coefficients.push( new Vector3() ); - - } - - } - - Object.assign( SphericalHarmonics3.prototype, { - - isSphericalHarmonics3: true, - - set: function ( coefficients ) { - - for ( var i = 0; i < 9; i ++ ) { - - this.coefficients[ i ].copy( coefficients[ i ] ); - - } - - return this; - - }, - - zero: function () { - - for ( var i = 0; i < 9; i ++ ) { - - this.coefficients[ i ].set( 0, 0, 0 ); - - } - - return this; - - }, - - // get the radiance in the direction of the normal - // target is a Vector3 - getAt: function ( normal, target ) { - - // normal is assumed to be unit length - - var x = normal.x, y = normal.y, z = normal.z; - - var coeff = this.coefficients; - - // band 0 - target = coeff[ 0 ] * 0.282095; - - // band 1 - target += coeff[ 1 ] * 0.488603 * y; - target += coeff[ 2 ] * 0.488603 * z; - target += coeff[ 3 ] * 0.488603 * x; - - // band 2 - target += coeff[ 4 ] * 1.092548 * ( x * y ); - target += coeff[ 5 ] * 1.092548 * ( y * z ); - target += coeff[ 6 ] * 0.315392 * ( 3.0 * z * z - 1.0 ); - target += coeff[ 7 ] * 1.092548 * ( x * z ); - target += coeff[ 8 ] * 0.546274 * ( x * x - y * y ); - - return target; - - }, - - // get the irradiance (radiance convolved with cosine lobe) in the direction of the normal - // target is a Vector3 - // https://graphics.stanford.edu/papers/envmap/envmap.pdf - getIrradianceAt: function ( normal, target ) { - - // normal is assumed to be unit length - - var x = normal.x, y = normal.y, z = normal.z; - - var coeff = this.coefficients; - - // band 0 - target = coeff[ 0 ] * 0.886227; // π * 0.282095 - - // band 1 - target += coeff[ 1 ] * 2.0 * 0.511664 * y; // ( 2 * π / 3 ) * 0.488603 - target += coeff[ 2 ] * 2.0 * 0.511664 * z; - target += coeff[ 3 ] * 2.0 * 0.511664 * x; - - // band 2 - target += coeff[ 4 ] * 2.0 * 0.429043 * x * y; // ( π / 4 ) * 1.092548 - target += coeff[ 5 ] * 2.0 * 0.429043 * y * z; - target += coeff[ 6 ] * ( 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3 - target += coeff[ 7 ] * 2.0 * 0.429043 * x * z; - target += coeff[ 8 ] * 0.429043 * ( x * x - y * y ); // ( π / 4 ) * 0.546274 - - return target; - - }, - - add: function ( sh ) { - - for ( var i = 0; i < 9; i ++ ) { - - this.coefficients[ i ].add( sh.coefficients[ i ] ); - - } - - return this; - - }, - - - scale: function ( s ) { - - for ( var i = 0; i < 9; i ++ ) { - - this.coefficients[ i ].multiplyScalar( s ); - - } - - return this; - - }, - - lerp: function ( sh, alpha ) { - - for ( var i = 0; i < 9; i ++ ) { - - this.coefficients[ i ].lerp( sh.coefficients[ i ], alpha ); - - } - - return this; - - }, - - equals: function ( sh ) { - - for ( var i = 0; i < 9; i ++ ) { - - if ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) { - - return false; - - } - - } - - return true; - - }, - - copy: function ( sh ) { - - return this.set( sh.coefficients ); - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - fromArray: function ( array ) { - - var coefficients = this.coefficients; - - for ( var i = 0; i < 9; i ++ ) { - - coefficients[ i ].fromArray( array, i * 3 ); - - } - - return this; - - }, - - toArray: function () { - - var array = []; - var coefficients = this.coefficients; - - for ( var i = 0; i < 9; i ++ ) { - - coefficients[ i ].toArray( array, i * 3 ); - - } - - return array; - - } - - } ); - - Object.assign( SphericalHarmonics3, { - - // evaluate the basis functions - // shBasis is an Array[ 9 ] - getBasisAt: function ( normal, shBasis ) { - - // normal is assumed to be unit length - - var x = normal.x, y = normal.y, z = normal.z; - - // band 0 - shBasis[ 0 ] = 0.282095; - - // band 1 - shBasis[ 1 ] = 0.488603 * y; - shBasis[ 2 ] = 0.488603 * z; - shBasis[ 3 ] = 0.488603 * x; - - // band 2 - shBasis[ 4 ] = 1.092548 * x * y; - shBasis[ 5 ] = 1.092548 * y * z; - shBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 ); - shBasis[ 7 ] = 1.092548 * x * z; - shBasis[ 8 ] = 0.546274 * ( x * x - y * y ); - - } - - } ); - - /** - * @author WestLangley / http://github.com/WestLangley - * - * A LightProbe is a source of indirect-diffuse light - */ - - function LightProbe( sh, intensity ) { - - Light.call( this, undefined, intensity ); - - this.sh = ( sh !== undefined ) ? sh : new SphericalHarmonics3(); - - } - - LightProbe.prototype = Object.assign( Object.create( Light.prototype ), { - - constructor: LightProbe, - - isLightProbe: true, - - copy: function ( source ) { - - Light.prototype.copy.call( this, source ); - - this.sh.copy( source.sh ); - this.intensity = source.intensity; - - return this; - - }, - - toJSON: function ( meta ) { - - var data = Light.prototype.toJSON.call( this, meta ); - - // data.sh = this.sh.toArray(); // todo - - return data; - - } - - } ); - - /** - * @author WestLangley / http://github.com/WestLangley - */ - - function HemisphereLightProbe( skyColor, groundColor, intensity ) { - - LightProbe.call( this, undefined, intensity ); - - var color1 = new Color().set( skyColor ); - var color2 = new Color().set( groundColor ); - - var sky = new Vector3( color1.r, color1.g, color1.b ); - var ground = new Vector3( color2.r, color2.g, color2.b ); - - // without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI ); - var c0 = Math.sqrt( Math.PI ); - var c1 = c0 * Math.sqrt( 0.75 ); - - this.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 ); - this.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 ); - - } - - HemisphereLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), { - - constructor: HemisphereLightProbe, - - isHemisphereLightProbe: true, - - copy: function ( source ) { // modifying colors not currently supported - - LightProbe.prototype.copy.call( this, source ); - - return this; - - }, - - toJSON: function ( meta ) { - - var data = LightProbe.prototype.toJSON.call( this, meta ); - - // data.sh = this.sh.toArray(); // todo - - return data; - - } - - } ); - - /** - * @author WestLangley / http://github.com/WestLangley - */ - - function AmbientLightProbe( color, intensity ) { - - LightProbe.call( this, undefined, intensity ); - - var color1 = new Color().set( color ); - - // without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI ); - this.sh.coefficients[ 0 ].set( color1.r, color1.g, color1.b ).multiplyScalar( 2 * Math.sqrt( Math.PI ) ); - - } - - AmbientLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), { - - constructor: AmbientLightProbe, - - isAmbientLightProbe: true, - - copy: function ( source ) { // modifying color not currently supported - - LightProbe.prototype.copy.call( this, source ); - - return this; - - }, - - toJSON: function ( meta ) { - - var data = LightProbe.prototype.toJSON.call( this, meta ); - - // data.sh = this.sh.toArray(); // todo - - return data; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function StereoCamera() { - - this.type = 'StereoCamera'; - - this.aspect = 1; - - this.eyeSep = 0.064; - - this.cameraL = new PerspectiveCamera(); - this.cameraL.layers.enable( 1 ); - this.cameraL.matrixAutoUpdate = false; - - this.cameraR = new PerspectiveCamera(); - this.cameraR.layers.enable( 2 ); - this.cameraR.matrixAutoUpdate = false; - - } - - Object.assign( StereoCamera.prototype, { - - update: ( function () { - - var instance, focus, fov, aspect, near, far, zoom, eyeSep; - - var eyeRight = new Matrix4(); - var eyeLeft = new Matrix4(); - - return function update( camera ) { - - var needsUpdate = instance !== this || focus !== camera.focus || fov !== camera.fov || - aspect !== camera.aspect * this.aspect || near !== camera.near || - far !== camera.far || zoom !== camera.zoom || eyeSep !== this.eyeSep; - - if ( needsUpdate ) { - - instance = this; - focus = camera.focus; - fov = camera.fov; - aspect = camera.aspect * this.aspect; - near = camera.near; - far = camera.far; - zoom = camera.zoom; - - // Off-axis stereoscopic effect based on - // http://paulbourke.net/stereographics/stereorender/ - - var projectionMatrix = camera.projectionMatrix.clone(); - eyeSep = this.eyeSep / 2; - var eyeSepOnProjection = eyeSep * near / focus; - var ymax = ( near * Math.tan( _Math.DEG2RAD * fov * 0.5 ) ) / zoom; - var xmin, xmax; - - // translate xOffset - - eyeLeft.elements[ 12 ] = - eyeSep; - eyeRight.elements[ 12 ] = eyeSep; - - // for left eye - - xmin = - ymax * aspect + eyeSepOnProjection; - xmax = ymax * aspect + eyeSepOnProjection; - - projectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin ); - projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin ); - - this.cameraL.projectionMatrix.copy( projectionMatrix ); - - // for right eye - - xmin = - ymax * aspect - eyeSepOnProjection; - xmax = ymax * aspect - eyeSepOnProjection; - - projectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin ); - projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin ); - - this.cameraR.projectionMatrix.copy( projectionMatrix ); - - } - - this.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( eyeLeft ); - this.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( eyeRight ); - - }; - - } )() - - } ); - - /** - * Camera for rendering cube maps - * - renders scene into axis-aligned cube - * - * @author alteredq / http://alteredqualia.com/ - */ - - var fov = 90, aspect = 1; - - function CubeCamera( near, far, cubeResolution, options ) { - - Object3D.call( this ); - - this.type = 'CubeCamera'; - - var cameraPX = new PerspectiveCamera( fov, aspect, near, far ); - cameraPX.up.set( 0, - 1, 0 ); - cameraPX.lookAt( new Vector3( 1, 0, 0 ) ); - this.add( cameraPX ); - - var cameraNX = new PerspectiveCamera( fov, aspect, near, far ); - cameraNX.up.set( 0, - 1, 0 ); - cameraNX.lookAt( new Vector3( - 1, 0, 0 ) ); - this.add( cameraNX ); - - var cameraPY = new PerspectiveCamera( fov, aspect, near, far ); - cameraPY.up.set( 0, 0, 1 ); - cameraPY.lookAt( new Vector3( 0, 1, 0 ) ); - this.add( cameraPY ); - - var cameraNY = new PerspectiveCamera( fov, aspect, near, far ); - cameraNY.up.set( 0, 0, - 1 ); - cameraNY.lookAt( new Vector3( 0, - 1, 0 ) ); - this.add( cameraNY ); - - var cameraPZ = new PerspectiveCamera( fov, aspect, near, far ); - cameraPZ.up.set( 0, - 1, 0 ); - cameraPZ.lookAt( new Vector3( 0, 0, 1 ) ); - this.add( cameraPZ ); - - var cameraNZ = new PerspectiveCamera( fov, aspect, near, far ); - cameraNZ.up.set( 0, - 1, 0 ); - cameraNZ.lookAt( new Vector3( 0, 0, - 1 ) ); - this.add( cameraNZ ); - - options = options || { format: RGBFormat, magFilter: LinearFilter, minFilter: LinearFilter }; - - this.renderTarget = new WebGLRenderTargetCube( cubeResolution, cubeResolution, options ); - this.renderTarget.texture.name = "CubeCamera"; - - this.update = function ( renderer, scene ) { - - if ( this.parent === null ) this.updateMatrixWorld(); - - var currentRenderTarget = renderer.getRenderTarget(); - - var renderTarget = this.renderTarget; - var generateMipmaps = renderTarget.texture.generateMipmaps; - - renderTarget.texture.generateMipmaps = false; - - renderer.setRenderTarget( renderTarget, 0 ); - renderer.render( scene, cameraPX ); - - renderer.setRenderTarget( renderTarget, 1 ); - renderer.render( scene, cameraNX ); - - renderer.setRenderTarget( renderTarget, 2 ); - renderer.render( scene, cameraPY ); - - renderer.setRenderTarget( renderTarget, 3 ); - renderer.render( scene, cameraNY ); - - renderer.setRenderTarget( renderTarget, 4 ); - renderer.render( scene, cameraPZ ); - - renderTarget.texture.generateMipmaps = generateMipmaps; - - renderer.setRenderTarget( renderTarget, 5 ); - renderer.render( scene, cameraNZ ); - - renderer.setRenderTarget( currentRenderTarget ); - - }; - - this.clear = function ( renderer, color, depth, stencil ) { - - var currentRenderTarget = renderer.getRenderTarget(); - - var renderTarget = this.renderTarget; - - for ( var i = 0; i < 6; i ++ ) { - - renderer.setRenderTarget( renderTarget, i ); - - renderer.clear( color, depth, stencil ); - - } - - renderer.setRenderTarget( currentRenderTarget ); - - }; - - } - - CubeCamera.prototype = Object.create( Object3D.prototype ); - CubeCamera.prototype.constructor = CubeCamera; - - /** - * @author alteredq / http://alteredqualia.com/ - */ - - function Clock( autoStart ) { - - this.autoStart = ( autoStart !== undefined ) ? autoStart : true; - - this.startTime = 0; - this.oldTime = 0; - this.elapsedTime = 0; - - this.running = false; - - } - - Object.assign( Clock.prototype, { - - start: function () { - - this.startTime = ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732 - - this.oldTime = this.startTime; - this.elapsedTime = 0; - this.running = true; - - }, - - stop: function () { - - this.getElapsedTime(); - this.running = false; - this.autoStart = false; - - }, - - getElapsedTime: function () { - - this.getDelta(); - return this.elapsedTime; - - }, - - getDelta: function () { - - var diff = 0; - - if ( this.autoStart && ! this.running ) { - - this.start(); - return 0; - - } - - if ( this.running ) { - - var newTime = ( typeof performance === 'undefined' ? Date : performance ).now(); - - diff = ( newTime - this.oldTime ) / 1000; - this.oldTime = newTime; - - this.elapsedTime += diff; - - } - - return diff; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function AudioListener() { - - Object3D.call( this ); - - this.type = 'AudioListener'; - - this.context = AudioContext.getContext(); - - this.gain = this.context.createGain(); - this.gain.connect( this.context.destination ); - - this.filter = null; - - this.timeDelta = 0; - - } - - AudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), { - - constructor: AudioListener, - - getInput: function () { - - return this.gain; - - }, - - removeFilter: function ( ) { - - if ( this.filter !== null ) { - - this.gain.disconnect( this.filter ); - this.filter.disconnect( this.context.destination ); - this.gain.connect( this.context.destination ); - this.filter = null; - - } - - return this; - - }, - - getFilter: function () { - - return this.filter; - - }, - - setFilter: function ( value ) { - - if ( this.filter !== null ) { - - this.gain.disconnect( this.filter ); - this.filter.disconnect( this.context.destination ); - - } else { - - this.gain.disconnect( this.context.destination ); - - } - - this.filter = value; - this.gain.connect( this.filter ); - this.filter.connect( this.context.destination ); - - return this; - - }, - - getMasterVolume: function () { - - return this.gain.gain.value; - - }, - - setMasterVolume: function ( value ) { - - this.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 ); - - return this; - - }, - - updateMatrixWorld: ( function () { - - var position = new Vector3(); - var quaternion = new Quaternion(); - var scale = new Vector3(); - - var orientation = new Vector3(); - var clock = new Clock(); - - return function updateMatrixWorld( force ) { - - Object3D.prototype.updateMatrixWorld.call( this, force ); - - var listener = this.context.listener; - var up = this.up; - - this.timeDelta = clock.getDelta(); - - this.matrixWorld.decompose( position, quaternion, scale ); - - orientation.set( 0, 0, - 1 ).applyQuaternion( quaternion ); - - if ( listener.positionX ) { - - // code path for Chrome (see #14393) - - var endTime = this.context.currentTime + this.timeDelta; - - listener.positionX.linearRampToValueAtTime( position.x, endTime ); - listener.positionY.linearRampToValueAtTime( position.y, endTime ); - listener.positionZ.linearRampToValueAtTime( position.z, endTime ); - listener.forwardX.linearRampToValueAtTime( orientation.x, endTime ); - listener.forwardY.linearRampToValueAtTime( orientation.y, endTime ); - listener.forwardZ.linearRampToValueAtTime( orientation.z, endTime ); - listener.upX.linearRampToValueAtTime( up.x, endTime ); - listener.upY.linearRampToValueAtTime( up.y, endTime ); - listener.upZ.linearRampToValueAtTime( up.z, endTime ); - - } else { - - listener.setPosition( position.x, position.y, position.z ); - listener.setOrientation( orientation.x, orientation.y, orientation.z, up.x, up.y, up.z ); - - } - - }; - - } )() - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author Reece Aaron Lecrivain / http://reecenotes.com/ - */ - - function Audio( listener ) { - - Object3D.call( this ); - - this.type = 'Audio'; - - this.listener = listener; - this.context = listener.context; - - this.gain = this.context.createGain(); - this.gain.connect( listener.getInput() ); - - this.autoplay = false; - - this.buffer = null; - this.detune = 0; - this.loop = false; - this.startTime = 0; - this.offset = 0; - this.playbackRate = 1; - this.isPlaying = false; - this.hasPlaybackControl = true; - this.sourceType = 'empty'; - - this.filters = []; - - } - - Audio.prototype = Object.assign( Object.create( Object3D.prototype ), { - - constructor: Audio, - - getOutput: function () { - - return this.gain; - - }, - - setNodeSource: function ( audioNode ) { - - this.hasPlaybackControl = false; - this.sourceType = 'audioNode'; - this.source = audioNode; - this.connect(); - - return this; - - }, - - setMediaElementSource: function ( mediaElement ) { - - this.hasPlaybackControl = false; - this.sourceType = 'mediaNode'; - this.source = this.context.createMediaElementSource( mediaElement ); - this.connect(); - - return this; - - }, - - setBuffer: function ( audioBuffer ) { - - this.buffer = audioBuffer; - this.sourceType = 'buffer'; - - if ( this.autoplay ) this.play(); - - return this; - - }, - - play: function () { - - if ( this.isPlaying === true ) { - - console.warn( 'THREE.Audio: Audio is already playing.' ); - return; - - } - - if ( this.hasPlaybackControl === false ) { - - console.warn( 'THREE.Audio: this Audio has no playback control.' ); - return; - - } - - var source = this.context.createBufferSource(); - - source.buffer = this.buffer; - source.loop = this.loop; - source.onended = this.onEnded.bind( this ); - this.startTime = this.context.currentTime; - source.start( this.startTime, this.offset ); - - this.isPlaying = true; - - this.source = source; - - this.setDetune( this.detune ); - this.setPlaybackRate( this.playbackRate ); - - return this.connect(); - - }, - - pause: function () { - - if ( this.hasPlaybackControl === false ) { - - console.warn( 'THREE.Audio: this Audio has no playback control.' ); - return; - - } - - if ( this.isPlaying === true ) { - - this.source.stop(); - this.source.onended = null; - this.offset += ( this.context.currentTime - this.startTime ) * this.playbackRate; - this.isPlaying = false; - - } - - return this; - - }, - - stop: function () { - - if ( this.hasPlaybackControl === false ) { - - console.warn( 'THREE.Audio: this Audio has no playback control.' ); - return; - - } - - this.source.stop(); - this.source.onended = null; - this.offset = 0; - this.isPlaying = false; - - return this; - - }, - - connect: function () { - - if ( this.filters.length > 0 ) { - - this.source.connect( this.filters[ 0 ] ); - - for ( var i = 1, l = this.filters.length; i < l; i ++ ) { - - this.filters[ i - 1 ].connect( this.filters[ i ] ); - - } - - this.filters[ this.filters.length - 1 ].connect( this.getOutput() ); - - } else { - - this.source.connect( this.getOutput() ); - - } - - return this; - - }, - - disconnect: function () { - - if ( this.filters.length > 0 ) { - - this.source.disconnect( this.filters[ 0 ] ); - - for ( var i = 1, l = this.filters.length; i < l; i ++ ) { - - this.filters[ i - 1 ].disconnect( this.filters[ i ] ); - - } - - this.filters[ this.filters.length - 1 ].disconnect( this.getOutput() ); - - } else { - - this.source.disconnect( this.getOutput() ); - - } - - return this; - - }, - - getFilters: function () { - - return this.filters; - - }, - - setFilters: function ( value ) { - - if ( ! value ) value = []; - - if ( this.isPlaying === true ) { - - this.disconnect(); - this.filters = value; - this.connect(); - - } else { - - this.filters = value; - - } - - return this; - - }, - - setDetune: function ( value ) { - - this.detune = value; - - if ( this.source.detune === undefined ) return; // only set detune when available - - if ( this.isPlaying === true ) { - - this.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 ); - - } - - return this; - - }, - - getDetune: function () { - - return this.detune; - - }, - - getFilter: function () { - - return this.getFilters()[ 0 ]; - - }, - - setFilter: function ( filter ) { - - return this.setFilters( filter ? [ filter ] : [] ); - - }, - - setPlaybackRate: function ( value ) { - - if ( this.hasPlaybackControl === false ) { - - console.warn( 'THREE.Audio: this Audio has no playback control.' ); - return; - - } - - this.playbackRate = value; - - if ( this.isPlaying === true ) { - - this.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 ); - - } - - return this; - - }, - - getPlaybackRate: function () { - - return this.playbackRate; - - }, - - onEnded: function () { - - this.isPlaying = false; - - }, - - getLoop: function () { - - if ( this.hasPlaybackControl === false ) { - - console.warn( 'THREE.Audio: this Audio has no playback control.' ); - return false; - - } - - return this.loop; - - }, - - setLoop: function ( value ) { - - if ( this.hasPlaybackControl === false ) { - - console.warn( 'THREE.Audio: this Audio has no playback control.' ); - return; - - } - - this.loop = value; - - if ( this.isPlaying === true ) { - - this.source.loop = this.loop; - - } - - return this; - - }, - - getVolume: function () { - - return this.gain.gain.value; - - }, - - setVolume: function ( value ) { - - this.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 ); - - return this; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function PositionalAudio( listener ) { - - Audio.call( this, listener ); - - this.panner = this.context.createPanner(); - this.panner.panningModel = 'HRTF'; - this.panner.connect( this.gain ); - - } - - PositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), { - - constructor: PositionalAudio, - - getOutput: function () { - - return this.panner; - - }, - - getRefDistance: function () { - - return this.panner.refDistance; - - }, - - setRefDistance: function ( value ) { - - this.panner.refDistance = value; - - return this; - - }, - - getRolloffFactor: function () { - - return this.panner.rolloffFactor; - - }, - - setRolloffFactor: function ( value ) { - - this.panner.rolloffFactor = value; - - return this; - - }, - - getDistanceModel: function () { - - return this.panner.distanceModel; - - }, - - setDistanceModel: function ( value ) { - - this.panner.distanceModel = value; - - return this; - - }, - - getMaxDistance: function () { - - return this.panner.maxDistance; - - }, - - setMaxDistance: function ( value ) { - - this.panner.maxDistance = value; - - return this; - - }, - - setDirectionalCone: function ( coneInnerAngle, coneOuterAngle, coneOuterGain ) { - - this.panner.coneInnerAngle = coneInnerAngle; - this.panner.coneOuterAngle = coneOuterAngle; - this.panner.coneOuterGain = coneOuterGain; - - return this; - - }, - - updateMatrixWorld: ( function () { - - var position = new Vector3(); - var quaternion = new Quaternion(); - var scale = new Vector3(); - - var orientation = new Vector3(); - - return function updateMatrixWorld( force ) { - - Object3D.prototype.updateMatrixWorld.call( this, force ); - - if ( this.hasPlaybackControl === true && this.isPlaying === false ) return; - - this.matrixWorld.decompose( position, quaternion, scale ); - - orientation.set( 0, 0, 1 ).applyQuaternion( quaternion ); - - var panner = this.panner; - - if ( panner.positionX ) { - - // code path for Chrome and Firefox (see #14393) - - var endTime = this.context.currentTime + this.listener.timeDelta; - - panner.positionX.linearRampToValueAtTime( position.x, endTime ); - panner.positionY.linearRampToValueAtTime( position.y, endTime ); - panner.positionZ.linearRampToValueAtTime( position.z, endTime ); - panner.orientationX.linearRampToValueAtTime( orientation.x, endTime ); - panner.orientationY.linearRampToValueAtTime( orientation.y, endTime ); - panner.orientationZ.linearRampToValueAtTime( orientation.z, endTime ); - - } else { - - panner.setPosition( position.x, position.y, position.z ); - panner.setOrientation( orientation.x, orientation.y, orientation.z ); - - } - - }; - - } )() - - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function AudioAnalyser( audio, fftSize ) { - - this.analyser = audio.context.createAnalyser(); - this.analyser.fftSize = fftSize !== undefined ? fftSize : 2048; - - this.data = new Uint8Array( this.analyser.frequencyBinCount ); - - audio.getOutput().connect( this.analyser ); - - } - - Object.assign( AudioAnalyser.prototype, { - - getFrequencyData: function () { - - this.analyser.getByteFrequencyData( this.data ); - - return this.data; - - }, - - getAverageFrequency: function () { - - var value = 0, data = this.getFrequencyData(); - - for ( var i = 0; i < data.length; i ++ ) { - - value += data[ i ]; - - } - - return value / data.length; - - } - - } ); - - /** - * - * Buffered scene graph property that allows weighted accumulation. - * - * - * @author Ben Houston / http://clara.io/ - * @author David Sarno / http://lighthaus.us/ - * @author tschw - */ - - function PropertyMixer( binding, typeName, valueSize ) { - - this.binding = binding; - this.valueSize = valueSize; - - var bufferType = Float64Array, - mixFunction; - - switch ( typeName ) { - - case 'quaternion': - mixFunction = this._slerp; - break; - - case 'string': - case 'bool': - bufferType = Array; - mixFunction = this._select; - break; - - default: - mixFunction = this._lerp; - - } - - this.buffer = new bufferType( valueSize * 4 ); - // layout: [ incoming | accu0 | accu1 | orig ] - // - // interpolators can use .buffer as their .result - // the data then goes to 'incoming' - // - // 'accu0' and 'accu1' are used frame-interleaved for - // the cumulative result and are compared to detect - // changes - // - // 'orig' stores the original state of the property - - this._mixBufferRegion = mixFunction; - - this.cumulativeWeight = 0; - - this.useCount = 0; - this.referenceCount = 0; - - } - - Object.assign( PropertyMixer.prototype, { - - // accumulate data in the 'incoming' region into 'accu' - accumulate: function ( accuIndex, weight ) { - - // note: happily accumulating nothing when weight = 0, the caller knows - // the weight and shouldn't have made the call in the first place - - var buffer = this.buffer, - stride = this.valueSize, - offset = accuIndex * stride + stride, - - currentWeight = this.cumulativeWeight; - - if ( currentWeight === 0 ) { - - // accuN := incoming * weight - - for ( var i = 0; i !== stride; ++ i ) { - - buffer[ offset + i ] = buffer[ i ]; - - } - - currentWeight = weight; - - } else { - - // accuN := accuN + incoming * weight - - currentWeight += weight; - var mix = weight / currentWeight; - this._mixBufferRegion( buffer, offset, 0, mix, stride ); - - } - - this.cumulativeWeight = currentWeight; - - }, - - // apply the state of 'accu' to the binding when accus differ - apply: function ( accuIndex ) { - - var stride = this.valueSize, - buffer = this.buffer, - offset = accuIndex * stride + stride, - - weight = this.cumulativeWeight, - - binding = this.binding; - - this.cumulativeWeight = 0; - - if ( weight < 1 ) { - - // accuN := accuN + original * ( 1 - cumulativeWeight ) - - var originalValueOffset = stride * 3; - - this._mixBufferRegion( - buffer, offset, originalValueOffset, 1 - weight, stride ); - - } - - for ( var i = stride, e = stride + stride; i !== e; ++ i ) { - - if ( buffer[ i ] !== buffer[ i + stride ] ) { - - // value has changed -> update scene graph - - binding.setValue( buffer, offset ); - break; - - } - - } - - }, - - // remember the state of the bound property and copy it to both accus - saveOriginalState: function () { - - var binding = this.binding; - - var buffer = this.buffer, - stride = this.valueSize, - - originalValueOffset = stride * 3; - - binding.getValue( buffer, originalValueOffset ); - - // accu[0..1] := orig -- initially detect changes against the original - for ( var i = stride, e = originalValueOffset; i !== e; ++ i ) { - - buffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ]; - - } - - this.cumulativeWeight = 0; - - }, - - // apply the state previously taken via 'saveOriginalState' to the binding - restoreOriginalState: function () { - - var originalValueOffset = this.valueSize * 3; - this.binding.setValue( this.buffer, originalValueOffset ); - - }, - - - // mix functions - - _select: function ( buffer, dstOffset, srcOffset, t, stride ) { - - if ( t >= 0.5 ) { - - for ( var i = 0; i !== stride; ++ i ) { - - buffer[ dstOffset + i ] = buffer[ srcOffset + i ]; - - } - - } - - }, - - _slerp: function ( buffer, dstOffset, srcOffset, t ) { - - Quaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t ); - - }, - - _lerp: function ( buffer, dstOffset, srcOffset, t, stride ) { - - var s = 1 - t; - - for ( var i = 0; i !== stride; ++ i ) { - - var j = dstOffset + i; - - buffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t; - - } - - } - - } ); - - /** - * - * A reference to a real property in the scene graph. - * - * - * @author Ben Houston / http://clara.io/ - * @author David Sarno / http://lighthaus.us/ - * @author tschw - */ - - // Characters [].:/ are reserved for track binding syntax. - var RESERVED_CHARS_RE = '\\[\\]\\.:\\/'; - - function Composite( targetGroup, path, optionalParsedPath ) { - - var parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path ); - - this._targetGroup = targetGroup; - this._bindings = targetGroup.subscribe_( path, parsedPath ); - - } - - Object.assign( Composite.prototype, { - - getValue: function ( array, offset ) { - - this.bind(); // bind all binding - - var firstValidIndex = this._targetGroup.nCachedObjects_, - binding = this._bindings[ firstValidIndex ]; - - // and only call .getValue on the first - if ( binding !== undefined ) binding.getValue( array, offset ); - - }, - - setValue: function ( array, offset ) { - - var bindings = this._bindings; - - for ( var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) { - - bindings[ i ].setValue( array, offset ); - - } - - }, - - bind: function () { - - var bindings = this._bindings; - - for ( var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) { - - bindings[ i ].bind(); - - } - - }, - - unbind: function () { - - var bindings = this._bindings; - - for ( var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) { - - bindings[ i ].unbind(); - - } - - } - - } ); - - - function PropertyBinding( rootNode, path, parsedPath ) { - - this.path = path; - this.parsedPath = parsedPath || PropertyBinding.parseTrackName( path ); - - this.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode; - - this.rootNode = rootNode; - - } - - Object.assign( PropertyBinding, { - - Composite: Composite, - - create: function ( root, path, parsedPath ) { - - if ( ! ( root && root.isAnimationObjectGroup ) ) { - - return new PropertyBinding( root, path, parsedPath ); - - } else { - - return new PropertyBinding.Composite( root, path, parsedPath ); - - } - - }, - - /** - * Replaces spaces with underscores and removes unsupported characters from - * node names, to ensure compatibility with parseTrackName(). - * - * @param {string} name Node name to be sanitized. - * @return {string} - */ - sanitizeNodeName: ( function () { - - var reservedRe = new RegExp( '[' + RESERVED_CHARS_RE + ']', 'g' ); - - return function sanitizeNodeName( name ) { - - return name.replace( /\s/g, '_' ).replace( reservedRe, '' ); - - }; - - }() ), - - parseTrackName: function () { - - // Attempts to allow node names from any language. ES5's `\w` regexp matches - // only latin characters, and the unicode \p{L} is not yet supported. So - // instead, we exclude reserved characters and match everything else. - var wordChar = '[^' + RESERVED_CHARS_RE + ']'; - var wordCharOrDot = '[^' + RESERVED_CHARS_RE.replace( '\\.', '' ) + ']'; - - // Parent directories, delimited by '/' or ':'. Currently unused, but must - // be matched to parse the rest of the track name. - var directoryRe = /((?:WC+[\/:])*)/.source.replace( 'WC', wordChar ); - - // Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'. - var nodeRe = /(WCOD+)?/.source.replace( 'WCOD', wordCharOrDot ); - - // Object on target node, and accessor. May not contain reserved - // characters. Accessor may contain any character except closing bracket. - var objectRe = /(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace( 'WC', wordChar ); - - // Property and accessor. May not contain reserved characters. Accessor may - // contain any non-bracket characters. - var propertyRe = /\.(WC+)(?:\[(.+)\])?/.source.replace( 'WC', wordChar ); - - var trackRe = new RegExp( '' - + '^' - + directoryRe - + nodeRe - + objectRe - + propertyRe - + '$' - ); - - var supportedObjectNames = [ 'material', 'materials', 'bones' ]; - - return function parseTrackName( trackName ) { - - var matches = trackRe.exec( trackName ); - - if ( ! matches ) { - - throw new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName ); - - } - - var results = { - // directoryName: matches[ 1 ], // (tschw) currently unused - nodeName: matches[ 2 ], - objectName: matches[ 3 ], - objectIndex: matches[ 4 ], - propertyName: matches[ 5 ], // required - propertyIndex: matches[ 6 ] - }; - - var lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' ); - - if ( lastDot !== undefined && lastDot !== - 1 ) { - - var objectName = results.nodeName.substring( lastDot + 1 ); - - // Object names must be checked against a whitelist. Otherwise, there - // is no way to parse 'foo.bar.baz': 'baz' must be a property, but - // 'bar' could be the objectName, or part of a nodeName (which can - // include '.' characters). - if ( supportedObjectNames.indexOf( objectName ) !== - 1 ) { - - results.nodeName = results.nodeName.substring( 0, lastDot ); - results.objectName = objectName; - - } - - } - - if ( results.propertyName === null || results.propertyName.length === 0 ) { - - throw new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName ); - - } - - return results; - - }; - - }(), - - findNode: function ( root, nodeName ) { - - if ( ! nodeName || nodeName === "" || nodeName === "root" || nodeName === "." || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) { - - return root; - - } - - // search into skeleton bones. - if ( root.skeleton ) { - - var bone = root.skeleton.getBoneByName( nodeName ); - - if ( bone !== undefined ) { - - return bone; - - } - - } - - // search into node subtree. - if ( root.children ) { - - var searchNodeSubtree = function ( children ) { - - for ( var i = 0; i < children.length; i ++ ) { - - var childNode = children[ i ]; - - if ( childNode.name === nodeName || childNode.uuid === nodeName ) { - - return childNode; - - } - - var result = searchNodeSubtree( childNode.children ); - - if ( result ) return result; - - } - - return null; - - }; - - var subTreeNode = searchNodeSubtree( root.children ); - - if ( subTreeNode ) { - - return subTreeNode; - - } - - } - - return null; - - } - - } ); - - Object.assign( PropertyBinding.prototype, { // prototype, continued - - // these are used to "bind" a nonexistent property - _getValue_unavailable: function () {}, - _setValue_unavailable: function () {}, - - BindingType: { - Direct: 0, - EntireArray: 1, - ArrayElement: 2, - HasFromToArray: 3 - }, - - Versioning: { - None: 0, - NeedsUpdate: 1, - MatrixWorldNeedsUpdate: 2 - }, - - GetterByBindingType: [ - - function getValue_direct( buffer, offset ) { - - buffer[ offset ] = this.node[ this.propertyName ]; - - }, - - function getValue_array( buffer, offset ) { - - var source = this.resolvedProperty; - - for ( var i = 0, n = source.length; i !== n; ++ i ) { - - buffer[ offset ++ ] = source[ i ]; - - } - - }, - - function getValue_arrayElement( buffer, offset ) { - - buffer[ offset ] = this.resolvedProperty[ this.propertyIndex ]; - - }, - - function getValue_toArray( buffer, offset ) { - - this.resolvedProperty.toArray( buffer, offset ); - - } - - ], - - SetterByBindingTypeAndVersioning: [ - - [ - // Direct - - function setValue_direct( buffer, offset ) { - - this.targetObject[ this.propertyName ] = buffer[ offset ]; - - }, - - function setValue_direct_setNeedsUpdate( buffer, offset ) { - - this.targetObject[ this.propertyName ] = buffer[ offset ]; - this.targetObject.needsUpdate = true; - - }, - - function setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) { - - this.targetObject[ this.propertyName ] = buffer[ offset ]; - this.targetObject.matrixWorldNeedsUpdate = true; - - } - - ], [ - - // EntireArray - - function setValue_array( buffer, offset ) { - - var dest = this.resolvedProperty; - - for ( var i = 0, n = dest.length; i !== n; ++ i ) { - - dest[ i ] = buffer[ offset ++ ]; - - } - - }, - - function setValue_array_setNeedsUpdate( buffer, offset ) { - - var dest = this.resolvedProperty; - - for ( var i = 0, n = dest.length; i !== n; ++ i ) { - - dest[ i ] = buffer[ offset ++ ]; - - } - - this.targetObject.needsUpdate = true; - - }, - - function setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) { - - var dest = this.resolvedProperty; - - for ( var i = 0, n = dest.length; i !== n; ++ i ) { - - dest[ i ] = buffer[ offset ++ ]; - - } - - this.targetObject.matrixWorldNeedsUpdate = true; - - } - - ], [ - - // ArrayElement - - function setValue_arrayElement( buffer, offset ) { - - this.resolvedProperty[ this.propertyIndex ] = buffer[ offset ]; - - }, - - function setValue_arrayElement_setNeedsUpdate( buffer, offset ) { - - this.resolvedProperty[ this.propertyIndex ] = buffer[ offset ]; - this.targetObject.needsUpdate = true; - - }, - - function setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) { - - this.resolvedProperty[ this.propertyIndex ] = buffer[ offset ]; - this.targetObject.matrixWorldNeedsUpdate = true; - - } - - ], [ - - // HasToFromArray - - function setValue_fromArray( buffer, offset ) { - - this.resolvedProperty.fromArray( buffer, offset ); - - }, - - function setValue_fromArray_setNeedsUpdate( buffer, offset ) { - - this.resolvedProperty.fromArray( buffer, offset ); - this.targetObject.needsUpdate = true; - - }, - - function setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) { - - this.resolvedProperty.fromArray( buffer, offset ); - this.targetObject.matrixWorldNeedsUpdate = true; - - } - - ] - - ], - - getValue: function getValue_unbound( targetArray, offset ) { - - this.bind(); - this.getValue( targetArray, offset ); - - // Note: This class uses a State pattern on a per-method basis: - // 'bind' sets 'this.getValue' / 'setValue' and shadows the - // prototype version of these methods with one that represents - // the bound state. When the property is not found, the methods - // become no-ops. - - }, - - setValue: function getValue_unbound( sourceArray, offset ) { - - this.bind(); - this.setValue( sourceArray, offset ); - - }, - - // create getter / setter pair for a property in the scene graph - bind: function () { - - var targetObject = this.node, - parsedPath = this.parsedPath, - - objectName = parsedPath.objectName, - propertyName = parsedPath.propertyName, - propertyIndex = parsedPath.propertyIndex; - - if ( ! targetObject ) { - - targetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode; - - this.node = targetObject; - - } - - // set fail state so we can just 'return' on error - this.getValue = this._getValue_unavailable; - this.setValue = this._setValue_unavailable; - - // ensure there is a value node - if ( ! targetObject ) { - - console.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\'t found.' ); - return; - - } - - if ( objectName ) { - - var objectIndex = parsedPath.objectIndex; - - // special cases were we need to reach deeper into the hierarchy to get the face materials.... - switch ( objectName ) { - - case 'materials': - - if ( ! targetObject.material ) { - - console.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this ); - return; - - } - - if ( ! targetObject.material.materials ) { - - console.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this ); - return; - - } - - targetObject = targetObject.material.materials; - - break; - - case 'bones': - - if ( ! targetObject.skeleton ) { - - console.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this ); - return; - - } - - // potential future optimization: skip this if propertyIndex is already an integer - // and convert the integer string to a true integer. - - targetObject = targetObject.skeleton.bones; - - // support resolving morphTarget names into indices. - for ( var i = 0; i < targetObject.length; i ++ ) { - - if ( targetObject[ i ].name === objectIndex ) { - - objectIndex = i; - break; - - } - - } - - break; - - default: - - if ( targetObject[ objectName ] === undefined ) { - - console.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this ); - return; - - } - - targetObject = targetObject[ objectName ]; - - } - - - if ( objectIndex !== undefined ) { - - if ( targetObject[ objectIndex ] === undefined ) { - - console.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject ); - return; - - } - - targetObject = targetObject[ objectIndex ]; - - } - - } - - // resolve property - var nodeProperty = targetObject[ propertyName ]; - - if ( nodeProperty === undefined ) { - - var nodeName = parsedPath.nodeName; - - console.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName + - '.' + propertyName + ' but it wasn\'t found.', targetObject ); - return; - - } - - // determine versioning scheme - var versioning = this.Versioning.None; - - this.targetObject = targetObject; - - if ( targetObject.needsUpdate !== undefined ) { // material - - versioning = this.Versioning.NeedsUpdate; - - } else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform - - versioning = this.Versioning.MatrixWorldNeedsUpdate; - - } - - // determine how the property gets bound - var bindingType = this.BindingType.Direct; - - if ( propertyIndex !== undefined ) { - - // access a sub element of the property array (only primitives are supported right now) - - if ( propertyName === "morphTargetInfluences" ) { - - // potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer. - - // support resolving morphTarget names into indices. - if ( ! targetObject.geometry ) { - - console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this ); - return; - - } - - if ( targetObject.geometry.isBufferGeometry ) { - - if ( ! targetObject.geometry.morphAttributes ) { - - console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this ); - return; - - } - - for ( var i = 0; i < this.node.geometry.morphAttributes.position.length; i ++ ) { - - if ( targetObject.geometry.morphAttributes.position[ i ].name === propertyIndex ) { - - propertyIndex = i; - break; - - } - - } - - - } else { - - if ( ! targetObject.geometry.morphTargets ) { - - console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphTargets.', this ); - return; - - } - - for ( var i = 0; i < this.node.geometry.morphTargets.length; i ++ ) { - - if ( targetObject.geometry.morphTargets[ i ].name === propertyIndex ) { - - propertyIndex = i; - break; - - } - - } - - } - - } - - bindingType = this.BindingType.ArrayElement; - - this.resolvedProperty = nodeProperty; - this.propertyIndex = propertyIndex; - - } else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) { - - // must use copy for Object3D.Euler/Quaternion - - bindingType = this.BindingType.HasFromToArray; - - this.resolvedProperty = nodeProperty; - - } else if ( Array.isArray( nodeProperty ) ) { - - bindingType = this.BindingType.EntireArray; - - this.resolvedProperty = nodeProperty; - - } else { - - this.propertyName = propertyName; - - } - - // select getter / setter - this.getValue = this.GetterByBindingType[ bindingType ]; - this.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ]; - - }, - - unbind: function () { - - this.node = null; - - // back to the prototype version of getValue / setValue - // note: avoiding to mutate the shape of 'this' via 'delete' - this.getValue = this._getValue_unbound; - this.setValue = this._setValue_unbound; - - } - - } ); - - //!\ DECLARE ALIAS AFTER assign prototype ! - Object.assign( PropertyBinding.prototype, { - - // initial state of these methods that calls 'bind' - _getValue_unbound: PropertyBinding.prototype.getValue, - _setValue_unbound: PropertyBinding.prototype.setValue, - - } ); - - /** - * - * A group of objects that receives a shared animation state. - * - * Usage: - * - * - Add objects you would otherwise pass as 'root' to the - * constructor or the .clipAction method of AnimationMixer. - * - * - Instead pass this object as 'root'. - * - * - You can also add and remove objects later when the mixer - * is running. - * - * Note: - * - * Objects of this class appear as one object to the mixer, - * so cache control of the individual objects must be done - * on the group. - * - * Limitation: - * - * - The animated properties must be compatible among the - * all objects in the group. - * - * - A single property can either be controlled through a - * target group or directly, but not both. - * - * @author tschw - */ - - function AnimationObjectGroup() { - - this.uuid = _Math.generateUUID(); - - // cached objects followed by the active ones - this._objects = Array.prototype.slice.call( arguments ); - - this.nCachedObjects_ = 0; // threshold - // note: read by PropertyBinding.Composite - - var indices = {}; - this._indicesByUUID = indices; // for bookkeeping - - for ( var i = 0, n = arguments.length; i !== n; ++ i ) { - - indices[ arguments[ i ].uuid ] = i; - - } - - this._paths = []; // inside: string - this._parsedPaths = []; // inside: { we don't care, here } - this._bindings = []; // inside: Array< PropertyBinding > - this._bindingsIndicesByPath = {}; // inside: indices in these arrays - - var scope = this; - - this.stats = { - - objects: { - get total() { - - return scope._objects.length; - - }, - get inUse() { - - return this.total - scope.nCachedObjects_; - - } - }, - get bindingsPerObject() { - - return scope._bindings.length; - - } - - }; - - } - - Object.assign( AnimationObjectGroup.prototype, { - - isAnimationObjectGroup: true, - - add: function () { - - var objects = this._objects, - nObjects = objects.length, - nCachedObjects = this.nCachedObjects_, - indicesByUUID = this._indicesByUUID, - paths = this._paths, - parsedPaths = this._parsedPaths, - bindings = this._bindings, - nBindings = bindings.length, - knownObject = undefined; - - for ( var i = 0, n = arguments.length; i !== n; ++ i ) { - - var object = arguments[ i ], - uuid = object.uuid, - index = indicesByUUID[ uuid ]; - - if ( index === undefined ) { - - // unknown object -> add it to the ACTIVE region - - index = nObjects ++; - indicesByUUID[ uuid ] = index; - objects.push( object ); - - // accounting is done, now do the same for all bindings - - for ( var j = 0, m = nBindings; j !== m; ++ j ) { - - bindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) ); - - } - - } else if ( index < nCachedObjects ) { - - knownObject = objects[ index ]; - - // move existing object to the ACTIVE region - - var firstActiveIndex = -- nCachedObjects, - lastCachedObject = objects[ firstActiveIndex ]; - - indicesByUUID[ lastCachedObject.uuid ] = index; - objects[ index ] = lastCachedObject; - - indicesByUUID[ uuid ] = firstActiveIndex; - objects[ firstActiveIndex ] = object; - - // accounting is done, now do the same for all bindings - - for ( var j = 0, m = nBindings; j !== m; ++ j ) { - - var bindingsForPath = bindings[ j ], - lastCached = bindingsForPath[ firstActiveIndex ], - binding = bindingsForPath[ index ]; - - bindingsForPath[ index ] = lastCached; - - if ( binding === undefined ) { - - // since we do not bother to create new bindings - // for objects that are cached, the binding may - // or may not exist - - binding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ); - - } - - bindingsForPath[ firstActiveIndex ] = binding; - - } - - } else if ( objects[ index ] !== knownObject ) { - - console.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' + - 'detected. Clean the caches or recreate your infrastructure when reloading scenes.' ); - - } // else the object is already where we want it to be - - } // for arguments - - this.nCachedObjects_ = nCachedObjects; - - }, - - remove: function () { - - var objects = this._objects, - nCachedObjects = this.nCachedObjects_, - indicesByUUID = this._indicesByUUID, - bindings = this._bindings, - nBindings = bindings.length; - - for ( var i = 0, n = arguments.length; i !== n; ++ i ) { - - var object = arguments[ i ], - uuid = object.uuid, - index = indicesByUUID[ uuid ]; - - if ( index !== undefined && index >= nCachedObjects ) { - - // move existing object into the CACHED region - - var lastCachedIndex = nCachedObjects ++, - firstActiveObject = objects[ lastCachedIndex ]; - - indicesByUUID[ firstActiveObject.uuid ] = index; - objects[ index ] = firstActiveObject; - - indicesByUUID[ uuid ] = lastCachedIndex; - objects[ lastCachedIndex ] = object; - - // accounting is done, now do the same for all bindings - - for ( var j = 0, m = nBindings; j !== m; ++ j ) { - - var bindingsForPath = bindings[ j ], - firstActive = bindingsForPath[ lastCachedIndex ], - binding = bindingsForPath[ index ]; - - bindingsForPath[ index ] = firstActive; - bindingsForPath[ lastCachedIndex ] = binding; - - } - - } - - } // for arguments - - this.nCachedObjects_ = nCachedObjects; - - }, - - // remove & forget - uncache: function () { - - var objects = this._objects, - nObjects = objects.length, - nCachedObjects = this.nCachedObjects_, - indicesByUUID = this._indicesByUUID, - bindings = this._bindings, - nBindings = bindings.length; - - for ( var i = 0, n = arguments.length; i !== n; ++ i ) { - - var object = arguments[ i ], - uuid = object.uuid, - index = indicesByUUID[ uuid ]; - - if ( index !== undefined ) { - - delete indicesByUUID[ uuid ]; - - if ( index < nCachedObjects ) { - - // object is cached, shrink the CACHED region - - var firstActiveIndex = -- nCachedObjects, - lastCachedObject = objects[ firstActiveIndex ], - lastIndex = -- nObjects, - lastObject = objects[ lastIndex ]; - - // last cached object takes this object's place - indicesByUUID[ lastCachedObject.uuid ] = index; - objects[ index ] = lastCachedObject; - - // last object goes to the activated slot and pop - indicesByUUID[ lastObject.uuid ] = firstActiveIndex; - objects[ firstActiveIndex ] = lastObject; - objects.pop(); - - // accounting is done, now do the same for all bindings - - for ( var j = 0, m = nBindings; j !== m; ++ j ) { - - var bindingsForPath = bindings[ j ], - lastCached = bindingsForPath[ firstActiveIndex ], - last = bindingsForPath[ lastIndex ]; - - bindingsForPath[ index ] = lastCached; - bindingsForPath[ firstActiveIndex ] = last; - bindingsForPath.pop(); - - } - - } else { - - // object is active, just swap with the last and pop - - var lastIndex = -- nObjects, - lastObject = objects[ lastIndex ]; - - indicesByUUID[ lastObject.uuid ] = index; - objects[ index ] = lastObject; - objects.pop(); - - // accounting is done, now do the same for all bindings - - for ( var j = 0, m = nBindings; j !== m; ++ j ) { - - var bindingsForPath = bindings[ j ]; - - bindingsForPath[ index ] = bindingsForPath[ lastIndex ]; - bindingsForPath.pop(); - - } - - } // cached or active - - } // if object is known - - } // for arguments - - this.nCachedObjects_ = nCachedObjects; - - }, - - // Internal interface used by befriended PropertyBinding.Composite: - - subscribe_: function ( path, parsedPath ) { - - // returns an array of bindings for the given path that is changed - // according to the contained objects in the group - - var indicesByPath = this._bindingsIndicesByPath, - index = indicesByPath[ path ], - bindings = this._bindings; - - if ( index !== undefined ) return bindings[ index ]; - - var paths = this._paths, - parsedPaths = this._parsedPaths, - objects = this._objects, - nObjects = objects.length, - nCachedObjects = this.nCachedObjects_, - bindingsForPath = new Array( nObjects ); - - index = bindings.length; - - indicesByPath[ path ] = index; - - paths.push( path ); - parsedPaths.push( parsedPath ); - bindings.push( bindingsForPath ); - - for ( var i = nCachedObjects, n = objects.length; i !== n; ++ i ) { - - var object = objects[ i ]; - bindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath ); - - } - - return bindingsForPath; - - }, - - unsubscribe_: function ( path ) { - - // tells the group to forget about a property path and no longer - // update the array previously obtained with 'subscribe_' - - var indicesByPath = this._bindingsIndicesByPath, - index = indicesByPath[ path ]; - - if ( index !== undefined ) { - - var paths = this._paths, - parsedPaths = this._parsedPaths, - bindings = this._bindings, - lastBindingsIndex = bindings.length - 1, - lastBindings = bindings[ lastBindingsIndex ], - lastBindingsPath = path[ lastBindingsIndex ]; - - indicesByPath[ lastBindingsPath ] = index; - - bindings[ index ] = lastBindings; - bindings.pop(); - - parsedPaths[ index ] = parsedPaths[ lastBindingsIndex ]; - parsedPaths.pop(); - - paths[ index ] = paths[ lastBindingsIndex ]; - paths.pop(); - - } - - } - - } ); - - /** - * - * Action provided by AnimationMixer for scheduling clip playback on specific - * objects. - * - * @author Ben Houston / http://clara.io/ - * @author David Sarno / http://lighthaus.us/ - * @author tschw - * - */ - - function AnimationAction( mixer, clip, localRoot ) { - - this._mixer = mixer; - this._clip = clip; - this._localRoot = localRoot || null; - - var tracks = clip.tracks, - nTracks = tracks.length, - interpolants = new Array( nTracks ); - - var interpolantSettings = { - endingStart: ZeroCurvatureEnding, - endingEnd: ZeroCurvatureEnding - }; - - for ( var i = 0; i !== nTracks; ++ i ) { - - var interpolant = tracks[ i ].createInterpolant( null ); - interpolants[ i ] = interpolant; - interpolant.settings = interpolantSettings; - - } - - this._interpolantSettings = interpolantSettings; - - this._interpolants = interpolants; // bound by the mixer - - // inside: PropertyMixer (managed by the mixer) - this._propertyBindings = new Array( nTracks ); - - this._cacheIndex = null; // for the memory manager - this._byClipCacheIndex = null; // for the memory manager - - this._timeScaleInterpolant = null; - this._weightInterpolant = null; - - this.loop = LoopRepeat; - this._loopCount = - 1; - - // global mixer time when the action is to be started - // it's set back to 'null' upon start of the action - this._startTime = null; - - // scaled local time of the action - // gets clamped or wrapped to 0..clip.duration according to loop - this.time = 0; - - this.timeScale = 1; - this._effectiveTimeScale = 1; - - this.weight = 1; - this._effectiveWeight = 1; - - this.repetitions = Infinity; // no. of repetitions when looping - - this.paused = false; // true -> zero effective time scale - this.enabled = true; // false -> zero effective weight - - this.clampWhenFinished = false;// keep feeding the last frame? - - this.zeroSlopeAtStart = true;// for smooth interpolation w/o separate - this.zeroSlopeAtEnd = true;// clips for start, loop and end - - } - - Object.assign( AnimationAction.prototype, { - - // State & Scheduling - - play: function () { - - this._mixer._activateAction( this ); - - return this; - - }, - - stop: function () { - - this._mixer._deactivateAction( this ); - - return this.reset(); - - }, - - reset: function () { - - this.paused = false; - this.enabled = true; - - this.time = 0; // restart clip - this._loopCount = - 1;// forget previous loops - this._startTime = null;// forget scheduling - - return this.stopFading().stopWarping(); - - }, - - isRunning: function () { - - return this.enabled && ! this.paused && this.timeScale !== 0 && - this._startTime === null && this._mixer._isActiveAction( this ); - - }, - - // return true when play has been called - isScheduled: function () { - - return this._mixer._isActiveAction( this ); - - }, - - startAt: function ( time ) { - - this._startTime = time; - - return this; - - }, - - setLoop: function ( mode, repetitions ) { - - this.loop = mode; - this.repetitions = repetitions; - - return this; - - }, - - // Weight - - // set the weight stopping any scheduled fading - // although .enabled = false yields an effective weight of zero, this - // method does *not* change .enabled, because it would be confusing - setEffectiveWeight: function ( weight ) { - - this.weight = weight; - - // note: same logic as when updated at runtime - this._effectiveWeight = this.enabled ? weight : 0; - - return this.stopFading(); - - }, - - // return the weight considering fading and .enabled - getEffectiveWeight: function () { - - return this._effectiveWeight; - - }, - - fadeIn: function ( duration ) { - - return this._scheduleFading( duration, 0, 1 ); - - }, - - fadeOut: function ( duration ) { - - return this._scheduleFading( duration, 1, 0 ); - - }, - - crossFadeFrom: function ( fadeOutAction, duration, warp ) { - - fadeOutAction.fadeOut( duration ); - this.fadeIn( duration ); - - if ( warp ) { - - var fadeInDuration = this._clip.duration, - fadeOutDuration = fadeOutAction._clip.duration, - - startEndRatio = fadeOutDuration / fadeInDuration, - endStartRatio = fadeInDuration / fadeOutDuration; - - fadeOutAction.warp( 1.0, startEndRatio, duration ); - this.warp( endStartRatio, 1.0, duration ); - - } - - return this; - - }, - - crossFadeTo: function ( fadeInAction, duration, warp ) { - - return fadeInAction.crossFadeFrom( this, duration, warp ); - - }, - - stopFading: function () { - - var weightInterpolant = this._weightInterpolant; - - if ( weightInterpolant !== null ) { - - this._weightInterpolant = null; - this._mixer._takeBackControlInterpolant( weightInterpolant ); - - } - - return this; - - }, - - // Time Scale Control - - // set the time scale stopping any scheduled warping - // although .paused = true yields an effective time scale of zero, this - // method does *not* change .paused, because it would be confusing - setEffectiveTimeScale: function ( timeScale ) { - - this.timeScale = timeScale; - this._effectiveTimeScale = this.paused ? 0 : timeScale; - - return this.stopWarping(); - - }, - - // return the time scale considering warping and .paused - getEffectiveTimeScale: function () { - - return this._effectiveTimeScale; - - }, - - setDuration: function ( duration ) { - - this.timeScale = this._clip.duration / duration; - - return this.stopWarping(); - - }, - - syncWith: function ( action ) { - - this.time = action.time; - this.timeScale = action.timeScale; - - return this.stopWarping(); - - }, - - halt: function ( duration ) { - - return this.warp( this._effectiveTimeScale, 0, duration ); - - }, - - warp: function ( startTimeScale, endTimeScale, duration ) { - - var mixer = this._mixer, now = mixer.time, - interpolant = this._timeScaleInterpolant, - - timeScale = this.timeScale; - - if ( interpolant === null ) { - - interpolant = mixer._lendControlInterpolant(); - this._timeScaleInterpolant = interpolant; - - } - - var times = interpolant.parameterPositions, - values = interpolant.sampleValues; - - times[ 0 ] = now; - times[ 1 ] = now + duration; - - values[ 0 ] = startTimeScale / timeScale; - values[ 1 ] = endTimeScale / timeScale; - - return this; - - }, - - stopWarping: function () { - - var timeScaleInterpolant = this._timeScaleInterpolant; - - if ( timeScaleInterpolant !== null ) { - - this._timeScaleInterpolant = null; - this._mixer._takeBackControlInterpolant( timeScaleInterpolant ); - - } - - return this; - - }, - - // Object Accessors - - getMixer: function () { - - return this._mixer; - - }, - - getClip: function () { - - return this._clip; - - }, - - getRoot: function () { - - return this._localRoot || this._mixer._root; - - }, - - // Interna - - _update: function ( time, deltaTime, timeDirection, accuIndex ) { - - // called by the mixer - - if ( ! this.enabled ) { - - // call ._updateWeight() to update ._effectiveWeight - - this._updateWeight( time ); - return; - - } - - var startTime = this._startTime; - - if ( startTime !== null ) { - - // check for scheduled start of action - - var timeRunning = ( time - startTime ) * timeDirection; - if ( timeRunning < 0 || timeDirection === 0 ) { - - return; // yet to come / don't decide when delta = 0 - - } - - // start - - this._startTime = null; // unschedule - deltaTime = timeDirection * timeRunning; - - } - - // apply time scale and advance time - - deltaTime *= this._updateTimeScale( time ); - var clipTime = this._updateTime( deltaTime ); - - // note: _updateTime may disable the action resulting in - // an effective weight of 0 - - var weight = this._updateWeight( time ); - - if ( weight > 0 ) { - - var interpolants = this._interpolants; - var propertyMixers = this._propertyBindings; - - for ( var j = 0, m = interpolants.length; j !== m; ++ j ) { - - interpolants[ j ].evaluate( clipTime ); - propertyMixers[ j ].accumulate( accuIndex, weight ); - - } - - } - - }, - - _updateWeight: function ( time ) { - - var weight = 0; - - if ( this.enabled ) { - - weight = this.weight; - var interpolant = this._weightInterpolant; - - if ( interpolant !== null ) { - - var interpolantValue = interpolant.evaluate( time )[ 0 ]; - - weight *= interpolantValue; - - if ( time > interpolant.parameterPositions[ 1 ] ) { - - this.stopFading(); - - if ( interpolantValue === 0 ) { - - // faded out, disable - this.enabled = false; - - } - - } - - } - - } - - this._effectiveWeight = weight; - return weight; - - }, - - _updateTimeScale: function ( time ) { - - var timeScale = 0; - - if ( ! this.paused ) { - - timeScale = this.timeScale; - - var interpolant = this._timeScaleInterpolant; - - if ( interpolant !== null ) { - - var interpolantValue = interpolant.evaluate( time )[ 0 ]; - - timeScale *= interpolantValue; - - if ( time > interpolant.parameterPositions[ 1 ] ) { - - this.stopWarping(); - - if ( timeScale === 0 ) { - - // motion has halted, pause - this.paused = true; - - } else { - - // warp done - apply final time scale - this.timeScale = timeScale; - - } - - } - - } - - } - - this._effectiveTimeScale = timeScale; - return timeScale; - - }, - - _updateTime: function ( deltaTime ) { - - var time = this.time + deltaTime; - var duration = this._clip.duration; - var loop = this.loop; - var loopCount = this._loopCount; - - var pingPong = ( loop === LoopPingPong ); - - if ( deltaTime === 0 ) { - - if ( loopCount === - 1 ) return time; - - return ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time; - - } - - if ( loop === LoopOnce ) { - - if ( loopCount === - 1 ) { - - // just started - - this._loopCount = 0; - this._setEndings( true, true, false ); - - } - - handle_stop: { - - if ( time >= duration ) { - - time = duration; - - } else if ( time < 0 ) { - - time = 0; - - } else { - - this.time = time; - - break handle_stop; - - } - - if ( this.clampWhenFinished ) this.paused = true; - else this.enabled = false; - - this.time = time; - - this._mixer.dispatchEvent( { - type: 'finished', action: this, - direction: deltaTime < 0 ? - 1 : 1 - } ); - - } - - } else { // repetitive Repeat or PingPong - - if ( loopCount === - 1 ) { - - // just started - - if ( deltaTime >= 0 ) { - - loopCount = 0; - - this._setEndings( true, this.repetitions === 0, pingPong ); - - } else { - - // when looping in reverse direction, the initial - // transition through zero counts as a repetition, - // so leave loopCount at -1 - - this._setEndings( this.repetitions === 0, true, pingPong ); - - } - - } - - if ( time >= duration || time < 0 ) { - - // wrap around - - var loopDelta = Math.floor( time / duration ); // signed - time -= duration * loopDelta; - - loopCount += Math.abs( loopDelta ); - - var pending = this.repetitions - loopCount; - - if ( pending <= 0 ) { - - // have to stop (switch state, clamp time, fire event) - - if ( this.clampWhenFinished ) this.paused = true; - else this.enabled = false; - - time = deltaTime > 0 ? duration : 0; - - this.time = time; - - this._mixer.dispatchEvent( { - type: 'finished', action: this, - direction: deltaTime > 0 ? 1 : - 1 - } ); - - } else { - - // keep running - - if ( pending === 1 ) { - - // entering the last round - - var atStart = deltaTime < 0; - this._setEndings( atStart, ! atStart, pingPong ); - - } else { - - this._setEndings( false, false, pingPong ); - - } - - this._loopCount = loopCount; - - this.time = time; - - this._mixer.dispatchEvent( { - type: 'loop', action: this, loopDelta: loopDelta - } ); - - } - - } else { - - this.time = time; - - } - - if ( pingPong && ( loopCount & 1 ) === 1 ) { - - // invert time for the "pong round" - - return duration - time; - - } - - } - - return time; - - }, - - _setEndings: function ( atStart, atEnd, pingPong ) { - - var settings = this._interpolantSettings; - - if ( pingPong ) { - - settings.endingStart = ZeroSlopeEnding; - settings.endingEnd = ZeroSlopeEnding; - - } else { - - // assuming for LoopOnce atStart == atEnd == true - - if ( atStart ) { - - settings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding; - - } else { - - settings.endingStart = WrapAroundEnding; - - } - - if ( atEnd ) { - - settings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding; - - } else { - - settings.endingEnd = WrapAroundEnding; - - } - - } - - }, - - _scheduleFading: function ( duration, weightNow, weightThen ) { - - var mixer = this._mixer, now = mixer.time, - interpolant = this._weightInterpolant; - - if ( interpolant === null ) { - - interpolant = mixer._lendControlInterpolant(); - this._weightInterpolant = interpolant; - - } - - var times = interpolant.parameterPositions, - values = interpolant.sampleValues; - - times[ 0 ] = now; - values[ 0 ] = weightNow; - times[ 1 ] = now + duration; - values[ 1 ] = weightThen; - - return this; - - } - - } ); - - /** - * - * Player for AnimationClips. - * - * - * @author Ben Houston / http://clara.io/ - * @author David Sarno / http://lighthaus.us/ - * @author tschw - */ - - function AnimationMixer( root ) { - - this._root = root; - this._initMemoryManager(); - this._accuIndex = 0; - - this.time = 0; - - this.timeScale = 1.0; - - } - - AnimationMixer.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { - - constructor: AnimationMixer, - - _bindAction: function ( action, prototypeAction ) { - - var root = action._localRoot || this._root, - tracks = action._clip.tracks, - nTracks = tracks.length, - bindings = action._propertyBindings, - interpolants = action._interpolants, - rootUuid = root.uuid, - bindingsByRoot = this._bindingsByRootAndName, - bindingsByName = bindingsByRoot[ rootUuid ]; - - if ( bindingsByName === undefined ) { - - bindingsByName = {}; - bindingsByRoot[ rootUuid ] = bindingsByName; - - } - - for ( var i = 0; i !== nTracks; ++ i ) { - - var track = tracks[ i ], - trackName = track.name, - binding = bindingsByName[ trackName ]; - - if ( binding !== undefined ) { - - bindings[ i ] = binding; - - } else { - - binding = bindings[ i ]; - - if ( binding !== undefined ) { - - // existing binding, make sure the cache knows - - if ( binding._cacheIndex === null ) { - - ++ binding.referenceCount; - this._addInactiveBinding( binding, rootUuid, trackName ); - - } - - continue; - - } - - var path = prototypeAction && prototypeAction. - _propertyBindings[ i ].binding.parsedPath; - - binding = new PropertyMixer( - PropertyBinding.create( root, trackName, path ), - track.ValueTypeName, track.getValueSize() ); - - ++ binding.referenceCount; - this._addInactiveBinding( binding, rootUuid, trackName ); - - bindings[ i ] = binding; - - } - - interpolants[ i ].resultBuffer = binding.buffer; - - } - - }, - - _activateAction: function ( action ) { - - if ( ! this._isActiveAction( action ) ) { - - if ( action._cacheIndex === null ) { - - // this action has been forgotten by the cache, but the user - // appears to be still using it -> rebind - - var rootUuid = ( action._localRoot || this._root ).uuid, - clipUuid = action._clip.uuid, - actionsForClip = this._actionsByClip[ clipUuid ]; - - this._bindAction( action, - actionsForClip && actionsForClip.knownActions[ 0 ] ); - - this._addInactiveAction( action, clipUuid, rootUuid ); - - } - - var bindings = action._propertyBindings; - - // increment reference counts / sort out state - for ( var i = 0, n = bindings.length; i !== n; ++ i ) { - - var binding = bindings[ i ]; - - if ( binding.useCount ++ === 0 ) { - - this._lendBinding( binding ); - binding.saveOriginalState(); - - } - - } - - this._lendAction( action ); - - } - - }, - - _deactivateAction: function ( action ) { - - if ( this._isActiveAction( action ) ) { - - var bindings = action._propertyBindings; - - // decrement reference counts / sort out state - for ( var i = 0, n = bindings.length; i !== n; ++ i ) { - - var binding = bindings[ i ]; - - if ( -- binding.useCount === 0 ) { - - binding.restoreOriginalState(); - this._takeBackBinding( binding ); - - } - - } - - this._takeBackAction( action ); - - } - - }, - - // Memory manager - - _initMemoryManager: function () { - - this._actions = []; // 'nActiveActions' followed by inactive ones - this._nActiveActions = 0; - - this._actionsByClip = {}; - // inside: - // { - // knownActions: Array< AnimationAction > - used as prototypes - // actionByRoot: AnimationAction - lookup - // } - - - this._bindings = []; // 'nActiveBindings' followed by inactive ones - this._nActiveBindings = 0; - - this._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer > - - - this._controlInterpolants = []; // same game as above - this._nActiveControlInterpolants = 0; - - var scope = this; - - this.stats = { - - actions: { - get total() { - - return scope._actions.length; - - }, - get inUse() { - - return scope._nActiveActions; - - } - }, - bindings: { - get total() { - - return scope._bindings.length; - - }, - get inUse() { - - return scope._nActiveBindings; - - } - }, - controlInterpolants: { - get total() { - - return scope._controlInterpolants.length; - - }, - get inUse() { - - return scope._nActiveControlInterpolants; - - } - } - - }; - - }, - - // Memory management for AnimationAction objects - - _isActiveAction: function ( action ) { - - var index = action._cacheIndex; - return index !== null && index < this._nActiveActions; - - }, - - _addInactiveAction: function ( action, clipUuid, rootUuid ) { - - var actions = this._actions, - actionsByClip = this._actionsByClip, - actionsForClip = actionsByClip[ clipUuid ]; - - if ( actionsForClip === undefined ) { - - actionsForClip = { - - knownActions: [ action ], - actionByRoot: {} - - }; - - action._byClipCacheIndex = 0; - - actionsByClip[ clipUuid ] = actionsForClip; - - } else { - - var knownActions = actionsForClip.knownActions; - - action._byClipCacheIndex = knownActions.length; - knownActions.push( action ); - - } - - action._cacheIndex = actions.length; - actions.push( action ); - - actionsForClip.actionByRoot[ rootUuid ] = action; - - }, - - _removeInactiveAction: function ( action ) { - - var actions = this._actions, - lastInactiveAction = actions[ actions.length - 1 ], - cacheIndex = action._cacheIndex; - - lastInactiveAction._cacheIndex = cacheIndex; - actions[ cacheIndex ] = lastInactiveAction; - actions.pop(); - - action._cacheIndex = null; - - - var clipUuid = action._clip.uuid, - actionsByClip = this._actionsByClip, - actionsForClip = actionsByClip[ clipUuid ], - knownActionsForClip = actionsForClip.knownActions, - - lastKnownAction = - knownActionsForClip[ knownActionsForClip.length - 1 ], - - byClipCacheIndex = action._byClipCacheIndex; - - lastKnownAction._byClipCacheIndex = byClipCacheIndex; - knownActionsForClip[ byClipCacheIndex ] = lastKnownAction; - knownActionsForClip.pop(); - - action._byClipCacheIndex = null; - - - var actionByRoot = actionsForClip.actionByRoot, - rootUuid = ( action._localRoot || this._root ).uuid; - - delete actionByRoot[ rootUuid ]; - - if ( knownActionsForClip.length === 0 ) { - - delete actionsByClip[ clipUuid ]; - - } - - this._removeInactiveBindingsForAction( action ); - - }, - - _removeInactiveBindingsForAction: function ( action ) { - - var bindings = action._propertyBindings; - for ( var i = 0, n = bindings.length; i !== n; ++ i ) { - - var binding = bindings[ i ]; - - if ( -- binding.referenceCount === 0 ) { - - this._removeInactiveBinding( binding ); - - } - - } - - }, - - _lendAction: function ( action ) { - - // [ active actions | inactive actions ] - // [ active actions >| inactive actions ] - // s a - // <-swap-> - // a s - - var actions = this._actions, - prevIndex = action._cacheIndex, - - lastActiveIndex = this._nActiveActions ++, - - firstInactiveAction = actions[ lastActiveIndex ]; - - action._cacheIndex = lastActiveIndex; - actions[ lastActiveIndex ] = action; - - firstInactiveAction._cacheIndex = prevIndex; - actions[ prevIndex ] = firstInactiveAction; - - }, - - _takeBackAction: function ( action ) { - - // [ active actions | inactive actions ] - // [ active actions |< inactive actions ] - // a s - // <-swap-> - // s a - - var actions = this._actions, - prevIndex = action._cacheIndex, - - firstInactiveIndex = -- this._nActiveActions, - - lastActiveAction = actions[ firstInactiveIndex ]; - - action._cacheIndex = firstInactiveIndex; - actions[ firstInactiveIndex ] = action; - - lastActiveAction._cacheIndex = prevIndex; - actions[ prevIndex ] = lastActiveAction; - - }, - - // Memory management for PropertyMixer objects - - _addInactiveBinding: function ( binding, rootUuid, trackName ) { - - var bindingsByRoot = this._bindingsByRootAndName, - bindingByName = bindingsByRoot[ rootUuid ], - - bindings = this._bindings; - - if ( bindingByName === undefined ) { - - bindingByName = {}; - bindingsByRoot[ rootUuid ] = bindingByName; - - } - - bindingByName[ trackName ] = binding; - - binding._cacheIndex = bindings.length; - bindings.push( binding ); - - }, - - _removeInactiveBinding: function ( binding ) { - - var bindings = this._bindings, - propBinding = binding.binding, - rootUuid = propBinding.rootNode.uuid, - trackName = propBinding.path, - bindingsByRoot = this._bindingsByRootAndName, - bindingByName = bindingsByRoot[ rootUuid ], - - lastInactiveBinding = bindings[ bindings.length - 1 ], - cacheIndex = binding._cacheIndex; - - lastInactiveBinding._cacheIndex = cacheIndex; - bindings[ cacheIndex ] = lastInactiveBinding; - bindings.pop(); - - delete bindingByName[ trackName ]; - - remove_empty_map: { - - for ( var _ in bindingByName ) break remove_empty_map; // eslint-disable-line no-unused-vars - - delete bindingsByRoot[ rootUuid ]; - - } - - }, - - _lendBinding: function ( binding ) { - - var bindings = this._bindings, - prevIndex = binding._cacheIndex, - - lastActiveIndex = this._nActiveBindings ++, - - firstInactiveBinding = bindings[ lastActiveIndex ]; - - binding._cacheIndex = lastActiveIndex; - bindings[ lastActiveIndex ] = binding; - - firstInactiveBinding._cacheIndex = prevIndex; - bindings[ prevIndex ] = firstInactiveBinding; - - }, - - _takeBackBinding: function ( binding ) { - - var bindings = this._bindings, - prevIndex = binding._cacheIndex, - - firstInactiveIndex = -- this._nActiveBindings, - - lastActiveBinding = bindings[ firstInactiveIndex ]; - - binding._cacheIndex = firstInactiveIndex; - bindings[ firstInactiveIndex ] = binding; - - lastActiveBinding._cacheIndex = prevIndex; - bindings[ prevIndex ] = lastActiveBinding; - - }, - - - // Memory management of Interpolants for weight and time scale - - _lendControlInterpolant: function () { - - var interpolants = this._controlInterpolants, - lastActiveIndex = this._nActiveControlInterpolants ++, - interpolant = interpolants[ lastActiveIndex ]; - - if ( interpolant === undefined ) { - - interpolant = new LinearInterpolant( - new Float32Array( 2 ), new Float32Array( 2 ), - 1, this._controlInterpolantsResultBuffer ); - - interpolant.__cacheIndex = lastActiveIndex; - interpolants[ lastActiveIndex ] = interpolant; - - } - - return interpolant; - - }, - - _takeBackControlInterpolant: function ( interpolant ) { - - var interpolants = this._controlInterpolants, - prevIndex = interpolant.__cacheIndex, - - firstInactiveIndex = -- this._nActiveControlInterpolants, - - lastActiveInterpolant = interpolants[ firstInactiveIndex ]; - - interpolant.__cacheIndex = firstInactiveIndex; - interpolants[ firstInactiveIndex ] = interpolant; - - lastActiveInterpolant.__cacheIndex = prevIndex; - interpolants[ prevIndex ] = lastActiveInterpolant; - - }, - - _controlInterpolantsResultBuffer: new Float32Array( 1 ), - - // return an action for a clip optionally using a custom root target - // object (this method allocates a lot of dynamic memory in case a - // previously unknown clip/root combination is specified) - clipAction: function ( clip, optionalRoot ) { - - var root = optionalRoot || this._root, - rootUuid = root.uuid, - - clipObject = typeof clip === 'string' ? - AnimationClip.findByName( root, clip ) : clip, - - clipUuid = clipObject !== null ? clipObject.uuid : clip, - - actionsForClip = this._actionsByClip[ clipUuid ], - prototypeAction = null; - - if ( actionsForClip !== undefined ) { - - var existingAction = - actionsForClip.actionByRoot[ rootUuid ]; - - if ( existingAction !== undefined ) { - - return existingAction; - - } - - // we know the clip, so we don't have to parse all - // the bindings again but can just copy - prototypeAction = actionsForClip.knownActions[ 0 ]; - - // also, take the clip from the prototype action - if ( clipObject === null ) - clipObject = prototypeAction._clip; - - } - - // clip must be known when specified via string - if ( clipObject === null ) return null; - - // allocate all resources required to run it - var newAction = new AnimationAction( this, clipObject, optionalRoot ); - - this._bindAction( newAction, prototypeAction ); - - // and make the action known to the memory manager - this._addInactiveAction( newAction, clipUuid, rootUuid ); - - return newAction; - - }, - - // get an existing action - existingAction: function ( clip, optionalRoot ) { - - var root = optionalRoot || this._root, - rootUuid = root.uuid, - - clipObject = typeof clip === 'string' ? - AnimationClip.findByName( root, clip ) : clip, - - clipUuid = clipObject ? clipObject.uuid : clip, - - actionsForClip = this._actionsByClip[ clipUuid ]; - - if ( actionsForClip !== undefined ) { - - return actionsForClip.actionByRoot[ rootUuid ] || null; - - } - - return null; - - }, - - // deactivates all previously scheduled actions - stopAllAction: function () { - - var actions = this._actions, - nActions = this._nActiveActions, - bindings = this._bindings, - nBindings = this._nActiveBindings; - - this._nActiveActions = 0; - this._nActiveBindings = 0; - - for ( var i = 0; i !== nActions; ++ i ) { - - actions[ i ].reset(); - - } - - for ( var i = 0; i !== nBindings; ++ i ) { - - bindings[ i ].useCount = 0; - - } - - return this; - - }, - - // advance the time and update apply the animation - update: function ( deltaTime ) { - - deltaTime *= this.timeScale; - - var actions = this._actions, - nActions = this._nActiveActions, - - time = this.time += deltaTime, - timeDirection = Math.sign( deltaTime ), - - accuIndex = this._accuIndex ^= 1; - - // run active actions - - for ( var i = 0; i !== nActions; ++ i ) { - - var action = actions[ i ]; - - action._update( time, deltaTime, timeDirection, accuIndex ); - - } - - // update scene graph - - var bindings = this._bindings, - nBindings = this._nActiveBindings; - - for ( var i = 0; i !== nBindings; ++ i ) { - - bindings[ i ].apply( accuIndex ); - - } - - return this; - - }, - - // return this mixer's root target object - getRoot: function () { - - return this._root; - - }, - - // free all resources specific to a particular clip - uncacheClip: function ( clip ) { - - var actions = this._actions, - clipUuid = clip.uuid, - actionsByClip = this._actionsByClip, - actionsForClip = actionsByClip[ clipUuid ]; - - if ( actionsForClip !== undefined ) { - - // note: just calling _removeInactiveAction would mess up the - // iteration state and also require updating the state we can - // just throw away - - var actionsToRemove = actionsForClip.knownActions; - - for ( var i = 0, n = actionsToRemove.length; i !== n; ++ i ) { - - var action = actionsToRemove[ i ]; - - this._deactivateAction( action ); - - var cacheIndex = action._cacheIndex, - lastInactiveAction = actions[ actions.length - 1 ]; - - action._cacheIndex = null; - action._byClipCacheIndex = null; - - lastInactiveAction._cacheIndex = cacheIndex; - actions[ cacheIndex ] = lastInactiveAction; - actions.pop(); - - this._removeInactiveBindingsForAction( action ); - - } - - delete actionsByClip[ clipUuid ]; - - } - - }, - - // free all resources specific to a particular root target object - uncacheRoot: function ( root ) { - - var rootUuid = root.uuid, - actionsByClip = this._actionsByClip; - - for ( var clipUuid in actionsByClip ) { - - var actionByRoot = actionsByClip[ clipUuid ].actionByRoot, - action = actionByRoot[ rootUuid ]; - - if ( action !== undefined ) { - - this._deactivateAction( action ); - this._removeInactiveAction( action ); - - } - - } - - var bindingsByRoot = this._bindingsByRootAndName, - bindingByName = bindingsByRoot[ rootUuid ]; - - if ( bindingByName !== undefined ) { - - for ( var trackName in bindingByName ) { - - var binding = bindingByName[ trackName ]; - binding.restoreOriginalState(); - this._removeInactiveBinding( binding ); - - } - - } - - }, - - // remove a targeted clip from the cache - uncacheAction: function ( clip, optionalRoot ) { - - var action = this.existingAction( clip, optionalRoot ); - - if ( action !== null ) { - - this._deactivateAction( action ); - this._removeInactiveAction( action ); - - } - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function Uniform( value ) { - - if ( typeof value === 'string' ) { - - console.warn( 'THREE.Uniform: Type parameter is no longer needed.' ); - value = arguments[ 1 ]; - - } - - this.value = value; - - } - - Uniform.prototype.clone = function () { - - return new Uniform( this.value.clone === undefined ? this.value : this.value.clone() ); - - }; - - /** - * @author benaadams / https://twitter.com/ben_a_adams - */ - - function InstancedInterleavedBuffer( array, stride, meshPerAttribute ) { - - InterleavedBuffer.call( this, array, stride ); - - this.meshPerAttribute = meshPerAttribute || 1; - - } - - InstancedInterleavedBuffer.prototype = Object.assign( Object.create( InterleavedBuffer.prototype ), { - - constructor: InstancedInterleavedBuffer, - - isInstancedInterleavedBuffer: true, - - copy: function ( source ) { - - InterleavedBuffer.prototype.copy.call( this, source ); - - this.meshPerAttribute = source.meshPerAttribute; - - return this; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author bhouston / http://clara.io/ - * @author stephomi / http://stephaneginier.com/ - */ - - function Raycaster( origin, direction, near, far ) { - - this.ray = new Ray( origin, direction ); - // direction is assumed to be normalized (for accurate distance calculations) - - this.near = near || 0; - this.far = far || Infinity; - - this.params = { - Mesh: {}, - Line: {}, - LOD: {}, - Points: { threshold: 1 }, - Sprite: {} - }; - - Object.defineProperties( this.params, { - PointCloud: { - get: function () { - - console.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' ); - return this.Points; - - } - } - } ); - - } - - function ascSort( a, b ) { - - return a.distance - b.distance; - - } - - function intersectObject( object, raycaster, intersects, recursive ) { - - if ( object.visible === false ) return; - - object.raycast( raycaster, intersects ); - - if ( recursive === true ) { - - var children = object.children; - - for ( var i = 0, l = children.length; i < l; i ++ ) { - - intersectObject( children[ i ], raycaster, intersects, true ); - - } - - } - - } - - Object.assign( Raycaster.prototype, { - - linePrecision: 1, - - set: function ( origin, direction ) { - - // direction is assumed to be normalized (for accurate distance calculations) - - this.ray.set( origin, direction ); - - }, - - setFromCamera: function ( coords, camera ) { - - if ( ( camera && camera.isPerspectiveCamera ) ) { - - this.ray.origin.setFromMatrixPosition( camera.matrixWorld ); - this.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize(); - - } else if ( ( camera && camera.isOrthographicCamera ) ) { - - this.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera - this.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld ); - - } else { - - console.error( 'THREE.Raycaster: Unsupported camera type.' ); - - } - - }, - - intersectObject: function ( object, recursive, optionalTarget ) { - - var intersects = optionalTarget || []; - - intersectObject( object, this, intersects, recursive ); - - intersects.sort( ascSort ); - - return intersects; - - }, - - intersectObjects: function ( objects, recursive, optionalTarget ) { - - var intersects = optionalTarget || []; - - if ( Array.isArray( objects ) === false ) { - - console.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' ); - return intersects; - - } - - for ( var i = 0, l = objects.length; i < l; i ++ ) { - - intersectObject( objects[ i ], this, intersects, recursive ); - - } - - intersects.sort( ascSort ); - - return intersects; - - } - - } ); - - /** - * @author bhouston / http://clara.io - * @author WestLangley / http://github.com/WestLangley - * - * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system - * - * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up. - * The azimuthal angle (theta) is measured from the positive z-axiz. - */ - - function Spherical( radius, phi, theta ) { - - this.radius = ( radius !== undefined ) ? radius : 1.0; - this.phi = ( phi !== undefined ) ? phi : 0; // polar angle - this.theta = ( theta !== undefined ) ? theta : 0; // azimuthal angle - - return this; - - } - - Object.assign( Spherical.prototype, { - - set: function ( radius, phi, theta ) { - - this.radius = radius; - this.phi = phi; - this.theta = theta; - - return this; - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( other ) { - - this.radius = other.radius; - this.phi = other.phi; - this.theta = other.theta; - - return this; - - }, - - // restrict phi to be betwee EPS and PI-EPS - makeSafe: function () { - - var EPS = 0.000001; - this.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) ); - - return this; - - }, - - setFromVector3: function ( v ) { - - return this.setFromCartesianCoords( v.x, v.y, v.z ); - - }, - - setFromCartesianCoords: function ( x, y, z ) { - - this.radius = Math.sqrt( x * x + y * y + z * z ); - - if ( this.radius === 0 ) { - - this.theta = 0; - this.phi = 0; - - } else { - - this.theta = Math.atan2( x, z ); - this.phi = Math.acos( _Math.clamp( y / this.radius, - 1, 1 ) ); - - } - - return this; - - } - - } ); - - /** - * @author Mugen87 / https://github.com/Mugen87 - * - * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system - * - */ - - function Cylindrical( radius, theta, y ) { - - this.radius = ( radius !== undefined ) ? radius : 1.0; // distance from the origin to a point in the x-z plane - this.theta = ( theta !== undefined ) ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis - this.y = ( y !== undefined ) ? y : 0; // height above the x-z plane - - return this; - - } - - Object.assign( Cylindrical.prototype, { - - set: function ( radius, theta, y ) { - - this.radius = radius; - this.theta = theta; - this.y = y; - - return this; - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( other ) { - - this.radius = other.radius; - this.theta = other.theta; - this.y = other.y; - - return this; - - }, - - setFromVector3: function ( v ) { - - return this.setFromCartesianCoords( v.x, v.y, v.z ); - - }, - - setFromCartesianCoords: function ( x, y, z ) { - - this.radius = Math.sqrt( x * x + z * z ); - this.theta = Math.atan2( x, z ); - this.y = y; - - return this; - - } - - } ); - - /** - * @author bhouston / http://clara.io - */ - - function Box2( min, max ) { - - this.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity ); - this.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity ); - - } - - Object.assign( Box2.prototype, { - - set: function ( min, max ) { - - this.min.copy( min ); - this.max.copy( max ); - - return this; - - }, - - setFromPoints: function ( points ) { - - this.makeEmpty(); - - for ( var i = 0, il = points.length; i < il; i ++ ) { - - this.expandByPoint( points[ i ] ); - - } - - return this; - - }, - - setFromCenterAndSize: function () { - - var v1 = new Vector2(); - - return function setFromCenterAndSize( center, size ) { - - var halfSize = v1.copy( size ).multiplyScalar( 0.5 ); - this.min.copy( center ).sub( halfSize ); - this.max.copy( center ).add( halfSize ); - - return this; - - }; - - }(), - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( box ) { - - this.min.copy( box.min ); - this.max.copy( box.max ); - - return this; - - }, - - makeEmpty: function () { - - this.min.x = this.min.y = + Infinity; - this.max.x = this.max.y = - Infinity; - - return this; - - }, - - isEmpty: function () { - - // this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes - - return ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ); - - }, - - getCenter: function ( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Box2: .getCenter() target is now required' ); - target = new Vector2(); - - } - - return this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 ); - - }, - - getSize: function ( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Box2: .getSize() target is now required' ); - target = new Vector2(); - - } - - return this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min ); - - }, - - expandByPoint: function ( point ) { - - this.min.min( point ); - this.max.max( point ); - - return this; - - }, - - expandByVector: function ( vector ) { - - this.min.sub( vector ); - this.max.add( vector ); - - return this; - - }, - - expandByScalar: function ( scalar ) { - - this.min.addScalar( - scalar ); - this.max.addScalar( scalar ); - - return this; - - }, - - containsPoint: function ( point ) { - - return point.x < this.min.x || point.x > this.max.x || - point.y < this.min.y || point.y > this.max.y ? false : true; - - }, - - containsBox: function ( box ) { - - return this.min.x <= box.min.x && box.max.x <= this.max.x && - this.min.y <= box.min.y && box.max.y <= this.max.y; - - }, - - getParameter: function ( point, target ) { - - // This can potentially have a divide by zero if the box - // has a size dimension of 0. - - if ( target === undefined ) { - - console.warn( 'THREE.Box2: .getParameter() target is now required' ); - target = new Vector2(); - - } - - return target.set( - ( point.x - this.min.x ) / ( this.max.x - this.min.x ), - ( point.y - this.min.y ) / ( this.max.y - this.min.y ) - ); - - }, - - intersectsBox: function ( box ) { - - // using 4 splitting planes to rule out intersections - - return box.max.x < this.min.x || box.min.x > this.max.x || - box.max.y < this.min.y || box.min.y > this.max.y ? false : true; - - }, - - clampPoint: function ( point, target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Box2: .clampPoint() target is now required' ); - target = new Vector2(); - - } - - return target.copy( point ).clamp( this.min, this.max ); - - }, - - distanceToPoint: function () { - - var v1 = new Vector2(); - - return function distanceToPoint( point ) { - - var clampedPoint = v1.copy( point ).clamp( this.min, this.max ); - return clampedPoint.sub( point ).length(); - - }; - - }(), - - intersect: function ( box ) { - - this.min.max( box.min ); - this.max.min( box.max ); - - return this; - - }, - - union: function ( box ) { - - this.min.min( box.min ); - this.max.max( box.max ); - - return this; - - }, - - translate: function ( offset ) { - - this.min.add( offset ); - this.max.add( offset ); - - return this; - - }, - - equals: function ( box ) { - - return box.min.equals( this.min ) && box.max.equals( this.max ); - - } - - } ); - - /** - * @author bhouston / http://clara.io - */ - - function Line3( start, end ) { - - this.start = ( start !== undefined ) ? start : new Vector3(); - this.end = ( end !== undefined ) ? end : new Vector3(); - - } - - Object.assign( Line3.prototype, { - - set: function ( start, end ) { - - this.start.copy( start ); - this.end.copy( end ); - - return this; - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( line ) { - - this.start.copy( line.start ); - this.end.copy( line.end ); - - return this; - - }, - - getCenter: function ( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Line3: .getCenter() target is now required' ); - target = new Vector3(); - - } - - return target.addVectors( this.start, this.end ).multiplyScalar( 0.5 ); - - }, - - delta: function ( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Line3: .delta() target is now required' ); - target = new Vector3(); - - } - - return target.subVectors( this.end, this.start ); - - }, - - distanceSq: function () { - - return this.start.distanceToSquared( this.end ); - - }, - - distance: function () { - - return this.start.distanceTo( this.end ); - - }, - - at: function ( t, target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Line3: .at() target is now required' ); - target = new Vector3(); - - } - - return this.delta( target ).multiplyScalar( t ).add( this.start ); - - }, - - closestPointToPointParameter: function () { - - var startP = new Vector3(); - var startEnd = new Vector3(); - - return function closestPointToPointParameter( point, clampToLine ) { - - startP.subVectors( point, this.start ); - startEnd.subVectors( this.end, this.start ); - - var startEnd2 = startEnd.dot( startEnd ); - var startEnd_startP = startEnd.dot( startP ); - - var t = startEnd_startP / startEnd2; - - if ( clampToLine ) { - - t = _Math.clamp( t, 0, 1 ); - - } - - return t; - - }; - - }(), - - closestPointToPoint: function ( point, clampToLine, target ) { - - var t = this.closestPointToPointParameter( point, clampToLine ); - - if ( target === undefined ) { - - console.warn( 'THREE.Line3: .closestPointToPoint() target is now required' ); - target = new Vector3(); - - } - - return this.delta( target ).multiplyScalar( t ).add( this.start ); - - }, - - applyMatrix4: function ( matrix ) { - - this.start.applyMatrix4( matrix ); - this.end.applyMatrix4( matrix ); - - return this; - - }, - - equals: function ( line ) { - - return line.start.equals( this.start ) && line.end.equals( this.end ); - - } - - } ); - - /** - * @author alteredq / http://alteredqualia.com/ - */ - - function ImmediateRenderObject( material ) { - - Object3D.call( this ); - - this.material = material; - this.render = function ( /* renderCallback */ ) {}; - - } - - ImmediateRenderObject.prototype = Object.create( Object3D.prototype ); - ImmediateRenderObject.prototype.constructor = ImmediateRenderObject; - - ImmediateRenderObject.prototype.isImmediateRenderObject = true; - - /** - * @author mrdoob / http://mrdoob.com/ - * @author WestLangley / http://github.com/WestLangley - */ - - function VertexNormalsHelper( object, size, hex, linewidth ) { - - this.object = object; - - this.size = ( size !== undefined ) ? size : 1; - - var color = ( hex !== undefined ) ? hex : 0xff0000; - - var width = ( linewidth !== undefined ) ? linewidth : 1; - - // - - var nNormals = 0; - - var objGeometry = this.object.geometry; - - if ( objGeometry && objGeometry.isGeometry ) { - - nNormals = objGeometry.faces.length * 3; - - } else if ( objGeometry && objGeometry.isBufferGeometry ) { - - nNormals = objGeometry.attributes.normal.count; - - } - - // - - var geometry = new BufferGeometry(); - - var positions = new Float32BufferAttribute( nNormals * 2 * 3, 3 ); - - geometry.addAttribute( 'position', positions ); - - LineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) ); - - // - - this.matrixAutoUpdate = false; - - this.update(); - - } - - VertexNormalsHelper.prototype = Object.create( LineSegments.prototype ); - VertexNormalsHelper.prototype.constructor = VertexNormalsHelper; - - VertexNormalsHelper.prototype.update = ( function () { - - var v1 = new Vector3(); - var v2 = new Vector3(); - var normalMatrix = new Matrix3(); - - return function update() { - - var keys = [ 'a', 'b', 'c' ]; - - this.object.updateMatrixWorld( true ); - - normalMatrix.getNormalMatrix( this.object.matrixWorld ); - - var matrixWorld = this.object.matrixWorld; - - var position = this.geometry.attributes.position; - - // - - var objGeometry = this.object.geometry; - - if ( objGeometry && objGeometry.isGeometry ) { - - var vertices = objGeometry.vertices; - - var faces = objGeometry.faces; - - var idx = 0; - - for ( var i = 0, l = faces.length; i < l; i ++ ) { - - var face = faces[ i ]; - - for ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) { - - var vertex = vertices[ face[ keys[ j ] ] ]; - - var normal = face.vertexNormals[ j ]; - - v1.copy( vertex ).applyMatrix4( matrixWorld ); - - v2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 ); - - position.setXYZ( idx, v1.x, v1.y, v1.z ); - - idx = idx + 1; - - position.setXYZ( idx, v2.x, v2.y, v2.z ); - - idx = idx + 1; - - } - - } - - } else if ( objGeometry && objGeometry.isBufferGeometry ) { - - var objPos = objGeometry.attributes.position; - - var objNorm = objGeometry.attributes.normal; - - var idx = 0; - - // for simplicity, ignore index and drawcalls, and render every normal - - for ( var j = 0, jl = objPos.count; j < jl; j ++ ) { - - v1.set( objPos.getX( j ), objPos.getY( j ), objPos.getZ( j ) ).applyMatrix4( matrixWorld ); - - v2.set( objNorm.getX( j ), objNorm.getY( j ), objNorm.getZ( j ) ); - - v2.applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 ); - - position.setXYZ( idx, v1.x, v1.y, v1.z ); - - idx = idx + 1; - - position.setXYZ( idx, v2.x, v2.y, v2.z ); - - idx = idx + 1; - - } - - } - - position.needsUpdate = true; - - }; - - }() ); - - /** - * @author alteredq / http://alteredqualia.com/ - * @author mrdoob / http://mrdoob.com/ - * @author WestLangley / http://github.com/WestLangley - */ - - function SpotLightHelper( light, color ) { - - Object3D.call( this ); - - this.light = light; - this.light.updateMatrixWorld(); - - this.matrix = light.matrixWorld; - this.matrixAutoUpdate = false; - - this.color = color; - - var geometry = new BufferGeometry(); - - var positions = [ - 0, 0, 0, 0, 0, 1, - 0, 0, 0, 1, 0, 1, - 0, 0, 0, - 1, 0, 1, - 0, 0, 0, 0, 1, 1, - 0, 0, 0, 0, - 1, 1 - ]; - - for ( var i = 0, j = 1, l = 32; i < l; i ++, j ++ ) { - - var p1 = ( i / l ) * Math.PI * 2; - var p2 = ( j / l ) * Math.PI * 2; - - positions.push( - Math.cos( p1 ), Math.sin( p1 ), 1, - Math.cos( p2 ), Math.sin( p2 ), 1 - ); - - } - - geometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); - - var material = new LineBasicMaterial( { fog: false } ); - - this.cone = new LineSegments( geometry, material ); - this.add( this.cone ); - - this.update(); - - } - - SpotLightHelper.prototype = Object.create( Object3D.prototype ); - SpotLightHelper.prototype.constructor = SpotLightHelper; - - SpotLightHelper.prototype.dispose = function () { - - this.cone.geometry.dispose(); - this.cone.material.dispose(); - - }; - - SpotLightHelper.prototype.update = function () { - - var vector = new Vector3(); - - return function update() { - - this.light.updateMatrixWorld(); - - var coneLength = this.light.distance ? this.light.distance : 1000; - var coneWidth = coneLength * Math.tan( this.light.angle ); - - this.cone.scale.set( coneWidth, coneWidth, coneLength ); - - vector.setFromMatrixPosition( this.light.target.matrixWorld ); - - this.cone.lookAt( vector ); - - if ( this.color !== undefined ) { - - this.cone.material.color.set( this.color ); - - } else { - - this.cone.material.color.copy( this.light.color ); - - } - - }; - - }(); - - /** - * @author Sean Griffin / http://twitter.com/sgrif - * @author Michael Guerrero / http://realitymeltdown.com - * @author mrdoob / http://mrdoob.com/ - * @author ikerr / http://verold.com - * @author Mugen87 / https://github.com/Mugen87 - */ - - function getBoneList( object ) { - - var boneList = []; - - if ( object && object.isBone ) { - - boneList.push( object ); - - } - - for ( var i = 0; i < object.children.length; i ++ ) { - - boneList.push.apply( boneList, getBoneList( object.children[ i ] ) ); - - } - - return boneList; - - } - - function SkeletonHelper( object ) { - - var bones = getBoneList( object ); - - var geometry = new BufferGeometry(); - - var vertices = []; - var colors = []; - - var color1 = new Color( 0, 0, 1 ); - var color2 = new Color( 0, 1, 0 ); - - for ( var i = 0; i < bones.length; i ++ ) { - - var bone = bones[ i ]; - - if ( bone.parent && bone.parent.isBone ) { - - vertices.push( 0, 0, 0 ); - vertices.push( 0, 0, 0 ); - colors.push( color1.r, color1.g, color1.b ); - colors.push( color2.r, color2.g, color2.b ); - - } - - } - - geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); - - var material = new LineBasicMaterial( { vertexColors: VertexColors, depthTest: false, depthWrite: false, transparent: true } ); - - LineSegments.call( this, geometry, material ); - - this.root = object; - this.bones = bones; - - this.matrix = object.matrixWorld; - this.matrixAutoUpdate = false; - - } - - SkeletonHelper.prototype = Object.create( LineSegments.prototype ); - SkeletonHelper.prototype.constructor = SkeletonHelper; - - SkeletonHelper.prototype.updateMatrixWorld = function () { - - var vector = new Vector3(); - - var boneMatrix = new Matrix4(); - var matrixWorldInv = new Matrix4(); - - return function updateMatrixWorld( force ) { - - var bones = this.bones; - - var geometry = this.geometry; - var position = geometry.getAttribute( 'position' ); - - matrixWorldInv.getInverse( this.root.matrixWorld ); - - for ( var i = 0, j = 0; i < bones.length; i ++ ) { - - var bone = bones[ i ]; - - if ( bone.parent && bone.parent.isBone ) { - - boneMatrix.multiplyMatrices( matrixWorldInv, bone.matrixWorld ); - vector.setFromMatrixPosition( boneMatrix ); - position.setXYZ( j, vector.x, vector.y, vector.z ); - - boneMatrix.multiplyMatrices( matrixWorldInv, bone.parent.matrixWorld ); - vector.setFromMatrixPosition( boneMatrix ); - position.setXYZ( j + 1, vector.x, vector.y, vector.z ); - - j += 2; - - } - - } - - geometry.getAttribute( 'position' ).needsUpdate = true; - - Object3D.prototype.updateMatrixWorld.call( this, force ); - - }; - - }(); - - /** - * @author alteredq / http://alteredqualia.com/ - * @author mrdoob / http://mrdoob.com/ - */ - - function PointLightHelper( light, sphereSize, color ) { - - this.light = light; - this.light.updateMatrixWorld(); - - this.color = color; - - var geometry = new SphereBufferGeometry( sphereSize, 4, 2 ); - var material = new MeshBasicMaterial( { wireframe: true, fog: false } ); - - Mesh.call( this, geometry, material ); - - this.matrix = this.light.matrixWorld; - this.matrixAutoUpdate = false; - - this.update(); - - - /* - var distanceGeometry = new THREE.IcosahedronBufferGeometry( 1, 2 ); - var distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } ); - - this.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial ); - this.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial ); - - var d = light.distance; - - if ( d === 0.0 ) { - - this.lightDistance.visible = false; - - } else { - - this.lightDistance.scale.set( d, d, d ); - - } - - this.add( this.lightDistance ); - */ - - } - - PointLightHelper.prototype = Object.create( Mesh.prototype ); - PointLightHelper.prototype.constructor = PointLightHelper; - - PointLightHelper.prototype.dispose = function () { - - this.geometry.dispose(); - this.material.dispose(); - - }; - - PointLightHelper.prototype.update = function () { - - if ( this.color !== undefined ) { - - this.material.color.set( this.color ); - - } else { - - this.material.color.copy( this.light.color ); - - } - - /* - var d = this.light.distance; - - if ( d === 0.0 ) { - - this.lightDistance.visible = false; - - } else { - - this.lightDistance.visible = true; - this.lightDistance.scale.set( d, d, d ); - - } - */ - - }; - - /** - * @author abelnation / http://github.com/abelnation - * @author Mugen87 / http://github.com/Mugen87 - * @author WestLangley / http://github.com/WestLangley - * - * This helper must be added as a child of the light - */ - - function RectAreaLightHelper( light, color ) { - - this.type = 'RectAreaLightHelper'; - - this.light = light; - - this.color = color; // optional hardwired color for the helper - - var positions = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, - 1, 0, 1, 1, 0 ]; - - var geometry = new BufferGeometry(); - geometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); - geometry.computeBoundingSphere(); - - var material = new LineBasicMaterial( { fog: false } ); - - Line.call( this, geometry, material ); - - // - - var positions2 = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, - 1, 0, 1, - 1, 0 ]; - - var geometry2 = new BufferGeometry(); - geometry2.addAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) ); - geometry2.computeBoundingSphere(); - - this.add( new Mesh( geometry2, new MeshBasicMaterial( { side: BackSide, fog: false } ) ) ); - - this.update(); - - } - - RectAreaLightHelper.prototype = Object.create( Line.prototype ); - RectAreaLightHelper.prototype.constructor = RectAreaLightHelper; - - RectAreaLightHelper.prototype.update = function () { - - this.scale.set( 0.5 * this.light.width, 0.5 * this.light.height, 1 ); - - if ( this.color !== undefined ) { - - this.material.color.set( this.color ); - this.children[ 0 ].material.color.set( this.color ); - - } else { - - this.material.color.copy( this.light.color ).multiplyScalar( this.light.intensity ); - - // prevent hue shift - var c = this.material.color; - var max = Math.max( c.r, c.g, c.b ); - if ( max > 1 ) c.multiplyScalar( 1 / max ); - - this.children[ 0 ].material.color.copy( this.material.color ); - - } - - }; - - RectAreaLightHelper.prototype.dispose = function () { - - this.geometry.dispose(); - this.material.dispose(); - this.children[ 0 ].geometry.dispose(); - this.children[ 0 ].material.dispose(); - - }; - - /** - * @author alteredq / http://alteredqualia.com/ - * @author mrdoob / http://mrdoob.com/ - * @author Mugen87 / https://github.com/Mugen87 - */ - - function HemisphereLightHelper( light, size, color ) { - - Object3D.call( this ); - - this.light = light; - this.light.updateMatrixWorld(); - - this.matrix = light.matrixWorld; - this.matrixAutoUpdate = false; - - this.color = color; - - var geometry = new OctahedronBufferGeometry( size ); - geometry.rotateY( Math.PI * 0.5 ); - - this.material = new MeshBasicMaterial( { wireframe: true, fog: false } ); - if ( this.color === undefined ) this.material.vertexColors = VertexColors; - - var position = geometry.getAttribute( 'position' ); - var colors = new Float32Array( position.count * 3 ); - - geometry.addAttribute( 'color', new BufferAttribute( colors, 3 ) ); - - this.add( new Mesh( geometry, this.material ) ); - - this.update(); - - } - - HemisphereLightHelper.prototype = Object.create( Object3D.prototype ); - HemisphereLightHelper.prototype.constructor = HemisphereLightHelper; - - HemisphereLightHelper.prototype.dispose = function () { - - this.children[ 0 ].geometry.dispose(); - this.children[ 0 ].material.dispose(); - - }; - - HemisphereLightHelper.prototype.update = function () { - - var vector = new Vector3(); - - var color1 = new Color(); - var color2 = new Color(); - - return function update() { - - var mesh = this.children[ 0 ]; - - if ( this.color !== undefined ) { - - this.material.color.set( this.color ); - - } else { - - var colors = mesh.geometry.getAttribute( 'color' ); - - color1.copy( this.light.color ); - color2.copy( this.light.groundColor ); - - for ( var i = 0, l = colors.count; i < l; i ++ ) { - - var color = ( i < ( l / 2 ) ) ? color1 : color2; - - colors.setXYZ( i, color.r, color.g, color.b ); - - } - - colors.needsUpdate = true; - - } - - mesh.lookAt( vector.setFromMatrixPosition( this.light.matrixWorld ).negate() ); - - }; - - }(); - - /** - * @author WestLangley / http://github.com/WestLangley - */ - - function LightProbeHelper( lightProbe, size ) { - - this.lightProbe = lightProbe; - - this.size = size; - - var defines = {}; - defines[ 'GAMMA_OUTPUT' ] = ""; - - // material - var material = new ShaderMaterial( { - - defines: defines, - - uniforms: { - - sh: { value: this.lightProbe.sh.coefficients }, // by reference - - intensity: { value: this.lightProbe.intensity } - - }, - - vertexShader: [ - - 'varying vec3 vNormal;', - - 'void main() {', - - ' vNormal = normalize( normalMatrix * normal );', - - ' gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );', - - '}', - - ].join( '\n' ), - - fragmentShader: [ - - '#define RECIPROCAL_PI 0.318309886', - - 'vec3 inverseTransformDirection( in vec3 normal, in mat4 matrix ) {', - - ' // matrix is assumed to be orthogonal', - - ' return normalize( ( vec4( normal, 0.0 ) * matrix ).xyz );', - - '}', - - 'vec3 linearToOutput( in vec3 a ) {', - - ' #ifdef GAMMA_OUTPUT', - - ' return pow( a, vec3( 1.0 / float( GAMMA_FACTOR ) ) );', - - ' #else', - - ' return a;', - - ' #endif', - - '}', - - '// source: https://graphics.stanford.edu/papers/envmap/envmap.pdf', - 'vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {', - - ' // normal is assumed to have unit length', - - ' float x = normal.x, y = normal.y, z = normal.z;', - - ' // band 0', - ' vec3 result = shCoefficients[ 0 ] * 0.886227;', - - ' // band 1', - ' result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;', - ' result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;', - ' result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;', - - ' // band 2', - ' result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;', - ' result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;', - ' result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );', - ' result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;', - ' result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );', - - ' return result;', - - '}', - - 'uniform vec3 sh[ 9 ]; // sh coefficients', - - 'uniform float intensity; // light probe intensity', - - 'varying vec3 vNormal;', - - 'void main() {', - - ' vec3 normal = normalize( vNormal );', - - ' vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );', - - ' vec3 irradiance = shGetIrradianceAt( worldNormal, sh );', - - ' vec3 outgoingLight = RECIPROCAL_PI * irradiance * intensity;', - - ' outgoingLight = linearToOutput( outgoingLight );', - - ' gl_FragColor = vec4( outgoingLight, 1.0 );', - - '}' - - ].join( '\n' ) - - } ); - - var geometry = new SphereBufferGeometry( 1, 32, 16 ); - - Mesh.call( this, geometry, material ); - - this.onBeforeRender(); - - } - - LightProbeHelper.prototype = Object.create( Mesh.prototype ); - LightProbeHelper.prototype.constructor = LightProbeHelper; - - LightProbeHelper.prototype.dispose = function () { - - this.geometry.dispose(); - this.material.dispose(); - - }; - - LightProbeHelper.prototype.onBeforeRender = function () { - - return function update() { - - this.position.copy( this.lightProbe.position ); - - this.scale.set( 1, 1, 1 ).multiplyScalar( this.size ); - - this.material.uniforms.intensity.value = this.lightProbe.intensity; - - }; - - }(); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function GridHelper( size, divisions, color1, color2 ) { - - size = size || 10; - divisions = divisions || 10; - color1 = new Color( color1 !== undefined ? color1 : 0x444444 ); - color2 = new Color( color2 !== undefined ? color2 : 0x888888 ); - - var center = divisions / 2; - var step = size / divisions; - var halfSize = size / 2; - - var vertices = [], colors = []; - - for ( var i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) { - - vertices.push( - halfSize, 0, k, halfSize, 0, k ); - vertices.push( k, 0, - halfSize, k, 0, halfSize ); - - var color = i === center ? color1 : color2; - - color.toArray( colors, j ); j += 3; - color.toArray( colors, j ); j += 3; - color.toArray( colors, j ); j += 3; - color.toArray( colors, j ); j += 3; - - } - - var geometry = new BufferGeometry(); - geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); - - var material = new LineBasicMaterial( { vertexColors: VertexColors } ); - - LineSegments.call( this, geometry, material ); - - } - - GridHelper.prototype = Object.assign( Object.create( LineSegments.prototype ), { - - constructor: GridHelper, - - copy: function ( source ) { - - LineSegments.prototype.copy.call( this, source ); - - this.geometry.copy( source.geometry ); - this.material.copy( source.material ); - - return this; - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author Mugen87 / http://github.com/Mugen87 - * @author Hectate / http://www.github.com/Hectate - */ - - function PolarGridHelper( radius, radials, circles, divisions, color1, color2 ) { - - radius = radius || 10; - radials = radials || 16; - circles = circles || 8; - divisions = divisions || 64; - color1 = new Color( color1 !== undefined ? color1 : 0x444444 ); - color2 = new Color( color2 !== undefined ? color2 : 0x888888 ); - - var vertices = []; - var colors = []; - - var x, z; - var v, i, j, r, color; - - // create the radials - - for ( i = 0; i <= radials; i ++ ) { - - v = ( i / radials ) * ( Math.PI * 2 ); - - x = Math.sin( v ) * radius; - z = Math.cos( v ) * radius; - - vertices.push( 0, 0, 0 ); - vertices.push( x, 0, z ); - - color = ( i & 1 ) ? color1 : color2; - - colors.push( color.r, color.g, color.b ); - colors.push( color.r, color.g, color.b ); - - } - - // create the circles - - for ( i = 0; i <= circles; i ++ ) { - - color = ( i & 1 ) ? color1 : color2; - - r = radius - ( radius / circles * i ); - - for ( j = 0; j < divisions; j ++ ) { - - // first vertex - - v = ( j / divisions ) * ( Math.PI * 2 ); - - x = Math.sin( v ) * r; - z = Math.cos( v ) * r; - - vertices.push( x, 0, z ); - colors.push( color.r, color.g, color.b ); - - // second vertex - - v = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 ); - - x = Math.sin( v ) * r; - z = Math.cos( v ) * r; - - vertices.push( x, 0, z ); - colors.push( color.r, color.g, color.b ); - - } - - } - - var geometry = new BufferGeometry(); - geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); - - var material = new LineBasicMaterial( { vertexColors: VertexColors } ); - - LineSegments.call( this, geometry, material ); - - } - - PolarGridHelper.prototype = Object.create( LineSegments.prototype ); - PolarGridHelper.prototype.constructor = PolarGridHelper; - - /** - * @author Mugen87 / http://github.com/Mugen87 - */ - - function PositionalAudioHelper( audio, range, divisionsInnerAngle, divisionsOuterAngle ) { - - this.audio = audio; - this.range = range || 1; - this.divisionsInnerAngle = divisionsInnerAngle || 16; - this.divisionsOuterAngle = divisionsOuterAngle || 2; - - var geometry = new BufferGeometry(); - var divisions = this.divisionsInnerAngle + this.divisionsOuterAngle * 2; - var positions = new Float32Array( ( divisions * 3 + 3 ) * 3 ); - geometry.addAttribute( 'position', new BufferAttribute( positions, 3 ) ); - - var materialInnerAngle = new LineBasicMaterial( { color: 0x00ff00 } ); - var materialOuterAngle = new LineBasicMaterial( { color: 0xffff00 } ); - - Line.call( this, geometry, [ materialOuterAngle, materialInnerAngle ] ); - - this.update(); - - } - - PositionalAudioHelper.prototype = Object.create( Line.prototype ); - PositionalAudioHelper.prototype.constructor = PositionalAudioHelper; - - PositionalAudioHelper.prototype.update = function () { - - var audio = this.audio; - var range = this.range; - var divisionsInnerAngle = this.divisionsInnerAngle; - var divisionsOuterAngle = this.divisionsOuterAngle; - - var coneInnerAngle = _Math.degToRad( audio.panner.coneInnerAngle ); - var coneOuterAngle = _Math.degToRad( audio.panner.coneOuterAngle ); - - var halfConeInnerAngle = coneInnerAngle / 2; - var halfConeOuterAngle = coneOuterAngle / 2; - - var start = 0; - var count = 0; - var i, stride; - - var geometry = this.geometry; - var positionAttribute = geometry.attributes.position; - - geometry.clearGroups(); - - // - - function generateSegment( from, to, divisions, materialIndex ) { - - var step = ( to - from ) / divisions; - - positionAttribute.setXYZ( start, 0, 0, 0 ); - count ++; - - for ( i = from; i < to; i += step ) { - - stride = start + count; - - positionAttribute.setXYZ( stride, Math.sin( i ) * range, 0, Math.cos( i ) * range ); - positionAttribute.setXYZ( stride + 1, Math.sin( Math.min( i + step, to ) ) * range, 0, Math.cos( Math.min( i + step, to ) ) * range ); - positionAttribute.setXYZ( stride + 2, 0, 0, 0 ); - - count += 3; - - } - - geometry.addGroup( start, count, materialIndex ); - - start += count; - count = 0; - - } - - // - - generateSegment( - halfConeOuterAngle, - halfConeInnerAngle, divisionsOuterAngle, 0 ); - generateSegment( - halfConeInnerAngle, halfConeInnerAngle, divisionsInnerAngle, 1 ); - generateSegment( halfConeInnerAngle, halfConeOuterAngle, divisionsOuterAngle, 0 ); - - // - - positionAttribute.needsUpdate = true; - - if ( coneInnerAngle === coneOuterAngle ) this.material[ 0 ].visible = false; - - }; - - PositionalAudioHelper.prototype.dispose = function () { - - this.geometry.dispose(); - this.material[ 0 ].dispose(); - this.material[ 1 ].dispose(); - - }; - - /** - * @author mrdoob / http://mrdoob.com/ - * @author WestLangley / http://github.com/WestLangley - */ - - function FaceNormalsHelper( object, size, hex, linewidth ) { - - // FaceNormalsHelper only supports THREE.Geometry - - this.object = object; - - this.size = ( size !== undefined ) ? size : 1; - - var color = ( hex !== undefined ) ? hex : 0xffff00; - - var width = ( linewidth !== undefined ) ? linewidth : 1; - - // - - var nNormals = 0; - - var objGeometry = this.object.geometry; - - if ( objGeometry && objGeometry.isGeometry ) { - - nNormals = objGeometry.faces.length; - - } else { - - console.warn( 'THREE.FaceNormalsHelper: only THREE.Geometry is supported. Use THREE.VertexNormalsHelper, instead.' ); - - } - - // - - var geometry = new BufferGeometry(); - - var positions = new Float32BufferAttribute( nNormals * 2 * 3, 3 ); - - geometry.addAttribute( 'position', positions ); - - LineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) ); - - // - - this.matrixAutoUpdate = false; - this.update(); - - } - - FaceNormalsHelper.prototype = Object.create( LineSegments.prototype ); - FaceNormalsHelper.prototype.constructor = FaceNormalsHelper; - - FaceNormalsHelper.prototype.update = ( function () { - - var v1 = new Vector3(); - var v2 = new Vector3(); - var normalMatrix = new Matrix3(); - - return function update() { - - this.object.updateMatrixWorld( true ); - - normalMatrix.getNormalMatrix( this.object.matrixWorld ); - - var matrixWorld = this.object.matrixWorld; - - var position = this.geometry.attributes.position; - - // - - var objGeometry = this.object.geometry; - - var vertices = objGeometry.vertices; - - var faces = objGeometry.faces; - - var idx = 0; - - for ( var i = 0, l = faces.length; i < l; i ++ ) { - - var face = faces[ i ]; - - var normal = face.normal; - - v1.copy( vertices[ face.a ] ) - .add( vertices[ face.b ] ) - .add( vertices[ face.c ] ) - .divideScalar( 3 ) - .applyMatrix4( matrixWorld ); - - v2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 ); - - position.setXYZ( idx, v1.x, v1.y, v1.z ); - - idx = idx + 1; - - position.setXYZ( idx, v2.x, v2.y, v2.z ); - - idx = idx + 1; - - } - - position.needsUpdate = true; - - }; - - }() ); - - /** - * @author alteredq / http://alteredqualia.com/ - * @author mrdoob / http://mrdoob.com/ - * @author WestLangley / http://github.com/WestLangley - */ - - function DirectionalLightHelper( light, size, color ) { - - Object3D.call( this ); - - this.light = light; - this.light.updateMatrixWorld(); - - this.matrix = light.matrixWorld; - this.matrixAutoUpdate = false; - - this.color = color; - - if ( size === undefined ) size = 1; - - var geometry = new BufferGeometry(); - geometry.addAttribute( 'position', new Float32BufferAttribute( [ - - size, size, 0, - size, size, 0, - size, - size, 0, - - size, - size, 0, - - size, size, 0 - ], 3 ) ); - - var material = new LineBasicMaterial( { fog: false } ); - - this.lightPlane = new Line( geometry, material ); - this.add( this.lightPlane ); - - geometry = new BufferGeometry(); - geometry.addAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) ); - - this.targetLine = new Line( geometry, material ); - this.add( this.targetLine ); - - this.update(); - - } - - DirectionalLightHelper.prototype = Object.create( Object3D.prototype ); - DirectionalLightHelper.prototype.constructor = DirectionalLightHelper; - - DirectionalLightHelper.prototype.dispose = function () { - - this.lightPlane.geometry.dispose(); - this.lightPlane.material.dispose(); - this.targetLine.geometry.dispose(); - this.targetLine.material.dispose(); - - }; - - DirectionalLightHelper.prototype.update = function () { - - var v1 = new Vector3(); - var v2 = new Vector3(); - var v3 = new Vector3(); - - return function update() { - - v1.setFromMatrixPosition( this.light.matrixWorld ); - v2.setFromMatrixPosition( this.light.target.matrixWorld ); - v3.subVectors( v2, v1 ); - - this.lightPlane.lookAt( v2 ); - - if ( this.color !== undefined ) { - - this.lightPlane.material.color.set( this.color ); - this.targetLine.material.color.set( this.color ); - - } else { - - this.lightPlane.material.color.copy( this.light.color ); - this.targetLine.material.color.copy( this.light.color ); - - } - - this.targetLine.lookAt( v2 ); - this.targetLine.scale.z = v3.length(); - - }; - - }(); - - /** - * @author alteredq / http://alteredqualia.com/ - * @author Mugen87 / https://github.com/Mugen87 - * - * - shows frustum, line of sight and up of the camera - * - suitable for fast updates - * - based on frustum visualization in lightgl.js shadowmap example - * http://evanw.github.com/lightgl.js/tests/shadowmap.html - */ - - function CameraHelper( camera ) { - - var geometry = new BufferGeometry(); - var material = new LineBasicMaterial( { color: 0xffffff, vertexColors: FaceColors } ); - - var vertices = []; - var colors = []; - - var pointMap = {}; - - // colors - - var colorFrustum = new Color( 0xffaa00 ); - var colorCone = new Color( 0xff0000 ); - var colorUp = new Color( 0x00aaff ); - var colorTarget = new Color( 0xffffff ); - var colorCross = new Color( 0x333333 ); - - // near - - addLine( 'n1', 'n2', colorFrustum ); - addLine( 'n2', 'n4', colorFrustum ); - addLine( 'n4', 'n3', colorFrustum ); - addLine( 'n3', 'n1', colorFrustum ); - - // far - - addLine( 'f1', 'f2', colorFrustum ); - addLine( 'f2', 'f4', colorFrustum ); - addLine( 'f4', 'f3', colorFrustum ); - addLine( 'f3', 'f1', colorFrustum ); - - // sides - - addLine( 'n1', 'f1', colorFrustum ); - addLine( 'n2', 'f2', colorFrustum ); - addLine( 'n3', 'f3', colorFrustum ); - addLine( 'n4', 'f4', colorFrustum ); - - // cone - - addLine( 'p', 'n1', colorCone ); - addLine( 'p', 'n2', colorCone ); - addLine( 'p', 'n3', colorCone ); - addLine( 'p', 'n4', colorCone ); - - // up - - addLine( 'u1', 'u2', colorUp ); - addLine( 'u2', 'u3', colorUp ); - addLine( 'u3', 'u1', colorUp ); - - // target - - addLine( 'c', 't', colorTarget ); - addLine( 'p', 'c', colorCross ); - - // cross - - addLine( 'cn1', 'cn2', colorCross ); - addLine( 'cn3', 'cn4', colorCross ); - - addLine( 'cf1', 'cf2', colorCross ); - addLine( 'cf3', 'cf4', colorCross ); - - function addLine( a, b, color ) { - - addPoint( a, color ); - addPoint( b, color ); - - } - - function addPoint( id, color ) { - - vertices.push( 0, 0, 0 ); - colors.push( color.r, color.g, color.b ); - - if ( pointMap[ id ] === undefined ) { - - pointMap[ id ] = []; - - } - - pointMap[ id ].push( ( vertices.length / 3 ) - 1 ); - - } - - geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); - - LineSegments.call( this, geometry, material ); - - this.camera = camera; - if ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix(); - - this.matrix = camera.matrixWorld; - this.matrixAutoUpdate = false; - - this.pointMap = pointMap; - - this.update(); - - } - - CameraHelper.prototype = Object.create( LineSegments.prototype ); - CameraHelper.prototype.constructor = CameraHelper; - - CameraHelper.prototype.update = function () { - - var geometry, pointMap; - - var vector = new Vector3(); - var camera = new Camera(); - - function setPoint( point, x, y, z ) { - - vector.set( x, y, z ).unproject( camera ); - - var points = pointMap[ point ]; - - if ( points !== undefined ) { - - var position = geometry.getAttribute( 'position' ); - - for ( var i = 0, l = points.length; i < l; i ++ ) { - - position.setXYZ( points[ i ], vector.x, vector.y, vector.z ); - - } - - } - - } - - return function update() { - - geometry = this.geometry; - pointMap = this.pointMap; - - var w = 1, h = 1; - - // we need just camera projection matrix inverse - // world matrix must be identity - - camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse ); - - // center / target - - setPoint( 'c', 0, 0, - 1 ); - setPoint( 't', 0, 0, 1 ); - - // near - - setPoint( 'n1', - w, - h, - 1 ); - setPoint( 'n2', w, - h, - 1 ); - setPoint( 'n3', - w, h, - 1 ); - setPoint( 'n4', w, h, - 1 ); - - // far - - setPoint( 'f1', - w, - h, 1 ); - setPoint( 'f2', w, - h, 1 ); - setPoint( 'f3', - w, h, 1 ); - setPoint( 'f4', w, h, 1 ); - - // up - - setPoint( 'u1', w * 0.7, h * 1.1, - 1 ); - setPoint( 'u2', - w * 0.7, h * 1.1, - 1 ); - setPoint( 'u3', 0, h * 2, - 1 ); - - // cross - - setPoint( 'cf1', - w, 0, 1 ); - setPoint( 'cf2', w, 0, 1 ); - setPoint( 'cf3', 0, - h, 1 ); - setPoint( 'cf4', 0, h, 1 ); - - setPoint( 'cn1', - w, 0, - 1 ); - setPoint( 'cn2', w, 0, - 1 ); - setPoint( 'cn3', 0, - h, - 1 ); - setPoint( 'cn4', 0, h, - 1 ); - - geometry.getAttribute( 'position' ).needsUpdate = true; - - }; - - }(); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author Mugen87 / http://github.com/Mugen87 - */ - - function BoxHelper( object, color ) { - - this.object = object; - - if ( color === undefined ) color = 0xffff00; - - var indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] ); - var positions = new Float32Array( 8 * 3 ); - - var geometry = new BufferGeometry(); - geometry.setIndex( new BufferAttribute( indices, 1 ) ); - geometry.addAttribute( 'position', new BufferAttribute( positions, 3 ) ); - - LineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) ); - - this.matrixAutoUpdate = false; - - this.update(); - - } - - BoxHelper.prototype = Object.create( LineSegments.prototype ); - BoxHelper.prototype.constructor = BoxHelper; - - BoxHelper.prototype.update = ( function () { - - var box = new Box3(); - - return function update( object ) { - - if ( object !== undefined ) { - - console.warn( 'THREE.BoxHelper: .update() has no longer arguments.' ); - - } - - if ( this.object !== undefined ) { - - box.setFromObject( this.object ); - - } - - if ( box.isEmpty() ) return; - - var min = box.min; - var max = box.max; - - /* - 5____4 - 1/___0/| - | 6__|_7 - 2/___3/ - - 0: max.x, max.y, max.z - 1: min.x, max.y, max.z - 2: min.x, min.y, max.z - 3: max.x, min.y, max.z - 4: max.x, max.y, min.z - 5: min.x, max.y, min.z - 6: min.x, min.y, min.z - 7: max.x, min.y, min.z - */ - - var position = this.geometry.attributes.position; - var array = position.array; - - array[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z; - array[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z; - array[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z; - array[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z; - array[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z; - array[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z; - array[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z; - array[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z; - - position.needsUpdate = true; - - this.geometry.computeBoundingSphere(); - - }; - - } )(); - - BoxHelper.prototype.setFromObject = function ( object ) { - - this.object = object; - this.update(); - - return this; - - }; - - BoxHelper.prototype.copy = function ( source ) { - - LineSegments.prototype.copy.call( this, source ); - - this.object = source.object; - - return this; - - }; - - BoxHelper.prototype.clone = function () { - - return new this.constructor().copy( this ); - - }; - - /** - * @author WestLangley / http://github.com/WestLangley - */ - - function Box3Helper( box, hex ) { - - this.type = 'Box3Helper'; - - this.box = box; - - var color = ( hex !== undefined ) ? hex : 0xffff00; - - var indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] ); - - var positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ]; - - var geometry = new BufferGeometry(); - - geometry.setIndex( new BufferAttribute( indices, 1 ) ); - - geometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); - - LineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) ); - - this.geometry.computeBoundingSphere(); - - } - - Box3Helper.prototype = Object.create( LineSegments.prototype ); - Box3Helper.prototype.constructor = Box3Helper; - - Box3Helper.prototype.updateMatrixWorld = function ( force ) { - - var box = this.box; - - if ( box.isEmpty() ) return; - - box.getCenter( this.position ); - - box.getSize( this.scale ); - - this.scale.multiplyScalar( 0.5 ); - - Object3D.prototype.updateMatrixWorld.call( this, force ); - - }; - - /** - * @author WestLangley / http://github.com/WestLangley - */ - - function PlaneHelper( plane, size, hex ) { - - this.type = 'PlaneHelper'; - - this.plane = plane; - - this.size = ( size === undefined ) ? 1 : size; - - var color = ( hex !== undefined ) ? hex : 0xffff00; - - var positions = [ 1, - 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0 ]; - - var geometry = new BufferGeometry(); - geometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); - geometry.computeBoundingSphere(); - - Line.call( this, geometry, new LineBasicMaterial( { color: color } ) ); - - // - - var positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ]; - - var geometry2 = new BufferGeometry(); - geometry2.addAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) ); - geometry2.computeBoundingSphere(); - - this.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false } ) ) ); - - } - - PlaneHelper.prototype = Object.create( Line.prototype ); - PlaneHelper.prototype.constructor = PlaneHelper; - - PlaneHelper.prototype.updateMatrixWorld = function ( force ) { - - var scale = - this.plane.constant; - - if ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter - - this.scale.set( 0.5 * this.size, 0.5 * this.size, scale ); - - this.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here - - this.lookAt( this.plane.normal ); - - Object3D.prototype.updateMatrixWorld.call( this, force ); - - }; - - /** - * @author WestLangley / http://github.com/WestLangley - * @author zz85 / http://github.com/zz85 - * @author bhouston / http://clara.io - * - * Creates an arrow for visualizing directions - * - * Parameters: - * dir - Vector3 - * origin - Vector3 - * length - Number - * color - color in hex value - * headLength - Number - * headWidth - Number - */ - - var lineGeometry, coneGeometry; - - function ArrowHelper( dir, origin, length, color, headLength, headWidth ) { - - // dir is assumed to be normalized - - Object3D.call( this ); - - if ( dir === undefined ) dir = new Vector3( 0, 0, 1 ); - if ( origin === undefined ) origin = new Vector3( 0, 0, 0 ); - if ( length === undefined ) length = 1; - if ( color === undefined ) color = 0xffff00; - if ( headLength === undefined ) headLength = 0.2 * length; - if ( headWidth === undefined ) headWidth = 0.2 * headLength; - - if ( lineGeometry === undefined ) { - - lineGeometry = new BufferGeometry(); - lineGeometry.addAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) ); - - coneGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 ); - coneGeometry.translate( 0, - 0.5, 0 ); - - } - - this.position.copy( origin ); - - this.line = new Line( lineGeometry, new LineBasicMaterial( { color: color } ) ); - this.line.matrixAutoUpdate = false; - this.add( this.line ); - - this.cone = new Mesh( coneGeometry, new MeshBasicMaterial( { color: color } ) ); - this.cone.matrixAutoUpdate = false; - this.add( this.cone ); - - this.setDirection( dir ); - this.setLength( length, headLength, headWidth ); - - } - - ArrowHelper.prototype = Object.create( Object3D.prototype ); - ArrowHelper.prototype.constructor = ArrowHelper; - - ArrowHelper.prototype.setDirection = ( function () { - - var axis = new Vector3(); - var radians; - - return function setDirection( dir ) { - - // dir is assumed to be normalized - - if ( dir.y > 0.99999 ) { - - this.quaternion.set( 0, 0, 0, 1 ); - - } else if ( dir.y < - 0.99999 ) { - - this.quaternion.set( 1, 0, 0, 0 ); - - } else { - - axis.set( dir.z, 0, - dir.x ).normalize(); - - radians = Math.acos( dir.y ); - - this.quaternion.setFromAxisAngle( axis, radians ); - - } - - }; - - }() ); - - ArrowHelper.prototype.setLength = function ( length, headLength, headWidth ) { - - if ( headLength === undefined ) headLength = 0.2 * length; - if ( headWidth === undefined ) headWidth = 0.2 * headLength; - - this.line.scale.set( 1, Math.max( 0, length - headLength ), 1 ); - this.line.updateMatrix(); - - this.cone.scale.set( headWidth, headLength, headWidth ); - this.cone.position.y = length; - this.cone.updateMatrix(); - - }; - - ArrowHelper.prototype.setColor = function ( color ) { - - this.line.material.color.copy( color ); - this.cone.material.color.copy( color ); - - }; - - ArrowHelper.prototype.copy = function ( source ) { - - Object3D.prototype.copy.call( this, source, false ); - - this.line.copy( source.line ); - this.cone.copy( source.cone ); - - return this; - - }; - - ArrowHelper.prototype.clone = function () { - - return new this.constructor().copy( this ); - - }; - - /** - * @author sroucheray / http://sroucheray.org/ - * @author mrdoob / http://mrdoob.com/ - */ - - function AxesHelper( size ) { - - size = size || 1; - - var vertices = [ - 0, 0, 0, size, 0, 0, - 0, 0, 0, 0, size, 0, - 0, 0, 0, 0, 0, size - ]; - - var colors = [ - 1, 0, 0, 1, 0.6, 0, - 0, 1, 0, 0.6, 1, 0, - 0, 0, 1, 0, 0.6, 1 - ]; - - var geometry = new BufferGeometry(); - geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); - - var material = new LineBasicMaterial( { vertexColors: VertexColors } ); - - LineSegments.call( this, geometry, material ); - - } - - AxesHelper.prototype = Object.create( LineSegments.prototype ); - AxesHelper.prototype.constructor = AxesHelper; - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function Face4( a, b, c, d, normal, color, materialIndex ) { - - console.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' ); - return new Face3( a, b, c, normal, color, materialIndex ); - - } - - var LineStrip = 0; - - var LinePieces = 1; - - function MeshFaceMaterial( materials ) { - - console.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' ); - return materials; - - } - - function MultiMaterial( materials ) { - - if ( materials === undefined ) materials = []; - - console.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' ); - materials.isMultiMaterial = true; - materials.materials = materials; - materials.clone = function () { - - return materials.slice(); - - }; - return materials; - - } - - function PointCloud( geometry, material ) { - - console.warn( 'THREE.PointCloud has been renamed to THREE.Points.' ); - return new Points( geometry, material ); - - } - - function Particle( material ) { - - console.warn( 'THREE.Particle has been renamed to THREE.Sprite.' ); - return new Sprite( material ); - - } - - function ParticleSystem( geometry, material ) { - - console.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' ); - return new Points( geometry, material ); - - } - - function PointCloudMaterial( parameters ) { - - console.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' ); - return new PointsMaterial( parameters ); - - } - - function ParticleBasicMaterial( parameters ) { - - console.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' ); - return new PointsMaterial( parameters ); - - } - - function ParticleSystemMaterial( parameters ) { - - console.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' ); - return new PointsMaterial( parameters ); - - } - - function Vertex( x, y, z ) { - - console.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' ); - return new Vector3( x, y, z ); - - } - - // - - function DynamicBufferAttribute( array, itemSize ) { - - console.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setDynamic( true ) instead.' ); - return new BufferAttribute( array, itemSize ).setDynamic( true ); - - } - - function Int8Attribute( array, itemSize ) { - - console.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' ); - return new Int8BufferAttribute( array, itemSize ); - - } - - function Uint8Attribute( array, itemSize ) { - - console.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' ); - return new Uint8BufferAttribute( array, itemSize ); - - } - - function Uint8ClampedAttribute( array, itemSize ) { - - console.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' ); - return new Uint8ClampedBufferAttribute( array, itemSize ); - - } - - function Int16Attribute( array, itemSize ) { - - console.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' ); - return new Int16BufferAttribute( array, itemSize ); - - } - - function Uint16Attribute( array, itemSize ) { - - console.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' ); - return new Uint16BufferAttribute( array, itemSize ); - - } - - function Int32Attribute( array, itemSize ) { - - console.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' ); - return new Int32BufferAttribute( array, itemSize ); - - } - - function Uint32Attribute( array, itemSize ) { - - console.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' ); - return new Uint32BufferAttribute( array, itemSize ); - - } - - function Float32Attribute( array, itemSize ) { - - console.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' ); - return new Float32BufferAttribute( array, itemSize ); - - } - - function Float64Attribute( array, itemSize ) { - - console.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' ); - return new Float64BufferAttribute( array, itemSize ); - - } - - // - - Curve.create = function ( construct, getPoint ) { - - console.log( 'THREE.Curve.create() has been deprecated' ); - - construct.prototype = Object.create( Curve.prototype ); - construct.prototype.constructor = construct; - construct.prototype.getPoint = getPoint; - - return construct; - - }; - - // - - Object.assign( CurvePath.prototype, { - - createPointsGeometry: function ( divisions ) { - - console.warn( 'THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' ); - - // generate geometry from path points (for Line or Points objects) - - var pts = this.getPoints( divisions ); - return this.createGeometry( pts ); - - }, - - createSpacedPointsGeometry: function ( divisions ) { - - console.warn( 'THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' ); - - // generate geometry from equidistant sampling along the path - - var pts = this.getSpacedPoints( divisions ); - return this.createGeometry( pts ); - - }, - - createGeometry: function ( points ) { - - console.warn( 'THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' ); - - var geometry = new Geometry(); - - for ( var i = 0, l = points.length; i < l; i ++ ) { - - var point = points[ i ]; - geometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) ); - - } - - return geometry; - - } - - } ); - - // - - Object.assign( Path.prototype, { - - fromPoints: function ( points ) { - - console.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' ); - this.setFromPoints( points ); - - } - - } ); - - // - - function ClosedSplineCurve3( points ) { - - console.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' ); - - CatmullRomCurve3.call( this, points ); - this.type = 'catmullrom'; - this.closed = true; - - } - - ClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype ); - - // - - function SplineCurve3( points ) { - - console.warn( 'THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' ); - - CatmullRomCurve3.call( this, points ); - this.type = 'catmullrom'; - - } - - SplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype ); - - // - - function Spline( points ) { - - console.warn( 'THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.' ); - - CatmullRomCurve3.call( this, points ); - this.type = 'catmullrom'; - - } - - Spline.prototype = Object.create( CatmullRomCurve3.prototype ); - - Object.assign( Spline.prototype, { - - initFromArray: function ( /* a */ ) { - - console.error( 'THREE.Spline: .initFromArray() has been removed.' ); - - }, - getControlPointsArray: function ( /* optionalTarget */ ) { - - console.error( 'THREE.Spline: .getControlPointsArray() has been removed.' ); - - }, - reparametrizeByArcLength: function ( /* samplingCoef */ ) { - - console.error( 'THREE.Spline: .reparametrizeByArcLength() has been removed.' ); - - } - - } ); - - // - - function AxisHelper( size ) { - - console.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' ); - return new AxesHelper( size ); - - } - - function BoundingBoxHelper( object, color ) { - - console.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' ); - return new BoxHelper( object, color ); - - } - - function EdgesHelper( object, hex ) { - - console.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' ); - return new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) ); - - } - - GridHelper.prototype.setColors = function () { - - console.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' ); - - }; - - SkeletonHelper.prototype.update = function () { - - console.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' ); - - }; - - function WireframeHelper( object, hex ) { - - console.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' ); - return new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) ); - - } - - // - - Object.assign( Loader.prototype, { - - extractUrlBase: function ( url ) { - - console.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' ); - return LoaderUtils.extractUrlBase( url ); - - } - - } ); - - function XHRLoader( manager ) { - - console.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' ); - return new FileLoader( manager ); - - } - - function BinaryTextureLoader( manager ) { - - console.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' ); - return new DataTextureLoader( manager ); - - } - - Object.assign( ObjectLoader.prototype, { - - setTexturePath: function ( value ) { - - console.warn( 'THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().' ); - return this.setResourcePath( value ); - - } - - } ); - - // - - Object.assign( Box2.prototype, { - - center: function ( optionalTarget ) { - - console.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' ); - return this.getCenter( optionalTarget ); - - }, - empty: function () { - - console.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' ); - return this.isEmpty(); - - }, - isIntersectionBox: function ( box ) { - - console.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' ); - return this.intersectsBox( box ); - - }, - size: function ( optionalTarget ) { - - console.warn( 'THREE.Box2: .size() has been renamed to .getSize().' ); - return this.getSize( optionalTarget ); - - } - } ); - - Object.assign( Box3.prototype, { - - center: function ( optionalTarget ) { - - console.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' ); - return this.getCenter( optionalTarget ); - - }, - empty: function () { - - console.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' ); - return this.isEmpty(); - - }, - isIntersectionBox: function ( box ) { - - console.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' ); - return this.intersectsBox( box ); - - }, - isIntersectionSphere: function ( sphere ) { - - console.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' ); - return this.intersectsSphere( sphere ); - - }, - size: function ( optionalTarget ) { - - console.warn( 'THREE.Box3: .size() has been renamed to .getSize().' ); - return this.getSize( optionalTarget ); - - } - } ); - - Line3.prototype.center = function ( optionalTarget ) { - - console.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' ); - return this.getCenter( optionalTarget ); - - }; - - Object.assign( _Math, { - - random16: function () { - - console.warn( 'THREE.Math: .random16() has been deprecated. Use Math.random() instead.' ); - return Math.random(); - - }, - - nearestPowerOfTwo: function ( value ) { - - console.warn( 'THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().' ); - return _Math.floorPowerOfTwo( value ); - - }, - - nextPowerOfTwo: function ( value ) { - - console.warn( 'THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().' ); - return _Math.ceilPowerOfTwo( value ); - - } - - } ); - - Object.assign( Matrix3.prototype, { - - flattenToArrayOffset: function ( array, offset ) { - - console.warn( "THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead." ); - return this.toArray( array, offset ); - - }, - multiplyVector3: function ( vector ) { - - console.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' ); - return vector.applyMatrix3( this ); - - }, - multiplyVector3Array: function ( /* a */ ) { - - console.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' ); - - }, - applyToBuffer: function ( buffer /*, offset, length */ ) { - - console.warn( 'THREE.Matrix3: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.' ); - return this.applyToBufferAttribute( buffer ); - - }, - applyToVector3Array: function ( /* array, offset, length */ ) { - - console.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' ); - - } - - } ); - - Object.assign( Matrix4.prototype, { - - extractPosition: function ( m ) { - - console.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' ); - return this.copyPosition( m ); - - }, - flattenToArrayOffset: function ( array, offset ) { - - console.warn( "THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead." ); - return this.toArray( array, offset ); - - }, - getPosition: function () { - - var v1; - - return function getPosition() { - - if ( v1 === undefined ) v1 = new Vector3(); - console.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' ); - return v1.setFromMatrixColumn( this, 3 ); - - }; - - }(), - setRotationFromQuaternion: function ( q ) { - - console.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' ); - return this.makeRotationFromQuaternion( q ); - - }, - multiplyToArray: function () { - - console.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' ); - - }, - multiplyVector3: function ( vector ) { - - console.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' ); - return vector.applyMatrix4( this ); - - }, - multiplyVector4: function ( vector ) { - - console.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' ); - return vector.applyMatrix4( this ); - - }, - multiplyVector3Array: function ( /* a */ ) { - - console.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' ); - - }, - rotateAxis: function ( v ) { - - console.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' ); - v.transformDirection( this ); - - }, - crossVector: function ( vector ) { - - console.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' ); - return vector.applyMatrix4( this ); - - }, - translate: function () { - - console.error( 'THREE.Matrix4: .translate() has been removed.' ); - - }, - rotateX: function () { - - console.error( 'THREE.Matrix4: .rotateX() has been removed.' ); - - }, - rotateY: function () { - - console.error( 'THREE.Matrix4: .rotateY() has been removed.' ); - - }, - rotateZ: function () { - - console.error( 'THREE.Matrix4: .rotateZ() has been removed.' ); - - }, - rotateByAxis: function () { - - console.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' ); - - }, - applyToBuffer: function ( buffer /*, offset, length */ ) { - - console.warn( 'THREE.Matrix4: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.' ); - return this.applyToBufferAttribute( buffer ); - - }, - applyToVector3Array: function ( /* array, offset, length */ ) { - - console.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' ); - - }, - makeFrustum: function ( left, right, bottom, top, near, far ) { - - console.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' ); - return this.makePerspective( left, right, top, bottom, near, far ); - - } - - } ); - - Plane.prototype.isIntersectionLine = function ( line ) { - - console.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' ); - return this.intersectsLine( line ); - - }; - - Quaternion.prototype.multiplyVector3 = function ( vector ) { - - console.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' ); - return vector.applyQuaternion( this ); - - }; - - Object.assign( Ray.prototype, { - - isIntersectionBox: function ( box ) { - - console.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' ); - return this.intersectsBox( box ); - - }, - isIntersectionPlane: function ( plane ) { - - console.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' ); - return this.intersectsPlane( plane ); - - }, - isIntersectionSphere: function ( sphere ) { - - console.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' ); - return this.intersectsSphere( sphere ); - - } - - } ); - - Object.assign( Triangle.prototype, { - - area: function () { - - console.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' ); - return this.getArea(); - - }, - barycoordFromPoint: function ( point, target ) { - - console.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' ); - return this.getBarycoord( point, target ); - - }, - midpoint: function ( target ) { - - console.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' ); - return this.getMidpoint( target ); - - }, - normal: function ( target ) { - - console.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' ); - return this.getNormal( target ); - - }, - plane: function ( target ) { - - console.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' ); - return this.getPlane( target ); - - } - - } ); - - Object.assign( Triangle, { - - barycoordFromPoint: function ( point, a, b, c, target ) { - - console.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' ); - return Triangle.getBarycoord( point, a, b, c, target ); - - }, - normal: function ( a, b, c, target ) { - - console.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' ); - return Triangle.getNormal( a, b, c, target ); - - } - - } ); - - Object.assign( Shape.prototype, { - - extractAllPoints: function ( divisions ) { - - console.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' ); - return this.extractPoints( divisions ); - - }, - extrude: function ( options ) { - - console.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' ); - return new ExtrudeGeometry( this, options ); - - }, - makeGeometry: function ( options ) { - - console.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' ); - return new ShapeGeometry( this, options ); - - } - - } ); - - Object.assign( Vector2.prototype, { - - fromAttribute: function ( attribute, index, offset ) { - - console.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' ); - return this.fromBufferAttribute( attribute, index, offset ); - - }, - distanceToManhattan: function ( v ) { - - console.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' ); - return this.manhattanDistanceTo( v ); - - }, - lengthManhattan: function () { - - console.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' ); - return this.manhattanLength(); - - } - - } ); - - Object.assign( Vector3.prototype, { - - setEulerFromRotationMatrix: function () { - - console.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' ); - - }, - setEulerFromQuaternion: function () { - - console.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' ); - - }, - getPositionFromMatrix: function ( m ) { - - console.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' ); - return this.setFromMatrixPosition( m ); - - }, - getScaleFromMatrix: function ( m ) { - - console.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' ); - return this.setFromMatrixScale( m ); - - }, - getColumnFromMatrix: function ( index, matrix ) { - - console.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' ); - return this.setFromMatrixColumn( matrix, index ); - - }, - applyProjection: function ( m ) { - - console.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' ); - return this.applyMatrix4( m ); - - }, - fromAttribute: function ( attribute, index, offset ) { - - console.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' ); - return this.fromBufferAttribute( attribute, index, offset ); - - }, - distanceToManhattan: function ( v ) { - - console.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' ); - return this.manhattanDistanceTo( v ); - - }, - lengthManhattan: function () { - - console.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' ); - return this.manhattanLength(); - - } - - } ); - - Object.assign( Vector4.prototype, { - - fromAttribute: function ( attribute, index, offset ) { - - console.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' ); - return this.fromBufferAttribute( attribute, index, offset ); - - }, - lengthManhattan: function () { - - console.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' ); - return this.manhattanLength(); - - } - - } ); - - // - - Object.assign( Geometry.prototype, { - - computeTangents: function () { - - console.error( 'THREE.Geometry: .computeTangents() has been removed.' ); - - }, - computeLineDistances: function () { - - console.error( 'THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.' ); - - } - - } ); - - Object.assign( Object3D.prototype, { - - getChildByName: function ( name ) { - - console.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' ); - return this.getObjectByName( name ); - - }, - renderDepth: function () { - - console.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' ); - - }, - translate: function ( distance, axis ) { - - console.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' ); - return this.translateOnAxis( axis, distance ); - - }, - getWorldRotation: function () { - - console.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' ); - - } - - } ); - - Object.defineProperties( Object3D.prototype, { - - eulerOrder: { - get: function () { - - console.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' ); - return this.rotation.order; - - }, - set: function ( value ) { - - console.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' ); - this.rotation.order = value; - - } - }, - useQuaternion: { - get: function () { - - console.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' ); - - }, - set: function () { - - console.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' ); - - } - } - - } ); - - Object.defineProperties( LOD.prototype, { - - objects: { - get: function () { - - console.warn( 'THREE.LOD: .objects has been renamed to .levels.' ); - return this.levels; - - } - } - - } ); - - Object.defineProperty( Skeleton.prototype, 'useVertexTexture', { - - get: function () { - - console.warn( 'THREE.Skeleton: useVertexTexture has been removed.' ); - - }, - set: function () { - - console.warn( 'THREE.Skeleton: useVertexTexture has been removed.' ); - - } - - } ); - - SkinnedMesh.prototype.initBones = function () { - - console.error( 'THREE.SkinnedMesh: initBones() has been removed.' ); - - }; - - Object.defineProperty( Curve.prototype, '__arcLengthDivisions', { - - get: function () { - - console.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' ); - return this.arcLengthDivisions; - - }, - set: function ( value ) { - - console.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' ); - this.arcLengthDivisions = value; - - } - - } ); - - // - - PerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) { - - console.warn( "THREE.PerspectiveCamera.setLens is deprecated. " + - "Use .setFocalLength and .filmGauge for a photographic setup." ); - - if ( filmGauge !== undefined ) this.filmGauge = filmGauge; - this.setFocalLength( focalLength ); - - }; - - // - - Object.defineProperties( Light.prototype, { - onlyShadow: { - set: function () { - - console.warn( 'THREE.Light: .onlyShadow has been removed.' ); - - } - }, - shadowCameraFov: { - set: function ( value ) { - - console.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' ); - this.shadow.camera.fov = value; - - } - }, - shadowCameraLeft: { - set: function ( value ) { - - console.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' ); - this.shadow.camera.left = value; - - } - }, - shadowCameraRight: { - set: function ( value ) { - - console.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' ); - this.shadow.camera.right = value; - - } - }, - shadowCameraTop: { - set: function ( value ) { - - console.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' ); - this.shadow.camera.top = value; - - } - }, - shadowCameraBottom: { - set: function ( value ) { - - console.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' ); - this.shadow.camera.bottom = value; - - } - }, - shadowCameraNear: { - set: function ( value ) { - - console.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' ); - this.shadow.camera.near = value; - - } - }, - shadowCameraFar: { - set: function ( value ) { - - console.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' ); - this.shadow.camera.far = value; - - } - }, - shadowCameraVisible: { - set: function () { - - console.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' ); - - } - }, - shadowBias: { - set: function ( value ) { - - console.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' ); - this.shadow.bias = value; - - } - }, - shadowDarkness: { - set: function () { - - console.warn( 'THREE.Light: .shadowDarkness has been removed.' ); - - } - }, - shadowMapWidth: { - set: function ( value ) { - - console.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' ); - this.shadow.mapSize.width = value; - - } - }, - shadowMapHeight: { - set: function ( value ) { - - console.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' ); - this.shadow.mapSize.height = value; - - } - } - } ); - - // - - Object.defineProperties( BufferAttribute.prototype, { - - length: { - get: function () { - - console.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' ); - return this.array.length; - - } - }, - copyIndicesArray: function ( /* indices */ ) { - - console.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' ); - - } - - } ); - - Object.assign( BufferGeometry.prototype, { - - addIndex: function ( index ) { - - console.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' ); - this.setIndex( index ); - - }, - addDrawCall: function ( start, count, indexOffset ) { - - if ( indexOffset !== undefined ) { - - console.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' ); - - } - console.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' ); - this.addGroup( start, count ); - - }, - clearDrawCalls: function () { - - console.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' ); - this.clearGroups(); - - }, - computeTangents: function () { - - console.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' ); - - }, - computeOffsets: function () { - - console.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' ); - - } - - } ); - - Object.defineProperties( BufferGeometry.prototype, { - - drawcalls: { - get: function () { - - console.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' ); - return this.groups; - - } - }, - offsets: { - get: function () { - - console.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' ); - return this.groups; - - } - } - - } ); - - // - - Object.assign( ExtrudeBufferGeometry.prototype, { - - getArrays: function () { - - console.error( 'THREE.ExtrudeBufferGeometry: .getArrays() has been removed.' ); - - }, - - addShapeList: function () { - - console.error( 'THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.' ); - - }, - - addShape: function () { - - console.error( 'THREE.ExtrudeBufferGeometry: .addShape() has been removed.' ); - - } - - } ); - - // - - Object.defineProperties( Uniform.prototype, { - - dynamic: { - set: function () { - - console.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' ); - - } - }, - onUpdate: { - value: function () { - - console.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' ); - return this; - - } - } - - } ); - - // - - Object.defineProperties( Material.prototype, { - - wrapAround: { - get: function () { - - console.warn( 'THREE.Material: .wrapAround has been removed.' ); - - }, - set: function () { - - console.warn( 'THREE.Material: .wrapAround has been removed.' ); - - } - }, - - overdraw: { - get: function () { - - console.warn( 'THREE.Material: .overdraw has been removed.' ); - - }, - set: function () { - - console.warn( 'THREE.Material: .overdraw has been removed.' ); - - } - }, - - wrapRGB: { - get: function () { - - console.warn( 'THREE.Material: .wrapRGB has been removed.' ); - return new Color(); - - } - }, - - shading: { - get: function () { - - console.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' ); - - }, - set: function ( value ) { - - console.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' ); - this.flatShading = ( value === FlatShading ); - - } - } - - } ); - - Object.defineProperties( MeshPhongMaterial.prototype, { - - metal: { - get: function () { - - console.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' ); - return false; - - }, - set: function () { - - console.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' ); - - } - } - - } ); - - Object.defineProperties( ShaderMaterial.prototype, { - - derivatives: { - get: function () { - - console.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' ); - return this.extensions.derivatives; - - }, - set: function ( value ) { - - console.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' ); - this.extensions.derivatives = value; - - } - } - - } ); - - // - - Object.assign( WebGLRenderer.prototype, { - - clearTarget: function ( renderTarget, color, depth, stencil ) { - - console.warn( 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.' ); - this.setRenderTarget( renderTarget ); - this.clear( color, depth, stencil ); - - }, - animate: function ( callback ) { - - console.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' ); - this.setAnimationLoop( callback ); - - }, - getCurrentRenderTarget: function () { - - console.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' ); - return this.getRenderTarget(); - - }, - getMaxAnisotropy: function () { - - console.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' ); - return this.capabilities.getMaxAnisotropy(); - - }, - getPrecision: function () { - - console.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' ); - return this.capabilities.precision; - - }, - resetGLState: function () { - - console.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' ); - return this.state.reset(); - - }, - supportsFloatTextures: function () { - - console.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \'OES_texture_float\' ).' ); - return this.extensions.get( 'OES_texture_float' ); - - }, - supportsHalfFloatTextures: function () { - - console.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \'OES_texture_half_float\' ).' ); - return this.extensions.get( 'OES_texture_half_float' ); - - }, - supportsStandardDerivatives: function () { - - console.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \'OES_standard_derivatives\' ).' ); - return this.extensions.get( 'OES_standard_derivatives' ); - - }, - supportsCompressedTextureS3TC: function () { - - console.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \'WEBGL_compressed_texture_s3tc\' ).' ); - return this.extensions.get( 'WEBGL_compressed_texture_s3tc' ); - - }, - supportsCompressedTexturePVRTC: function () { - - console.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \'WEBGL_compressed_texture_pvrtc\' ).' ); - return this.extensions.get( 'WEBGL_compressed_texture_pvrtc' ); - - }, - supportsBlendMinMax: function () { - - console.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \'EXT_blend_minmax\' ).' ); - return this.extensions.get( 'EXT_blend_minmax' ); - - }, - supportsVertexTextures: function () { - - console.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' ); - return this.capabilities.vertexTextures; - - }, - supportsInstancedArrays: function () { - - console.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \'ANGLE_instanced_arrays\' ).' ); - return this.extensions.get( 'ANGLE_instanced_arrays' ); - - }, - enableScissorTest: function ( boolean ) { - - console.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' ); - this.setScissorTest( boolean ); - - }, - initMaterial: function () { - - console.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' ); - - }, - addPrePlugin: function () { - - console.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' ); - - }, - addPostPlugin: function () { - - console.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' ); - - }, - updateShadowMap: function () { - - console.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' ); - - }, - setFaceCulling: function () { - - console.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' ); - - }, - allocTextureUnit: function () { - - console.warn( 'THREE.WebGLRenderer: .allocTextureUnit() has been removed.' ); - - }, - setTexture: function () { - - console.warn( 'THREE.WebGLRenderer: .setTexture() has been removed.' ); - - }, - setTexture2D: function () { - - console.warn( 'THREE.WebGLRenderer: .setTexture2D() has been removed.' ); - - }, - setTextureCube: function () { - - console.warn( 'THREE.WebGLRenderer: .setTextureCube() has been removed.' ); - - } - - } ); - - Object.defineProperties( WebGLRenderer.prototype, { - - shadowMapEnabled: { - get: function () { - - return this.shadowMap.enabled; - - }, - set: function ( value ) { - - console.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' ); - this.shadowMap.enabled = value; - - } - }, - shadowMapType: { - get: function () { - - return this.shadowMap.type; - - }, - set: function ( value ) { - - console.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' ); - this.shadowMap.type = value; - - } - }, - shadowMapCullFace: { - get: function () { - - console.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' ); - return undefined; - - }, - set: function ( /* value */ ) { - - console.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' ); - - } - } - } ); - - Object.defineProperties( WebGLShadowMap.prototype, { - - cullFace: { - get: function () { - - console.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' ); - return undefined; - - }, - set: function ( /* cullFace */ ) { - - console.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' ); - - } - }, - renderReverseSided: { - get: function () { - - console.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' ); - return undefined; - - }, - set: function () { - - console.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' ); - - } - }, - renderSingleSided: { - get: function () { - - console.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' ); - return undefined; - - }, - set: function () { - - console.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' ); - - } - } - - } ); - - // - - Object.defineProperties( WebGLRenderTargetCube.prototype, { - - activeCubeFace: { - set: function ( /* value */ ) { - - console.warn( 'THREE.WebGLRenderTargetCube: .activeCubeFace has been removed. It is now the second parameter of WebGLRenderer.setRenderTarget().' ); - - } - }, - activeMipMapLevel: { - set: function ( /* value */ ) { - - console.warn( 'THREE.WebGLRenderTargetCube: .activeMipMapLevel has been removed. It is now the third parameter of WebGLRenderer.setRenderTarget().' ); - - } - } - - } ); - - // - - Object.defineProperties( WebGLRenderTarget.prototype, { - - wrapS: { - get: function () { - - console.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' ); - return this.texture.wrapS; - - }, - set: function ( value ) { - - console.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' ); - this.texture.wrapS = value; - - } - }, - wrapT: { - get: function () { - - console.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' ); - return this.texture.wrapT; - - }, - set: function ( value ) { - - console.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' ); - this.texture.wrapT = value; - - } - }, - magFilter: { - get: function () { - - console.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' ); - return this.texture.magFilter; - - }, - set: function ( value ) { - - console.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' ); - this.texture.magFilter = value; - - } - }, - minFilter: { - get: function () { - - console.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' ); - return this.texture.minFilter; - - }, - set: function ( value ) { - - console.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' ); - this.texture.minFilter = value; - - } - }, - anisotropy: { - get: function () { - - console.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' ); - return this.texture.anisotropy; - - }, - set: function ( value ) { - - console.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' ); - this.texture.anisotropy = value; - - } - }, - offset: { - get: function () { - - console.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' ); - return this.texture.offset; - - }, - set: function ( value ) { - - console.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' ); - this.texture.offset = value; - - } - }, - repeat: { - get: function () { - - console.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' ); - return this.texture.repeat; - - }, - set: function ( value ) { - - console.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' ); - this.texture.repeat = value; - - } - }, - format: { - get: function () { - - console.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' ); - return this.texture.format; - - }, - set: function ( value ) { - - console.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' ); - this.texture.format = value; - - } - }, - type: { - get: function () { - - console.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' ); - return this.texture.type; - - }, - set: function ( value ) { - - console.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' ); - this.texture.type = value; - - } - }, - generateMipmaps: { - get: function () { - - console.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' ); - return this.texture.generateMipmaps; - - }, - set: function ( value ) { - - console.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' ); - this.texture.generateMipmaps = value; - - } - } - - } ); - - // - - Object.defineProperties( WebVRManager.prototype, { - - standing: { - set: function ( /* value */ ) { - - console.warn( 'THREE.WebVRManager: .standing has been removed.' ); - - } - }, - userHeight: { - set: function ( /* value */ ) { - - console.warn( 'THREE.WebVRManager: .userHeight has been removed.' ); - - } - } - - } ); - - // - - Audio.prototype.load = function ( file ) { - - console.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' ); - var scope = this; - var audioLoader = new AudioLoader(); - audioLoader.load( file, function ( buffer ) { - - scope.setBuffer( buffer ); - - } ); - return this; - - }; - - AudioAnalyser.prototype.getData = function () { - - console.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' ); - return this.getFrequencyData(); - - }; - - // - - CubeCamera.prototype.updateCubeMap = function ( renderer, scene ) { - - console.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' ); - return this.update( renderer, scene ); - - }; - - // - - var GeometryUtils = { - - merge: function ( geometry1, geometry2, materialIndexOffset ) { - - console.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' ); - var matrix; - - if ( geometry2.isMesh ) { - - geometry2.matrixAutoUpdate && geometry2.updateMatrix(); - - matrix = geometry2.matrix; - geometry2 = geometry2.geometry; - - } - - geometry1.merge( geometry2, matrix, materialIndexOffset ); - - }, - - center: function ( geometry ) { - - console.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' ); - return geometry.center(); - - } - - }; - - ImageUtils.crossOrigin = undefined; - - ImageUtils.loadTexture = function ( url, mapping, onLoad, onError ) { - - console.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' ); - - var loader = new TextureLoader(); - loader.setCrossOrigin( this.crossOrigin ); - - var texture = loader.load( url, onLoad, undefined, onError ); - - if ( mapping ) texture.mapping = mapping; - - return texture; - - }; - - ImageUtils.loadTextureCube = function ( urls, mapping, onLoad, onError ) { - - console.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' ); - - var loader = new CubeTextureLoader(); - loader.setCrossOrigin( this.crossOrigin ); - - var texture = loader.load( urls, onLoad, undefined, onError ); - - if ( mapping ) texture.mapping = mapping; - - return texture; - - }; - - ImageUtils.loadCompressedTexture = function () { - - console.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' ); - - }; - - ImageUtils.loadCompressedTextureCube = function () { - - console.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' ); - - }; - - // - - function CanvasRenderer() { - - console.error( 'THREE.CanvasRenderer has been removed' ); - - } - - // - - function JSONLoader() { - - console.error( 'THREE.JSONLoader has been removed.' ); - - } - - // - - var SceneUtils = { - - createMultiMaterialObject: function ( /* geometry, materials */ ) { - - console.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' ); - - }, - - detach: function ( /* child, parent, scene */ ) { - - console.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' ); - - }, - - attach: function ( /* child, scene, parent */ ) { - - console.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' ); - - } - - }; - - // - - function LensFlare() { - - console.error( 'THREE.LensFlare has been moved to /examples/js/objects/Lensflare.js' ); - - } - - exports.ACESFilmicToneMapping = ACESFilmicToneMapping; - exports.AddEquation = AddEquation; - exports.AddOperation = AddOperation; - exports.AdditiveBlending = AdditiveBlending; - exports.AlphaFormat = AlphaFormat; - exports.AlwaysDepth = AlwaysDepth; - exports.AmbientLight = AmbientLight; - exports.AmbientLightProbe = AmbientLightProbe; - exports.AnimationClip = AnimationClip; - exports.AnimationLoader = AnimationLoader; - exports.AnimationMixer = AnimationMixer; - exports.AnimationObjectGroup = AnimationObjectGroup; - exports.AnimationUtils = AnimationUtils; - exports.ArcCurve = ArcCurve; - exports.ArrayCamera = ArrayCamera; - exports.ArrowHelper = ArrowHelper; - exports.Audio = Audio; - exports.AudioAnalyser = AudioAnalyser; - exports.AudioContext = AudioContext; - exports.AudioListener = AudioListener; - exports.AudioLoader = AudioLoader; - exports.AxesHelper = AxesHelper; - exports.AxisHelper = AxisHelper; - exports.BackSide = BackSide; - exports.BasicDepthPacking = BasicDepthPacking; - exports.BasicShadowMap = BasicShadowMap; - exports.BinaryTextureLoader = BinaryTextureLoader; - exports.Bone = Bone; - exports.BooleanKeyframeTrack = BooleanKeyframeTrack; - exports.BoundingBoxHelper = BoundingBoxHelper; - exports.Box2 = Box2; - exports.Box3 = Box3; - exports.Box3Helper = Box3Helper; - exports.BoxBufferGeometry = BoxBufferGeometry; - exports.BoxGeometry = BoxGeometry; - exports.BoxHelper = BoxHelper; - exports.BufferAttribute = BufferAttribute; - exports.BufferGeometry = BufferGeometry; - exports.BufferGeometryLoader = BufferGeometryLoader; - exports.ByteType = ByteType; - exports.Cache = Cache; - exports.Camera = Camera; - exports.CameraHelper = CameraHelper; - exports.CanvasRenderer = CanvasRenderer; - exports.CanvasTexture = CanvasTexture; - exports.CatmullRomCurve3 = CatmullRomCurve3; - exports.CineonToneMapping = CineonToneMapping; - exports.CircleBufferGeometry = CircleBufferGeometry; - exports.CircleGeometry = CircleGeometry; - exports.ClampToEdgeWrapping = ClampToEdgeWrapping; - exports.Clock = Clock; - exports.ClosedSplineCurve3 = ClosedSplineCurve3; - exports.Color = Color; - exports.ColorKeyframeTrack = ColorKeyframeTrack; - exports.CompressedTexture = CompressedTexture; - exports.CompressedTextureLoader = CompressedTextureLoader; - exports.ConeBufferGeometry = ConeBufferGeometry; - exports.ConeGeometry = ConeGeometry; - exports.CubeCamera = CubeCamera; - exports.CubeGeometry = BoxGeometry; - exports.CubeReflectionMapping = CubeReflectionMapping; - exports.CubeRefractionMapping = CubeRefractionMapping; - exports.CubeTexture = CubeTexture; - exports.CubeTextureLoader = CubeTextureLoader; - exports.CubeUVReflectionMapping = CubeUVReflectionMapping; - exports.CubeUVRefractionMapping = CubeUVRefractionMapping; - exports.CubicBezierCurve = CubicBezierCurve; - exports.CubicBezierCurve3 = CubicBezierCurve3; - exports.CubicInterpolant = CubicInterpolant; - exports.CullFaceBack = CullFaceBack; - exports.CullFaceFront = CullFaceFront; - exports.CullFaceFrontBack = CullFaceFrontBack; - exports.CullFaceNone = CullFaceNone; - exports.Curve = Curve; - exports.CurvePath = CurvePath; - exports.CustomBlending = CustomBlending; - exports.CylinderBufferGeometry = CylinderBufferGeometry; - exports.CylinderGeometry = CylinderGeometry; - exports.Cylindrical = Cylindrical; - exports.DataTexture = DataTexture; - exports.DataTexture2DArray = DataTexture2DArray; - exports.DataTexture3D = DataTexture3D; - exports.DataTextureLoader = DataTextureLoader; - exports.DefaultLoadingManager = DefaultLoadingManager; - exports.DepthFormat = DepthFormat; - exports.DepthStencilFormat = DepthStencilFormat; - exports.DepthTexture = DepthTexture; - exports.DirectionalLight = DirectionalLight; - exports.DirectionalLightHelper = DirectionalLightHelper; - exports.DirectionalLightShadow = DirectionalLightShadow; - exports.DiscreteInterpolant = DiscreteInterpolant; - exports.DodecahedronBufferGeometry = DodecahedronBufferGeometry; - exports.DodecahedronGeometry = DodecahedronGeometry; - exports.DoubleSide = DoubleSide; - exports.DstAlphaFactor = DstAlphaFactor; - exports.DstColorFactor = DstColorFactor; - exports.DynamicBufferAttribute = DynamicBufferAttribute; - exports.EdgesGeometry = EdgesGeometry; - exports.EdgesHelper = EdgesHelper; - exports.EllipseCurve = EllipseCurve; - exports.EqualDepth = EqualDepth; - exports.EquirectangularReflectionMapping = EquirectangularReflectionMapping; - exports.EquirectangularRefractionMapping = EquirectangularRefractionMapping; - exports.Euler = Euler; - exports.EventDispatcher = EventDispatcher; - exports.ExtrudeBufferGeometry = ExtrudeBufferGeometry; - exports.ExtrudeGeometry = ExtrudeGeometry; - exports.Face3 = Face3; - exports.Face4 = Face4; - exports.FaceColors = FaceColors; - exports.FaceNormalsHelper = FaceNormalsHelper; - exports.FileLoader = FileLoader; - exports.FlatShading = FlatShading; - exports.Float32Attribute = Float32Attribute; - exports.Float32BufferAttribute = Float32BufferAttribute; - exports.Float64Attribute = Float64Attribute; - exports.Float64BufferAttribute = Float64BufferAttribute; - exports.FloatType = FloatType; - exports.Fog = Fog; - exports.FogExp2 = FogExp2; - exports.Font = Font; - exports.FontLoader = FontLoader; - exports.FrontFaceDirectionCCW = FrontFaceDirectionCCW; - exports.FrontFaceDirectionCW = FrontFaceDirectionCW; - exports.FrontSide = FrontSide; - exports.Frustum = Frustum; - exports.GammaEncoding = GammaEncoding; - exports.Geometry = Geometry; - exports.GeometryUtils = GeometryUtils; - exports.GreaterDepth = GreaterDepth; - exports.GreaterEqualDepth = GreaterEqualDepth; - exports.GridHelper = GridHelper; - exports.Group = Group; - exports.HalfFloatType = HalfFloatType; - exports.HemisphereLight = HemisphereLight; - exports.HemisphereLightHelper = HemisphereLightHelper; - exports.HemisphereLightProbe = HemisphereLightProbe; - exports.IcosahedronBufferGeometry = IcosahedronBufferGeometry; - exports.IcosahedronGeometry = IcosahedronGeometry; - exports.ImageBitmapLoader = ImageBitmapLoader; - exports.ImageLoader = ImageLoader; - exports.ImageUtils = ImageUtils; - exports.ImmediateRenderObject = ImmediateRenderObject; - exports.InstancedBufferAttribute = InstancedBufferAttribute; - exports.InstancedBufferGeometry = InstancedBufferGeometry; - exports.InstancedInterleavedBuffer = InstancedInterleavedBuffer; - exports.Int16Attribute = Int16Attribute; - exports.Int16BufferAttribute = Int16BufferAttribute; - exports.Int32Attribute = Int32Attribute; - exports.Int32BufferAttribute = Int32BufferAttribute; - exports.Int8Attribute = Int8Attribute; - exports.Int8BufferAttribute = Int8BufferAttribute; - exports.IntType = IntType; - exports.InterleavedBuffer = InterleavedBuffer; - exports.InterleavedBufferAttribute = InterleavedBufferAttribute; - exports.Interpolant = Interpolant; - exports.InterpolateDiscrete = InterpolateDiscrete; - exports.InterpolateLinear = InterpolateLinear; - exports.InterpolateSmooth = InterpolateSmooth; - exports.JSONLoader = JSONLoader; - exports.KeyframeTrack = KeyframeTrack; - exports.LOD = LOD; - exports.LatheBufferGeometry = LatheBufferGeometry; - exports.LatheGeometry = LatheGeometry; - exports.Layers = Layers; - exports.LensFlare = LensFlare; - exports.LessDepth = LessDepth; - exports.LessEqualDepth = LessEqualDepth; - exports.Light = Light; - exports.LightProbe = LightProbe; - exports.LightProbeHelper = LightProbeHelper; - exports.LightShadow = LightShadow; - exports.Line = Line; - exports.Line3 = Line3; - exports.LineBasicMaterial = LineBasicMaterial; - exports.LineCurve = LineCurve; - exports.LineCurve3 = LineCurve3; - exports.LineDashedMaterial = LineDashedMaterial; - exports.LineLoop = LineLoop; - exports.LinePieces = LinePieces; - exports.LineSegments = LineSegments; - exports.LineStrip = LineStrip; - exports.LinearEncoding = LinearEncoding; - exports.LinearFilter = LinearFilter; - exports.LinearInterpolant = LinearInterpolant; - exports.LinearMipMapLinearFilter = LinearMipMapLinearFilter; - exports.LinearMipMapNearestFilter = LinearMipMapNearestFilter; - exports.LinearToneMapping = LinearToneMapping; - exports.Loader = Loader; - exports.LoaderUtils = LoaderUtils; - exports.LoadingManager = LoadingManager; - exports.LogLuvEncoding = LogLuvEncoding; - exports.LoopOnce = LoopOnce; - exports.LoopPingPong = LoopPingPong; - exports.LoopRepeat = LoopRepeat; - exports.LuminanceAlphaFormat = LuminanceAlphaFormat; - exports.LuminanceFormat = LuminanceFormat; - exports.MOUSE = MOUSE; - exports.Material = Material; - exports.MaterialLoader = MaterialLoader; - exports.Math = _Math; - exports.Matrix3 = Matrix3; - exports.Matrix4 = Matrix4; - exports.MaxEquation = MaxEquation; - exports.Mesh = Mesh; - exports.MeshBasicMaterial = MeshBasicMaterial; - exports.MeshDepthMaterial = MeshDepthMaterial; - exports.MeshDistanceMaterial = MeshDistanceMaterial; - exports.MeshFaceMaterial = MeshFaceMaterial; - exports.MeshLambertMaterial = MeshLambertMaterial; - exports.MeshMatcapMaterial = MeshMatcapMaterial; - exports.MeshNormalMaterial = MeshNormalMaterial; - exports.MeshPhongMaterial = MeshPhongMaterial; - exports.MeshPhysicalMaterial = MeshPhysicalMaterial; - exports.MeshStandardMaterial = MeshStandardMaterial; - exports.MeshToonMaterial = MeshToonMaterial; - exports.MinEquation = MinEquation; - exports.MirroredRepeatWrapping = MirroredRepeatWrapping; - exports.MixOperation = MixOperation; - exports.MultiMaterial = MultiMaterial; - exports.MultiplyBlending = MultiplyBlending; - exports.MultiplyOperation = MultiplyOperation; - exports.NearestFilter = NearestFilter; - exports.NearestMipMapLinearFilter = NearestMipMapLinearFilter; - exports.NearestMipMapNearestFilter = NearestMipMapNearestFilter; - exports.NeverDepth = NeverDepth; - exports.NoBlending = NoBlending; - exports.NoColors = NoColors; - exports.NoToneMapping = NoToneMapping; - exports.NormalBlending = NormalBlending; - exports.NotEqualDepth = NotEqualDepth; - exports.NumberKeyframeTrack = NumberKeyframeTrack; - exports.Object3D = Object3D; - exports.ObjectLoader = ObjectLoader; - exports.ObjectSpaceNormalMap = ObjectSpaceNormalMap; - exports.OctahedronBufferGeometry = OctahedronBufferGeometry; - exports.OctahedronGeometry = OctahedronGeometry; - exports.OneFactor = OneFactor; - exports.OneMinusDstAlphaFactor = OneMinusDstAlphaFactor; - exports.OneMinusDstColorFactor = OneMinusDstColorFactor; - exports.OneMinusSrcAlphaFactor = OneMinusSrcAlphaFactor; - exports.OneMinusSrcColorFactor = OneMinusSrcColorFactor; - exports.OrthographicCamera = OrthographicCamera; - exports.PCFShadowMap = PCFShadowMap; - exports.PCFSoftShadowMap = PCFSoftShadowMap; - exports.ParametricBufferGeometry = ParametricBufferGeometry; - exports.ParametricGeometry = ParametricGeometry; - exports.Particle = Particle; - exports.ParticleBasicMaterial = ParticleBasicMaterial; - exports.ParticleSystem = ParticleSystem; - exports.ParticleSystemMaterial = ParticleSystemMaterial; - exports.Path = Path; - exports.PerspectiveCamera = PerspectiveCamera; - exports.Plane = Plane; - exports.PlaneBufferGeometry = PlaneBufferGeometry; - exports.PlaneGeometry = PlaneGeometry; - exports.PlaneHelper = PlaneHelper; - exports.PointCloud = PointCloud; - exports.PointCloudMaterial = PointCloudMaterial; - exports.PointLight = PointLight; - exports.PointLightHelper = PointLightHelper; - exports.Points = Points; - exports.PointsMaterial = PointsMaterial; - exports.PolarGridHelper = PolarGridHelper; - exports.PolyhedronBufferGeometry = PolyhedronBufferGeometry; - exports.PolyhedronGeometry = PolyhedronGeometry; - exports.PositionalAudio = PositionalAudio; - exports.PositionalAudioHelper = PositionalAudioHelper; - exports.PropertyBinding = PropertyBinding; - exports.PropertyMixer = PropertyMixer; - exports.QuadraticBezierCurve = QuadraticBezierCurve; - exports.QuadraticBezierCurve3 = QuadraticBezierCurve3; - exports.Quaternion = Quaternion; - exports.QuaternionKeyframeTrack = QuaternionKeyframeTrack; - exports.QuaternionLinearInterpolant = QuaternionLinearInterpolant; - exports.REVISION = REVISION; - exports.RGBADepthPacking = RGBADepthPacking; - exports.RGBAFormat = RGBAFormat; - exports.RGBA_ASTC_10x10_Format = RGBA_ASTC_10x10_Format; - exports.RGBA_ASTC_10x5_Format = RGBA_ASTC_10x5_Format; - exports.RGBA_ASTC_10x6_Format = RGBA_ASTC_10x6_Format; - exports.RGBA_ASTC_10x8_Format = RGBA_ASTC_10x8_Format; - exports.RGBA_ASTC_12x10_Format = RGBA_ASTC_12x10_Format; - exports.RGBA_ASTC_12x12_Format = RGBA_ASTC_12x12_Format; - exports.RGBA_ASTC_4x4_Format = RGBA_ASTC_4x4_Format; - exports.RGBA_ASTC_5x4_Format = RGBA_ASTC_5x4_Format; - exports.RGBA_ASTC_5x5_Format = RGBA_ASTC_5x5_Format; - exports.RGBA_ASTC_6x5_Format = RGBA_ASTC_6x5_Format; - exports.RGBA_ASTC_6x6_Format = RGBA_ASTC_6x6_Format; - exports.RGBA_ASTC_8x5_Format = RGBA_ASTC_8x5_Format; - exports.RGBA_ASTC_8x6_Format = RGBA_ASTC_8x6_Format; - exports.RGBA_ASTC_8x8_Format = RGBA_ASTC_8x8_Format; - exports.RGBA_PVRTC_2BPPV1_Format = RGBA_PVRTC_2BPPV1_Format; - exports.RGBA_PVRTC_4BPPV1_Format = RGBA_PVRTC_4BPPV1_Format; - exports.RGBA_S3TC_DXT1_Format = RGBA_S3TC_DXT1_Format; - exports.RGBA_S3TC_DXT3_Format = RGBA_S3TC_DXT3_Format; - exports.RGBA_S3TC_DXT5_Format = RGBA_S3TC_DXT5_Format; - exports.RGBDEncoding = RGBDEncoding; - exports.RGBEEncoding = RGBEEncoding; - exports.RGBEFormat = RGBEFormat; - exports.RGBFormat = RGBFormat; - exports.RGBM16Encoding = RGBM16Encoding; - exports.RGBM7Encoding = RGBM7Encoding; - exports.RGB_ETC1_Format = RGB_ETC1_Format; - exports.RGB_PVRTC_2BPPV1_Format = RGB_PVRTC_2BPPV1_Format; - exports.RGB_PVRTC_4BPPV1_Format = RGB_PVRTC_4BPPV1_Format; - exports.RGB_S3TC_DXT1_Format = RGB_S3TC_DXT1_Format; - exports.RawShaderMaterial = RawShaderMaterial; - exports.Ray = Ray; - exports.Raycaster = Raycaster; - exports.RectAreaLight = RectAreaLight; - exports.RectAreaLightHelper = RectAreaLightHelper; - exports.RedFormat = RedFormat; - exports.ReinhardToneMapping = ReinhardToneMapping; - exports.RepeatWrapping = RepeatWrapping; - exports.ReverseSubtractEquation = ReverseSubtractEquation; - exports.RingBufferGeometry = RingBufferGeometry; - exports.RingGeometry = RingGeometry; - exports.Scene = Scene; - exports.SceneUtils = SceneUtils; - exports.ShaderChunk = ShaderChunk; - exports.ShaderLib = ShaderLib; - exports.ShaderMaterial = ShaderMaterial; - exports.ShadowMaterial = ShadowMaterial; - exports.Shape = Shape; - exports.ShapeBufferGeometry = ShapeBufferGeometry; - exports.ShapeGeometry = ShapeGeometry; - exports.ShapePath = ShapePath; - exports.ShapeUtils = ShapeUtils; - exports.ShortType = ShortType; - exports.Skeleton = Skeleton; - exports.SkeletonHelper = SkeletonHelper; - exports.SkinnedMesh = SkinnedMesh; - exports.SmoothShading = SmoothShading; - exports.Sphere = Sphere; - exports.SphereBufferGeometry = SphereBufferGeometry; - exports.SphereGeometry = SphereGeometry; - exports.Spherical = Spherical; - exports.SphericalHarmonics3 = SphericalHarmonics3; - exports.SphericalReflectionMapping = SphericalReflectionMapping; - exports.Spline = Spline; - exports.SplineCurve = SplineCurve; - exports.SplineCurve3 = SplineCurve3; - exports.SpotLight = SpotLight; - exports.SpotLightHelper = SpotLightHelper; - exports.SpotLightShadow = SpotLightShadow; - exports.Sprite = Sprite; - exports.SpriteMaterial = SpriteMaterial; - exports.SrcAlphaFactor = SrcAlphaFactor; - exports.SrcAlphaSaturateFactor = SrcAlphaSaturateFactor; - exports.SrcColorFactor = SrcColorFactor; - exports.StereoCamera = StereoCamera; - exports.StringKeyframeTrack = StringKeyframeTrack; - exports.SubtractEquation = SubtractEquation; - exports.SubtractiveBlending = SubtractiveBlending; - exports.TangentSpaceNormalMap = TangentSpaceNormalMap; - exports.TetrahedronBufferGeometry = TetrahedronBufferGeometry; - exports.TetrahedronGeometry = TetrahedronGeometry; - exports.TextBufferGeometry = TextBufferGeometry; - exports.TextGeometry = TextGeometry; - exports.Texture = Texture; - exports.TextureLoader = TextureLoader; - exports.TorusBufferGeometry = TorusBufferGeometry; - exports.TorusGeometry = TorusGeometry; - exports.TorusKnotBufferGeometry = TorusKnotBufferGeometry; - exports.TorusKnotGeometry = TorusKnotGeometry; - exports.Triangle = Triangle; - exports.TriangleFanDrawMode = TriangleFanDrawMode; - exports.TriangleStripDrawMode = TriangleStripDrawMode; - exports.TrianglesDrawMode = TrianglesDrawMode; - exports.TubeBufferGeometry = TubeBufferGeometry; - exports.TubeGeometry = TubeGeometry; - exports.UVMapping = UVMapping; - exports.Uint16Attribute = Uint16Attribute; - exports.Uint16BufferAttribute = Uint16BufferAttribute; - exports.Uint32Attribute = Uint32Attribute; - exports.Uint32BufferAttribute = Uint32BufferAttribute; - exports.Uint8Attribute = Uint8Attribute; - exports.Uint8BufferAttribute = Uint8BufferAttribute; - exports.Uint8ClampedAttribute = Uint8ClampedAttribute; - exports.Uint8ClampedBufferAttribute = Uint8ClampedBufferAttribute; - exports.Uncharted2ToneMapping = Uncharted2ToneMapping; - exports.Uniform = Uniform; - exports.UniformsLib = UniformsLib; - exports.UniformsUtils = UniformsUtils; - exports.UnsignedByteType = UnsignedByteType; - exports.UnsignedInt248Type = UnsignedInt248Type; - exports.UnsignedIntType = UnsignedIntType; - exports.UnsignedShort4444Type = UnsignedShort4444Type; - exports.UnsignedShort5551Type = UnsignedShort5551Type; - exports.UnsignedShort565Type = UnsignedShort565Type; - exports.UnsignedShortType = UnsignedShortType; - exports.Vector2 = Vector2; - exports.Vector3 = Vector3; - exports.Vector4 = Vector4; - exports.VectorKeyframeTrack = VectorKeyframeTrack; - exports.Vertex = Vertex; - exports.VertexColors = VertexColors; - exports.VertexNormalsHelper = VertexNormalsHelper; - exports.VideoTexture = VideoTexture; - exports.WebGLMultisampleRenderTarget = WebGLMultisampleRenderTarget; - exports.WebGLRenderTarget = WebGLRenderTarget; - exports.WebGLRenderTargetCube = WebGLRenderTargetCube; - exports.WebGLRenderer = WebGLRenderer; - exports.WebGLUtils = WebGLUtils; - exports.WireframeGeometry = WireframeGeometry; - exports.WireframeHelper = WireframeHelper; - exports.WrapAroundEnding = WrapAroundEnding; - exports.XHRLoader = XHRLoader; - exports.ZeroCurvatureEnding = ZeroCurvatureEnding; - exports.ZeroFactor = ZeroFactor; - exports.ZeroSlopeEnding = ZeroSlopeEnding; - exports.sRGBEncoding = sRGBEncoding; - - Object.defineProperty(exports, '__esModule', { value: true }); - -})); From 715db5dfbd69cd8b1227cead4cd35c5d80d9df7c Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Tue, 17 May 2022 16:47:09 -0700 Subject: [PATCH 095/150] Support loading from non-root locations. --- Elements.Wasm/wwwroot/elements.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Elements.Wasm/wwwroot/elements.js b/Elements.Wasm/wwwroot/elements.js index cc8a5a9f5..5eb31b713 100644 --- a/Elements.Wasm/wwwroot/elements.js +++ b/Elements.Wasm/wwwroot/elements.js @@ -22,6 +22,7 @@ class Elements { Blazor.start({ loadBootResource: function (type, name, defaultUri, integrity) { // console.log(`Loading: '${type}', '${name}', '${defaultUri}', '${integrity}'`); + const root = window.location.protocol + '//' + window.location.host switch (type) { case 'manifest': case 'assembly': @@ -29,7 +30,7 @@ Blazor.start({ case 'dotnetjs': case 'dotnetwasm': case 'timezonedata': - return `elements/_framework/${name}`; + return `${root}/elements/_framework/${name}`; } } }); From eb6fae88dac73ebe51eca047d209336d97264e33 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Tue, 17 May 2022 16:47:27 -0700 Subject: [PATCH 096/150] All specifying build type during deploy. --- Elements.Wasm/deploy.sh | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/Elements.Wasm/deploy.sh b/Elements.Wasm/deploy.sh index 3f3df8492..5b839453e 100755 --- a/Elements.Wasm/deploy.sh +++ b/Elements.Wasm/deploy.sh @@ -1,7 +1,33 @@ #!/usr/bin/env bash -echo 'Building the app.' -dotnet build -c Release +configuration='debug' + +while getopts c: flag +do + case "${flag}" in + c) configuration=${OPTARG};; + esac +done + +if [ $configuration == 'release' ] +then + source='./bin/Release/net6.0/publish/wwwroot/_framework' +elif [ $configuration == 'debug' ] +then + source='./bin/Release/net6.0/wwwroot/_framework' +else + echo "The configuration, $configuration, is invalid. Only 'release' and 'debug' are supported." + exit +fi + +# echo "Building the app in $configuration configuration." +# if [ $configuration == 'release' ] +# then +# dotnet publish -c release +# elif [ $configuration == 'debug' ] +# then +# dotnet build -c release +# fi echo 'Echo creating deploy directory.' rm -r deploy @@ -9,11 +35,11 @@ mkdir deploy mkdir deploy/elements mkdir deploy/elements/_framework -echo 'Copying assets.' -rsync -av --exclude=*.gz --exclude=*.br ./bin/Release/net6.0/wwwroot/_framework deploy/elements +echo "Copying assets from $source" +rsync -av --exclude=*.gz --exclude=*.br $source deploy/elements cp ./wwwroot/elements.js deploy/elements/elements.js cp ./wwwroot/index.html deploy/index.html -echo 'Running the test application.' +# echo 'Running the test application.' cd deploy python3 -m http.server \ No newline at end of file From d1d0c1fabf6df9a61be673a2965386edd9675613 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Sat, 21 May 2022 16:59:51 -0700 Subject: [PATCH 097/150] Fix test app to work locally. --- Elements.Wasm/wwwroot/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Elements.Wasm/wwwroot/index.html b/Elements.Wasm/wwwroot/index.html index 1b9c29333..d8dbec1a3 100644 --- a/Elements.Wasm/wwwroot/index.html +++ b/Elements.Wasm/wwwroot/index.html @@ -18,8 +18,8 @@ - - + + -
From a00524a1f4a5113e8b14ec7b430601b967047dbb Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Mon, 11 Jul 2022 18:30:03 -0700 Subject: [PATCH 112/150] Add a benchmark to simulate the API serialization. --- Elements.Benchmarks/API.cs | 41 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 Elements.Benchmarks/API.cs diff --git a/Elements.Benchmarks/API.cs b/Elements.Benchmarks/API.cs new file mode 100644 index 000000000..515e80371 --- /dev/null +++ b/Elements.Benchmarks/API.cs @@ -0,0 +1,41 @@ +using System; +using BenchmarkDotNet.Attributes; +using Elements.Geometry; +using Elements.Serialization.glTF; + +namespace Elements.Benchmarks +{ + [MemoryDiagnoser] + public class API + { + [Params(5, 50, 200, 500)] + public int Value { get; set; } + + [Benchmark(Description = "API Test Serialization")] + public void SerializeElementsToGlTF() + { + var model = new Model(); + var r = new Random(); + var size = 10; + var profile = new Profile(Polygon.L(0.1, 0.1, 0.05)); + model.AddElement(profile); + + for (var i = 0; i < this.Value; i++) + { + var start = new Vector3(r.NextDouble() * size, r.NextDouble() * size, r.NextDouble() * size); + var end = new Vector3(r.NextDouble() * size, r.NextDouble() * size, r.NextDouble() * size); + var line = new Line(start, end); + // var c = new Color(r.NextDouble(), r.NextDouble(), r.NextDouble(), 1.0); + // var m = new Material(Guid.NewGuid().ToString(), c); + var beam = new Beam(line, profile, null, BuiltInMaterials.Steel); + model.AddElement(beam); + } + + var json = model.ToJson(); + + var newModel = Model.FromJson(json); + + var result = model.ToGlTF(); + } + } +} \ No newline at end of file From 5058be1d6fedeb505c97ec5415ee9809ffd4991d Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Tue, 12 Jul 2022 14:11:06 -0700 Subject: [PATCH 113/150] Add the geometric element converter. --- Elements.Benchmarks/API.cs | 16 +- Elements.Wasm/ElementsAPI.cs | 24 ++- Elements/src/Model.cs | 35 +++- .../Serialization/JSON/ElementConverter.cs | 2 +- .../JSON/ModelToGeometricElementsConverter.cs | 171 ++++++++++++++++++ Elements/test/ModelTests.cs | 26 +++ 6 files changed, 255 insertions(+), 19 deletions(-) create mode 100644 Elements/src/Serialization/JSON/ModelToGeometricElementsConverter.cs diff --git a/Elements.Benchmarks/API.cs b/Elements.Benchmarks/API.cs index 515e80371..f7ce6368a 100644 --- a/Elements.Benchmarks/API.cs +++ b/Elements.Benchmarks/API.cs @@ -8,11 +8,13 @@ namespace Elements.Benchmarks [MemoryDiagnoser] public class API { + private string _model; + [Params(5, 50, 200, 500)] public int Value { get; set; } - [Benchmark(Description = "API Test Serialization")] - public void SerializeElementsToGlTF() + [GlobalSetup] + public void Setup() { var model = new Model(); var r = new Random(); @@ -31,11 +33,13 @@ public void SerializeElementsToGlTF() model.AddElement(beam); } - var json = model.ToJson(); - - var newModel = Model.FromJson(json); + _model = model.ToJson(); + } - var result = model.ToGlTF(); + [Benchmark(Description = "API Test Serialization")] + public void SerializeElementsToGlTF() + { + Model.GeometricElementModelFromJson(_model); } } } \ No newline at end of file diff --git a/Elements.Wasm/ElementsAPI.cs b/Elements.Wasm/ElementsAPI.cs index c77ddf18e..6ce782f04 100644 --- a/Elements.Wasm/ElementsAPI.cs +++ b/Elements.Wasm/ElementsAPI.cs @@ -22,7 +22,7 @@ public static Task ModelToGlbBase64(string json) { Validator.DisableValidationOnConstruction = true; - var model = Model.FromJson(json); + var model = Model.GeometricElementModelFromJson(json); return Task.FromResult(model.ToBase64String()); } @@ -33,7 +33,7 @@ public static Task ModelToGlbBytes(string json) var sw = new Stopwatch(); sw.Start(); - var model = Model.FromJson(json); + var model = Model.GeometricElementModelFromJson(json); Console.WriteLine($"{sw.ElapsedMilliseconds}ms for creating the model from json."); sw.Restart(); var result = Task.FromResult(model.ToGlTF()); @@ -59,22 +59,26 @@ public static Task Test(int value) var start = new Vector3(r.NextDouble() * size, r.NextDouble() * size, r.NextDouble() * size); var end = new Vector3(r.NextDouble() * size, r.NextDouble() * size, r.NextDouble() * size); var line = new Line(start, end); - var c = new Color(r.NextDouble(), r.NextDouble(), r.NextDouble(), 1.0); - var m = new Material(Guid.NewGuid().ToString(), c); - var beam = new Beam(line, profile, null, m); + // var c = new Color(r.NextDouble(), r.NextDouble(), r.NextDouble(), 1.0); + // var m = new Material(Guid.NewGuid().ToString(), c); + var beam = new Beam(line, profile, null, BuiltInMaterials.Steel); model.AddElement(beam); } sb.AppendLine($"{sw.ElapsedMilliseconds}ms for creating test beams."); sw.Restart(); - // var json = model.ToJson(); - // sb.AppendLine($"{sw.ElapsedMilliseconds}ms for serializing model."); - // sw.Restart(); + var json = model.ToJson(); + sb.AppendLine($"{sw.ElapsedMilliseconds}ms for serializing model."); + sw.Restart(); - // var newModel = Model.FromJson(json); - // sb.AppendLine($"{sw.ElapsedMilliseconds}ms for deserializing model."); + // var baseModel = Model.FromJson(json); + // sb.AppendLine($"{sw.ElapsedMilliseconds}ms for deserializing model using base deserializer."); // sw.Restart(); + var newModel = Model.GeometricElementModelFromJson(json); + sb.AppendLine($"{sw.ElapsedMilliseconds}ms for deserializing model using geometric elements"); + sw.Restart(); + var result = model.ToGlTF(); sb.AppendLine($"{sw.ElapsedMilliseconds}ms for creating the glb."); return Task.FromResult(new TestResult() diff --git a/Elements/src/Model.cs b/Elements/src/Model.cs index 6e60d9e76..0d27cde88 100644 --- a/Elements/src/Model.cs +++ b/Elements/src/Model.cs @@ -262,14 +262,45 @@ internal Model CreateExportModel(bool gatherSubElements) return exportModel; } + public static Model GeometricElementModelFromJson(string json) + { + Model model = null; + using (var document = JsonDocument.Parse(json)) + { + JsonElement root = document.RootElement; + JsonElement elementsElement = root.GetProperty("Elements"); + + var options = new JsonSerializerOptions(); + + // Our custom reference handler will cache elements by id as + // they are deserialized, supporting reading elements by id + // from JSON. + var refHandler = new ElementReferenceHandler(null, elementsElement); + options.ReferenceHandler = refHandler; + + // Use the model converter here so that we have a chance to + // intercept the creation of elements when things go wrong. + // Using the model converter adds 100ms because it has to + // call deserialize for each element and trap if the element + // is null and report an error. + options.Converters.Add(new ModelToGeometricElementsConverter()); + + model = JsonSerializer.Deserialize(json, options); + + // Resetting the reference handler, empties the internal + // elements cache. + refHandler.Reset(null, elementsElement); + } + + return model; + } + /// /// Deserialize a model from JSON. /// /// The JSON representing the model. public static Model FromJson(string json) { - var sw = new Stopwatch(); - sw.Start(); var typeCache = AppDomainTypeCache.BuildAppDomainTypeCache(out _); Model model = null; diff --git a/Elements/src/Serialization/JSON/ElementConverter.cs b/Elements/src/Serialization/JSON/ElementConverter.cs index 95f65afff..3268da589 100644 --- a/Elements/src/Serialization/JSON/ElementConverter.cs +++ b/Elements/src/Serialization/JSON/ElementConverter.cs @@ -351,7 +351,7 @@ private bool IsAcceptedCollectionType(Type propertyType, out CollectionType coll return false; } - private void HandleReferenceId(JsonElement elementToDeserialize, + internal static void HandleReferenceId(JsonElement elementToDeserialize, Guid referencedId, ReferenceResolver resolver, JsonElement documentElements, diff --git a/Elements/src/Serialization/JSON/ModelToGeometricElementsConverter.cs b/Elements/src/Serialization/JSON/ModelToGeometricElementsConverter.cs new file mode 100644 index 000000000..518d634d6 --- /dev/null +++ b/Elements/src/Serialization/JSON/ModelToGeometricElementsConverter.cs @@ -0,0 +1,171 @@ +using System; +using System.Collections.Generic; +using System.Text.Json; +using System.Text.Json.Serialization; +using Elements.Geometry; +using Elements.Geometry.Solids; + +namespace Elements.Serialization.JSON +{ + /// + /// Convert a model to a collection of geometric elements. + /// + public class ModelToGeometricElementsConverter : JsonConverter + { + public override Model Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + var resolver = options.ReferenceHandler.CreateResolver() as ElementReferenceResolver; + + // Read materials, profiles, geometric elements + var elements = new Dictionary(); + using (var doc = JsonDocument.ParseValue(ref reader)) + { + var root = doc.RootElement; + var elementsElement = root.GetProperty("Elements"); + var transform = JsonSerializer.Deserialize(root.GetProperty("Transform")); + + foreach (var element in elementsElement.EnumerateObject()) + { + var discriminator = element.Value.GetProperty("discriminator").GetString(); + + // TODO: This try/catch is only here to protect against + // situations like null property values when the serializer + // expects a value, or validation errors. Unlike json.net, system.text.json doesn't + // have null value handling on read. + // try + // { + var id = Guid.Parse(element.Name); + Element e = null; + element.Value.TryGetProperty("Name", out var nameProp); + + string name; + { + name = nameProp.GetString(); + } + + switch (discriminator) + { + // TODO: Big assumption here - that things are in the right order. + case "Elements.Material": + e = JsonSerializer.Deserialize(element.Value); + break; + case "Elements.Geometry.Profile": + e = JsonSerializer.Deserialize(element.Value); + break; + case "Elements.ElementInstance": + var baseDefinition = (GeometricElement)resolver.ResolveReference(element.Value.GetProperty("BaseDefinition").GetString()); + var elementTransform = JsonSerializer.Deserialize(element.Value.GetProperty("Transform")); + e = new ElementInstance(baseDefinition, elementTransform, name, id); + break; + default: + + if (element.Value.TryGetProperty("Perimeter", out _) && element.Value.TryGetProperty("Voids", out _)) + { + // TODO: We're handling profile-like things in this way. + e = JsonSerializer.Deserialize(element.Value); + break; + } + + // Qualify element as a geometric element by seeing + // whether it has a representation. + if (element.Value.TryGetProperty("Representation", out var repProperty)) + { + if (discriminator == "Elements.ModelCurve") + { + // TODO: Handle model curves. + continue; + } + else if (discriminator == "Elements.GridLine") + { + // TODO: Handle grid lines. + continue; + } + + var solidOps = new List(); + foreach (var solidOp in repProperty.GetProperty("SolidOperations").EnumerateArray()) + { + SolidOperation op = null; + var isVoid = false; + if (solidOp.TryGetProperty("IsVoid", out var isVoidElement)) + { + isVoid = isVoidElement.GetBoolean(); + } + + switch (solidOp.GetProperty("discriminator").GetString()) + { + case "Elements.Geometry.Solids.Extrude": + var profile = (Profile)resolver.ResolveReference(solidOp.GetProperty("Profile").GetString()); + var height = solidOp.GetProperty("Height").GetDouble(); + var direction = JsonSerializer.Deserialize(solidOp.GetProperty("Direction")); + op = new Extrude(profile, height, direction, isVoid); + break; + case "Elements.Geometry.Solids.Sweep": + profile = (Profile)resolver.ResolveReference(solidOp.GetProperty("Profile").GetString()); + var curve = DeserializeCurve(solidOp.GetProperty("Curve")); + var startSetback = solidOp.GetProperty("StartSetback").GetDouble(); + var endSetback = solidOp.GetProperty("EndSetback").GetDouble(); + var profileRotation = 0.0; + if (solidOp.TryGetProperty("ProfileRotation", out var rotation)) + { + profileRotation = rotation.GetDouble(); + } + op = new Sweep(profile, curve, startSetback, endSetback, profileRotation, isVoid); + break; + case "Elements.Geometry.Solids.Lamina": + var perimeter = JsonSerializer.Deserialize(solidOp.GetProperty("Perimeter")); + op = new Lamina(perimeter, isVoid); + break; + } + solidOps.Add(op); + } + var rep = new Representation(solidOps); + elementTransform = JsonSerializer.Deserialize(element.Value.GetProperty("Transform")); + var material = (Material)resolver.ResolveReference(element.Value.GetProperty("Material").GetString()); + var elementId = element.Value.GetProperty("Id").GetGuid(); + var isElementDefinition = element.Value.GetProperty("IsElementDefinition").GetBoolean(); + e = new GeometricElement(elementTransform, material, rep, isElementDefinition, elementId, name); + } + break; + } + if (e != null) + { + elements.Add(id, e); + resolver.AddReference(id.ToString(), e); + } + // } + // catch (Exception ex) + // { + // Console.WriteLine(ex.Message); + // continue; + // } + } + + var model = new Model(transform, elements); + return model; + } + } + + private Curve DeserializeCurve(JsonElement jsonCurve) + { + var discriminator = jsonCurve.GetProperty("discriminator").GetString(); + switch (discriminator) + { + case "Elements.Geometry.Line": + return JsonSerializer.Deserialize(jsonCurve); + case "Elements.Geometry.Polygon": + return JsonSerializer.Deserialize(jsonCurve); + case "Elements.Geometry.Polyline": + return JsonSerializer.Deserialize(jsonCurve); + case "Elements.Geometry.Arc": + return JsonSerializer.Deserialize(jsonCurve); + default: + throw new JsonException($"The curve type, {discriminator}, could not be deserialized."); + } + } + + public override void Write(Utf8JsonWriter writer, Model value, JsonSerializerOptions options) + { + throw new NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/Elements/test/ModelTests.cs b/Elements/test/ModelTests.cs index c55b2e4d7..911b9ef72 100644 --- a/Elements/test/ModelTests.cs +++ b/Elements/test/ModelTests.cs @@ -270,6 +270,32 @@ public void DeserializesToGeometricElementsWhenTypeIsUnknownAndRepresentationExi newModel.ToGlTF(modelPath, true); } + [Fact] + public void DeserializesToGeometricElements() + { + // var model = new Model(); + // var r = new Random(); + // var size = 10; + // var profile = new Profile(Polygon.L(0.1, 0.1, 0.05)); + // model.AddElement(profile); + + // for (var i = 0; i < 10; i++) + // { + // var start = new Vector3(r.NextDouble() * size, r.NextDouble() * size, r.NextDouble() * size); + // var end = new Vector3(r.NextDouble() * size, r.NextDouble() * size, r.NextDouble() * size); + // var line = new Line(start, end); + // // var c = new Color(r.NextDouble(), r.NextDouble(), r.NextDouble(), 1.0); + // // var m = new Material(Guid.NewGuid().ToString(), c); + // var beam = new Beam(line, profile, null, BuiltInMaterials.Steel); + // model.AddElement(beam); + // } + + var json = File.ReadAllText("../../../models/Geometry/tower.json"); + + var newModel = Model.GeometricElementModelFromJson(json); + newModel.ToGlTF("models/geometric_elements_2.glb"); + } + [Fact] public void SubElementIsAddedToModel() { From 79e8f2b7aadfa6096da406843dd2da7a51df3514 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Tue, 12 Jul 2022 15:10:44 -0700 Subject: [PATCH 114/150] Cleanup --- Elements/src/Model.cs | 39 ++++++++----------- .../JSON/ModelToGeometricElementsConverter.cs | 20 ++-------- Elements/test/ModelTests.cs | 18 --------- 3 files changed, 19 insertions(+), 58 deletions(-) diff --git a/Elements/src/Model.cs b/Elements/src/Model.cs index 0d27cde88..90b2dd985 100644 --- a/Elements/src/Model.cs +++ b/Elements/src/Model.cs @@ -264,34 +264,27 @@ internal Model CreateExportModel(bool gatherSubElements) public static Model GeometricElementModelFromJson(string json) { - Model model = null; - using (var document = JsonDocument.Parse(json)) - { - JsonElement root = document.RootElement; - JsonElement elementsElement = root.GetProperty("Elements"); + var options = new JsonSerializerOptions(); - var options = new JsonSerializerOptions(); + // Our custom reference handler will cache elements by id as + // they are deserialized, supporting reading elements by id + // from JSON. + var refHandler = new ElementReferenceHandler(null, default); + options.ReferenceHandler = refHandler; - // Our custom reference handler will cache elements by id as - // they are deserialized, supporting reading elements by id - // from JSON. - var refHandler = new ElementReferenceHandler(null, elementsElement); - options.ReferenceHandler = refHandler; + // Use the model converter here so that we have a chance to + // intercept the creation of elements when things go wrong. + // Using the model converter adds 100ms because it has to + // call deserialize for each element and trap if the element + // is null and report an error. + options.Converters.Add(new ModelToGeometricElementsConverter()); - // Use the model converter here so that we have a chance to - // intercept the creation of elements when things go wrong. - // Using the model converter adds 100ms because it has to - // call deserialize for each element and trap if the element - // is null and report an error. - options.Converters.Add(new ModelToGeometricElementsConverter()); + var model = JsonSerializer.Deserialize(json, options); - model = JsonSerializer.Deserialize(json, options); + // Resetting the reference handler, empties the internal + // elements cache. + refHandler.Reset(null, default); - // Resetting the reference handler, empties the internal - // elements cache. - refHandler.Reset(null, elementsElement); - } - return model; } diff --git a/Elements/src/Serialization/JSON/ModelToGeometricElementsConverter.cs b/Elements/src/Serialization/JSON/ModelToGeometricElementsConverter.cs index 518d634d6..aa408f60f 100644 --- a/Elements/src/Serialization/JSON/ModelToGeometricElementsConverter.cs +++ b/Elements/src/Serialization/JSON/ModelToGeometricElementsConverter.cs @@ -26,18 +26,10 @@ public override Model Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSe foreach (var element in elementsElement.EnumerateObject()) { - var discriminator = element.Value.GetProperty("discriminator").GetString(); - - // TODO: This try/catch is only here to protect against - // situations like null property values when the serializer - // expects a value, or validation errors. Unlike json.net, system.text.json doesn't - // have null value handling on read. - // try - // { - var id = Guid.Parse(element.Name); Element e = null; + var discriminator = element.Value.GetProperty("discriminator").GetString(); + var id = element.Value.GetProperty("Id").GetGuid(); element.Value.TryGetProperty("Name", out var nameProp); - string name; { name = nameProp.GetString(); @@ -132,12 +124,6 @@ public override Model Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSe elements.Add(id, e); resolver.AddReference(id.ToString(), e); } - // } - // catch (Exception ex) - // { - // Console.WriteLine(ex.Message); - // continue; - // } } var model = new Model(transform, elements); @@ -145,7 +131,7 @@ public override Model Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSe } } - private Curve DeserializeCurve(JsonElement jsonCurve) + internal static Curve DeserializeCurve(JsonElement jsonCurve) { var discriminator = jsonCurve.GetProperty("discriminator").GetString(); switch (discriminator) diff --git a/Elements/test/ModelTests.cs b/Elements/test/ModelTests.cs index 911b9ef72..aa960566a 100644 --- a/Elements/test/ModelTests.cs +++ b/Elements/test/ModelTests.cs @@ -273,25 +273,7 @@ public void DeserializesToGeometricElementsWhenTypeIsUnknownAndRepresentationExi [Fact] public void DeserializesToGeometricElements() { - // var model = new Model(); - // var r = new Random(); - // var size = 10; - // var profile = new Profile(Polygon.L(0.1, 0.1, 0.05)); - // model.AddElement(profile); - - // for (var i = 0; i < 10; i++) - // { - // var start = new Vector3(r.NextDouble() * size, r.NextDouble() * size, r.NextDouble() * size); - // var end = new Vector3(r.NextDouble() * size, r.NextDouble() * size, r.NextDouble() * size); - // var line = new Line(start, end); - // // var c = new Color(r.NextDouble(), r.NextDouble(), r.NextDouble(), 1.0); - // // var m = new Material(Guid.NewGuid().ToString(), c); - // var beam = new Beam(line, profile, null, BuiltInMaterials.Steel); - // model.AddElement(beam); - // } - var json = File.ReadAllText("../../../models/Geometry/tower.json"); - var newModel = Model.GeometricElementModelFromJson(json); newModel.ToGlTF("models/geometric_elements_2.glb"); } From fb88cecf41aaccd1b3faf55be93d2990a05a4c32 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Tue, 12 Jul 2022 17:31:50 -0700 Subject: [PATCH 115/150] Don't need the converter. --- Elements.Wasm/wwwroot/index.html | 11 + Elements.Wasm/wwwroot/model.json | 144757 +++++++++++++++ Elements/src/Model.cs | 169 +- .../JSON/ModelToGeometricElementsConverter.cs | 157 - 4 files changed, 144920 insertions(+), 174 deletions(-) create mode 100644 Elements.Wasm/wwwroot/model.json delete mode 100644 Elements/src/Serialization/JSON/ModelToGeometricElementsConverter.cs diff --git a/Elements.Wasm/wwwroot/index.html b/Elements.Wasm/wwwroot/index.html index 08c9076a4..a761b3851 100644 --- a/Elements.Wasm/wwwroot/index.html +++ b/Elements.Wasm/wwwroot/index.html @@ -63,10 +63,20 @@ }); }; + function loadTestModel() { + var request = new XMLHttpRequest(); + request.open("GET", "model.json", false); + request.send(null) + elements.modelToGlbBytes(request.responseText).then((result) => { + model.loadModel(result) + }) + } + window.model = { reset: () => { reset(); }, runTest: (value) => { runTest(value); }, loadModel: (glb) => { loadModel(glb) }, + loadTestModel: () => { loadTestModel() } }; import { Scene, PerspectiveCamera, WebGLRenderer, DirectionalLight, sRGBEncoding} from 'three'; @@ -98,6 +108,7 @@ +
diff --git a/Elements.Wasm/wwwroot/model.json b/Elements.Wasm/wwwroot/model.json new file mode 100644 index 000000000..a8ad0ba51 --- /dev/null +++ b/Elements.Wasm/wwwroot/model.json @@ -0,0 +1,144757 @@ +{ + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Elements": { + "77a9f129-0920-40f0-9e77-044b189f100b": { + "discriminator": "Elements.Geometry.Profiles.WideFlangeProfile", + "d": 0.40386, + "tw": 0.038862, + "bf": 0.33274, + "tf": 0.062738, + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.16637, + "Y": 0.20193, + "Z": 0.0 + }, + { + "X": -0.16637, + "Y": 0.13919199999999998, + "Z": 0.0 + }, + { + "X": -0.019431, + "Y": 0.13919199999999998, + "Z": 0.0 + }, + { + "X": -0.019431, + "Y": -0.13919199999999998, + "Z": 0.0 + }, + { + "X": -0.16637, + "Y": -0.13919199999999998, + "Z": 0.0 + }, + { + "X": -0.16637, + "Y": -0.20193, + "Z": 0.0 + }, + { + "X": 0.16637, + "Y": -0.20193, + "Z": 0.0 + }, + { + "X": 0.16637, + "Y": -0.13919199999999998, + "Z": 0.0 + }, + { + "X": 0.019431, + "Y": -0.13919199999999998, + "Z": 0.0 + }, + { + "X": 0.019431, + "Y": 0.13919199999999998, + "Z": 0.0 + }, + { + "X": 0.16637, + "Y": 0.13919199999999998, + "Z": 0.0 + }, + { + "X": 0.16637, + "Y": 0.20193, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "77a9f129-0920-40f0-9e77-044b189f100b", + "Name": "W12x279" + }, + "f4f88090-a34c-42af-9cb8-30bca38ef11e": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7342488177745831, + "Green": 0.9899171818932133, + "Blue": 0.30313707110618104, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "f4f88090-a34c-42af-9cb8-30bca38ef11e", + "Name": "ffa6b3b5-5a87-49ff-ba32-c2f50515b46c" + }, + "cf453dad-ab5e-49ba-ba24-d5df93119866": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -59.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "f4f88090-a34c-42af-9cb8-30bca38ef11e", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -59.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "cf453dad-ab5e-49ba-ba24-d5df93119866", + "Name": null + }, + "d26b17d3-f6bf-4eab-a625-1dfe416433f0": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.3389443128085436, + "Green": 0.16118375545422722, + "Blue": 0.5312237681500724, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "d26b17d3-f6bf-4eab-a625-1dfe416433f0", + "Name": "05bf2e90-0caf-4496-bc90-2bdb95dce4a5" + }, + "529c8a8a-0469-4ee0-90a7-5c701dd83ece": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -58.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -58.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d26b17d3-f6bf-4eab-a625-1dfe416433f0", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -58.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -58.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "529c8a8a-0469-4ee0-90a7-5c701dd83ece", + "Name": null + }, + "8775cab2-6e13-45f7-a802-8bf045e026c0": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.4009919471112042, + "Green": 0.3825796574273052, + "Blue": 0.6625239162996989, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "8775cab2-6e13-45f7-a802-8bf045e026c0", + "Name": "4c4f4337-f8f9-48e8-8cd3-5abd01bba1b2" + }, + "ce4db56d-928e-4b33-941d-16a502388a3f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -57.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -57.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "8775cab2-6e13-45f7-a802-8bf045e026c0", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -57.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -57.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "ce4db56d-928e-4b33-941d-16a502388a3f", + "Name": null + }, + "125305b1-37a0-484c-b268-a7d5bdefa462": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.3616121049791631, + "Green": 0.2888516594138237, + "Blue": 0.9483488793244347, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "125305b1-37a0-484c-b268-a7d5bdefa462", + "Name": "636007ae-9fdf-46bb-87dc-8d9974634d71" + }, + "fad93883-fb0c-4a1e-aa9b-4f18f0f2490b": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -56.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -56.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "125305b1-37a0-484c-b268-a7d5bdefa462", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -56.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -56.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "fad93883-fb0c-4a1e-aa9b-4f18f0f2490b", + "Name": null + }, + "f42d89f9-6cd5-4c9e-9096-f555195bbb83": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.6455493022899839, + "Green": 0.9451100206678315, + "Blue": 0.15982116719699518, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "f42d89f9-6cd5-4c9e-9096-f555195bbb83", + "Name": "9b65595c-0140-4de4-b31f-79c2ea739c09" + }, + "2b1da427-1f95-49ad-9976-7810953a0078": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -55.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "f42d89f9-6cd5-4c9e-9096-f555195bbb83", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -55.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "2b1da427-1f95-49ad-9976-7810953a0078", + "Name": null + }, + "94edc645-3811-42f8-8f9b-4ce0d023a11c": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.4890142308962598, + "Green": 0.3518197295962925, + "Blue": 0.754810053275344, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "94edc645-3811-42f8-8f9b-4ce0d023a11c", + "Name": "1938be4a-74d5-4ff0-b23b-a284fca72434" + }, + "a1cfd414-66fd-465a-a1a5-e91aae80e679": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -54.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -54.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "94edc645-3811-42f8-8f9b-4ce0d023a11c", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -54.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -54.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a1cfd414-66fd-465a-a1a5-e91aae80e679", + "Name": null + }, + "d3c758e4-76b6-4b56-b1c3-fa28678a1e7d": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.1313233841822126, + "Green": 0.45660366604877806, + "Blue": 0.9943902534406587, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "d3c758e4-76b6-4b56-b1c3-fa28678a1e7d", + "Name": "783b809a-3b2a-4fe3-9c83-d30389e4eef1" + }, + "89c9038b-5fe8-4db1-8c83-e04561e74381": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -53.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -53.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d3c758e4-76b6-4b56-b1c3-fa28678a1e7d", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -53.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -53.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "89c9038b-5fe8-4db1-8c83-e04561e74381", + "Name": null + }, + "733e117a-34b8-4a96-a130-50b5b4706580": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.3620129126878515, + "Green": 0.7918260003402019, + "Blue": 0.3609958916720915, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "733e117a-34b8-4a96-a130-50b5b4706580", + "Name": "af53bdbd-5a5d-4874-9929-5478635750e7" + }, + "21a8a705-3f72-4385-a38d-2e0196bb3de5": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -52.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -52.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "733e117a-34b8-4a96-a130-50b5b4706580", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -52.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -52.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "21a8a705-3f72-4385-a38d-2e0196bb3de5", + "Name": null + }, + "4c644c8d-91d2-42cb-a8c4-f869fd6a5a96": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.5061224747943331, + "Green": 0.04256310083091403, + "Blue": 0.3818656687540308, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "4c644c8d-91d2-42cb-a8c4-f869fd6a5a96", + "Name": "95218879-b39b-4a1a-8089-b64cfd2e4dff" + }, + "046fe772-7b5e-4b89-9622-cf61225cd16c": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -51.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -51.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "4c644c8d-91d2-42cb-a8c4-f869fd6a5a96", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -51.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -51.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "046fe772-7b5e-4b89-9622-cf61225cd16c", + "Name": null + }, + "b4fdc2d6-2eff-483f-a71b-c8323c0d8fc7": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.8426658156526582, + "Green": 0.8365632890893907, + "Blue": 0.999187590088317, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "b4fdc2d6-2eff-483f-a71b-c8323c0d8fc7", + "Name": "af8eb32a-e47c-4ff2-a721-023e0207269e" + }, + "6c3196ce-f88a-45dc-80dc-29797713af71": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -50.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "b4fdc2d6-2eff-483f-a71b-c8323c0d8fc7", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -50.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "6c3196ce-f88a-45dc-80dc-29797713af71", + "Name": null + }, + "dde49fcb-8475-4d45-9f55-1080444c621b": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.3230489633619082, + "Green": 0.8098286394075624, + "Blue": 0.5818022957918245, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "dde49fcb-8475-4d45-9f55-1080444c621b", + "Name": "6dc7d6d2-1876-4dce-aeac-06199796ede2" + }, + "c4e07335-e765-490f-a0a5-b16cb7c79f20": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -49.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -49.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "dde49fcb-8475-4d45-9f55-1080444c621b", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -49.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -49.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "c4e07335-e765-490f-a0a5-b16cb7c79f20", + "Name": null + }, + "11095bdd-4cad-41b6-8ecd-9f0b7264d534": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7935420371561973, + "Green": 0.022198746456857186, + "Blue": 0.004480384292304695, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "11095bdd-4cad-41b6-8ecd-9f0b7264d534", + "Name": "0786410e-9477-4633-9000-f2d22b96fdd9" + }, + "a9546e8a-4667-44a5-8b08-e3779f922690": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -48.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -48.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "11095bdd-4cad-41b6-8ecd-9f0b7264d534", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -48.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -48.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a9546e8a-4667-44a5-8b08-e3779f922690", + "Name": null + }, + "39c035bf-b688-4e13-b0e8-27c51b2dddac": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7903348802543874, + "Green": 0.2377481247474198, + "Blue": 0.0072555774856617565, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "39c035bf-b688-4e13-b0e8-27c51b2dddac", + "Name": "45492b8a-16ad-40e7-88b7-df1cd267c5bf" + }, + "9c3ef253-b875-474c-805b-eca60e21715d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -47.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -47.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "39c035bf-b688-4e13-b0e8-27c51b2dddac", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -47.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -47.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "9c3ef253-b875-474c-805b-eca60e21715d", + "Name": null + }, + "21171db6-335b-409e-ab8c-19336bfeaecd": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.301360693434887, + "Green": 0.7345765799910652, + "Blue": 0.7678452305346006, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "21171db6-335b-409e-ab8c-19336bfeaecd", + "Name": "52e95c52-17df-4cea-8fd0-45678e100b26" + }, + "b13a171c-5b99-4221-8217-6c092388fc12": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -46.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -46.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "21171db6-335b-409e-ab8c-19336bfeaecd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -46.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -46.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "b13a171c-5b99-4221-8217-6c092388fc12", + "Name": null + }, + "2e86b192-a48d-4cde-8392-9fdb7f7c2ffe": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9827697598295145, + "Green": 0.45292934843009774, + "Blue": 0.5118342812693838, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "2e86b192-a48d-4cde-8392-9fdb7f7c2ffe", + "Name": "3a79a722-f099-4076-928c-11404901553f" + }, + "6ad75ac3-0ede-49ef-a566-aa73d457e0c7": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -45.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "2e86b192-a48d-4cde-8392-9fdb7f7c2ffe", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -45.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "6ad75ac3-0ede-49ef-a566-aa73d457e0c7", + "Name": null + }, + "235804f0-5f9a-4e1a-a65f-42b79747f970": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.16395173834820825, + "Green": 0.44937136697087965, + "Blue": 0.19522022790984261, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "235804f0-5f9a-4e1a-a65f-42b79747f970", + "Name": "deeba801-92f1-4b88-9beb-ec4f3c869a40" + }, + "95fbf2e9-fe52-495c-b47f-442abf111052": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -44.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -44.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "235804f0-5f9a-4e1a-a65f-42b79747f970", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -44.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -44.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "95fbf2e9-fe52-495c-b47f-442abf111052", + "Name": null + }, + "a069db18-5c94-439a-ad9d-6bbc2c515c34": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.8532355375835837, + "Green": 0.769455196228556, + "Blue": 0.38285632169938477, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "a069db18-5c94-439a-ad9d-6bbc2c515c34", + "Name": "49134053-f6cc-4632-918b-39421f0be78c" + }, + "1163c3c8-7c18-493d-a842-2cf31819712e": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -43.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -43.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "a069db18-5c94-439a-ad9d-6bbc2c515c34", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -43.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -43.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "1163c3c8-7c18-493d-a842-2cf31819712e", + "Name": null + }, + "0f819e0c-4246-4f91-ab50-4df4d1f1ce09": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.13382077921825497, + "Green": 0.15563801310753358, + "Blue": 0.22468407788532044, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "0f819e0c-4246-4f91-ab50-4df4d1f1ce09", + "Name": "bf2f2422-8f72-4e5c-afe0-0141c59e50f2" + }, + "9be52ad0-ddef-408a-ba38-3e55af1f2adf": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -42.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -42.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0f819e0c-4246-4f91-ab50-4df4d1f1ce09", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -42.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -42.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "9be52ad0-ddef-408a-ba38-3e55af1f2adf", + "Name": null + }, + "66d292b4-eefa-4c6e-b8e8-04093be617c1": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.24671803193479686, + "Green": 0.3722359050867315, + "Blue": 0.1980911815530114, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "66d292b4-eefa-4c6e-b8e8-04093be617c1", + "Name": "1c76290f-aa7e-4617-b983-4e9c150140ed" + }, + "1efaa668-8516-4d41-a2d1-8074be669c3c": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -41.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -41.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "66d292b4-eefa-4c6e-b8e8-04093be617c1", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -41.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -41.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "1efaa668-8516-4d41-a2d1-8074be669c3c", + "Name": null + }, + "9a493f31-1ff1-412d-b77b-566efdd6fd10": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9421411794340896, + "Green": 0.8328218380142105, + "Blue": 0.11862065462331318, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "9a493f31-1ff1-412d-b77b-566efdd6fd10", + "Name": "4ffa978a-704f-456e-bdb0-14505e43d604" + }, + "056c00c3-53b2-4ec9-8d4e-24d24da9f177": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -40.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "9a493f31-1ff1-412d-b77b-566efdd6fd10", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -40.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "056c00c3-53b2-4ec9-8d4e-24d24da9f177", + "Name": null + }, + "fc7a74b2-0547-43c1-9d8d-5e54ae11424d": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.14935809939604164, + "Green": 0.5583261314585461, + "Blue": 0.5460163683379146, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "fc7a74b2-0547-43c1-9d8d-5e54ae11424d", + "Name": "3da90910-7bae-439d-88d7-5a29b6abcd19" + }, + "9517688e-ae7d-497e-821d-99f5800c1a1b": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -39.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -39.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "fc7a74b2-0547-43c1-9d8d-5e54ae11424d", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -39.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -39.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "9517688e-ae7d-497e-821d-99f5800c1a1b", + "Name": null + }, + "e6906102-9fed-4e2f-aa7b-0eca8c305efb": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.6633363262113818, + "Green": 0.03856314161725489, + "Blue": 0.4790230200062613, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "e6906102-9fed-4e2f-aa7b-0eca8c305efb", + "Name": "854ead50-1242-4079-bb1f-9792f7ef5890" + }, + "aed56aa8-7ce4-4a99-b6e0-2ee6f2260ac0": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -38.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -38.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "e6906102-9fed-4e2f-aa7b-0eca8c305efb", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -38.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -38.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "aed56aa8-7ce4-4a99-b6e0-2ee6f2260ac0", + "Name": null + }, + "ab35ab9e-8100-4193-8488-95199c55a824": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.36654658353261027, + "Green": 0.8520072651337866, + "Blue": 0.9229112742109742, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "ab35ab9e-8100-4193-8488-95199c55a824", + "Name": "4055f767-338c-43eb-860f-4c0ac280dd46" + }, + "bb971ae8-8924-4c2c-b046-3fc9c5b809da": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -37.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -37.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "ab35ab9e-8100-4193-8488-95199c55a824", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -37.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -37.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "bb971ae8-8924-4c2c-b046-3fc9c5b809da", + "Name": null + }, + "daebde06-4fd0-4873-8cb8-b3ca66ef3285": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.1553407829046905, + "Green": 0.6986793506418725, + "Blue": 0.11407160484887269, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "daebde06-4fd0-4873-8cb8-b3ca66ef3285", + "Name": "cb8f6a27-90bd-4a59-bc01-5a1df2b7d0cd" + }, + "22100274-f86e-4887-b862-7b203a7db98f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -36.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -36.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "daebde06-4fd0-4873-8cb8-b3ca66ef3285", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -36.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -36.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "22100274-f86e-4887-b862-7b203a7db98f", + "Name": null + }, + "88d444ff-b038-4017-b7b7-0dce82f9708f": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7475544757896823, + "Green": 0.8299626907473256, + "Blue": 0.7220270860577128, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "88d444ff-b038-4017-b7b7-0dce82f9708f", + "Name": "b783228c-3662-492b-99be-bd865d0692d7" + }, + "ad2bbd86-6366-4a62-a4e8-e908fe78b2c4": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -35.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "88d444ff-b038-4017-b7b7-0dce82f9708f", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -35.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "ad2bbd86-6366-4a62-a4e8-e908fe78b2c4", + "Name": null + }, + "145a132a-2f51-43f2-9420-e8cd05b095c1": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.22654502290605802, + "Green": 0.379243152858337, + "Blue": 0.33889665191010415, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "145a132a-2f51-43f2-9420-e8cd05b095c1", + "Name": "06c21f14-6cab-41cc-9165-08751fda3d50" + }, + "350c9007-b575-42b8-8832-524aaf946b53": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -34.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -34.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "145a132a-2f51-43f2-9420-e8cd05b095c1", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -34.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -34.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "350c9007-b575-42b8-8832-524aaf946b53", + "Name": null + }, + "6cfcbd4d-bd29-4cdf-a304-72dbc7e17ddb": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.8491616104027078, + "Green": 0.34217073644612483, + "Blue": 0.5931917338600343, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "6cfcbd4d-bd29-4cdf-a304-72dbc7e17ddb", + "Name": "e938d136-969c-455c-bfa4-77726ad504a5" + }, + "1132b8ff-3573-438d-8240-eff3c406bb20": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -33.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -33.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "6cfcbd4d-bd29-4cdf-a304-72dbc7e17ddb", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -33.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -33.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "1132b8ff-3573-438d-8240-eff3c406bb20", + "Name": null + }, + "f8ab2a5b-9b8b-4dbd-b351-0002ea07c44f": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.1866454408441882, + "Green": 0.9894302780690744, + "Blue": 0.06710809286083472, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "f8ab2a5b-9b8b-4dbd-b351-0002ea07c44f", + "Name": "cdca6984-7321-4755-ad4a-4b472203722d" + }, + "f3974a04-0e0b-4f67-97e2-92bb433ef385": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -32.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -32.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "f8ab2a5b-9b8b-4dbd-b351-0002ea07c44f", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -32.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -32.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f3974a04-0e0b-4f67-97e2-92bb433ef385", + "Name": null + }, + "2b96409b-fd3b-4e48-a511-f56b66cc7fac": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.6163312683889323, + "Green": 0.18922818414365322, + "Blue": 0.6541906263000288, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "2b96409b-fd3b-4e48-a511-f56b66cc7fac", + "Name": "e020aac6-0f39-47ef-80dc-881664974b16" + }, + "65927932-a3d1-4f17-b6b4-8912e0a1d315": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -31.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -31.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "2b96409b-fd3b-4e48-a511-f56b66cc7fac", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -31.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -31.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "65927932-a3d1-4f17-b6b4-8912e0a1d315", + "Name": null + }, + "a89ecf43-8c21-4d30-a3f2-9d1434fc0b1d": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.35711821790650405, + "Green": 0.5468240052214004, + "Blue": 0.6499628413701257, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "a89ecf43-8c21-4d30-a3f2-9d1434fc0b1d", + "Name": "958622a6-3e65-43ec-b4b0-6e5dc28681c8" + }, + "57058731-42d2-43f7-905d-214373b4771a": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -30.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "a89ecf43-8c21-4d30-a3f2-9d1434fc0b1d", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -30.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "57058731-42d2-43f7-905d-214373b4771a", + "Name": null + }, + "971c51b6-9f77-463b-990d-905f4f004b53": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.8063892027392933, + "Green": 0.8481937008202978, + "Blue": 0.4049262867332093, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "971c51b6-9f77-463b-990d-905f4f004b53", + "Name": "7bd38e5a-baf0-4d04-bb3c-bc3d075548d8" + }, + "d12bb07a-04fb-419a-8042-8561d10597d9": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -29.000000000000004, + "Z": 0.0 + }, + "End": { + "X": 29.333333333333318, + "Y": -29.000000000000004, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "971c51b6-9f77-463b-990d-905f4f004b53", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -29.000000000000004, + "Z": 0.0 + }, + "End": { + "X": 29.333333333333318, + "Y": -29.000000000000004, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "d12bb07a-04fb-419a-8042-8561d10597d9", + "Name": null + }, + "bc4edeb3-d32e-4153-a133-1f17f2eb46aa": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.8886349228623486, + "Green": 0.1520025940388453, + "Blue": 0.17625044853251914, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "bc4edeb3-d32e-4153-a133-1f17f2eb46aa", + "Name": "ec0979db-ca2e-489e-83ba-a18b9403c8b3" + }, + "e5d63e93-6643-45e9-8e97-7df44a758f5e": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -28.0, + "Z": 0.0 + }, + "End": { + "X": 28.66666666666665, + "Y": -28.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "bc4edeb3-d32e-4153-a133-1f17f2eb46aa", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -28.0, + "Z": 0.0 + }, + "End": { + "X": 28.66666666666665, + "Y": -28.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "e5d63e93-6643-45e9-8e97-7df44a758f5e", + "Name": null + }, + "92691036-da98-483a-8563-116e2e1ded83": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.22182886219668616, + "Green": 0.3194334336181327, + "Blue": 0.41436620681284286, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "92691036-da98-483a-8563-116e2e1ded83", + "Name": "06ffe01b-46ff-42c2-ba03-c3841a36193f" + }, + "b7d55a3a-0353-4797-b276-8ee7e7b49b77": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -27.0, + "Z": 0.0 + }, + "End": { + "X": 27.999999999999986, + "Y": -27.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "92691036-da98-483a-8563-116e2e1ded83", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -27.0, + "Z": 0.0 + }, + "End": { + "X": 27.999999999999986, + "Y": -27.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "b7d55a3a-0353-4797-b276-8ee7e7b49b77", + "Name": null + }, + "0e340513-944a-451e-852f-ddcac60d24e0": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.032811261263122435, + "Green": 0.797405154815598, + "Blue": 0.5973641018370931, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "0e340513-944a-451e-852f-ddcac60d24e0", + "Name": "8b388c46-d90b-47d4-8e11-9709c8c92d84" + }, + "f019ef88-850e-4f59-a316-8151bb8dcc83": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -26.0, + "Z": 0.0 + }, + "End": { + "X": 27.33333333333332, + "Y": -26.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0e340513-944a-451e-852f-ddcac60d24e0", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -26.0, + "Z": 0.0 + }, + "End": { + "X": 27.33333333333332, + "Y": -26.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f019ef88-850e-4f59-a316-8151bb8dcc83", + "Name": null + }, + "33095e5c-f750-413f-8ac5-44ca51ad2d86": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.2723089536988684, + "Green": 0.6978947546788933, + "Blue": 0.07077584558668353, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "33095e5c-f750-413f-8ac5-44ca51ad2d86", + "Name": "fb23625c-00c6-413b-be33-fb5b3ee4f1d5" + }, + "431275ce-a236-4cf5-a2b9-eaf94d70f84d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 26.66666666666665, + "Y": -25.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "33095e5c-f750-413f-8ac5-44ca51ad2d86", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 26.66666666666665, + "Y": -25.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "431275ce-a236-4cf5-a2b9-eaf94d70f84d", + "Name": null + }, + "1380b979-ea90-4690-b739-98cfc7f82536": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.2687847168505121, + "Green": 0.38626630342857277, + "Blue": 0.32567532236020796, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "1380b979-ea90-4690-b739-98cfc7f82536", + "Name": "d1006620-0ca7-45cf-8f43-40e320c2b0eb" + }, + "67eeccac-1fc2-4018-b599-6c3b1bb89c23": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -24.0, + "Z": 0.0 + }, + "End": { + "X": 25.999999999999986, + "Y": -24.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "1380b979-ea90-4690-b739-98cfc7f82536", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -24.0, + "Z": 0.0 + }, + "End": { + "X": 25.999999999999986, + "Y": -24.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "67eeccac-1fc2-4018-b599-6c3b1bb89c23", + "Name": null + }, + "de00664a-26bc-4f35-b0c6-1b27a183144d": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.5026569918276076, + "Green": 0.020173009028738833, + "Blue": 0.9929927522283944, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "de00664a-26bc-4f35-b0c6-1b27a183144d", + "Name": "22517a79-6832-4591-b173-5b05a0f46964" + }, + "8c1c2ec8-5b44-4e3b-b727-557f426e6fe5": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -23.0, + "Z": 0.0 + }, + "End": { + "X": 25.33333333333332, + "Y": -23.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "de00664a-26bc-4f35-b0c6-1b27a183144d", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -23.0, + "Z": 0.0 + }, + "End": { + "X": 25.33333333333332, + "Y": -23.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "8c1c2ec8-5b44-4e3b-b727-557f426e6fe5", + "Name": null + }, + "afe0ecb2-2660-46f4-b2b4-b771f46ef137": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.8591945296429072, + "Green": 0.09297956903138178, + "Blue": 0.49065110156808567, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "afe0ecb2-2660-46f4-b2b4-b771f46ef137", + "Name": "1ec9ce16-4440-462d-9c3d-99ae50ca8863" + }, + "7908c0ce-6323-4544-9792-c2a4114065a0": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -22.0, + "Z": 0.0 + }, + "End": { + "X": 24.66666666666665, + "Y": -22.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "afe0ecb2-2660-46f4-b2b4-b771f46ef137", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -22.0, + "Z": 0.0 + }, + "End": { + "X": 24.66666666666665, + "Y": -22.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "7908c0ce-6323-4544-9792-c2a4114065a0", + "Name": null + }, + "6d6b91ac-8938-4ac9-88da-57b8e6b01b27": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.5254289207632789, + "Green": 0.9627126585518535, + "Blue": 0.5688958533894717, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "6d6b91ac-8938-4ac9-88da-57b8e6b01b27", + "Name": "96db76c0-b6b1-4f1d-b62d-ef23764ad6d7" + }, + "dbecafea-c585-44df-a9bf-3c8c1f1506e4": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -21.0, + "Z": 0.0 + }, + "End": { + "X": 23.999999999999986, + "Y": -21.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "6d6b91ac-8938-4ac9-88da-57b8e6b01b27", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -21.0, + "Z": 0.0 + }, + "End": { + "X": 23.999999999999986, + "Y": -21.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "dbecafea-c585-44df-a9bf-3c8c1f1506e4", + "Name": null + }, + "70ea38c7-9eda-43f2-9594-3a46e77d67bf": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.4789082754770798, + "Green": 0.047005057822449625, + "Blue": 0.8493349574736017, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "70ea38c7-9eda-43f2-9594-3a46e77d67bf", + "Name": "4a7ea393-5650-4dde-aa94-a25472bb81eb" + }, + "5018d157-88f6-4c9c-9440-2aacc2425fa2": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 23.33333333333332, + "Y": -20.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "70ea38c7-9eda-43f2-9594-3a46e77d67bf", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 23.33333333333332, + "Y": -20.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "5018d157-88f6-4c9c-9440-2aacc2425fa2", + "Name": null + }, + "4d6b1665-e46d-46f4-893f-cd1060160a57": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.8248323937062325, + "Green": 0.00942836562610621, + "Blue": 0.3051832599123862, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "4d6b1665-e46d-46f4-893f-cd1060160a57", + "Name": "2b9b71cf-a244-494f-9454-ff0293a97563" + }, + "87c7925a-04f6-40d1-9e3c-9bfdf1ebf280": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -19.0, + "Z": 0.0 + }, + "End": { + "X": 22.66666666666665, + "Y": -19.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "4d6b1665-e46d-46f4-893f-cd1060160a57", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -19.0, + "Z": 0.0 + }, + "End": { + "X": 22.66666666666665, + "Y": -19.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "87c7925a-04f6-40d1-9e3c-9bfdf1ebf280", + "Name": null + }, + "ca4283c7-6b1b-4463-85b6-2ca28bc9e175": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.2729484328408485, + "Green": 0.3489515801653972, + "Blue": 0.8504856498215746, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "ca4283c7-6b1b-4463-85b6-2ca28bc9e175", + "Name": "96ec1f02-bb5a-419e-9582-e144ef59be63" + }, + "c6a69b54-9c45-44f6-be39-cedc23c4a908": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -18.0, + "Z": 0.0 + }, + "End": { + "X": 21.999999999999986, + "Y": -18.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "ca4283c7-6b1b-4463-85b6-2ca28bc9e175", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -18.0, + "Z": 0.0 + }, + "End": { + "X": 21.999999999999986, + "Y": -18.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "c6a69b54-9c45-44f6-be39-cedc23c4a908", + "Name": null + }, + "07867ac8-ff61-4e55-a7d1-e3ba791bb908": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7091453181156634, + "Green": 0.8589195529273337, + "Blue": 0.6779600967084803, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "07867ac8-ff61-4e55-a7d1-e3ba791bb908", + "Name": "9373e904-3e5a-4d43-a1d1-48daf9399036" + }, + "47b3b010-ec6c-47ec-b648-c92f41226e96": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -17.0, + "Z": 0.0 + }, + "End": { + "X": 21.333333333333318, + "Y": -17.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "07867ac8-ff61-4e55-a7d1-e3ba791bb908", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -17.0, + "Z": 0.0 + }, + "End": { + "X": 21.333333333333318, + "Y": -17.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "47b3b010-ec6c-47ec-b648-c92f41226e96", + "Name": null + }, + "d6dacac0-3106-4d82-beba-1b5c57303448": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.5457766375251937, + "Green": 0.0047161607093718656, + "Blue": 0.0598097192402043, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "d6dacac0-3106-4d82-beba-1b5c57303448", + "Name": "b61672d4-8e61-47d5-bc22-672bae403515" + }, + "210b7e79-60b8-4ff8-a1b0-ff8dbfe9035f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -16.0, + "Z": 0.0 + }, + "End": { + "X": 20.66666666666665, + "Y": -16.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d6dacac0-3106-4d82-beba-1b5c57303448", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -16.0, + "Z": 0.0 + }, + "End": { + "X": 20.66666666666665, + "Y": -16.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "210b7e79-60b8-4ff8-a1b0-ff8dbfe9035f", + "Name": null + }, + "9167572b-9d78-4a3e-8515-dd5af3c3b2d2": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9245304450972613, + "Green": 0.8163503491395854, + "Blue": 0.5447655816305268, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "9167572b-9d78-4a3e-8515-dd5af3c3b2d2", + "Name": "ebdb9c57-7374-40bb-a12b-11717523c5af" + }, + "3a861718-d2a2-4b53-b14b-a3887f80ee5d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 19.999999999999986, + "Y": -15.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "9167572b-9d78-4a3e-8515-dd5af3c3b2d2", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 19.999999999999986, + "Y": -15.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "3a861718-d2a2-4b53-b14b-a3887f80ee5d", + "Name": null + }, + "739142be-8b07-44ac-a239-a995eab87cb8": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9958276320229413, + "Green": 0.9143364871453198, + "Blue": 0.29153552339018113, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "739142be-8b07-44ac-a239-a995eab87cb8", + "Name": "b7b63860-b903-40bd-bd77-8226f1a7bf95" + }, + "d36fb6cc-21f1-4b01-ad1d-559ff7fecf90": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -14.0, + "Z": 0.0 + }, + "End": { + "X": 19.333333333333318, + "Y": -14.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "739142be-8b07-44ac-a239-a995eab87cb8", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -14.0, + "Z": 0.0 + }, + "End": { + "X": 19.333333333333318, + "Y": -14.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "d36fb6cc-21f1-4b01-ad1d-559ff7fecf90", + "Name": null + }, + "b0455c9d-3133-419c-a0d0-59fabe9004b0": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9963322472741512, + "Green": 0.3475465515384202, + "Blue": 0.8029618807150805, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "b0455c9d-3133-419c-a0d0-59fabe9004b0", + "Name": "d84a7df3-37a8-4696-b3a3-542c1aae806f" + }, + "9a502a09-a39b-421c-8688-f51bf5d82c19": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -13.0, + "Z": 0.0 + }, + "End": { + "X": 18.666666666666654, + "Y": -13.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "b0455c9d-3133-419c-a0d0-59fabe9004b0", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -13.0, + "Z": 0.0 + }, + "End": { + "X": 18.666666666666654, + "Y": -13.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "9a502a09-a39b-421c-8688-f51bf5d82c19", + "Name": null + }, + "0cd2f606-71f6-4e12-8c6c-f0cfe9fa7054": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.32851530393982087, + "Green": 0.8544612260788964, + "Blue": 0.5266509961926615, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "0cd2f606-71f6-4e12-8c6c-f0cfe9fa7054", + "Name": "17eee549-7d94-4cd8-9905-efcb11ea6509" + }, + "4a586f18-c72b-411d-b2c5-e06adcd0a24c": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -12.0, + "Z": 0.0 + }, + "End": { + "X": 17.999999999999986, + "Y": -12.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0cd2f606-71f6-4e12-8c6c-f0cfe9fa7054", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -12.0, + "Z": 0.0 + }, + "End": { + "X": 17.999999999999986, + "Y": -12.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "4a586f18-c72b-411d-b2c5-e06adcd0a24c", + "Name": null + }, + "c96f3bff-f0e4-46e7-8ec5-e3d7f7f5b58b": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.6569700891417312, + "Green": 0.947194673096386, + "Blue": 0.755214131788916, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "c96f3bff-f0e4-46e7-8ec5-e3d7f7f5b58b", + "Name": "9b14a531-621c-4309-9f73-8509450479d3" + }, + "42842dee-7da9-4b4a-a13a-6fde648376c7": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -11.0, + "Z": 0.0 + }, + "End": { + "X": 17.333333333333318, + "Y": -11.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "c96f3bff-f0e4-46e7-8ec5-e3d7f7f5b58b", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -11.0, + "Z": 0.0 + }, + "End": { + "X": 17.333333333333318, + "Y": -11.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "42842dee-7da9-4b4a-a13a-6fde648376c7", + "Name": null + }, + "431845e6-0cf4-458a-a2e5-c21a2e51ff0e": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9142751851651236, + "Green": 0.3632060020990698, + "Blue": 0.18928993548699186, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "431845e6-0cf4-458a-a2e5-c21a2e51ff0e", + "Name": "1dd3c2ff-e511-487d-b28c-80a2ae19f407" + }, + "997d40fb-59b5-4c48-b406-4b11d4321fda": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 16.666666666666654, + "Y": -10.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "431845e6-0cf4-458a-a2e5-c21a2e51ff0e", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 16.666666666666654, + "Y": -10.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "997d40fb-59b5-4c48-b406-4b11d4321fda", + "Name": null + }, + "4a06bd48-39c1-4a52-be5e-56dbe8d9d6ca": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.6073545951430475, + "Green": 0.7429205867196064, + "Blue": 0.2724283757956831, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "4a06bd48-39c1-4a52-be5e-56dbe8d9d6ca", + "Name": "df21974e-dc53-400e-b91b-ee3f417ee5b4" + }, + "59bf0a65-c0c3-4d0c-9c75-a87d802da88c": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -9.0, + "Z": 0.0 + }, + "End": { + "X": 15.999999999999988, + "Y": -9.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "4a06bd48-39c1-4a52-be5e-56dbe8d9d6ca", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -9.0, + "Z": 0.0 + }, + "End": { + "X": 15.999999999999988, + "Y": -9.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "59bf0a65-c0c3-4d0c-9c75-a87d802da88c", + "Name": null + }, + "58af0d17-76be-4c82-aed3-6a7d6f500f89": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.5650312493392412, + "Green": 0.20797886755688993, + "Blue": 0.7879767891894918, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "58af0d17-76be-4c82-aed3-6a7d6f500f89", + "Name": "9973c52d-2f95-4c3a-a5ba-3248845bc54d" + }, + "81efc71c-edfa-4aea-b1ae-986854505e59": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -8.0, + "Z": 0.0 + }, + "End": { + "X": 15.33333333333332, + "Y": -8.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "58af0d17-76be-4c82-aed3-6a7d6f500f89", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -8.0, + "Z": 0.0 + }, + "End": { + "X": 15.33333333333332, + "Y": -8.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "81efc71c-edfa-4aea-b1ae-986854505e59", + "Name": null + }, + "c99abc11-14fd-4412-b291-65467353184b": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.2921808419247069, + "Green": 0.9993605208580199, + "Blue": 0.3489431745134961, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "c99abc11-14fd-4412-b291-65467353184b", + "Name": "ba362f1d-6924-429b-aa20-02dbadb3f8d3" + }, + "f98036df-bba0-4e05-86c4-8cba815bf22f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -7.0, + "Z": 0.0 + }, + "End": { + "X": 14.666666666666652, + "Y": -7.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "c99abc11-14fd-4412-b291-65467353184b", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -7.0, + "Z": 0.0 + }, + "End": { + "X": 14.666666666666652, + "Y": -7.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f98036df-bba0-4e05-86c4-8cba815bf22f", + "Name": null + }, + "53ebcdb5-becf-4109-b587-2dc95b52b6fd": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.2202901957651089, + "Green": 0.5596393987348487, + "Blue": 0.5273467505012391, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "53ebcdb5-becf-4109-b587-2dc95b52b6fd", + "Name": "df5f78e7-301c-4fbf-ae68-192a54b98571" + }, + "cabff896-a3cc-4175-992a-ba1e9b0706d9": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -6.0, + "Z": 0.0 + }, + "End": { + "X": 13.999999999999986, + "Y": -6.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "53ebcdb5-becf-4109-b587-2dc95b52b6fd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -6.0, + "Z": 0.0 + }, + "End": { + "X": 13.999999999999986, + "Y": -6.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "cabff896-a3cc-4175-992a-ba1e9b0706d9", + "Name": null + }, + "72e0d1c6-bd45-4c9d-a869-3a587b71d014": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.6477152256517277, + "Green": 0.9568803543024139, + "Blue": 0.015456848319366969, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "72e0d1c6-bd45-4c9d-a869-3a587b71d014", + "Name": "fb4ea495-82e7-4f8c-b9f8-0026a6cdce33" + }, + "9455dad4-dc28-4f0e-a330-df77f6e7939d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -5.0, + "Z": 0.0 + }, + "End": { + "X": 13.33333333333332, + "Y": -5.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "72e0d1c6-bd45-4c9d-a869-3a587b71d014", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -5.0, + "Z": 0.0 + }, + "End": { + "X": 13.33333333333332, + "Y": -5.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "9455dad4-dc28-4f0e-a330-df77f6e7939d", + "Name": null + }, + "0268cf3a-749a-4d60-9f18-d60abcecd135": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9331830329881902, + "Green": 0.9346640845456459, + "Blue": 0.27662921989179645, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "0268cf3a-749a-4d60-9f18-d60abcecd135", + "Name": "1158bd6d-1a85-4fdb-a888-f54e1898cb7b" + }, + "75b8570d-8c1c-49dc-8dfe-4395515e63df": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -4.0, + "Z": 0.0 + }, + "End": { + "X": 12.666666666666652, + "Y": -4.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0268cf3a-749a-4d60-9f18-d60abcecd135", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -4.0, + "Z": 0.0 + }, + "End": { + "X": 12.666666666666652, + "Y": -4.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "75b8570d-8c1c-49dc-8dfe-4395515e63df", + "Name": null + }, + "06ee2c9e-f174-4867-8809-e68b9d66cd6c": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9458855199375588, + "Green": 0.5296012887403375, + "Blue": 0.04837617140653365, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "06ee2c9e-f174-4867-8809-e68b9d66cd6c", + "Name": "f807b2a9-5192-4951-8b02-c9bcef67b6f4" + }, + "a43d39a4-4613-48ad-abfa-a5b40ce48090": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -3.0, + "Z": 0.0 + }, + "End": { + "X": 11.999999999999986, + "Y": -3.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "06ee2c9e-f174-4867-8809-e68b9d66cd6c", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -3.0, + "Z": 0.0 + }, + "End": { + "X": 11.999999999999986, + "Y": -3.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a43d39a4-4613-48ad-abfa-a5b40ce48090", + "Name": null + }, + "e45b7e4c-4940-4eda-a148-27bc694dd710": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.27736032999929056, + "Green": 0.4825760282029286, + "Blue": 0.6994585062840295, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "e45b7e4c-4940-4eda-a148-27bc694dd710", + "Name": "bf11894c-7879-4d9a-949a-cedbec3ddfc5" + }, + "be79e411-70bb-4bdc-9381-f616c34616e8": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -2.0, + "Z": 0.0 + }, + "End": { + "X": 11.33333333333332, + "Y": -2.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "e45b7e4c-4940-4eda-a148-27bc694dd710", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -2.0, + "Z": 0.0 + }, + "End": { + "X": 11.33333333333332, + "Y": -2.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "be79e411-70bb-4bdc-9381-f616c34616e8", + "Name": null + }, + "e75e77ba-7225-46f3-b47d-44378c149492": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.046373076758521176, + "Green": 0.49631708976641165, + "Blue": 0.15496713954720978, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "e75e77ba-7225-46f3-b47d-44378c149492", + "Name": "99d7a7b2-c2e7-4ff3-8498-7f94647f3643" + }, + "cd4080dc-4840-4c3d-83a7-eec05f9a921d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 10.666666666666652, + "Y": -1.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "e75e77ba-7225-46f3-b47d-44378c149492", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 10.666666666666652, + "Y": -1.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "cd4080dc-4840-4c3d-83a7-eec05f9a921d", + "Name": null + }, + "87654b68-576e-401a-99f0-d780d7a15c60": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7785322637197246, + "Green": 0.6159783436991173, + "Blue": 0.40175690706901107, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "87654b68-576e-401a-99f0-d780d7a15c60", + "Name": "42c20bb0-fb64-4385-98fd-c120698c1733" + }, + "c6502787-f3e9-48b2-8742-cc888b559bd8": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.3749999999999895, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 0.3749999999999895, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "87654b68-576e-401a-99f0-d780d7a15c60", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.3749999999999895, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 0.3749999999999895, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "c6502787-f3e9-48b2-8742-cc888b559bd8", + "Name": null + }, + "a571ee12-9969-4f79-832e-347b8531b7a6": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.09527151803265863, + "Green": 0.7948701329505398, + "Blue": 0.4957135508282639, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "a571ee12-9969-4f79-832e-347b8531b7a6", + "Name": "b4c40dee-f7bd-411d-bce3-ee518887730e" + }, + "eb77c9f2-3025-4a26-9e5a-44b30640d2eb": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.7499999999999897, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 0.7499999999999897, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "a571ee12-9969-4f79-832e-347b8531b7a6", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.7499999999999897, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 0.7499999999999897, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "eb77c9f2-3025-4a26-9e5a-44b30640d2eb", + "Name": null + }, + "1f9d5724-1896-4a57-9875-0f26072a7fbe": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.48867016122148843, + "Green": 0.9384220423821462, + "Blue": 0.2617955739897655, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "1f9d5724-1896-4a57-9875-0f26072a7fbe", + "Name": "3faa5502-4973-451e-9f44-bd76bdab9d0f" + }, + "e3213149-d18c-48f7-8fa0-5e44f2c1bfd3": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.12499999999999, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 1.12499999999999, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "1f9d5724-1896-4a57-9875-0f26072a7fbe", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.12499999999999, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 1.12499999999999, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "e3213149-d18c-48f7-8fa0-5e44f2c1bfd3", + "Name": null + }, + "3eda7eed-22cd-4bb0-9110-e6e434602937": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7873813434445213, + "Green": 0.35949919575802014, + "Blue": 0.6083714815826954, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "3eda7eed-22cd-4bb0-9110-e6e434602937", + "Name": "def2ff78-c7d5-4085-90bc-28e4f2cf8d07" + }, + "1e6142c9-4bc0-4dbd-9550-5d3faa59aa7d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.49999999999999, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 1.49999999999999, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "3eda7eed-22cd-4bb0-9110-e6e434602937", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.49999999999999, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 1.49999999999999, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "1e6142c9-4bc0-4dbd-9550-5d3faa59aa7d", + "Name": null + }, + "c3389c7d-bf0b-48e7-b422-2a1a3afdca22": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.756788792441035, + "Green": 0.7036467900982345, + "Blue": 0.9149759662872999, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "c3389c7d-bf0b-48e7-b422-2a1a3afdca22", + "Name": "e06c2c49-785d-4451-ac4f-7e3effaeba8c" + }, + "faa4de2c-ba4e-469f-8449-518b29acc4c0": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.87499999999999, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 1.87499999999999, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "c3389c7d-bf0b-48e7-b422-2a1a3afdca22", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.87499999999999, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 1.87499999999999, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "faa4de2c-ba4e-469f-8449-518b29acc4c0", + "Name": null + }, + "5fb89498-64a8-43e5-9247-35d708ceaab6": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9425923488766851, + "Green": 0.7760420515090423, + "Blue": 0.7879071528035715, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "5fb89498-64a8-43e5-9247-35d708ceaab6", + "Name": "d0b5b99e-f82e-4868-b809-d2212f766ad6" + }, + "880bd249-918c-40f8-aa7a-5d8de97570f0": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.2499999999999907, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 2.2499999999999907, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "5fb89498-64a8-43e5-9247-35d708ceaab6", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.2499999999999907, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 2.2499999999999907, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "880bd249-918c-40f8-aa7a-5d8de97570f0", + "Name": null + }, + "60c645a8-87c6-4ba4-8b80-1e38a7b0efe7": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.2756151302138414, + "Green": 0.6808000782880932, + "Blue": 0.8975808717764825, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "60c645a8-87c6-4ba4-8b80-1e38a7b0efe7", + "Name": "75aa10a0-02b9-4e0c-9ce0-d81d1dd82ba6" + }, + "76c09ccc-045b-40a3-a11c-c6af00220080": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.6249999999999907, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 2.6249999999999907, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "60c645a8-87c6-4ba4-8b80-1e38a7b0efe7", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.6249999999999907, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 2.6249999999999907, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "76c09ccc-045b-40a3-a11c-c6af00220080", + "Name": null + }, + "e39af83f-9a76-49e7-b929-55ded469c8d7": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.5111941478732946, + "Green": 0.723787056153541, + "Blue": 0.012530588550740195, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "e39af83f-9a76-49e7-b929-55ded469c8d7", + "Name": "a221eba3-8105-40ab-b24a-046c14ec3892" + }, + "2d245aa6-3656-4767-910b-e6f5d953c0c3": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.9999999999999907, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 2.9999999999999907, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "e39af83f-9a76-49e7-b929-55ded469c8d7", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.9999999999999907, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 2.9999999999999907, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "2d245aa6-3656-4767-910b-e6f5d953c0c3", + "Name": null + }, + "2043ccca-defe-4c81-a62b-c48c14d4be34": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.47858491189711955, + "Green": 0.9683896652275649, + "Blue": 0.8336047133587323, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "2043ccca-defe-4c81-a62b-c48c14d4be34", + "Name": "62b50e78-ff55-41ee-bc49-d7a445183b50" + }, + "38387b62-b231-4326-8ae6-65e4127118a4": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.3749999999999907, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 3.3749999999999907, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "2043ccca-defe-4c81-a62b-c48c14d4be34", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.3749999999999907, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 3.3749999999999907, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "38387b62-b231-4326-8ae6-65e4127118a4", + "Name": null + }, + "c71d8ebd-bd68-46a8-a9c0-240b006a0117": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.14091376408045822, + "Green": 0.3299942651437569, + "Blue": 0.2603445585166777, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "c71d8ebd-bd68-46a8-a9c0-240b006a0117", + "Name": "81626520-7e4b-49bb-9ada-beb9872bccfc" + }, + "e1f7244b-dc79-4111-927a-d231c91c53b4": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.7499999999999907, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 3.7499999999999907, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "c71d8ebd-bd68-46a8-a9c0-240b006a0117", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.7499999999999907, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 3.7499999999999907, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "e1f7244b-dc79-4111-927a-d231c91c53b4", + "Name": null + }, + "8af2e579-ea2f-4760-bcfe-c4a0d67f5962": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.5729698695116536, + "Green": 0.51865817258072, + "Blue": 0.7116617777904783, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "8af2e579-ea2f-4760-bcfe-c4a0d67f5962", + "Name": "5a4a0b8b-b86b-41ce-9ff1-9df34b6798db" + }, + "f196b90b-458e-450e-9bb4-c51e123d9092": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 4.124999999999991, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 4.124999999999991, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "8af2e579-ea2f-4760-bcfe-c4a0d67f5962", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 4.124999999999991, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 4.124999999999991, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f196b90b-458e-450e-9bb4-c51e123d9092", + "Name": null + }, + "57055c8e-62e6-440d-991e-790364cb15a1": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.633009649642282, + "Green": 0.5136485782049822, + "Blue": 0.3833821771589025, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "57055c8e-62e6-440d-991e-790364cb15a1", + "Name": "a38ccc7f-8c63-47e7-b688-30307d3d2ee0" + }, + "f2a648c9-9440-4354-9615-4f737fc77104": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 4.499999999999992, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 4.499999999999992, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "57055c8e-62e6-440d-991e-790364cb15a1", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 4.499999999999992, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 4.499999999999992, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f2a648c9-9440-4354-9615-4f737fc77104", + "Name": null + }, + "1520af39-6173-48dc-8e2c-fe5ee269dc35": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.947186267444485, + "Green": 0.12501867773245026, + "Blue": 0.7647692657843089, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "1520af39-6173-48dc-8e2c-fe5ee269dc35", + "Name": "b764fa7e-ac32-4afe-a8e6-2c995770566c" + }, + "3d1e51c9-6f58-4cbd-a52f-0bf214568c4a": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 4.874999999999991, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 4.874999999999991, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "1520af39-6173-48dc-8e2c-fe5ee269dc35", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 4.874999999999991, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 4.874999999999991, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "3d1e51c9-6f58-4cbd-a52f-0bf214568c4a", + "Name": null + }, + "ecb315ab-445e-4d1f-bad1-3ab69e0b9eb4": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.031633199672975204, + "Green": 0.15904506443023916, + "Blue": 0.018458311920267676, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "ecb315ab-445e-4d1f-bad1-3ab69e0b9eb4", + "Name": "81595673-badb-4e6e-b762-fbe283940ef9" + }, + "bd333cd8-66bb-4d92-aa54-231a748c8fb7": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.249999999999992, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 5.249999999999992, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "ecb315ab-445e-4d1f-bad1-3ab69e0b9eb4", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.249999999999992, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 5.249999999999992, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "bd333cd8-66bb-4d92-aa54-231a748c8fb7", + "Name": null + }, + "80515097-fc80-47f6-8851-266f1cdb4a95": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7536612743296014, + "Green": 0.14580168954366896, + "Blue": 0.5751648887876257, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "80515097-fc80-47f6-8851-266f1cdb4a95", + "Name": "3a96bc49-cff0-4278-9b45-71d1bd55723b" + }, + "d6dc068d-4d2b-49e6-a478-e88390b1fbd4": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.624999999999991, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 5.624999999999991, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "80515097-fc80-47f6-8851-266f1cdb4a95", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.624999999999991, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 5.624999999999991, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "d6dc068d-4d2b-49e6-a478-e88390b1fbd4", + "Name": null + }, + "6cc0f3f4-3e16-44d8-800b-546f78a60e69": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.6682577383091011, + "Green": 0.18909672749652376, + "Blue": 0.825954498642103, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "6cc0f3f4-3e16-44d8-800b-546f78a60e69", + "Name": "a278ed2f-0fbd-4ef6-a98c-7cbf9a83b451" + }, + "c308c90d-a29a-414d-a8bb-252d9d7ec8ca": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.999999999999992, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 5.999999999999992, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "6cc0f3f4-3e16-44d8-800b-546f78a60e69", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.999999999999992, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 5.999999999999992, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "c308c90d-a29a-414d-a8bb-252d9d7ec8ca", + "Name": null + }, + "4452a299-6051-4b2b-8639-00ad060cb206": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.13340020511923367, + "Green": 0.3347679811226055, + "Blue": 0.7065339766938863, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "4452a299-6051-4b2b-8639-00ad060cb206", + "Name": "8ebac075-0e29-4733-9249-3e9577923a56" + }, + "3be27845-de4c-425c-bc34-06db244a217b": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 6.374999999999992, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 6.374999999999992, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "4452a299-6051-4b2b-8639-00ad060cb206", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 6.374999999999992, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 6.374999999999992, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "3be27845-de4c-425c-bc34-06db244a217b", + "Name": null + }, + "96c4ca62-159d-4153-9473-bab8633df548": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9115513534804579, + "Green": 0.7707579465446798, + "Blue": 0.8155170114783183, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "96c4ca62-159d-4153-9473-bab8633df548", + "Name": "cad1a4df-23a9-4b4f-a479-d13322bc80a2" + }, + "6e7d3a6f-52cd-4baf-bc61-c937cfbb9cee": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 6.749999999999992, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 6.749999999999992, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "96c4ca62-159d-4153-9473-bab8633df548", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 6.749999999999992, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 6.749999999999992, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "6e7d3a6f-52cd-4baf-bc61-c937cfbb9cee", + "Name": null + }, + "2f58ff7f-3855-4581-8cbe-82fff3f0cb0e": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.2573862677707273, + "Green": 0.26733811584643, + "Blue": 0.8921912875455763, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "2f58ff7f-3855-4581-8cbe-82fff3f0cb0e", + "Name": "cebc75a7-6b29-4196-ad85-578d6b7a7105" + }, + "528c931a-334c-424d-bf07-caf1c1ebcd88": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.124999999999992, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 7.124999999999992, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "2f58ff7f-3855-4581-8cbe-82fff3f0cb0e", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.124999999999992, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 7.124999999999992, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "528c931a-334c-424d-bf07-caf1c1ebcd88", + "Name": null + }, + "0a5183db-17da-4e06-9b55-b7863fa8d5be": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.3892263185182709, + "Green": 0.616686606135539, + "Blue": 0.8264804677229749, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "0a5183db-17da-4e06-9b55-b7863fa8d5be", + "Name": "5b76d706-67a7-47c5-9860-1048746bbb16" + }, + "6d5faea2-73c1-449a-9c56-c6926f4882b6": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.499999999999992, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 7.499999999999992, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0a5183db-17da-4e06-9b55-b7863fa8d5be", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.499999999999992, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 7.499999999999992, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "6d5faea2-73c1-449a-9c56-c6926f4882b6", + "Name": null + }, + "a3750d05-d607-4d21-8e4b-cb60e9a85fc7": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.6621088374695316, + "Green": 0.34775639714103024, + "Blue": 0.6084277772383894, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "a3750d05-d607-4d21-8e4b-cb60e9a85fc7", + "Name": "7f05f04c-0efe-4ed2-83ea-fffe567987bd" + }, + "e0b50b6e-69ab-4dae-8d71-e52de8dc130a": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.874999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 7.874999999999993, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "a3750d05-d607-4d21-8e4b-cb60e9a85fc7", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.874999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 7.874999999999993, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "e0b50b6e-69ab-4dae-8d71-e52de8dc130a", + "Name": null + }, + "fbb3ba70-c82c-48fc-a847-29e47735d312": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.001451015473087791, + "Green": 0.21441147393286764, + "Blue": 0.8408410231773001, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "fbb3ba70-c82c-48fc-a847-29e47735d312", + "Name": "2b96aa89-81f4-43bb-8d1c-8a724b3b26fd" + }, + "11f06034-aa6c-4e96-8bd9-c89ee0204db7": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 8.249999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 8.249999999999993, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "fbb3ba70-c82c-48fc-a847-29e47735d312", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 8.249999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 8.249999999999993, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "11f06034-aa6c-4e96-8bd9-c89ee0204db7", + "Name": null + }, + "42af8713-ef19-459c-9642-65a9904edb95": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.896709703792217, + "Green": 0.12377914279875306, + "Blue": 0.1899982118932522, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "42af8713-ef19-459c-9642-65a9904edb95", + "Name": "49f9c8f5-82e6-4344-ba8c-6102fbc676cb" + }, + "7589e644-75a7-4ce2-adf0-ef7b58354425": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 8.624999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 8.624999999999993, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "42af8713-ef19-459c-9642-65a9904edb95", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 8.624999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 8.624999999999993, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "7589e644-75a7-4ce2-adf0-ef7b58354425", + "Name": null + }, + "45ea4ef7-30ff-4502-93c4-2d60aca43740": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.5315937891283975, + "Green": 0.9954060814322001, + "Blue": 0.651023373776592, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "45ea4ef7-30ff-4502-93c4-2d60aca43740", + "Name": "9401e664-8359-448f-b55e-0b1f0f26eb13" + }, + "8d67e19a-ef51-40b5-9ed8-3b23071e0754": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 8.999999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 8.999999999999995, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "45ea4ef7-30ff-4502-93c4-2d60aca43740", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 8.999999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 8.999999999999995, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "8d67e19a-ef51-40b5-9ed8-3b23071e0754", + "Name": null + }, + "9f894599-b05f-45b7-9107-6f851355ade2": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.023137887019262598, + "Green": 0.2439819305408662, + "Blue": 0.521755013857854, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "9f894599-b05f-45b7-9107-6f851355ade2", + "Name": "5d3f2c92-8f0d-456d-b1ad-bab4005f06a1" + }, + "a7af29c8-93b7-4c33-8c23-730fd8805ab9": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.374999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 9.374999999999993, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "9f894599-b05f-45b7-9107-6f851355ade2", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.374999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 9.374999999999993, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a7af29c8-93b7-4c33-8c23-730fd8805ab9", + "Name": null + }, + "ae14042c-0696-4031-94ec-70b12cfdb00a": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.8791225598562148, + "Green": 0.7575328735436931, + "Blue": 0.577985366609872, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "ae14042c-0696-4031-94ec-70b12cfdb00a", + "Name": "20c2f18b-5e31-49e6-bcd5-d41066411c3e" + }, + "cb5b9af2-f5ac-47df-b86a-409ea72c5d60": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.749999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 9.749999999999993, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "ae14042c-0696-4031-94ec-70b12cfdb00a", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.749999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 9.749999999999993, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "cb5b9af2-f5ac-47df-b86a-409ea72c5d60", + "Name": null + }, + "cb48ea37-61f5-49b3-bb5b-24fc73d9f513": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.4373656997631144, + "Green": 0.8103271735880185, + "Blue": 0.779292937731041, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "cb48ea37-61f5-49b3-bb5b-24fc73d9f513", + "Name": "b7883e6e-a796-4f9b-8ba2-6c853050fe33" + }, + "3030f0f6-5a45-4407-9a01-07a0e9498e42": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.124999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 10.124999999999993, + "Y": -0.1875, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "cb48ea37-61f5-49b3-bb5b-24fc73d9f513", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.124999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 10.124999999999993, + "Y": -0.1875, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "3030f0f6-5a45-4407-9a01-07a0e9498e42", + "Name": null + }, + "21cec7a0-d53b-41e3-867e-2d0c483cfcdf": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.007650214716629225, + "Green": 0.007513558961224537, + "Blue": 0.9952262840211514, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "21cec7a0-d53b-41e3-867e-2d0c483cfcdf", + "Name": "a3f02fa3-138e-4cd1-838f-ce5aabd9c4bd" + }, + "636f517c-1005-46b9-bd4c-47c7f411bf77": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.499999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 10.499999999999995, + "Y": -0.7500000000000142, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "21cec7a0-d53b-41e3-867e-2d0c483cfcdf", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.499999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 10.499999999999995, + "Y": -0.7500000000000142, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "636f517c-1005-46b9-bd4c-47c7f411bf77", + "Name": null + }, + "807ab9c3-0a11-43ae-b929-e6887979bfa3": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.5538105818227914, + "Green": 0.6614185160311956, + "Blue": 0.7479002260360402, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "807ab9c3-0a11-43ae-b929-e6887979bfa3", + "Name": "e7cfc30b-1c8b-4a2f-927c-65de3a2ac5e4" + }, + "ea8b8b10-1213-4983-a19b-69bebaf402e7": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.874999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 10.874999999999995, + "Y": -1.312500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "807ab9c3-0a11-43ae-b929-e6887979bfa3", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.874999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 10.874999999999995, + "Y": -1.312500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "ea8b8b10-1213-4983-a19b-69bebaf402e7", + "Name": null + }, + "1e400e61-5f50-4cff-910d-e7aab9b32a91": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.89614476631216, + "Green": 0.3756233818715547, + "Blue": 0.24631046235855225, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "1e400e61-5f50-4cff-910d-e7aab9b32a91", + "Name": "40a665fb-2a00-4450-a47b-424160b4e58f" + }, + "4a146f05-e355-49e5-8504-3c9432f384e8": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 11.249999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 11.249999999999993, + "Y": -1.875, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "1e400e61-5f50-4cff-910d-e7aab9b32a91", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 11.249999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 11.249999999999993, + "Y": -1.875, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "4a146f05-e355-49e5-8504-3c9432f384e8", + "Name": null + }, + "19be73f9-a03d-4b22-b75a-98935d086695": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.49119088961332613, + "Green": 0.5579599489262141, + "Blue": 0.5083320715969112, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "19be73f9-a03d-4b22-b75a-98935d086695", + "Name": "49c380a2-d709-43b5-9dae-9d265aed51d9" + }, + "a2f1e7ed-b8c1-47cd-83dd-e60dc0818bc2": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 11.624999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 11.624999999999995, + "Y": -2.437500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "19be73f9-a03d-4b22-b75a-98935d086695", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 11.624999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 11.624999999999995, + "Y": -2.437500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a2f1e7ed-b8c1-47cd-83dd-e60dc0818bc2", + "Name": null + }, + "85429e92-7c32-46a5-a911-cc275ba4105d": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9382887980613339, + "Green": 0.3695243622034436, + "Blue": 0.8112886672892089, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "85429e92-7c32-46a5-a911-cc275ba4105d", + "Name": "c83f997e-244a-4000-b047-434ba7caf0d7" + }, + "bdd0f0e8-7300-48b0-913f-8776c3d2231f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 11.999999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 11.999999999999995, + "Y": -3.000000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "85429e92-7c32-46a5-a911-cc275ba4105d", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 11.999999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 11.999999999999995, + "Y": -3.000000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "bdd0f0e8-7300-48b0-913f-8776c3d2231f", + "Name": null + }, + "2704992d-ce4b-41d9-b031-1e678198ab86": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.4100305346818783, + "Green": 0.7522102588565136, + "Blue": 0.9313902156108014, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "2704992d-ce4b-41d9-b031-1e678198ab86", + "Name": "e98e6ee7-2ed1-4a69-90e1-cd015ed8328c" + }, + "045c499f-ec79-41d1-ac1e-ddfb32d9f7fb": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.374999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 12.374999999999995, + "Y": -3.562500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "2704992d-ce4b-41d9-b031-1e678198ab86", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.374999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 12.374999999999995, + "Y": -3.562500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "045c499f-ec79-41d1-ac1e-ddfb32d9f7fb", + "Name": null + }, + "559100ba-db6b-40e0-bbad-57905da942f9": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7343238656103257, + "Green": 0.771548034516884, + "Blue": 0.06531758469777069, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "559100ba-db6b-40e0-bbad-57905da942f9", + "Name": "311b9158-d32f-4a52-94df-7c1e4d540fb6" + }, + "42dcefb8-17f0-42f4-938a-a243ae74a51f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.749999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 12.749999999999995, + "Y": -4.125000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "559100ba-db6b-40e0-bbad-57905da942f9", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.749999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 12.749999999999995, + "Y": -4.125000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "42dcefb8-17f0-42f4-938a-a243ae74a51f", + "Name": null + }, + "7c0f85b4-4931-4568-8419-f0c122d679e2": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.6359562867488509, + "Green": 0.6018064159908362, + "Blue": 0.3393618996904054, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "7c0f85b4-4931-4568-8419-f0c122d679e2", + "Name": "aca0ed1b-05b9-4fca-b84d-1ffd0515da6d" + }, + "de733d84-a479-4217-9a99-274d0a3c3648": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 13.124999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 13.124999999999995, + "Y": -4.687500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7c0f85b4-4931-4568-8419-f0c122d679e2", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 13.124999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 13.124999999999995, + "Y": -4.687500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "de733d84-a479-4217-9a99-274d0a3c3648", + "Name": null + }, + "265cff73-df79-4154-b767-c3f49df1bab4": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.0555106029172943, + "Green": 0.8884134664611953, + "Blue": 0.5267760160038136, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "265cff73-df79-4154-b767-c3f49df1bab4", + "Name": "bdd0d164-5940-4db0-9b34-1a74c7956584" + }, + "012427a7-a81a-420f-a503-ca9d9b357ca3": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 13.499999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 13.499999999999995, + "Y": -5.250000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "265cff73-df79-4154-b767-c3f49df1bab4", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 13.499999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 13.499999999999995, + "Y": -5.250000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "012427a7-a81a-420f-a503-ca9d9b357ca3", + "Name": null + }, + "0b291d87-6385-4cc7-93b2-ebe4d990d6dc": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.2937619976204643, + "Green": 0.37826370791451247, + "Blue": 0.5098052423027368, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "0b291d87-6385-4cc7-93b2-ebe4d990d6dc", + "Name": "8ba6f06c-6f26-46eb-bc28-b95c102b99d1" + }, + "9011c0c0-0aa1-478a-82aa-74b3b5b2fc42": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 13.874999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 13.874999999999995, + "Y": -5.812500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0b291d87-6385-4cc7-93b2-ebe4d990d6dc", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 13.874999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 13.874999999999995, + "Y": -5.812500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "9011c0c0-0aa1-478a-82aa-74b3b5b2fc42", + "Name": null + }, + "b276aaf4-0ede-44d6-bbe1-6e567ed2a0f4": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.3142059209357043, + "Green": 0.9518606187551565, + "Blue": 0.8063594325475206, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "b276aaf4-0ede-44d6-bbe1-6e567ed2a0f4", + "Name": "2e16c8cb-798e-4786-89b6-4ac8f740c9d2" + }, + "8b41402b-cd71-4185-8283-b9cd1669ee4f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.249999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 14.249999999999995, + "Y": -6.375000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "b276aaf4-0ede-44d6-bbe1-6e567ed2a0f4", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.249999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 14.249999999999995, + "Y": -6.375000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "8b41402b-cd71-4185-8283-b9cd1669ee4f", + "Name": null + }, + "9476008f-1ebd-4d67-99f8-74f9f3f72fb2": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.04718752999193386, + "Green": 0.6544586227529023, + "Blue": 0.3402428381798057, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "9476008f-1ebd-4d67-99f8-74f9f3f72fb2", + "Name": "88e5f0d4-7108-437a-a073-be479a260e45" + }, + "fc3646e4-8513-4027-ae55-5c5a115b69fb": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.624999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 14.624999999999996, + "Y": -6.937500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "9476008f-1ebd-4d67-99f8-74f9f3f72fb2", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.624999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 14.624999999999996, + "Y": -6.937500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "fc3646e4-8513-4027-ae55-5c5a115b69fb", + "Name": null + }, + "9f528bf7-0989-49b0-a2f0-6fe665d49d98": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.6132014932172379, + "Green": 0.4476404336502964, + "Blue": 0.552992957901672, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "9f528bf7-0989-49b0-a2f0-6fe665d49d98", + "Name": "eae60340-2dbf-4443-bb73-1c974668d969" + }, + "fc442e8c-979c-4b9f-852c-d88cdece239d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.999999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 14.999999999999995, + "Y": -7.500000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "9f528bf7-0989-49b0-a2f0-6fe665d49d98", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.999999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 14.999999999999995, + "Y": -7.500000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "fc442e8c-979c-4b9f-852c-d88cdece239d", + "Name": null + }, + "05b6961f-c9e9-4ebf-81a8-abe880220eb6": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.09294079714125991, + "Green": 0.0005649374800570949, + "Blue": 0.7481557609271984, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "05b6961f-c9e9-4ebf-81a8-abe880220eb6", + "Name": "b210b242-bbde-44c5-9c57-941a0666c546" + }, + "7c563816-e3be-4c1e-81f5-071317eb5ce5": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 15.374999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 15.374999999999996, + "Y": -8.062500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "05b6961f-c9e9-4ebf-81a8-abe880220eb6", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 15.374999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 15.374999999999996, + "Y": -8.062500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "7c563816-e3be-4c1e-81f5-071317eb5ce5", + "Name": null + }, + "9f26c661-7913-42ca-8841-464d949c6b6d": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9436877495346999, + "Green": 0.040402899515071374, + "Blue": 0.43744613250598596, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "9f26c661-7913-42ca-8841-464d949c6b6d", + "Name": "e539aba3-da44-4e33-a44d-b3b3048ea37e" + }, + "711cd2c5-2814-4d8c-b29d-8937221d7404": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 15.749999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 15.749999999999996, + "Y": -8.625000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "9f26c661-7913-42ca-8841-464d949c6b6d", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 15.749999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 15.749999999999996, + "Y": -8.625000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "711cd2c5-2814-4d8c-b29d-8937221d7404", + "Name": null + }, + "34b88b15-ef83-4e84-a460-ad9a4616e84e": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.14269130217968082, + "Green": 0.08484908895792863, + "Blue": 0.8744575683374226, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "34b88b15-ef83-4e84-a460-ad9a4616e84e", + "Name": "2665a998-520a-4fa2-8808-ce2aeec742c7" + }, + "dd9eb05d-3574-4e6e-8c56-7b52901e2cee": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.124999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 16.124999999999993, + "Y": -9.187500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "34b88b15-ef83-4e84-a460-ad9a4616e84e", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.124999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 16.124999999999993, + "Y": -9.187500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "dd9eb05d-3574-4e6e-8c56-7b52901e2cee", + "Name": null + }, + "5d78cf49-dfb7-42ab-b348-6920fe51fe5a": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7104663465686452, + "Green": 0.4690920251743365, + "Blue": 0.0053226146871795015, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "5d78cf49-dfb7-42ab-b348-6920fe51fe5a", + "Name": "54212f33-3e44-4811-8b36-664f51351661" + }, + "8bcb2928-16ce-4a8a-acca-4c5b2a1e7594": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.499999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 16.499999999999996, + "Y": -9.750000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "5d78cf49-dfb7-42ab-b348-6920fe51fe5a", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.499999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 16.499999999999996, + "Y": -9.750000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "8bcb2928-16ce-4a8a-acca-4c5b2a1e7594", + "Name": null + }, + "d188b4ef-ba6b-4edb-a10c-49e9818370cd": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.6465951509990707, + "Green": 0.7030418341527888, + "Blue": 0.03877913907113445, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "d188b4ef-ba6b-4edb-a10c-49e9818370cd", + "Name": "516ba3f6-ae9c-4620-bb1a-ab7e4cc3bcee" + }, + "5291d7a1-215d-4c81-90bd-c8eb30b58d3d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.874999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 16.874999999999996, + "Y": -10.312500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d188b4ef-ba6b-4edb-a10c-49e9818370cd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.874999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 16.874999999999996, + "Y": -10.312500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "5291d7a1-215d-4c81-90bd-c8eb30b58d3d", + "Name": null + }, + "2b15283e-a2b7-4656-8f9b-dfecafa7e09d": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7139753530332704, + "Green": 0.3716939279677784, + "Blue": 0.40570714297038835, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "2b15283e-a2b7-4656-8f9b-dfecafa7e09d", + "Name": "ab928c62-6e1a-408c-a9bc-3693e14d8043" + }, + "c13c2537-6a2d-4fb4-b380-2b71ad509517": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.249999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 17.249999999999996, + "Y": -10.875000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "2b15283e-a2b7-4656-8f9b-dfecafa7e09d", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.249999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 17.249999999999996, + "Y": -10.875000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "c13c2537-6a2d-4fb4-b380-2b71ad509517", + "Name": null + }, + "2985d601-2264-4bad-9063-302295449666": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.655864384330746, + "Green": 0.4982999789054971, + "Blue": 0.7730050495700003, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "2985d601-2264-4bad-9063-302295449666", + "Name": "4a77a171-bb70-4a77-92b2-3fe116ecb12a" + }, + "0d8a9e32-1c00-43ec-a16f-2fa023240af0": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.624999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 17.624999999999996, + "Y": -11.437500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "2985d601-2264-4bad-9063-302295449666", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.624999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 17.624999999999996, + "Y": -11.437500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "0d8a9e32-1c00-43ec-a16f-2fa023240af0", + "Name": null + }, + "b9bb0cb5-22ac-4319-ad4c-93a794143015": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.22112421003222663, + "Green": 0.6023827686916956, + "Blue": 0.9973596739570423, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "b9bb0cb5-22ac-4319-ad4c-93a794143015", + "Name": "5d0157bc-e003-4ad3-b686-5180727e248c" + }, + "b2aeae12-142c-4bd9-ae20-1ed762bc0f65": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 18.0, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 18.0, + "Y": -12.000000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "b9bb0cb5-22ac-4319-ad4c-93a794143015", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 18.0, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 18.0, + "Y": -12.000000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "b2aeae12-142c-4bd9-ae20-1ed762bc0f65", + "Name": null + }, + "d0c525ab-3389-48dc-a192-cda401a643ee": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7365052200558154, + "Green": 0.17698496867762178, + "Blue": 0.6060993301710577, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "d0c525ab-3389-48dc-a192-cda401a643ee", + "Name": "df6bfa97-d5a1-4fa8-bda7-62a6bb761d38" + }, + "fc02934b-ee43-4cb6-ab52-fe293b80dacd": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 18.374999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 18.374999999999996, + "Y": -12.562500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0c525ab-3389-48dc-a192-cda401a643ee", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 18.374999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 18.374999999999996, + "Y": -12.562500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "fc02934b-ee43-4cb6-ab52-fe293b80dacd", + "Name": null + }, + "3f2418b9-2a10-4b35-b20c-20a3ffafbcfb": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7019726390493907, + "Green": 0.8911012680694002, + "Blue": 0.7150657394505412, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "3f2418b9-2a10-4b35-b20c-20a3ffafbcfb", + "Name": "4a65b495-8e2e-4dee-9c1e-84ac5f3f37ee" + }, + "d47f702a-2a25-4edb-8bed-40acbed45d10": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 18.749999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 18.749999999999996, + "Y": -13.125000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "3f2418b9-2a10-4b35-b20c-20a3ffafbcfb", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 18.749999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 18.749999999999996, + "Y": -13.125000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "d47f702a-2a25-4edb-8bed-40acbed45d10", + "Name": null + }, + "452e8f4a-6733-4700-b32f-6be8328f9098": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.47104582910940324, + "Green": 0.7968290414646403, + "Blue": 0.3045698252062173, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "452e8f4a-6733-4700-b32f-6be8328f9098", + "Name": "70a8e5a5-b593-437d-8cfd-a8e438b3c746" + }, + "755bdb74-1881-4135-9565-004229bb014e": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.124999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 19.124999999999996, + "Y": -13.687500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "452e8f4a-6733-4700-b32f-6be8328f9098", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.124999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 19.124999999999996, + "Y": -13.687500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "755bdb74-1881-4135-9565-004229bb014e", + "Name": null + }, + "773133b8-f888-4f10-8fbf-72d40811c381": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.37839725770912935, + "Green": 0.6413830684690658, + "Blue": 0.7709830970368269, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "773133b8-f888-4f10-8fbf-72d40811c381", + "Name": "3aa68e82-b776-402f-b6a9-ecfbe64028dc" + }, + "6dfec819-533f-4a86-964d-e9a6e08d1d56": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.499999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 19.499999999999996, + "Y": -14.250000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "773133b8-f888-4f10-8fbf-72d40811c381", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.499999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 19.499999999999996, + "Y": -14.250000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "6dfec819-533f-4a86-964d-e9a6e08d1d56", + "Name": null + }, + "8eb76bd9-7bfd-47ef-80cf-28db59597e0c": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.31716182377057234, + "Green": 0.6922685372141509, + "Blue": 0.5614035164757648, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "8eb76bd9-7bfd-47ef-80cf-28db59597e0c", + "Name": "7e8a7840-8d81-432d-8839-25b3a4280007" + }, + "fdc35cd7-18ce-428e-9731-4adf21c85ec4": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.875, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 19.875, + "Y": -14.812500000000021, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "8eb76bd9-7bfd-47ef-80cf-28db59597e0c", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.875, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 19.875, + "Y": -14.812500000000021, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "fdc35cd7-18ce-428e-9731-4adf21c85ec4", + "Name": null + }, + "53745bbf-2b3c-4642-91b9-c8484fc3a31f": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9019157671844195, + "Green": 0.9128193007376135, + "Blue": 0.8035643775032667, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "53745bbf-2b3c-4642-91b9-c8484fc3a31f", + "Name": "9d1c58b5-060f-4c8c-9787-b426f59d955c" + }, + "e620b4c2-5268-4471-bb70-bbcbd8720a60": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 20.249999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 20.249999999999996, + "Y": -15.375000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "53745bbf-2b3c-4642-91b9-c8484fc3a31f", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 20.249999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 20.249999999999996, + "Y": -15.375000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "e620b4c2-5268-4471-bb70-bbcbd8720a60", + "Name": null + }, + "dc716264-1054-48dc-afa7-2f127cb50b5f": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.652318447666391, + "Green": 0.5832956510518191, + "Blue": 0.9091716827401759, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "dc716264-1054-48dc-afa7-2f127cb50b5f", + "Name": "93063016-2dc5-43f2-a1d6-ad0d12fbb5fa" + }, + "fe3ccc56-6898-449f-8a7e-96a4e6e56fdd": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 20.624999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 20.624999999999996, + "Y": -15.937500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "dc716264-1054-48dc-afa7-2f127cb50b5f", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 20.624999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 20.624999999999996, + "Y": -15.937500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "fe3ccc56-6898-449f-8a7e-96a4e6e56fdd", + "Name": null + }, + "8eac0740-19c8-4e59-883a-5ffcf14ec771": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.5044826276155574, + "Green": 0.6676107699366337, + "Blue": 0.24881878460236767, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "8eac0740-19c8-4e59-883a-5ffcf14ec771", + "Name": "ac2afff7-0e08-4e6c-8b81-fbd753bb6508" + }, + "3bc23751-c7ef-4148-8bd1-1b271ab9357c": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.0, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 21.0, + "Y": -16.50000000000002, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "8eac0740-19c8-4e59-883a-5ffcf14ec771", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.0, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 21.0, + "Y": -16.50000000000002, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "3bc23751-c7ef-4148-8bd1-1b271ab9357c", + "Name": null + }, + "b24987ef-03cd-4b03-9f64-666db63820e1": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7675802934763861, + "Green": 0.33321217695866345, + "Blue": 0.282764694785124, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "b24987ef-03cd-4b03-9f64-666db63820e1", + "Name": "3d9cc55a-05f1-45d1-bf5f-87ce47017817" + }, + "92452fa8-e370-44e5-89a9-73882543c5f6": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.374999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 21.374999999999996, + "Y": -17.062500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "b24987ef-03cd-4b03-9f64-666db63820e1", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.374999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 21.374999999999996, + "Y": -17.062500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "92452fa8-e370-44e5-89a9-73882543c5f6", + "Name": null + }, + "6cf7876e-301f-420c-9fb9-1a9ad1910f76": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9345356952094174, + "Green": 0.957337108886492, + "Blue": 0.9493404547447992, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "6cf7876e-301f-420c-9fb9-1a9ad1910f76", + "Name": "c4da3a0c-f181-494a-bbf1-f8b29ab73fb4" + }, + "d6c5bca5-0771-4392-99b2-9bc88ac5ed94": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.75, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 21.75, + "Y": -17.625000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "6cf7876e-301f-420c-9fb9-1a9ad1910f76", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.75, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 21.75, + "Y": -17.625000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "d6c5bca5-0771-4392-99b2-9bc88ac5ed94", + "Name": null + }, + "d5da68ba-6358-47a0-921d-ac5960a24d83": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7799879083316716, + "Green": 0.8718165871090333, + "Blue": 0.39818216878836143, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "d5da68ba-6358-47a0-921d-ac5960a24d83", + "Name": "bd9ebe23-9442-429d-8373-ea084e85c5b4" + }, + "285df4ab-4bf9-41eb-886d-a29481294ad8": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.125, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 22.125, + "Y": -18.18750000000002, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d5da68ba-6358-47a0-921d-ac5960a24d83", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.125, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 22.125, + "Y": -18.18750000000002, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "285df4ab-4bf9-41eb-886d-a29481294ad8", + "Name": null + }, + "3094ff7d-09e2-42d2-afdd-5ec9d57f3a64": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7507960869701561, + "Green": 0.20718252947888455, + "Blue": 0.8634179308374496, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "3094ff7d-09e2-42d2-afdd-5ec9d57f3a64", + "Name": "93ea84e7-6501-4e58-aba6-bae4937eb6e6" + }, + "51757840-e557-45cc-8cc9-74e624021fb2": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.499999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 22.499999999999996, + "Y": -18.750000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "3094ff7d-09e2-42d2-afdd-5ec9d57f3a64", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.499999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 22.499999999999996, + "Y": -18.750000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "51757840-e557-45cc-8cc9-74e624021fb2", + "Name": null + }, + "4005d950-981a-4915-9ab2-1f762b1c489f": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.8313468023349283, + "Green": 0.4407186631302902, + "Blue": 0.19374782088852852, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "4005d950-981a-4915-9ab2-1f762b1c489f", + "Name": "d213125a-74ca-47d8-9d36-28c7741fcc87" + }, + "301e6b51-cdbf-4f3c-9d68-f3cf46d912ce": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.875, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 22.875, + "Y": -19.312500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "4005d950-981a-4915-9ab2-1f762b1c489f", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.875, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 22.875, + "Y": -19.312500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "301e6b51-cdbf-4f3c-9d68-f3cf46d912ce", + "Name": null + }, + "c24bf2d8-5ea6-442d-b7fd-232f40a73745": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.1593918288868814, + "Green": 0.23942051745924192, + "Blue": 0.6722629837096962, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "c24bf2d8-5ea6-442d-b7fd-232f40a73745", + "Name": "61b697ed-ed8d-4c77-88fd-6cce6ee9f742" + }, + "9baabc76-fa06-4ed8-9bba-48c5b3e11a98": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.25, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 23.25, + "Y": -19.875000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "c24bf2d8-5ea6-442d-b7fd-232f40a73745", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.25, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 23.25, + "Y": -19.875000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "9baabc76-fa06-4ed8-9bba-48c5b3e11a98", + "Name": null + }, + "dc2550e3-88b9-4e44-a464-b71b020e5618": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7007527894809622, + "Green": 0.2681978932899413, + "Blue": 0.06165876568372304, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "dc2550e3-88b9-4e44-a464-b71b020e5618", + "Name": "78b7a7d0-3cff-4129-a558-bd85eb377571" + }, + "5ef78095-dff6-45d4-8e83-e97ff9ba7693": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.625, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 23.625, + "Y": -20.437500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "dc2550e3-88b9-4e44-a464-b71b020e5618", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.625, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 23.625, + "Y": -20.437500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "5ef78095-dff6-45d4-8e83-e97ff9ba7693", + "Name": null + }, + "6308b3c4-0afa-4938-9c84-4ad9636594aa": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.2677960420343075, + "Green": 0.39681352926269803, + "Blue": 0.6794253907536275, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "6308b3c4-0afa-4938-9c84-4ad9636594aa", + "Name": "a0047c19-6ce2-4bcf-a142-d1ae8ccabf58" + }, + "b9bad69b-c553-4b23-a6d6-2e785b74ca42": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.0, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 24.0, + "Y": -21.00000000000002, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "6308b3c4-0afa-4938-9c84-4ad9636594aa", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.0, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 24.0, + "Y": -21.00000000000002, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "b9bad69b-c553-4b23-a6d6-2e785b74ca42", + "Name": null + }, + "f28ef0de-2bbc-471a-b22e-648807061650": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.8443036264946235, + "Green": 0.7539486171463265, + "Blue": 0.5854806781678836, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "f28ef0de-2bbc-471a-b22e-648807061650", + "Name": "bb6052be-8999-4240-9e1a-42b7a8cab552" + }, + "69fc9919-4a94-4e7b-a51c-d227dae4cc5f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.374999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 24.374999999999996, + "Y": -21.562500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "f28ef0de-2bbc-471a-b22e-648807061650", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.374999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 24.374999999999996, + "Y": -21.562500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "69fc9919-4a94-4e7b-a51c-d227dae4cc5f", + "Name": null + }, + "172876e2-4f28-48ae-8b97-92ab5ad56170": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9694406720667336, + "Green": 0.5688057623658356, + "Blue": 0.019087117639876493, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "172876e2-4f28-48ae-8b97-92ab5ad56170", + "Name": "12a2393e-02ee-48b8-8b7f-3d786e9f78ab" + }, + "2c2f7637-4b9b-40c1-8da9-a822fd54357f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.75, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 24.75, + "Y": -22.125000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "172876e2-4f28-48ae-8b97-92ab5ad56170", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.75, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 24.75, + "Y": -22.125000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "2c2f7637-4b9b-40c1-8da9-a822fd54357f", + "Name": null + }, + "52c5be44-3065-490c-af22-b8bbc9d96a07": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.0881879912168663, + "Green": 0.23202259244025805, + "Blue": 0.5093741987409881, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "52c5be44-3065-490c-af22-b8bbc9d96a07", + "Name": "768b355b-f7e8-4a82-a573-1e7e1a1365f8" + }, + "aaef37cb-6692-426b-869b-d3fbcac206fc": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 25.125, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 25.125, + "Y": -22.68750000000002, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "52c5be44-3065-490c-af22-b8bbc9d96a07", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 25.125, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 25.125, + "Y": -22.68750000000002, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "aaef37cb-6692-426b-869b-d3fbcac206fc", + "Name": null + }, + "f64124a6-8dfd-406e-b31c-dbd7f231a946": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.35728054556868993, + "Green": 0.9343923455730045, + "Blue": 0.5578890911107366, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "f64124a6-8dfd-406e-b31c-dbd7f231a946", + "Name": "b0607171-326f-401c-9552-9ed0143cbbfe" + }, + "b054c9a1-5185-49ef-9b8e-a4570d566043": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 25.5, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 25.5, + "Y": -23.250000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "f64124a6-8dfd-406e-b31c-dbd7f231a946", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 25.5, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 25.5, + "Y": -23.250000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "b054c9a1-5185-49ef-9b8e-a4570d566043", + "Name": null + }, + "a01e049d-4638-46ea-80fa-6173ba18599b": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.4323010446654172, + "Green": 0.5365101338999859, + "Blue": 0.8394919325781482, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "a01e049d-4638-46ea-80fa-6173ba18599b", + "Name": "f3ff5240-d47c-49a7-8053-d181c7f3c669" + }, + "11049a6b-52cf-4bd2-8a19-a3b818858dcf": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 25.875, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 25.875, + "Y": -23.812500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "a01e049d-4638-46ea-80fa-6173ba18599b", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 25.875, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 25.875, + "Y": -23.812500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "11049a6b-52cf-4bd2-8a19-a3b818858dcf", + "Name": null + }, + "1081bcc5-6645-44aa-9362-d684b01b0dc5": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.355229370461418, + "Green": 0.5984093493774577, + "Blue": 0.7695664813600325, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "1081bcc5-6645-44aa-9362-d684b01b0dc5", + "Name": "26360937-8080-4969-beba-d5b47cb48e62" + }, + "429a545c-65cc-4130-a4a5-58a9b4d58485": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 26.25, + "Y": -24.37500000000002, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "1081bcc5-6645-44aa-9362-d684b01b0dc5", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 26.25, + "Y": -24.37500000000002, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "429a545c-65cc-4130-a4a5-58a9b4d58485", + "Name": null + }, + "f96d820d-7a61-4b54-92d8-df1690812724": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.3728009282484655, + "Green": 0.5663657368004162, + "Blue": 0.48508600773526633, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "f96d820d-7a61-4b54-92d8-df1690812724", + "Name": "0bf04fbb-0526-49d3-a5c5-a701cffcd290" + }, + "d131d435-af87-43b1-9328-d6f9c1cff155": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.625, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 26.625, + "Y": -24.937500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "f96d820d-7a61-4b54-92d8-df1690812724", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.625, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 26.625, + "Y": -24.937500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "d131d435-af87-43b1-9328-d6f9c1cff155", + "Name": null + }, + "e17d5611-255f-495b-b3f2-b8bebe6d7b36": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.6979855856383153, + "Green": 0.07056896484949113, + "Blue": 0.4721006376073233, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "e17d5611-255f-495b-b3f2-b8bebe6d7b36", + "Name": "a2adcdd6-92f7-48f4-b2d1-a017d223752d" + }, + "3d9c75f1-e889-4c3e-80c7-5a2a0c701fc7": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.0, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 27.0, + "Y": -25.500000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "e17d5611-255f-495b-b3f2-b8bebe6d7b36", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.0, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 27.0, + "Y": -25.500000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "3d9c75f1-e889-4c3e-80c7-5a2a0c701fc7", + "Name": null + }, + "acb89ff4-9d64-4181-a6d2-a7a10a0fd378": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.6098165566147382, + "Green": 0.4929266187795096, + "Blue": 0.34387513359257726, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "acb89ff4-9d64-4181-a6d2-a7a10a0fd378", + "Name": "4df5e013-4f76-4650-a94a-90d207205eac" + }, + "5a6b106e-cdbb-44ec-ba07-ed9e9619995f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.375, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 27.375, + "Y": -26.062500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "acb89ff4-9d64-4181-a6d2-a7a10a0fd378", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.375, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 27.375, + "Y": -26.062500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "5a6b106e-cdbb-44ec-ba07-ed9e9619995f", + "Name": null + }, + "09af1ca6-9047-4bca-8f4a-b6d08f07f789": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.23690869903047973, + "Green": 0.8037298381345951, + "Blue": 0.39941287664669234, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "09af1ca6-9047-4bca-8f4a-b6d08f07f789", + "Name": "e5cecadd-ee24-4428-afbc-997a797bab10" + }, + "1bcce726-d246-4bf6-bfdb-40bf36423cd0": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.75, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 27.75, + "Y": -26.625000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "09af1ca6-9047-4bca-8f4a-b6d08f07f789", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.75, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 27.75, + "Y": -26.625000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "1bcce726-d246-4bf6-bfdb-40bf36423cd0", + "Name": null + }, + "110566da-81d7-4108-84b4-387cc18755c7": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.18716001891864464, + "Green": 0.4997842514420786, + "Blue": 0.9363986476959655, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "110566da-81d7-4108-84b4-387cc18755c7", + "Name": "6677a12b-2d2d-458c-bb1e-0fa929e8a7ba" + }, + "86dbdf19-8365-46bb-8fd0-6568d2c6968e": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 28.125, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 28.125, + "Y": -27.18750000000002, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "110566da-81d7-4108-84b4-387cc18755c7", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 28.125, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 28.125, + "Y": -27.18750000000002, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "86dbdf19-8365-46bb-8fd0-6568d2c6968e", + "Name": null + }, + "08c954c2-4ec5-4a8b-a0c8-06def73d9967": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.6033393040314965, + "Green": 0.0902320687147938, + "Blue": 0.20338849174016552, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "08c954c2-4ec5-4a8b-a0c8-06def73d9967", + "Name": "95435046-c6c8-4078-bc2b-14de46831e6a" + }, + "5ba89eac-deb6-4b30-8c63-aa3aeb6f10a7": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 28.5, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 28.5, + "Y": -27.750000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "08c954c2-4ec5-4a8b-a0c8-06def73d9967", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 28.5, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 28.5, + "Y": -27.750000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "5ba89eac-deb6-4b30-8c63-aa3aeb6f10a7", + "Name": null + }, + "d0ed7748-dc01-4694-bd74-6acf90319d22": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.36385977657691565, + "Green": 0.8105472362649382, + "Blue": 0.3030108247431977, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "d0ed7748-dc01-4694-bd74-6acf90319d22", + "Name": "c330e729-d81a-40f4-a459-0bc6c8fedc77" + }, + "48512fbb-070d-4ac3-b46c-db024f96764e": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 28.875, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 28.875, + "Y": -28.312500000000018, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0ed7748-dc01-4694-bd74-6acf90319d22", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 28.875, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 28.875, + "Y": -28.312500000000018, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "48512fbb-070d-4ac3-b46c-db024f96764e", + "Name": null + }, + "4256a72d-67f8-4cfd-b623-cda1a95ad2ed": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.37909505114848496, + "Green": 0.6626080957532898, + "Blue": 0.9751599370386265, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "4256a72d-67f8-4cfd-b623-cda1a95ad2ed", + "Name": "50e596eb-41ad-4818-8d30-722eaf2a8e55" + }, + "067e6e50-b9a4-4051-9a88-ef70134865cb": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.250000000000004, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 29.250000000000004, + "Y": -28.875000000000018, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "4256a72d-67f8-4cfd-b623-cda1a95ad2ed", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.250000000000004, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 29.250000000000004, + "Y": -28.875000000000018, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "067e6e50-b9a4-4051-9a88-ef70134865cb", + "Name": null + }, + "ff71ce93-3577-4b7b-9629-95a57668371f": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.35404373209646145, + "Green": 0.47406625676623837, + "Blue": 0.5063263175572856, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "ff71ce93-3577-4b7b-9629-95a57668371f", + "Name": "bfdb74a7-13f0-4b5d-9a97-526e181ddeef" + }, + "2a219401-cd11-4b33-887c-8405e8aff89d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.625, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 29.625, + "Y": -29.437500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "ff71ce93-3577-4b7b-9629-95a57668371f", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.625, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 29.625, + "Y": -29.437500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "2a219401-cd11-4b33-887c-8405e8aff89d", + "Name": null + }, + "ca45ed23-9590-4a54-9033-1d0e5bcfab99": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ca45ed23-9590-4a54-9033-1d0e5bcfab99", + "Name": null + }, + "a685c334-87cc-4819-a510-1a407ba0e9c6": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.3, + "Green": 0.7, + "Blue": 0.7, + "Alpha": 0.6 + }, + "SpecularFactor": 0.0, + "GlossinessFactor": 0.0, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "Id": "a685c334-87cc-4819-a510-1a407ba0e9c6", + "Name": "envelope" + }, + "43388ca2-4262-4ba5-8965-60d8ffeb25ec": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "43388ca2-4262-4ba5-8965-60d8ffeb25ec", + "Name": null + }, + "681f0379-5e88-4951-97bb-99cbd307f175": { + "discriminator": "Elements.Envelope", + "Profile": "ca45ed23-9590-4a54-9033-1d0e5bcfab99", + "Elevation": -10.0, + "Height": 10.0, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + -10.0 + ] + } + }, + "Material": "a685c334-87cc-4819-a510-1a407ba0e9c6", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "43388ca2-4262-4ba5-8965-60d8ffeb25ec", + "Height": 10.0, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "681f0379-5e88-4951-97bb-99cbd307f175", + "Name": "" + }, + "b1d94f62-fd8b-4883-9f3a-51a61abc7874": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "b1d94f62-fd8b-4883-9f3a-51a61abc7874", + "Name": null + }, + "90bc8c6e-c055-4b39-9118-4bdb488e400a": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "90bc8c6e-c055-4b39-9118-4bdb488e400a", + "Name": null + }, + "a870fe10-a1af-4d71-8ef4-18d2befc1ae0": { + "discriminator": "Elements.Envelope", + "Profile": "b1d94f62-fd8b-4883-9f3a-51a61abc7874", + "Elevation": 0.0, + "Height": 20.0, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "a685c334-87cc-4819-a510-1a407ba0e9c6", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "90bc8c6e-c055-4b39-9118-4bdb488e400a", + "Height": 20.0, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a870fe10-a1af-4d71-8ef4-18d2befc1ae0", + "Name": "" + }, + "d1e0443c-b18f-44a5-b81d-07d70a9aac43": { + "discriminator": "Elements.Primitive", + "Id": "d1e0443c-b18f-44a5-b81d-07d70a9aac43", + "Name": "Basement" + }, + "17934ee8-895e-4fa6-b581-f327412eea4f": { + "discriminator": "Elements.Primitive", + "Id": "17934ee8-895e-4fa6-b581-f327412eea4f", + "Name": "Ground Floor" + }, + "96c1166f-e649-4dcc-aa4e-926454480d73": { + "discriminator": "Elements.Primitive", + "Id": "96c1166f-e649-4dcc-aa4e-926454480d73", + "Name": "Typical Floor" + }, + "605b5379-10c6-4efc-83f2-9c3546c9af53": { + "discriminator": "Elements.Primitive", + "Id": "605b5379-10c6-4efc-83f2-9c3546c9af53", + "Name": "Penthouse" + }, + "aa8ce056-c0eb-4204-9399-0ffad6e3ac55": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.945, + "Green": 0.3607, + "Blue": 0.419, + "Alpha": 0.5 + }, + "SpecularFactor": 0.0, + "GlossinessFactor": 0.0, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "Id": "aa8ce056-c0eb-4204-9399-0ffad6e3ac55", + "Name": "Basement_material" + }, + "5a566959-580b-488e-b559-7b48143d91e0": { + "discriminator": "Elements.Level", + "Elevation": -10.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + -10.0 + ] + } + }, + "Material": "aa8ce056-c0eb-4204-9399-0ffad6e3ac55", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "5a566959-580b-488e-b559-7b48143d91e0", + "Name": "Basement" + }, + "3e4e7b6e-3392-4ed8-8611-839662f931d7": { + "discriminator": "Elements.LevelPerimeter", + "Area": 1500.0000000000005, + "Elevation": -10.0, + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Id": "3e4e7b6e-3392-4ed8-8611-839662f931d7", + "Name": "Basement" + }, + "e0b52343-c271-41bf-b812-ed6657043d1a": { + "discriminator": "Elements.ViewScope", + "Bounding Box": { + "discriminator": "Elements.Geometry.BBox3", + "Min": { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": -10.0 + }, + "Max": { + "X": 30.0, + "Y": 0.0, + "Z": -1.0000999999999998 + } + }, + "Camera": { + "discriminator": "Elements.Camera", + "angle": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "named_position": "top", + "projection": "orthographic" + }, + "Inclusive": true, + "Id": "e0b52343-c271-41bf-b812-ed6657043d1a", + "Name": "Basement" + }, + "c1e5299d-3f7f-407b-be18-d042cc7948b1": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "c1e5299d-3f7f-407b-be18-d042cc7948b1", + "Name": null + }, + "0a56d396-bd81-44c6-9ec0-34fa2fb7ee25": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "0a56d396-bd81-44c6-9ec0-34fa2fb7ee25", + "Name": null + }, + "f44f6d0d-44b2-4349-b9c0-268c0fec42fa": { + "discriminator": "Elements.LevelVolume", + "Profile": "c1e5299d-3f7f-407b-be18-d042cc7948b1", + "Height": 10.0, + "Area": 1500.0000000000005, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + -10.0 + ] + } + }, + "Material": "aa8ce056-c0eb-4204-9399-0ffad6e3ac55", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "0a56d396-bd81-44c6-9ec0-34fa2fb7ee25", + "Height": 9.9999, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f44f6d0d-44b2-4349-b9c0-268c0fec42fa", + "Name": "Basement", + "Plan View": "e0b52343-c271-41bf-b812-ed6657043d1a" + }, + "c0c81819-9cb1-416b-acbd-4e8daccdc4cd": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.945, + "Green": 0.3607, + "Blue": 0.419, + "Alpha": 0.5 + }, + "SpecularFactor": 0.0, + "GlossinessFactor": 0.0, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "Id": "c0c81819-9cb1-416b-acbd-4e8daccdc4cd", + "Name": "Ground Floor_material" + }, + "4498ac7b-7175-4918-b3bf-8abb95bb6935": { + "discriminator": "Elements.Level", + "Elevation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "c0c81819-9cb1-416b-acbd-4e8daccdc4cd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "4498ac7b-7175-4918-b3bf-8abb95bb6935", + "Name": "Ground Floor" + }, + "386cc57a-efe7-4362-ab41-4a3305ef6c15": { + "discriminator": "Elements.LevelPerimeter", + "Area": 1500.0000000000005, + "Elevation": 0.0, + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Id": "386cc57a-efe7-4362-ab41-4a3305ef6c15", + "Name": "Ground Floor" + }, + "0b098943-0ee6-4ef6-8a43-7f22a3b09e3b": { + "discriminator": "Elements.ViewScope", + "Bounding Box": { + "discriminator": "Elements.Geometry.BBox3", + "Min": { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + "Max": { + "X": 30.0, + "Y": 0.0, + "Z": 3.4999000000000002 + } + }, + "Camera": { + "discriminator": "Elements.Camera", + "angle": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "named_position": "top", + "projection": "orthographic" + }, + "Inclusive": true, + "Id": "0b098943-0ee6-4ef6-8a43-7f22a3b09e3b", + "Name": "Ground Floor" + }, + "211117af-28a9-4b74-8996-fa36c30cd3d1": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "211117af-28a9-4b74-8996-fa36c30cd3d1", + "Name": null + }, + "0b06d229-214a-4a96-b1ee-67de9c0e1d14": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "0b06d229-214a-4a96-b1ee-67de9c0e1d14", + "Name": null + }, + "6928cefc-d742-40c6-9761-8e5cfb3b2436": { + "discriminator": "Elements.LevelVolume", + "Profile": "211117af-28a9-4b74-8996-fa36c30cd3d1", + "Height": 4.5, + "Area": 1500.0000000000005, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "c0c81819-9cb1-416b-acbd-4e8daccdc4cd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "0b06d229-214a-4a96-b1ee-67de9c0e1d14", + "Height": 4.4999, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "6928cefc-d742-40c6-9761-8e5cfb3b2436", + "Name": "Ground Floor", + "Plan View": "0b098943-0ee6-4ef6-8a43-7f22a3b09e3b" + }, + "2b20b8ba-bbdb-48d3-bd0b-18d62b465cf9": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.945, + "Green": 0.3607, + "Blue": 0.419, + "Alpha": 0.5 + }, + "SpecularFactor": 0.0, + "GlossinessFactor": 0.0, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "Id": "2b20b8ba-bbdb-48d3-bd0b-18d62b465cf9", + "Name": "Typical Floor_material" + }, + "ee8911ad-eea2-48ba-b2a8-5467bd6e08b8": { + "discriminator": "Elements.Level", + "Elevation": 4.5, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Material": "2b20b8ba-bbdb-48d3-bd0b-18d62b465cf9", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "ee8911ad-eea2-48ba-b2a8-5467bd6e08b8", + "Name": "Typical Floor (1)" + }, + "d4b46f9d-cf38-4fc6-a2cd-077dc468327a": { + "discriminator": "Elements.LevelPerimeter", + "Area": 1500.0000000000005, + "Elevation": 4.5, + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Id": "d4b46f9d-cf38-4fc6-a2cd-077dc468327a", + "Name": "Typical Floor (1)" + }, + "406be19c-8218-4a08-a2c0-b340f6047806": { + "discriminator": "Elements.ViewScope", + "Bounding Box": { + "discriminator": "Elements.Geometry.BBox3", + "Min": { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 4.5 + }, + "Max": { + "X": 30.0, + "Y": 0.0, + "Z": 7.3499 + } + }, + "Camera": { + "discriminator": "Elements.Camera", + "angle": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "named_position": "top", + "projection": "orthographic" + }, + "Inclusive": true, + "Id": "406be19c-8218-4a08-a2c0-b340f6047806", + "Name": "Typical Floor (1)" + }, + "18ea53e1-ba0a-42ae-b5b8-e314368872ac": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "18ea53e1-ba0a-42ae-b5b8-e314368872ac", + "Name": null + }, + "859b2a87-f398-4bbe-88b4-ab7d6b98a9da": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "859b2a87-f398-4bbe-88b4-ab7d6b98a9da", + "Name": null + }, + "8b3714c5-ffb8-44dc-95a2-fb007b339fc2": { + "discriminator": "Elements.LevelVolume", + "Profile": "18ea53e1-ba0a-42ae-b5b8-e314368872ac", + "Height": 3.8499999999999996, + "Area": 1500.0000000000005, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Material": "2b20b8ba-bbdb-48d3-bd0b-18d62b465cf9", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "859b2a87-f398-4bbe-88b4-ab7d6b98a9da", + "Height": 3.8498999999999994, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "8b3714c5-ffb8-44dc-95a2-fb007b339fc2", + "Name": "Typical Floor (1)", + "Plan View": "406be19c-8218-4a08-a2c0-b340f6047806" + }, + "4e013d4b-edd5-4efe-a968-e60dcd5e89c0": { + "discriminator": "Elements.Level", + "Elevation": 8.35, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Material": "2b20b8ba-bbdb-48d3-bd0b-18d62b465cf9", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "4e013d4b-edd5-4efe-a968-e60dcd5e89c0", + "Name": "Typical Floor (2)" + }, + "ee43fa61-b3cc-420f-ae54-e2857401c23a": { + "discriminator": "Elements.LevelPerimeter", + "Area": 1500.0000000000005, + "Elevation": 8.35, + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Id": "ee43fa61-b3cc-420f-ae54-e2857401c23a", + "Name": "Typical Floor (2)" + }, + "d6c96d5d-55d4-4e41-855b-c12762ad9aa0": { + "discriminator": "Elements.ViewScope", + "Bounding Box": { + "discriminator": "Elements.Geometry.BBox3", + "Min": { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 8.35 + }, + "Max": { + "X": 30.0, + "Y": 0.0, + "Z": 11.1999 + } + }, + "Camera": { + "discriminator": "Elements.Camera", + "angle": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "named_position": "top", + "projection": "orthographic" + }, + "Inclusive": true, + "Id": "d6c96d5d-55d4-4e41-855b-c12762ad9aa0", + "Name": "Typical Floor (2)" + }, + "d94b7e64-109f-4713-af2a-d32af437ebb3": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "d94b7e64-109f-4713-af2a-d32af437ebb3", + "Name": null + }, + "fcb66a3d-a9c5-4c36-a2d2-8c1153063296": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "fcb66a3d-a9c5-4c36-a2d2-8c1153063296", + "Name": null + }, + "da2199d3-e0aa-41f2-a120-ceb40688e0d5": { + "discriminator": "Elements.LevelVolume", + "Profile": "d94b7e64-109f-4713-af2a-d32af437ebb3", + "Height": 3.8499999999999996, + "Area": 1500.0000000000005, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Material": "2b20b8ba-bbdb-48d3-bd0b-18d62b465cf9", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "fcb66a3d-a9c5-4c36-a2d2-8c1153063296", + "Height": 3.8498999999999994, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "da2199d3-e0aa-41f2-a120-ceb40688e0d5", + "Name": "Typical Floor (2)", + "Plan View": "d6c96d5d-55d4-4e41-855b-c12762ad9aa0" + }, + "3a088b37-46ad-4e14-bd29-720a75330a59": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.945, + "Green": 0.3607, + "Blue": 0.419, + "Alpha": 0.5 + }, + "SpecularFactor": 0.0, + "GlossinessFactor": 0.0, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "Id": "3a088b37-46ad-4e14-bd29-720a75330a59", + "Name": "Penthouse_material" + }, + "bed58e8b-1609-4703-a051-d7a9fc24d2a6": { + "discriminator": "Elements.Level", + "Elevation": 12.2, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Material": "3a088b37-46ad-4e14-bd29-720a75330a59", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "bed58e8b-1609-4703-a051-d7a9fc24d2a6", + "Name": "Penthouse" + }, + "215e327f-2581-4292-8c2b-ac4a8f431bc0": { + "discriminator": "Elements.LevelPerimeter", + "Area": 1500.0000000000005, + "Elevation": 12.2, + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Id": "215e327f-2581-4292-8c2b-ac4a8f431bc0", + "Name": "Penthouse" + }, + "1861a342-f735-4fbc-bec6-0c38f7e18a0d": { + "discriminator": "Elements.ViewScope", + "Bounding Box": { + "discriminator": "Elements.Geometry.BBox3", + "Min": { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 12.2 + }, + "Max": { + "X": 30.0, + "Y": 0.0, + "Z": 18.9999 + } + }, + "Camera": { + "discriminator": "Elements.Camera", + "angle": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "named_position": "top", + "projection": "orthographic" + }, + "Inclusive": true, + "Id": "1861a342-f735-4fbc-bec6-0c38f7e18a0d", + "Name": "Penthouse" + }, + "fc68d63c-e9a5-44f6-b410-af2b42eb9e74": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "fc68d63c-e9a5-44f6-b410-af2b42eb9e74", + "Name": null + }, + "e56268a9-d57e-41e2-87c0-367b202bd720": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "e56268a9-d57e-41e2-87c0-367b202bd720", + "Name": null + }, + "5382e5c8-a0fc-46f0-aaae-15586fa677fd": { + "discriminator": "Elements.LevelVolume", + "Profile": "fc68d63c-e9a5-44f6-b410-af2b42eb9e74", + "Height": 7.800000000000001, + "Area": 1500.0000000000005, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Material": "3a088b37-46ad-4e14-bd29-720a75330a59", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "e56268a9-d57e-41e2-87c0-367b202bd720", + "Height": 7.799900000000001, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "5382e5c8-a0fc-46f0-aaae-15586fa677fd", + "Name": "Penthouse", + "Plan View": "1861a342-f735-4fbc-bec6-0c38f7e18a0d" + }, + "6771e26c-6d64-4c0e-962c-018166d01dfd": { + "discriminator": "Elements.Material", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 1.0 + }, + "SpecularFactor": 0.800000011920929, + "GlossinessFactor": 0.5, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "EdgeDisplaySettings": null, + "Id": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Name": "panel" + }, + "c47b651a-0ac0-4b76-a847-bdde1a073d17": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.0014142135623731059, + "Y": 0.009899494936611663, + "Z": 0.0 + }, + { + "X": 0.5485857864376311, + "Y": 0.009899494936611663, + "Z": 0.0 + }, + { + "X": 0.5485857864376311, + "Y": 3.840100505063388, + "Z": 0.0 + }, + { + "X": 0.0014142135623731059, + "Y": 3.840100505063388, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "c47b651a-0ac0-4b76-a847-bdde1a073d17", + "Name": null + }, + "f8950a85-67a1-4d0e-b71a-3dad11a889fc": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + -1.0658141036401503E-14, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "c47b651a-0ac0-4b76-a847-bdde1a073d17", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f8950a85-67a1-4d0e-b71a-3dad11a889fc", + "Name": "FP_1_0" + }, + "906e8bc7-2847-4c8c-82df-4f4ed1d33090": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.004039326788379083, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 3.8408521128616115, + "Z": 0.0 + }, + { + "X": 0.004039326788379083, + "Y": 3.8408521128616115, + "Z": 0.0 + } + ] + }, + "Voids": [ + { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + } + ], + "Id": "906e8bc7-2847-4c8c-82df-4f4ed1d33090", + "Name": null + }, + "06319917-282e-4212-9488-b7a24f5360ab": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.5499999999999936, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "906e8bc7-2847-4c8c-82df-4f4ed1d33090", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "06319917-282e-4212-9488-b7a24f5360ab", + "Name": "FP_1" + }, + "6d255750-badf-48df-940f-c20cf683aedd": { + "discriminator": "Elements.Material", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.7 + }, + "SpecularFactor": 0.800000011920929, + "GlossinessFactor": 1.0, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "EdgeDisplaySettings": null, + "Id": "6d255750-badf-48df-940f-c20cf683aedd", + "Name": "Glazing" + }, + "931b54f2-081d-46ff-926e-ad9f8a0ed196": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.5499999999999936, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6d255750-badf-48df-940f-c20cf683aedd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Name": null + }, + "cb0a9a3d-8cdb-4dd2-9562-ae567db59400": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.5499999999999936, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "cb0a9a3d-8cdb-4dd2-9562-ae567db59400", + "Name": "FP_1_1" + }, + "93053083-85d5-43d5-8061-86e596552218": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.5499999999999936, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "93053083-85d5-43d5-8061-86e596552218", + "Name": "FG_1_1" + }, + "fe7162e6-39e4-45a4-81e6-bfe02e642a1b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 2.249999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "fe7162e6-39e4-45a4-81e6-bfe02e642a1b", + "Name": "FP_1_2" + }, + "78043bf8-3424-4251-9add-61a2ecffdb90": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 2.249999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "78043bf8-3424-4251-9add-61a2ecffdb90", + "Name": "FG_1_2" + }, + "7cc63ff2-ae64-461e-8821-f63175ff7377": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 3.949999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "7cc63ff2-ae64-461e-8821-f63175ff7377", + "Name": "FP_1_3" + }, + "56a43179-0a6d-46be-bbd9-ec90544edae6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 3.949999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "56a43179-0a6d-46be-bbd9-ec90544edae6", + "Name": "FG_1_3" + }, + "e388f552-f508-4404-9438-a7789f6c1b25": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 5.649999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "e388f552-f508-4404-9438-a7789f6c1b25", + "Name": "FP_1_4" + }, + "fd1bca60-3527-4184-9793-546750104775": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 5.649999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "fd1bca60-3527-4184-9793-546750104775", + "Name": "FG_1_4" + }, + "f0d21d9d-ae74-4b31-9f22-2b9d75b4984d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 7.349999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "f0d21d9d-ae74-4b31-9f22-2b9d75b4984d", + "Name": "FP_1_5" + }, + "b1912f25-1479-4d03-b1d7-d25533f6d465": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 7.349999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "b1912f25-1479-4d03-b1d7-d25533f6d465", + "Name": "FG_1_5" + }, + "9f593865-f103-49e6-b728-f78a18f12ec3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.049999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "9f593865-f103-49e6-b728-f78a18f12ec3", + "Name": "FP_1_6" + }, + "75b6be77-0504-4953-a0bd-8aee73d7d941": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.049999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "75b6be77-0504-4953-a0bd-8aee73d7d941", + "Name": "FG_1_6" + }, + "28eec4d3-1e62-43ef-a522-29bb4c2e5120": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 10.749999999999995, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "28eec4d3-1e62-43ef-a522-29bb4c2e5120", + "Name": "FP_1_7" + }, + "a54c6903-3673-4c37-a645-21309e3c85d1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 10.749999999999995, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "a54c6903-3673-4c37-a645-21309e3c85d1", + "Name": "FG_1_7" + }, + "82ae069a-e5ac-4281-8af1-5187f7364c95": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 12.449999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "82ae069a-e5ac-4281-8af1-5187f7364c95", + "Name": "FP_1_8" + }, + "7ed89d00-2529-4008-8662-1b63cbe5fd15": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 12.449999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "7ed89d00-2529-4008-8662-1b63cbe5fd15", + "Name": "FG_1_8" + }, + "678abb40-0927-4521-a3bd-3ded535a5fd9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 14.149999999999995, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "678abb40-0927-4521-a3bd-3ded535a5fd9", + "Name": "FP_1_9" + }, + "046fdc20-8d49-482e-8e47-ad672909c354": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 14.149999999999995, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "046fdc20-8d49-482e-8e47-ad672909c354", + "Name": "FG_1_9" + }, + "a4f1b793-0e65-4849-b091-26d5286ce4d2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 15.849999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "a4f1b793-0e65-4849-b091-26d5286ce4d2", + "Name": "FP_1_10" + }, + "e8191292-a465-45ad-a6ce-278271695ab6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 15.849999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "e8191292-a465-45ad-a6ce-278271695ab6", + "Name": "FG_1_10" + }, + "900639ea-fef3-4824-ba3e-1e3b23b826d7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 17.549999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "900639ea-fef3-4824-ba3e-1e3b23b826d7", + "Name": "FP_1_11" + }, + "e7de7303-5ab9-450b-bc7b-6d19bc8f9bc9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 17.549999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "e7de7303-5ab9-450b-bc7b-6d19bc8f9bc9", + "Name": "FG_1_11" + }, + "ec3ac7ca-58d0-4efc-b70d-51d4925748f4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 19.249999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "ec3ac7ca-58d0-4efc-b70d-51d4925748f4", + "Name": "FP_1_12" + }, + "9ce3b453-218c-4e6c-9165-3190abc77f9a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 19.249999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "9ce3b453-218c-4e6c-9165-3190abc77f9a", + "Name": "FG_1_12" + }, + "d4574e56-f4d7-4134-bfd1-4521b31d2b49": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 20.949999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "d4574e56-f4d7-4134-bfd1-4521b31d2b49", + "Name": "FP_1_13" + }, + "cae32929-d8f9-46f1-9830-0455d3f2ce9f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 20.949999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "cae32929-d8f9-46f1-9830-0455d3f2ce9f", + "Name": "FG_1_13" + }, + "2805a18f-9023-46cc-9e8b-5662b18aba45": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 22.649999999999995, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "2805a18f-9023-46cc-9e8b-5662b18aba45", + "Name": "FP_1_14" + }, + "1d10978e-841c-4592-8e35-1986f279276f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 22.649999999999995, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "1d10978e-841c-4592-8e35-1986f279276f", + "Name": "FG_1_14" + }, + "ed9d9f3d-2c28-463e-827a-ea2ce81b6047": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 24.349999999999998, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "ed9d9f3d-2c28-463e-827a-ea2ce81b6047", + "Name": "FP_1_15" + }, + "6c81f118-9b00-40d7-affd-25c04e6f0fe9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 24.349999999999998, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "6c81f118-9b00-40d7-affd-25c04e6f0fe9", + "Name": "FG_1_15" + }, + "63ae5fe7-266d-4027-99ca-69f493f7387a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 26.049999999999997, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "63ae5fe7-266d-4027-99ca-69f493f7387a", + "Name": "FP_1_16" + }, + "dcd438d0-34ee-4deb-99d6-83bfe1305410": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 26.049999999999997, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "dcd438d0-34ee-4deb-99d6-83bfe1305410", + "Name": "FG_1_16" + }, + "743f4f34-c559-4260-a8a6-2d2b56173645": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 27.749999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "743f4f34-c559-4260-a8a6-2d2b56173645", + "Name": "FP_1_17" + }, + "e27313d9-a024-4d02-a5c9-e83477d0db3f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 27.749999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "e27313d9-a024-4d02-a5c9-e83477d0db3f", + "Name": "FG_1_17" + }, + "ede1f5a4-1af2-4dbe-a3d1-aea74a0b01cc": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.0014142135623731059, + "Y": 0.009899494936611663, + "Z": 0.0 + }, + { + "X": 0.5485857864376311, + "Y": 0.009899494936611663, + "Z": 0.0 + }, + { + "X": 0.5485857864376311, + "Y": 3.840100505063388, + "Z": 0.0 + }, + { + "X": 0.0014142135623731059, + "Y": 3.840100505063388, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ede1f5a4-1af2-4dbe-a3d1-aea74a0b01cc", + "Name": null + }, + "839093fa-79a1-4bb2-b47e-80b31e669032": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 29.449999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "ede1f5a4-1af2-4dbe-a3d1-aea74a0b01cc", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "839093fa-79a1-4bb2-b47e-80b31e669032", + "Name": "FP_1_18" + }, + "be847250-9c1a-4719-a377-a33f8ab5d42b": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.0014142135623730879, + "Y": 0.009899494936611667, + "Z": 0.0 + }, + { + "X": 0.5485857864376241, + "Y": 0.009899494936611667, + "Z": 0.0 + }, + { + "X": 0.5485857864376241, + "Y": 3.840100505063388, + "Z": 0.0 + }, + { + "X": 0.0014142135623730879, + "Y": 3.840100505063388, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "be847250-9c1a-4719-a377-a33f8ab5d42b", + "Name": null + }, + "42eb2824-6fb3-4328-9cfa-8d1610e2a3a4": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "be847250-9c1a-4719-a377-a33f8ab5d42b", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "42eb2824-6fb3-4328-9cfa-8d1610e2a3a4", + "Name": "FP_1_0" + }, + "4a183951-1962-478d-869b-60bbf6ecd5a0": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.004039326788379083, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 3.8408521128616115, + "Z": 0.0 + }, + { + "X": 0.004039326788379083, + "Y": 3.8408521128616115, + "Z": 0.0 + } + ] + }, + "Voids": [ + { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + } + ], + "Id": "4a183951-1962-478d-869b-60bbf6ecd5a0", + "Name": null + }, + "3d4426ba-b64e-45cf-aec7-1176c3c98719": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -59.45, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "4a183951-1962-478d-869b-60bbf6ecd5a0", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Name": "FP_1" + }, + "3ef6d442-9d82-4633-a4a5-1036eacb1c59": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -59.45, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6d255750-badf-48df-940f-c20cf683aedd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Name": null + }, + "e98862d8-9444-4af2-b75f-ffd8a4661abe": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -59.45, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "e98862d8-9444-4af2-b75f-ffd8a4661abe", + "Name": "FP_1_1" + }, + "74f8d08d-3812-4d50-b0b9-4d1860ed7f9f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -59.45, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "74f8d08d-3812-4d50-b0b9-4d1860ed7f9f", + "Name": "FG_1_1" + }, + "268c9ed9-5798-4e55-b6fd-36f4fd41aff2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -57.75, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "268c9ed9-5798-4e55-b6fd-36f4fd41aff2", + "Name": "FP_1_2" + }, + "dec24cb8-ce3c-49ab-9b79-0a178a77ad00": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -57.75, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "dec24cb8-ce3c-49ab-9b79-0a178a77ad00", + "Name": "FG_1_2" + }, + "1e778c9b-3670-4fa8-b603-d98cc9fa1699": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -56.050000000000004, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "1e778c9b-3670-4fa8-b603-d98cc9fa1699", + "Name": "FP_1_3" + }, + "f055eff3-d0a4-4ce7-90ac-5133712bd288": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -56.050000000000004, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "f055eff3-d0a4-4ce7-90ac-5133712bd288", + "Name": "FG_1_3" + }, + "3fe77381-f738-45a2-8954-b5bb25dee64e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -54.35, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "3fe77381-f738-45a2-8954-b5bb25dee64e", + "Name": "FP_1_4" + }, + "092af80a-0134-495d-870e-b9ccf99b84b1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -54.35, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "092af80a-0134-495d-870e-b9ccf99b84b1", + "Name": "FG_1_4" + }, + "e1a7c69e-cb72-4a0e-a543-a8f4617adfd1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -52.650000000000006, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "e1a7c69e-cb72-4a0e-a543-a8f4617adfd1", + "Name": "FP_1_5" + }, + "f3ddc507-f3f2-4d51-996c-ba170ca9bc68": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -52.650000000000006, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "f3ddc507-f3f2-4d51-996c-ba170ca9bc68", + "Name": "FG_1_5" + }, + "f39905ef-3722-46b8-bc48-3364b5238df6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -50.95, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "f39905ef-3722-46b8-bc48-3364b5238df6", + "Name": "FP_1_6" + }, + "03690d8a-aa6b-494c-9724-697e335d3633": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -50.95, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "03690d8a-aa6b-494c-9724-697e335d3633", + "Name": "FG_1_6" + }, + "095161c4-af60-4037-886f-d524c88cd3ac": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -49.25, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "095161c4-af60-4037-886f-d524c88cd3ac", + "Name": "FP_1_7" + }, + "aa006dc7-5af9-4e8e-92e7-fc0485426c83": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -49.25, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "aa006dc7-5af9-4e8e-92e7-fc0485426c83", + "Name": "FG_1_7" + }, + "c65253c8-7e15-470c-8fe5-4546b68d97c5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -47.55, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "c65253c8-7e15-470c-8fe5-4546b68d97c5", + "Name": "FP_1_8" + }, + "a35e3f90-89d5-4e8f-ba7c-d1278b3c9d4a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -47.55, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "a35e3f90-89d5-4e8f-ba7c-d1278b3c9d4a", + "Name": "FG_1_8" + }, + "9c554f8e-83d5-4e68-97d3-28e1dac678f0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -45.85, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "9c554f8e-83d5-4e68-97d3-28e1dac678f0", + "Name": "FP_1_9" + }, + "f3fd129f-a763-49b6-ab3f-c8a8ad5a74bb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -45.85, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "f3fd129f-a763-49b6-ab3f-c8a8ad5a74bb", + "Name": "FG_1_9" + }, + "b30088c5-18c2-4f31-893f-62096f57f4d9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -44.150000000000006, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "b30088c5-18c2-4f31-893f-62096f57f4d9", + "Name": "FP_1_10" + }, + "30ff4c33-14a0-4cac-a4ba-6264ccab4090": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -44.150000000000006, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "30ff4c33-14a0-4cac-a4ba-6264ccab4090", + "Name": "FG_1_10" + }, + "90e07bf5-4d42-4f82-bbcf-8962234f0367": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -42.45, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "90e07bf5-4d42-4f82-bbcf-8962234f0367", + "Name": "FP_1_11" + }, + "3f9c5ea8-0eef-42b5-8051-ac606d0374aa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -42.45, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "3f9c5ea8-0eef-42b5-8051-ac606d0374aa", + "Name": "FG_1_11" + }, + "107d58a9-3a5b-4fa4-b8c5-ce4270a1e739": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -40.75, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "107d58a9-3a5b-4fa4-b8c5-ce4270a1e739", + "Name": "FP_1_12" + }, + "52f5f081-f188-4fc6-986f-8352469fe346": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -40.75, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "52f5f081-f188-4fc6-986f-8352469fe346", + "Name": "FG_1_12" + }, + "99f2f5e1-3e9a-49e0-a61b-5a777b3294c3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -39.05, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "99f2f5e1-3e9a-49e0-a61b-5a777b3294c3", + "Name": "FP_1_13" + }, + "1f10033d-8be2-415d-9ca8-98b92dafd859": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -39.05, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "1f10033d-8be2-415d-9ca8-98b92dafd859", + "Name": "FG_1_13" + }, + "336cc1f8-a0ab-44a8-8968-8195d844c396": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -37.35, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "336cc1f8-a0ab-44a8-8968-8195d844c396", + "Name": "FP_1_14" + }, + "40d5641f-0600-4ad8-8b7f-65cc12db4d2c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -37.35, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "40d5641f-0600-4ad8-8b7f-65cc12db4d2c", + "Name": "FG_1_14" + }, + "4f861061-cd6b-4957-8726-4e038c6e663a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -35.65, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "4f861061-cd6b-4957-8726-4e038c6e663a", + "Name": "FP_1_15" + }, + "83f465f9-9ff5-4607-bee8-9f7c57f78ee6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -35.65, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "83f465f9-9ff5-4607-bee8-9f7c57f78ee6", + "Name": "FG_1_15" + }, + "30bf048f-80f3-4a45-8055-49176397188a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -33.95, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "30bf048f-80f3-4a45-8055-49176397188a", + "Name": "FP_1_16" + }, + "8ac79010-6df0-4212-b174-9a5928651ee2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -33.95, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "8ac79010-6df0-4212-b174-9a5928651ee2", + "Name": "FG_1_16" + }, + "87e78028-232e-4839-8c8a-d09b0f30bc81": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -32.25, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "87e78028-232e-4839-8c8a-d09b0f30bc81", + "Name": "FP_1_17" + }, + "233cbfe1-540c-41bb-b948-bf823e73f636": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -32.25, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "233cbfe1-540c-41bb-b948-bf823e73f636", + "Name": "FG_1_17" + }, + "5342297d-7ade-4b3a-b780-3f53cbea1e5b": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.0014142135623730879, + "Y": 0.009899494936611667, + "Z": 0.0 + }, + { + "X": 0.5485857864376241, + "Y": 0.009899494936611667, + "Z": 0.0 + }, + { + "X": 0.5485857864376241, + "Y": 3.840100505063388, + "Z": 0.0 + }, + { + "X": 0.0014142135623730879, + "Y": 3.840100505063388, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "5342297d-7ade-4b3a-b780-3f53cbea1e5b", + "Name": null + }, + "076a535e-d209-4cb0-b3f1-162cb08aab66": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -30.549999999999997, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "5342297d-7ade-4b3a-b780-3f53cbea1e5b", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "076a535e-d209-4cb0-b3f1-162cb08aab66", + "Name": "FP_1_18" + }, + "4e8b2071-9d49-47c8-832b-48df23a28b1d": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.00046121355018386746, + "Y": 0.009989358440917353, + "Z": 0.0 + }, + { + "X": 0.17729516376976184, + "Y": 0.009989358440917353, + "Z": 0.0 + }, + { + "X": 0.17729516376976184, + "Y": 3.8400106415590822, + "Z": 0.0 + }, + { + "X": 0.00046121355018386746, + "Y": 3.8400106415590822, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "4e8b2071-9d49-47c8-832b-48df23a28b1d", + "Name": null + }, + "b456aeb6-7a4e-4fa9-8f18-1e7913ce8f7d": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 30.0, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -30.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "4e8b2071-9d49-47c8-832b-48df23a28b1d", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "b456aeb6-7a4e-4fa9-8f18-1e7913ce8f7d", + "Name": "FP_1_0" + }, + "5c514df7-2877-4f81-8898-f429342f589c": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.004039326788379083, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 3.8408521128616115, + "Z": 0.0 + }, + { + "X": 0.004039326788379083, + "Y": 3.8408521128616115, + "Z": 0.0 + } + ] + }, + "Voids": [ + { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + } + ], + "Id": "5c514df7-2877-4f81-8898-f429342f589c", + "Name": null + }, + "39012c42-5bc1-4f70-8625-fbcb6ded8b43": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 29.90139850262034, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -29.85209775393051, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "5c514df7-2877-4f81-8898-f429342f589c", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Name": "FP_1" + }, + "4532e939-5a9b-45a7-962e-faee9617610a": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 29.90139850262034, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -29.85209775393051, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6d255750-badf-48df-940f-c20cf683aedd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "4532e939-5a9b-45a7-962e-faee9617610a", + "Name": null + }, + "497ccd33-e3ec-471c-a0a1-aa5405183cdf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 29.90139850262034, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -29.85209775393051, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "497ccd33-e3ec-471c-a0a1-aa5405183cdf", + "Name": "FP_1_1" + }, + "6be12d68-5c5f-4582-b0a2-ccc388149ab0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 29.90139850262034, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -29.85209775393051, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "6be12d68-5c5f-4582-b0a2-ccc388149ab0", + "Name": "FG_1_1" + }, + "4b66d4e4-c76c-4a45-be6e-4a3ec435ecc0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 28.958408169037448, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -28.43761225355618, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "4b66d4e4-c76c-4a45-be6e-4a3ec435ecc0", + "Name": "FP_1_2" + }, + "548bc86b-6132-4298-bf9f-e159d1e9a226": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 28.958408169037448, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -28.43761225355618, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "548bc86b-6132-4298-bf9f-e159d1e9a226", + "Name": "FG_1_2" + }, + "24286e57-95dc-4fea-8d12-b68b15a67d53": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 28.01541783545456, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -27.02312675318184, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "24286e57-95dc-4fea-8d12-b68b15a67d53", + "Name": "FP_1_3" + }, + "9de1ff26-46ab-44cf-b7ab-b6816257f357": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 28.01541783545456, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -27.02312675318184, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "9de1ff26-46ab-44cf-b7ab-b6816257f357", + "Name": "FG_1_3" + }, + "a7ae8722-317e-460a-a4fd-6025acc2f39b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 27.07242750187167, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -25.60864125280751, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "a7ae8722-317e-460a-a4fd-6025acc2f39b", + "Name": "FP_1_4" + }, + "975397a0-a0d6-4e6e-bcb9-c237b55f0e5a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 27.07242750187167, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -25.60864125280751, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "975397a0-a0d6-4e6e-bcb9-c237b55f0e5a", + "Name": "FG_1_4" + }, + "11227235-5570-4fd0-ad43-418dcb5d4e13": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 26.12943716828878, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -24.194155752433176, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "11227235-5570-4fd0-ad43-418dcb5d4e13", + "Name": "FP_1_5" + }, + "e6cd6743-d143-450c-b24c-a8fa110173cb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 26.12943716828878, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -24.194155752433176, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "e6cd6743-d143-450c-b24c-a8fa110173cb", + "Name": "FG_1_5" + }, + "b866d391-759a-4107-bce1-6690074ec0f8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 25.18644683470589, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -22.77967025205884, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "b866d391-759a-4107-bce1-6690074ec0f8", + "Name": "FP_1_6" + }, + "300ce9a2-bf2c-480d-bf8c-8a77e252e186": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 25.18644683470589, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -22.77967025205884, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "300ce9a2-bf2c-480d-bf8c-8a77e252e186", + "Name": "FG_1_6" + }, + "73298113-cc50-4969-b10d-f4c5152e4699": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 24.243456501123, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -21.365184751684502, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "73298113-cc50-4969-b10d-f4c5152e4699", + "Name": "FP_1_7" + }, + "2834b881-cd36-4f9d-b13e-6fc91fb85f9e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 24.243456501123, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -21.365184751684502, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "2834b881-cd36-4f9d-b13e-6fc91fb85f9e", + "Name": "FG_1_7" + }, + "8dee3b31-1721-4446-86e9-3c41e340e591": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 23.30046616754011, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -19.95069925131017, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "8dee3b31-1721-4446-86e9-3c41e340e591", + "Name": "FP_1_8" + }, + "e58885fa-0c0d-42ff-8b37-6e342b6c6fb9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 23.30046616754011, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -19.95069925131017, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "e58885fa-0c0d-42ff-8b37-6e342b6c6fb9", + "Name": "FG_1_8" + }, + "7b1d5343-c925-4d18-a17a-e80c23a866d7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 22.35747583395722, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -18.536213750935836, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "7b1d5343-c925-4d18-a17a-e80c23a866d7", + "Name": "FP_1_9" + }, + "50a33b6c-ce11-472c-97ce-a5af939dbda2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 22.35747583395722, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -18.536213750935836, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "50a33b6c-ce11-472c-97ce-a5af939dbda2", + "Name": "FG_1_9" + }, + "baebb40e-2c09-47e6-ba1e-8ac32c73af3c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 21.414485500374333, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -17.121728250561503, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "baebb40e-2c09-47e6-ba1e-8ac32c73af3c", + "Name": "FP_1_10" + }, + "b0371fad-0ea4-4217-8ec7-dd3b6e0b7e38": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 21.414485500374333, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -17.121728250561503, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "b0371fad-0ea4-4217-8ec7-dd3b6e0b7e38", + "Name": "FG_1_10" + }, + "803446b8-ae2e-4a09-aa30-5bfd1ea08be3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 20.471495166791442, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -15.707242750187168, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "803446b8-ae2e-4a09-aa30-5bfd1ea08be3", + "Name": "FP_1_11" + }, + "aadd6695-e3db-462e-92ed-888e1679eebe": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 20.471495166791442, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -15.707242750187168, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "aadd6695-e3db-462e-92ed-888e1679eebe", + "Name": "FG_1_11" + }, + "20d8c796-b95a-41ae-a5db-9fd43cb65f6c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 19.52850483320855, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -14.292757249812832, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "20d8c796-b95a-41ae-a5db-9fd43cb65f6c", + "Name": "FP_1_12" + }, + "ba4be1b4-d4ae-405d-bbb1-3bdc7f6dc3fc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 19.52850483320855, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -14.292757249812832, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "ba4be1b4-d4ae-405d-bbb1-3bdc7f6dc3fc", + "Name": "FG_1_12" + }, + "90abec15-2def-41f0-989e-a242b9690ad7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 18.585514499625663, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -12.878271749438497, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "90abec15-2def-41f0-989e-a242b9690ad7", + "Name": "FP_1_13" + }, + "6702c390-470f-47bb-9a8b-b47baefdb2a2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 18.585514499625663, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -12.878271749438497, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "6702c390-470f-47bb-9a8b-b47baefdb2a2", + "Name": "FG_1_13" + }, + "26401f21-9651-4cc3-bba2-7c5c689fb2ce": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 17.642524166042776, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -11.463786249064164, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "26401f21-9651-4cc3-bba2-7c5c689fb2ce", + "Name": "FP_1_14" + }, + "a83f44d3-feee-4170-9871-6f83b6a4ca81": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 17.642524166042776, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -11.463786249064164, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "a83f44d3-feee-4170-9871-6f83b6a4ca81", + "Name": "FG_1_14" + }, + "e7b6ab3d-78f4-420e-a870-cb4b197cdc90": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 16.699533832459885, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -10.049300748689827, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "e7b6ab3d-78f4-420e-a870-cb4b197cdc90", + "Name": "FP_1_15" + }, + "5f8b02c4-8a49-40dc-a51e-b24ca53a814d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 16.699533832459885, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -10.049300748689827, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "5f8b02c4-8a49-40dc-a51e-b24ca53a814d", + "Name": "FG_1_15" + }, + "402d5f7d-e526-40ad-9db8-bab722d27269": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 15.756543498876994, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -8.634815248315494, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "402d5f7d-e526-40ad-9db8-bab722d27269", + "Name": "FP_1_16" + }, + "c6c2be81-0564-4fd6-80ff-0ff5d0e8da91": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 15.756543498876994, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -8.634815248315494, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "c6c2be81-0564-4fd6-80ff-0ff5d0e8da91", + "Name": "FG_1_16" + }, + "7e24dfad-68af-4ef0-a804-3181c109eb3f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 14.813553165294104, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -7.220329747941161, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "7e24dfad-68af-4ef0-a804-3181c109eb3f", + "Name": "FP_1_17" + }, + "b6f98dda-d0e0-4afa-a7ba-d514be6f591d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 14.813553165294104, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -7.220329747941161, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "b6f98dda-d0e0-4afa-a7ba-d514be6f591d", + "Name": "FG_1_17" + }, + "b68539ce-86ce-40c8-9d01-480a870a8e7a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 13.870562831711215, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -5.805844247566824, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "b68539ce-86ce-40c8-9d01-480a870a8e7a", + "Name": "FP_1_18" + }, + "f8b1b3a7-880f-47ad-b602-3a32d7178469": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 13.870562831711215, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -5.805844247566824, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "f8b1b3a7-880f-47ad-b602-3a32d7178469", + "Name": "FG_1_18" + }, + "f10be33a-e74d-4d2e-931d-d85415d20d27": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 12.927572498128328, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -4.391358747192491, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "f10be33a-e74d-4d2e-931d-d85415d20d27", + "Name": "FP_1_19" + }, + "889b9025-5338-416b-8072-b48ab0efe083": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 12.927572498128328, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -4.391358747192491, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "889b9025-5338-416b-8072-b48ab0efe083", + "Name": "FG_1_19" + }, + "acb36dfe-8e4c-4431-97fb-2eb4419550f4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 11.984582164545436, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -2.9768732468181547, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "acb36dfe-8e4c-4431-97fb-2eb4419550f4", + "Name": "FP_1_20" + }, + "40179770-f1d5-4869-834b-2e3095300f60": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 11.984582164545436, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -2.9768732468181547, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "40179770-f1d5-4869-834b-2e3095300f60", + "Name": "FG_1_20" + }, + "4a2933c0-d3c3-4544-b6dd-f2ff54491dbc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 11.041591830962549, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -1.5623877464438252, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "4a2933c0-d3c3-4544-b6dd-f2ff54491dbc", + "Name": "FP_1_21" + }, + "a77a4234-be74-4d21-a884-284dc8e782a4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 11.041591830962549, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -1.5623877464438252, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "a77a4234-be74-4d21-a884-284dc8e782a4", + "Name": "FG_1_21" + }, + "3e2bed90-fa20-4fa2-ad1e-78da208fb6da": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.00046121355018386497, + "Y": 0.009989358440917353, + "Z": 0.0 + }, + { + "X": 0.17729516376976087, + "Y": 0.009989358440917353, + "Z": 0.0 + }, + { + "X": 0.17729516376976087, + "Y": 3.8400106415590822, + "Z": 0.0 + }, + { + "X": 0.00046121355018386497, + "Y": 3.8400106415590822, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "3e2bed90-fa20-4fa2-ad1e-78da208fb6da", + "Name": null + }, + "57d67d71-82c8-4069-99a4-5af2a2a6e5aa": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 10.09860149737966, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -0.14790224606948854, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "3e2bed90-fa20-4fa2-ad1e-78da208fb6da", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "57d67d71-82c8-4069-99a4-5af2a2a6e5aa", + "Name": "FP_1_22" + }, + "7f55ecce-2d3c-43c1-8008-81bd5c2e98e7": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.0019121084163914713, + "Y": 0.009815489870809551, + "Z": 0.0 + }, + { + "X": 0.7480878915836086, + "Y": 0.009815489870809551, + "Z": 0.0 + }, + { + "X": 0.7480878915836086, + "Y": 3.8401845101291903, + "Z": 0.0 + }, + { + "X": 0.0019121084163914713, + "Y": 3.8401845101291903, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "7f55ecce-2d3c-43c1-8008-81bd5c2e98e7", + "Name": null + }, + "be6e4ebf-ff7d-4543-8feb-4d2b990338c3": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 10.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "7f55ecce-2d3c-43c1-8008-81bd5c2e98e7", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "be6e4ebf-ff7d-4543-8feb-4d2b990338c3", + "Name": "FP_1_0" + }, + "60d4c307-dd35-4b33-b1e2-f4dba17a6ce7": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.004039326788379083, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 3.8408521128616115, + "Z": 0.0 + }, + { + "X": 0.004039326788379083, + "Y": 3.8408521128616115, + "Z": 0.0 + } + ] + }, + "Voids": [ + { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + } + ], + "Id": "60d4c307-dd35-4b33-b1e2-f4dba17a6ce7", + "Name": null + }, + "f9f98ec1-f9db-43e9-98a9-614f21463575": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.25, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "60d4c307-dd35-4b33-b1e2-f4dba17a6ce7", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "f9f98ec1-f9db-43e9-98a9-614f21463575", + "Name": "FP_1" + }, + "3c6a7973-c49e-4a15-8609-ea146c9713a4": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.25, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6d255750-badf-48df-940f-c20cf683aedd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "3c6a7973-c49e-4a15-8609-ea146c9713a4", + "Name": null + }, + "a94c5fe3-a7a8-43d3-89b1-9c409a290aa3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "f9f98ec1-f9db-43e9-98a9-614f21463575", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.25, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "a94c5fe3-a7a8-43d3-89b1-9c409a290aa3", + "Name": "FP_1_1" + }, + "55745c7a-5a9f-47fd-9d5f-75967d1f448a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3c6a7973-c49e-4a15-8609-ea146c9713a4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.25, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "55745c7a-5a9f-47fd-9d5f-75967d1f448a", + "Name": "FG_1_1" + }, + "688f4a12-e8d6-45a2-935c-cfafb2759437": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "f9f98ec1-f9db-43e9-98a9-614f21463575", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 7.55, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "688f4a12-e8d6-45a2-935c-cfafb2759437", + "Name": "FP_1_2" + }, + "6506feaf-cf93-4f3a-a562-d09002760e59": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3c6a7973-c49e-4a15-8609-ea146c9713a4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 7.55, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "6506feaf-cf93-4f3a-a562-d09002760e59", + "Name": "FG_1_2" + }, + "1d4122bb-1e07-46e3-beaa-fdb079e59c61": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "f9f98ec1-f9db-43e9-98a9-614f21463575", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 5.85, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "1d4122bb-1e07-46e3-beaa-fdb079e59c61", + "Name": "FP_1_3" + }, + "13181a29-3837-45b4-94ed-10a42deb744f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3c6a7973-c49e-4a15-8609-ea146c9713a4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 5.85, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "13181a29-3837-45b4-94ed-10a42deb744f", + "Name": "FG_1_3" + }, + "c4648627-428d-4c43-8d69-4b2b23a05d3e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "f9f98ec1-f9db-43e9-98a9-614f21463575", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 4.1499999999999995, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "c4648627-428d-4c43-8d69-4b2b23a05d3e", + "Name": "FP_1_4" + }, + "464a5ddf-7f2e-4293-ba7d-680f50359ec6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3c6a7973-c49e-4a15-8609-ea146c9713a4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 4.1499999999999995, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "464a5ddf-7f2e-4293-ba7d-680f50359ec6", + "Name": "FG_1_4" + }, + "2fd955b9-6626-4474-93fe-3addd165fc57": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "f9f98ec1-f9db-43e9-98a9-614f21463575", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.4499999999999993, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "2fd955b9-6626-4474-93fe-3addd165fc57", + "Name": "FP_1_5" + }, + "d6336dfc-5372-4f96-824a-86ec24d0967d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3c6a7973-c49e-4a15-8609-ea146c9713a4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.4499999999999993, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "d6336dfc-5372-4f96-824a-86ec24d0967d", + "Name": "FG_1_5" + }, + "d85420a1-1ef7-40e3-8965-e57e41550732": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.0019121084163914713, + "Y": 0.009815489870809551, + "Z": 0.0 + }, + { + "X": 0.7480878915836086, + "Y": 0.009815489870809551, + "Z": 0.0 + }, + { + "X": 0.7480878915836086, + "Y": 3.8401845101291903, + "Z": 0.0 + }, + { + "X": 0.0019121084163914713, + "Y": 3.8401845101291903, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "d85420a1-1ef7-40e3-8965-e57e41550732", + "Name": null + }, + "43f4ee8d-6071-4b78-8060-c9de6b4837a5": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 0.75, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "d85420a1-1ef7-40e3-8965-e57e41550732", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "43f4ee8d-6071-4b78-8060-c9de6b4837a5", + "Name": "FP_1_6" + }, + "6b1acc50-fad0-4260-998a-c204920346cc": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.000647985949743371, + "Y": 0.009978983626048056, + "Z": 0.0 + }, + { + "X": 0.2493520140502531, + "Y": 0.009978983626048056, + "Z": 0.0 + }, + { + "X": 0.2493520140502531, + "Y": 3.8400210163739517, + "Z": 0.0 + }, + { + "X": 0.000647985949743371, + "Y": 3.8400210163739517, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "6b1acc50-fad0-4260-998a-c204920346cc", + "Name": null + }, + "69f0488a-1062-429c-9240-dd95b9f4b143": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + 0.0, + -1.0, + 0.0, + 1.7763568394002506E-16, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "6b1acc50-fad0-4260-998a-c204920346cc", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "69f0488a-1062-429c-9240-dd95b9f4b143", + "Name": "FP_1_0" + }, + "731d5a08-a7cc-48ab-a189-b62fff7f4372": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.004039326788379083, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 3.8408521128616115, + "Z": 0.0 + }, + { + "X": 0.004039326788379083, + "Y": 3.8408521128616115, + "Z": 0.0 + } + ] + }, + "Voids": [ + { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + } + ], + "Id": "731d5a08-a7cc-48ab-a189-b62fff7f4372", + "Name": null + }, + "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.4408920985005315E-17, + -1.0, + 0.0, + 1.7763568394002506E-16, + -0.24999999999999645, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "731d5a08-a7cc-48ab-a189-b62fff7f4372", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Name": "FP_1" + }, + "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.4408920985005315E-17, + -1.0, + 0.0, + 1.7763568394002506E-16, + -0.24999999999999645, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6d255750-badf-48df-940f-c20cf683aedd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Name": null + }, + "4a4224ce-e3c3-485c-bc47-472c195332f1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.4408920985005315E-17, + -1.0, + 0.0, + 1.7763568394002506E-16, + -0.24999999999999645, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "4a4224ce-e3c3-485c-bc47-472c195332f1", + "Name": "FP_1_1" + }, + "69c627fd-2df9-4f8c-af8e-386f12c1c187": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.4408920985005315E-17, + -1.0, + 0.0, + 1.7763568394002506E-16, + -0.24999999999999645, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "69c627fd-2df9-4f8c-af8e-386f12c1c187", + "Name": "FG_1_1" + }, + "069f51b4-96ae-498e-9e52-cffdca9b91ab": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.4638958368304796E-16, + -1.0, + 0.0, + 1.7763568394002506E-16, + -1.9499999999999966, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "069f51b4-96ae-498e-9e52-cffdca9b91ab", + "Name": "FP_1_2" + }, + "94231bed-f7b8-48ff-9185-fd27cd846f0d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.4638958368304796E-16, + -1.0, + 0.0, + 1.7763568394002506E-16, + -1.9499999999999966, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "94231bed-f7b8-48ff-9185-fd27cd846f0d", + "Name": "FG_1_2" + }, + "93f7bf84-8de6-4718-84c3-ab59740b84f7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.483702463810906E-16, + -1.0, + 0.0, + 1.7763568394002506E-16, + -3.649999999999997, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "93f7bf84-8de6-4718-84c3-ab59740b84f7", + "Name": "FP_1_3" + }, + "4750fb32-269e-4e01-a823-d93393776ddb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.483702463810906E-16, + -1.0, + 0.0, + 1.7763568394002506E-16, + -3.649999999999997, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "4750fb32-269e-4e01-a823-d93393776ddb", + "Name": "FG_1_3" + }, + "fcca5bb5-5296-4c1b-bbd7-6c441738f0dd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.503509090791333E-16, + -1.0, + 0.0, + 1.7763568394002506E-16, + -5.349999999999997, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "fcca5bb5-5296-4c1b-bbd7-6c441738f0dd", + "Name": "FP_1_4" + }, + "e538a2c1-9c02-4645-8230-0561ce16a5d8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.503509090791333E-16, + -1.0, + 0.0, + 1.7763568394002506E-16, + -5.349999999999997, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "e538a2c1-9c02-4645-8230-0561ce16a5d8", + "Name": "FG_1_4" + }, + "23e9f34f-b764-4443-a37b-66f787d5073b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.252331571777176E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -7.049999999999997, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "23e9f34f-b764-4443-a37b-66f787d5073b", + "Name": "FP_1_5" + }, + "c018f5ce-0bb2-421e-b4dd-e1f08b582780": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.252331571777176E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -7.049999999999997, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "c018f5ce-0bb2-421e-b4dd-e1f08b582780", + "Name": "FG_1_5" + }, + "0cc6f802-51cb-4a76-aec1-5fd4d96d2a23": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.5543122344752184E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -8.749999999999996, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "0cc6f802-51cb-4a76-aec1-5fd4d96d2a23", + "Name": "FP_1_6" + }, + "354104cd-9ef9-4288-a0eb-8df53fabcc22": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.5543122344752184E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -8.749999999999996, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "354104cd-9ef9-4288-a0eb-8df53fabcc22", + "Name": "FG_1_6" + }, + "edb2576d-f19d-464f-89f6-317101ca6bd8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.8562928971732612E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -10.449999999999998, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "edb2576d-f19d-464f-89f6-317101ca6bd8", + "Name": "FP_1_7" + }, + "b322d77b-6437-40cd-8fea-50de582db7a5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.8562928971732612E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -10.449999999999998, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "b322d77b-6437-40cd-8fea-50de582db7a5", + "Name": "FG_1_7" + }, + "2317ff04-c481-4c72-8771-4decbaeb5c34": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -2.1582735598713037E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -12.149999999999999, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "2317ff04-c481-4c72-8771-4decbaeb5c34", + "Name": "FP_1_8" + }, + "26204908-e1c3-4aab-8b05-6b9739dfd833": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -2.1582735598713037E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -12.149999999999999, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "26204908-e1c3-4aab-8b05-6b9739dfd833", + "Name": "FG_1_8" + }, + "f1aceed9-a325-44a1-b534-c8836e3caddb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -2.4602542225693465E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -13.849999999999998, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "f1aceed9-a325-44a1-b534-c8836e3caddb", + "Name": "FP_1_9" + }, + "3bf5bd9c-ea84-4709-af7a-04499b2cba89": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -2.4602542225693465E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -13.849999999999998, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "3bf5bd9c-ea84-4709-af7a-04499b2cba89", + "Name": "FG_1_9" + }, + "7921389d-debe-481e-95bc-772f177510e2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -2.762234885267389E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -15.549999999999997, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "7921389d-debe-481e-95bc-772f177510e2", + "Name": "FP_1_10" + }, + "c4e66a6c-3450-4fa3-a8da-f45dd8288ba3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -2.762234885267389E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -15.549999999999997, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "c4e66a6c-3450-4fa3-a8da-f45dd8288ba3", + "Name": "FG_1_10" + }, + "6e1f8143-a865-4c5b-a359-6385f55f5eb0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.0642155479654314E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -17.249999999999996, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "6e1f8143-a865-4c5b-a359-6385f55f5eb0", + "Name": "FP_1_11" + }, + "0977783f-83ee-4c7e-9003-09af57c10d3c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.0642155479654314E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -17.249999999999996, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "0977783f-83ee-4c7e-9003-09af57c10d3c", + "Name": "FG_1_11" + }, + "6df3b335-1bfb-4471-be77-bbc2357be886": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.3661962106634743E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -18.95, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "6df3b335-1bfb-4471-be77-bbc2357be886", + "Name": "FP_1_12" + }, + "04701e0e-fd12-40cf-bdcd-208be22cb649": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.3661962106634743E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -18.95, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "04701e0e-fd12-40cf-bdcd-208be22cb649", + "Name": "FG_1_12" + }, + "a5bc91d9-f060-4381-912e-52fe44202fbd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.668176873361517E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -20.65, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "a5bc91d9-f060-4381-912e-52fe44202fbd", + "Name": "FP_1_13" + }, + "6f200b4f-3651-4634-beb4-a13b88c7c4d0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.668176873361517E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -20.65, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "6f200b4f-3651-4634-beb4-a13b88c7c4d0", + "Name": "FG_1_13" + }, + "6d084be9-2569-4742-b05f-5305e65578be": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.9701575360595596E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -22.349999999999998, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "6d084be9-2569-4742-b05f-5305e65578be", + "Name": "FP_1_14" + }, + "4256e695-b27a-437e-8554-d73975983775": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.9701575360595596E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -22.349999999999998, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "4256e695-b27a-437e-8554-d73975983775", + "Name": "FG_1_14" + }, + "013b4532-cc0f-40dc-97be-12ff2b42ca7d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.272138198757602E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -24.05, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "013b4532-cc0f-40dc-97be-12ff2b42ca7d", + "Name": "FP_1_15" + }, + "7758587e-29a1-4790-a4cf-d7e7143fec43": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.272138198757602E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -24.05, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "7758587e-29a1-4790-a4cf-d7e7143fec43", + "Name": "FG_1_15" + }, + "2fbdf74f-8352-4b2b-965a-4669860e8fd4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.574118861455645E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -25.75, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "2fbdf74f-8352-4b2b-965a-4669860e8fd4", + "Name": "FP_1_16" + }, + "5641bb5b-054c-48d4-9251-332e4bc13ff1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.574118861455645E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -25.75, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "5641bb5b-054c-48d4-9251-332e4bc13ff1", + "Name": "FG_1_16" + }, + "37827eb9-d3a5-42f9-9b01-6c456ceac0a8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.876099524153688E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -27.45, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "37827eb9-d3a5-42f9-9b01-6c456ceac0a8", + "Name": "FP_1_17" + }, + "680a933d-18d7-4939-bb02-dfab07636bc6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.876099524153688E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -27.45, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "680a933d-18d7-4939-bb02-dfab07636bc6", + "Name": "FG_1_17" + }, + "6e90f972-a86d-485c-b633-d67cba3c902e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -5.17808018685173E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -29.15, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "6e90f972-a86d-485c-b633-d67cba3c902e", + "Name": "FP_1_18" + }, + "8170b21c-9b2c-48a7-ac01-796c7a6a6a85": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -5.17808018685173E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -29.15, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "8170b21c-9b2c-48a7-ac01-796c7a6a6a85", + "Name": "FG_1_18" + }, + "2a8adb55-5ea5-4007-b41f-1164a7bf00ee": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -5.480060849549773E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -30.849999999999998, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "2a8adb55-5ea5-4007-b41f-1164a7bf00ee", + "Name": "FP_1_19" + }, + "3109882c-9b5e-41a7-8efb-0d53bf4d8c55": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -5.480060849549773E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -30.849999999999998, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "3109882c-9b5e-41a7-8efb-0d53bf4d8c55", + "Name": "FG_1_19" + }, + "bc7e7f71-7e5c-4ce6-9f81-830c88ce1daf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -5.782041512247815E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -32.55, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "bc7e7f71-7e5c-4ce6-9f81-830c88ce1daf", + "Name": "FP_1_20" + }, + "f35b7ffc-6523-423f-8ee1-dc28157ed920": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -5.782041512247815E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -32.55, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "f35b7ffc-6523-423f-8ee1-dc28157ed920", + "Name": "FG_1_20" + }, + "5034ee3f-7667-4e95-87cf-c82b0b3dcbd1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.0840221749458575E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -34.25, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "5034ee3f-7667-4e95-87cf-c82b0b3dcbd1", + "Name": "FP_1_21" + }, + "729b19e6-f632-4307-9889-0e8861ae4245": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.0840221749458575E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -34.25, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "729b19e6-f632-4307-9889-0e8861ae4245", + "Name": "FG_1_21" + }, + "9de58134-021d-41ae-83c3-2932bd0c9c70": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.3860028376439E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -35.95, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "9de58134-021d-41ae-83c3-2932bd0c9c70", + "Name": "FP_1_22" + }, + "383abfbf-5804-4747-b3c9-0b2cf607d1ab": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.3860028376439E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -35.95, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "383abfbf-5804-4747-b3c9-0b2cf607d1ab", + "Name": "FG_1_22" + }, + "214fc868-aa87-4669-886b-269c99d0e8cc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.687983500341943E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -37.650000000000006, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "214fc868-aa87-4669-886b-269c99d0e8cc", + "Name": "FP_1_23" + }, + "d1be2a16-4365-48a3-b66f-89de07231523": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.687983500341943E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -37.650000000000006, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "d1be2a16-4365-48a3-b66f-89de07231523", + "Name": "FG_1_23" + }, + "4de5e4d5-5abc-496d-8aea-881d4535732d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.989964163039985E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -39.349999999999994, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "4de5e4d5-5abc-496d-8aea-881d4535732d", + "Name": "FP_1_24" + }, + "bf8736f4-b823-4d3e-9f0d-05bc5815c6cf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.989964163039985E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -39.349999999999994, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "bf8736f4-b823-4d3e-9f0d-05bc5815c6cf", + "Name": "FG_1_24" + }, + "de70f610-4de2-4a6e-bc68-b00d4f0a339f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -7.291944825738029E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -41.05, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "de70f610-4de2-4a6e-bc68-b00d4f0a339f", + "Name": "FP_1_25" + }, + "5004f665-3a87-4c17-812e-b53f9b95600a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -7.291944825738029E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -41.05, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "5004f665-3a87-4c17-812e-b53f9b95600a", + "Name": "FG_1_25" + }, + "49dbeddd-bfd7-4a08-96fe-a51cf14366e3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -7.593925488436071E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -42.75, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "49dbeddd-bfd7-4a08-96fe-a51cf14366e3", + "Name": "FP_1_26" + }, + "27815117-c9e2-4324-bfdb-ec0fbc01f7d2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -7.593925488436071E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -42.75, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "27815117-c9e2-4324-bfdb-ec0fbc01f7d2", + "Name": "FG_1_26" + }, + "7e776a37-50cb-4329-a3bf-2532950c6a62": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -7.895906151134114E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -44.45, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "7e776a37-50cb-4329-a3bf-2532950c6a62", + "Name": "FP_1_27" + }, + "6027f344-9795-44db-b9fd-8fe31ca29e78": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -7.895906151134114E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -44.45, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "6027f344-9795-44db-b9fd-8fe31ca29e78", + "Name": "FG_1_27" + }, + "3717e181-d4f1-4eee-9860-3d8826c330a1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -8.197886813832156E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -46.150000000000006, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "3717e181-d4f1-4eee-9860-3d8826c330a1", + "Name": "FP_1_28" + }, + "8162bec4-9f61-4831-ab32-a9eb64e75c02": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -8.197886813832156E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -46.150000000000006, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "8162bec4-9f61-4831-ab32-a9eb64e75c02", + "Name": "FG_1_28" + }, + "3f2276e1-4fef-4911-afcb-d62c13ab9b21": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -8.499867476530199E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -47.85000000000001, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "3f2276e1-4fef-4911-afcb-d62c13ab9b21", + "Name": "FP_1_29" + }, + "b5754ed8-be3a-4d36-ba3a-b42c9790776b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -8.499867476530199E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -47.85000000000001, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "b5754ed8-be3a-4d36-ba3a-b42c9790776b", + "Name": "FG_1_29" + }, + "6b28d318-cb14-4732-95db-5c19bd07d936": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -8.801848139228241E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -49.55, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "6b28d318-cb14-4732-95db-5c19bd07d936", + "Name": "FP_1_30" + }, + "ff081706-e3dc-404a-8137-7a56bef8792c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -8.801848139228241E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -49.55, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "ff081706-e3dc-404a-8137-7a56bef8792c", + "Name": "FG_1_30" + }, + "039b7970-dd29-43c3-aa21-eaae8590f0ee": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.103828801926285E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -51.25, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "039b7970-dd29-43c3-aa21-eaae8590f0ee", + "Name": "FP_1_31" + }, + "5950dd14-34e9-415e-8b96-79ced873e472": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.103828801926285E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -51.25, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "5950dd14-34e9-415e-8b96-79ced873e472", + "Name": "FG_1_31" + }, + "77f1110f-d74e-4445-bb01-e96950f9f8f5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.405809464624326E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -52.95, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "77f1110f-d74e-4445-bb01-e96950f9f8f5", + "Name": "FP_1_32" + }, + "297e1d6e-8f26-475b-82ad-fdddc041bdc3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.405809464624326E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -52.95, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "297e1d6e-8f26-475b-82ad-fdddc041bdc3", + "Name": "FG_1_32" + }, + "8f6db0b5-4d68-4fb8-ad13-a9e4215fe554": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.70779012732237E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -54.650000000000006, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "8f6db0b5-4d68-4fb8-ad13-a9e4215fe554", + "Name": "FP_1_33" + }, + "9cd1297b-287a-4b45-bc79-251432ad3965": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.70779012732237E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -54.650000000000006, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "9cd1297b-287a-4b45-bc79-251432ad3965", + "Name": "FG_1_33" + }, + "834cf25b-30a9-4376-addb-5ea2abf19f01": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.0009770790020413E-14, + -1.0, + 0.0, + 1.7763568394002506E-16, + -56.35000000000001, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "834cf25b-30a9-4376-addb-5ea2abf19f01", + "Name": "FP_1_34" + }, + "5974d0d4-64bb-4337-ad1a-3f98b88ae660": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.0009770790020413E-14, + -1.0, + 0.0, + 1.7763568394002506E-16, + -56.35000000000001, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "5974d0d4-64bb-4337-ad1a-3f98b88ae660", + "Name": "FG_1_34" + }, + "09c04ffc-3894-4027-af41-ed05e3e3c19e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.0311751452718455E-14, + -1.0, + 0.0, + 1.7763568394002506E-16, + -58.05, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "09c04ffc-3894-4027-af41-ed05e3e3c19e", + "Name": "FP_1_35" + }, + "38781ef3-4380-438c-a868-7fd2cda93b6f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.0311751452718455E-14, + -1.0, + 0.0, + 1.7763568394002506E-16, + -58.05, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "38781ef3-4380-438c-a868-7fd2cda93b6f", + "Name": "FG_1_35" + }, + "81224588-6db2-46bd-8ba2-a323c2236198": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.0006479859497433802, + "Y": 0.009978983626048054, + "Z": 0.0 + }, + { + "X": 0.24935201405025662, + "Y": 0.009978983626048054, + "Z": 0.0 + }, + { + "X": 0.24935201405025662, + "Y": 3.8400210163739517, + "Z": 0.0 + }, + { + "X": 0.0006479859497433802, + "Y": 3.8400210163739517, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "81224588-6db2-46bd-8ba2-a323c2236198", + "Name": null + }, + "720aa67e-992c-4d3e-8980-d21ea9ba2dba": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.0613732115416497E-14, + -1.0, + 0.0, + 1.7763568394002506E-16, + -59.75, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "81224588-6db2-46bd-8ba2-a323c2236198", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "720aa67e-992c-4d3e-8980-d21ea9ba2dba", + "Name": "FP_1_36" + }, + "984168ae-2a16-4813-aec6-d18680900f44": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.0014142135623731059, + "Y": 0.009899494936611663, + "Z": 0.0 + }, + { + "X": 0.5485857864376311, + "Y": 0.009899494936611663, + "Z": 0.0 + }, + { + "X": 0.5485857864376311, + "Y": 3.840100505063388, + "Z": 0.0 + }, + { + "X": 0.0014142135623731059, + "Y": 3.840100505063388, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "984168ae-2a16-4813-aec6-d18680900f44", + "Name": null + }, + "6c9978d1-610d-4c32-b5c0-d3934dd162e4": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + -1.0658141036401503E-14, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "984168ae-2a16-4813-aec6-d18680900f44", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "6c9978d1-610d-4c32-b5c0-d3934dd162e4", + "Name": "FP_2_0" + }, + "dad3af59-05ad-4f14-8ea2-5bf09ebf5ee2": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.004039326788379083, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 3.8408521128616115, + "Z": 0.0 + }, + { + "X": 0.004039326788379083, + "Y": 3.8408521128616115, + "Z": 0.0 + } + ] + }, + "Voids": [ + { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + } + ], + "Id": "dad3af59-05ad-4f14-8ea2-5bf09ebf5ee2", + "Name": null + }, + "2493d071-c375-4e4d-9ea8-77ad3550bbbb": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.5499999999999936, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "dad3af59-05ad-4f14-8ea2-5bf09ebf5ee2", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Name": "FP_2" + }, + "b4380182-1d7c-44f4-b89d-5fd698316796": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.5499999999999936, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6d255750-badf-48df-940f-c20cf683aedd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Name": null + }, + "24d9dc86-b0ef-417a-89af-043689d334ec": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.5499999999999936, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "24d9dc86-b0ef-417a-89af-043689d334ec", + "Name": "FP_2_1" + }, + "63ebb288-bd7d-4ad2-bd85-81d250a666c4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.5499999999999936, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "63ebb288-bd7d-4ad2-bd85-81d250a666c4", + "Name": "FG_2_1" + }, + "e207dd3d-5582-4304-86cf-4553b95c6aaf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 2.249999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "e207dd3d-5582-4304-86cf-4553b95c6aaf", + "Name": "FP_2_2" + }, + "e3cfb816-3867-45d4-91ff-c9495040bcf8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 2.249999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "e3cfb816-3867-45d4-91ff-c9495040bcf8", + "Name": "FG_2_2" + }, + "a67de6fc-a798-4e39-bcc3-f3e490066be1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 3.949999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "a67de6fc-a798-4e39-bcc3-f3e490066be1", + "Name": "FP_2_3" + }, + "71d27370-4245-4698-8d4c-b93d1e232ee8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 3.949999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "71d27370-4245-4698-8d4c-b93d1e232ee8", + "Name": "FG_2_3" + }, + "50636ece-1934-418d-b302-775c3ef0751b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 5.649999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "50636ece-1934-418d-b302-775c3ef0751b", + "Name": "FP_2_4" + }, + "1f0a637b-5537-4370-a972-501f43e75901": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 5.649999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "1f0a637b-5537-4370-a972-501f43e75901", + "Name": "FG_2_4" + }, + "e78b02fa-56f0-4cb7-8480-04d433dfe506": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 7.349999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "e78b02fa-56f0-4cb7-8480-04d433dfe506", + "Name": "FP_2_5" + }, + "8a2ddc78-fbe4-47a6-a5b6-db21b624a779": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 7.349999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "8a2ddc78-fbe4-47a6-a5b6-db21b624a779", + "Name": "FG_2_5" + }, + "983e6fd0-3a82-416a-93c3-5e5695ffafe5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.049999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "983e6fd0-3a82-416a-93c3-5e5695ffafe5", + "Name": "FP_2_6" + }, + "fcd49822-892c-41d8-9b93-ccc9ca42969a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.049999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "fcd49822-892c-41d8-9b93-ccc9ca42969a", + "Name": "FG_2_6" + }, + "23c9635e-4117-4924-8884-fa07e0306867": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 10.749999999999995, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "23c9635e-4117-4924-8884-fa07e0306867", + "Name": "FP_2_7" + }, + "aa6132e2-72ab-4446-ac5f-2109c12ac750": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 10.749999999999995, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "aa6132e2-72ab-4446-ac5f-2109c12ac750", + "Name": "FG_2_7" + }, + "5a4bae09-a5e0-4db4-960b-892e164bed33": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 12.449999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "5a4bae09-a5e0-4db4-960b-892e164bed33", + "Name": "FP_2_8" + }, + "17559d8f-7d0f-4834-bbc0-08b43ea97476": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 12.449999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "17559d8f-7d0f-4834-bbc0-08b43ea97476", + "Name": "FG_2_8" + }, + "d6f54884-cc69-42b5-87cc-02a1a92eb04f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 14.149999999999995, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "d6f54884-cc69-42b5-87cc-02a1a92eb04f", + "Name": "FP_2_9" + }, + "6f8be229-4d67-4115-a182-859333bf3df8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 14.149999999999995, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "6f8be229-4d67-4115-a182-859333bf3df8", + "Name": "FG_2_9" + }, + "71647c92-e787-4f2a-a4a3-1e48f8df6421": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 15.849999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "71647c92-e787-4f2a-a4a3-1e48f8df6421", + "Name": "FP_2_10" + }, + "d056e80e-ef92-478a-9799-266984ffb6b8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 15.849999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "d056e80e-ef92-478a-9799-266984ffb6b8", + "Name": "FG_2_10" + }, + "8a2c8a26-1626-4201-a413-3c2f32eaa9e2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 17.549999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "8a2c8a26-1626-4201-a413-3c2f32eaa9e2", + "Name": "FP_2_11" + }, + "af5d7d80-c435-490f-8ead-b860e8ad50de": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 17.549999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "af5d7d80-c435-490f-8ead-b860e8ad50de", + "Name": "FG_2_11" + }, + "e6558569-0d9f-4733-a633-568b9dde6557": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 19.249999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "e6558569-0d9f-4733-a633-568b9dde6557", + "Name": "FP_2_12" + }, + "7270a52b-74f5-4e2d-ae21-8d2c2fd0c056": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 19.249999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "7270a52b-74f5-4e2d-ae21-8d2c2fd0c056", + "Name": "FG_2_12" + }, + "696ebb3b-227b-439a-af4d-9e5b76689a69": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 20.949999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "696ebb3b-227b-439a-af4d-9e5b76689a69", + "Name": "FP_2_13" + }, + "e1dcee5a-bcf9-442e-bfe1-a7d0fbe5654c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 20.949999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "e1dcee5a-bcf9-442e-bfe1-a7d0fbe5654c", + "Name": "FG_2_13" + }, + "6ba65946-a17c-4ca1-a42f-bd6920636cfa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 22.649999999999995, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "6ba65946-a17c-4ca1-a42f-bd6920636cfa", + "Name": "FP_2_14" + }, + "8f587de0-85da-43cf-a65a-d4d40dd042cf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 22.649999999999995, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "8f587de0-85da-43cf-a65a-d4d40dd042cf", + "Name": "FG_2_14" + }, + "9768961a-6d97-4afd-b23f-578d3fb93d47": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 24.349999999999998, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "9768961a-6d97-4afd-b23f-578d3fb93d47", + "Name": "FP_2_15" + }, + "626686be-f363-45f7-8c47-cbb6b352b108": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 24.349999999999998, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "626686be-f363-45f7-8c47-cbb6b352b108", + "Name": "FG_2_15" + }, + "dd3c7179-0c6b-40a5-af75-2c59999f4b4d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 26.049999999999997, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "dd3c7179-0c6b-40a5-af75-2c59999f4b4d", + "Name": "FP_2_16" + }, + "fc311eca-e7ed-4964-aa6e-1f7eef27552f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 26.049999999999997, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "fc311eca-e7ed-4964-aa6e-1f7eef27552f", + "Name": "FG_2_16" + }, + "0f518d98-7c04-496a-8eaf-1de295641453": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 27.749999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "0f518d98-7c04-496a-8eaf-1de295641453", + "Name": "FP_2_17" + }, + "424194cb-3634-44b7-bdef-6a79a45bd689": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 27.749999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "424194cb-3634-44b7-bdef-6a79a45bd689", + "Name": "FG_2_17" + }, + "3e1e9c47-1bea-442d-976b-32e3b6a88c96": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.0014142135623731059, + "Y": 0.009899494936611663, + "Z": 0.0 + }, + { + "X": 0.5485857864376311, + "Y": 0.009899494936611663, + "Z": 0.0 + }, + { + "X": 0.5485857864376311, + "Y": 3.840100505063388, + "Z": 0.0 + }, + { + "X": 0.0014142135623731059, + "Y": 3.840100505063388, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "3e1e9c47-1bea-442d-976b-32e3b6a88c96", + "Name": null + }, + "ec67f9f7-1899-4de7-a829-56c99ee0857b": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 29.449999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "3e1e9c47-1bea-442d-976b-32e3b6a88c96", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "ec67f9f7-1899-4de7-a829-56c99ee0857b", + "Name": "FP_2_18" + }, + "8cc12d50-19b6-4fa0-af3c-0f0c77c9a608": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.05, + "Z": 12.2 + }, + { + "X": 30.0, + "Y": -60.05, + "Z": 12.2 + }, + { + "X": 30.0, + "Y": -59.95, + "Z": 12.2 + }, + { + "X": -1.0658141036401503E-14, + "Y": -59.95, + "Z": 12.2 + } + ] + }, + "Voids": [], + "Id": "8cc12d50-19b6-4fa0-af3c-0f0c77c9a608", + "Name": null + }, + "61dd814b-b856-4871-bac2-2014abd5e3b4": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.05, + "Z": 12.2 + }, + { + "X": 30.0, + "Y": -60.05, + "Z": 12.2 + }, + { + "X": 30.0, + "Y": -59.95, + "Z": 12.2 + }, + { + "X": -1.0658141036401503E-14, + "Y": -59.95, + "Z": 12.2 + } + ] + }, + "Voids": [], + "Id": "61dd814b-b856-4871-bac2-2014abd5e3b4", + "Name": null + }, + "a9567ea5-6518-4346-8b7d-f9558e64d746": { + "discriminator": "Elements.StandardWall", + "CenterLine": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 12.2 + }, + "End": { + "X": 30.0, + "Y": -60.0, + "Z": 12.2 + } + }, + "Thickness": 0.1, + "Height": 0.9, + "Profile": null, + "Openings": [], + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "61dd814b-b856-4871-bac2-2014abd5e3b4", + "Height": 0.9, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a9567ea5-6518-4346-8b7d-f9558e64d746", + "Name": null + }, + "f82c1060-dc9b-40ab-90fb-ab5b792b7a83": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.0014142135623730879, + "Y": 0.009899494936611667, + "Z": 0.0 + }, + { + "X": 0.5485857864376241, + "Y": 0.009899494936611667, + "Z": 0.0 + }, + { + "X": 0.5485857864376241, + "Y": 3.840100505063388, + "Z": 0.0 + }, + { + "X": 0.0014142135623730879, + "Y": 3.840100505063388, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "f82c1060-dc9b-40ab-90fb-ab5b792b7a83", + "Name": null + }, + "bd78e3ac-914a-427b-adac-754dc2eddb23": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "f82c1060-dc9b-40ab-90fb-ab5b792b7a83", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "bd78e3ac-914a-427b-adac-754dc2eddb23", + "Name": "FP_2_0" + }, + "b9a96faf-5fe1-453f-96aa-cbb8fa7d0659": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.004039326788379083, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 3.8408521128616115, + "Z": 0.0 + }, + { + "X": 0.004039326788379083, + "Y": 3.8408521128616115, + "Z": 0.0 + } + ] + }, + "Voids": [ + { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + } + ], + "Id": "b9a96faf-5fe1-453f-96aa-cbb8fa7d0659", + "Name": null + }, + "ce3bcb7d-a802-47bf-8004-2bb5276f74d3": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -59.45, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "b9a96faf-5fe1-453f-96aa-cbb8fa7d0659", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Name": "FP_2" + }, + "7c0b8a64-4eef-4fdc-be45-d88750a35552": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -59.45, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6d255750-badf-48df-940f-c20cf683aedd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Name": null + }, + "08c9224c-03bf-4d53-8f98-48b717f3d0c8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -59.45, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "08c9224c-03bf-4d53-8f98-48b717f3d0c8", + "Name": "FP_2_1" + }, + "0fc6e093-9903-4e3b-8f2e-714b2facb575": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -59.45, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "0fc6e093-9903-4e3b-8f2e-714b2facb575", + "Name": "FG_2_1" + }, + "bacce559-1bfd-4989-91c1-1dff75bc1059": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -57.75, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "bacce559-1bfd-4989-91c1-1dff75bc1059", + "Name": "FP_2_2" + }, + "f6dca839-0326-4b10-934b-924c394a4335": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -57.75, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "f6dca839-0326-4b10-934b-924c394a4335", + "Name": "FG_2_2" + }, + "53cb62b6-2513-434b-b32d-c241839fc198": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -56.050000000000004, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "53cb62b6-2513-434b-b32d-c241839fc198", + "Name": "FP_2_3" + }, + "c31c1457-b472-4a51-a968-06447fdffc3c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -56.050000000000004, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "c31c1457-b472-4a51-a968-06447fdffc3c", + "Name": "FG_2_3" + }, + "dc5087e6-3585-4471-a17c-21888d84f0c0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -54.35, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "dc5087e6-3585-4471-a17c-21888d84f0c0", + "Name": "FP_2_4" + }, + "cc08637e-1e2b-4615-859e-9774cd957621": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -54.35, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "cc08637e-1e2b-4615-859e-9774cd957621", + "Name": "FG_2_4" + }, + "a4d44235-914f-4400-9cd3-563a2047e77e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -52.650000000000006, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "a4d44235-914f-4400-9cd3-563a2047e77e", + "Name": "FP_2_5" + }, + "372fb6a3-3e67-4e16-8ee8-04267847564e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -52.650000000000006, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "372fb6a3-3e67-4e16-8ee8-04267847564e", + "Name": "FG_2_5" + }, + "2e11a285-40e4-4987-8bd5-a54643d6568d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -50.95, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "2e11a285-40e4-4987-8bd5-a54643d6568d", + "Name": "FP_2_6" + }, + "74265940-6770-470c-89d5-59b4a5234baa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -50.95, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "74265940-6770-470c-89d5-59b4a5234baa", + "Name": "FG_2_6" + }, + "bd755f45-5d65-4183-81ef-9c4460ad1d37": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -49.25, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "bd755f45-5d65-4183-81ef-9c4460ad1d37", + "Name": "FP_2_7" + }, + "1ae4cccd-35f5-49ab-8c71-d2ac4472edae": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -49.25, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "1ae4cccd-35f5-49ab-8c71-d2ac4472edae", + "Name": "FG_2_7" + }, + "7878710c-c70c-4923-9763-6dd0a4a8a815": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -47.55, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "7878710c-c70c-4923-9763-6dd0a4a8a815", + "Name": "FP_2_8" + }, + "3219160c-7f8c-4705-b147-ef349380fc68": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -47.55, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "3219160c-7f8c-4705-b147-ef349380fc68", + "Name": "FG_2_8" + }, + "09d2a3b6-0615-4c26-bceb-90a90bf0f898": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -45.85, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "09d2a3b6-0615-4c26-bceb-90a90bf0f898", + "Name": "FP_2_9" + }, + "bd8dcd5d-6671-4484-b55c-cef354f132fd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -45.85, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "bd8dcd5d-6671-4484-b55c-cef354f132fd", + "Name": "FG_2_9" + }, + "bcc77e77-d1a8-4cf6-8d04-82566af71367": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -44.150000000000006, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "bcc77e77-d1a8-4cf6-8d04-82566af71367", + "Name": "FP_2_10" + }, + "68a48efd-5a73-4fd0-984b-c9d725824c5f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -44.150000000000006, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "68a48efd-5a73-4fd0-984b-c9d725824c5f", + "Name": "FG_2_10" + }, + "85549c70-c73a-4f09-80d2-9052c94fb7cb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -42.45, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "85549c70-c73a-4f09-80d2-9052c94fb7cb", + "Name": "FP_2_11" + }, + "6dab55d1-6144-480c-a3cd-77be5725fe2e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -42.45, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "6dab55d1-6144-480c-a3cd-77be5725fe2e", + "Name": "FG_2_11" + }, + "2ef20f2f-3b43-49cd-92f3-dbbf084ba9a8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -40.75, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "2ef20f2f-3b43-49cd-92f3-dbbf084ba9a8", + "Name": "FP_2_12" + }, + "97df1c8d-8a9c-430d-a686-bf44b770f7d6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -40.75, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "97df1c8d-8a9c-430d-a686-bf44b770f7d6", + "Name": "FG_2_12" + }, + "b721d1d5-9d0d-4148-a7ef-f783d72748f2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -39.05, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "b721d1d5-9d0d-4148-a7ef-f783d72748f2", + "Name": "FP_2_13" + }, + "be841601-f457-4974-b567-623c67061bbb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -39.05, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "be841601-f457-4974-b567-623c67061bbb", + "Name": "FG_2_13" + }, + "757f0655-33d6-415f-ab11-ce3fc35a1194": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -37.35, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "757f0655-33d6-415f-ab11-ce3fc35a1194", + "Name": "FP_2_14" + }, + "07c6a54d-350b-432e-9d3d-bc01b5c8cbd9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -37.35, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "07c6a54d-350b-432e-9d3d-bc01b5c8cbd9", + "Name": "FG_2_14" + }, + "f7bab826-c495-4130-a607-f7722520cc3b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -35.65, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "f7bab826-c495-4130-a607-f7722520cc3b", + "Name": "FP_2_15" + }, + "3527489f-e874-4a03-8769-e5be9dc04116": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -35.65, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "3527489f-e874-4a03-8769-e5be9dc04116", + "Name": "FG_2_15" + }, + "6441f1d9-4887-4f63-a4c6-4598acee694b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -33.95, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "6441f1d9-4887-4f63-a4c6-4598acee694b", + "Name": "FP_2_16" + }, + "76fada82-d143-426e-ba73-21ccb4f8d576": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -33.95, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "76fada82-d143-426e-ba73-21ccb4f8d576", + "Name": "FG_2_16" + }, + "754c9a76-1092-43c5-82f8-932eba2e1ec0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -32.25, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "754c9a76-1092-43c5-82f8-932eba2e1ec0", + "Name": "FP_2_17" + }, + "d5af1663-e369-4415-9f04-958055fd61e3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -32.25, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "d5af1663-e369-4415-9f04-958055fd61e3", + "Name": "FG_2_17" + }, + "45e2bdbd-9e73-4727-b955-2fa1931a4fc9": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.0014142135623730879, + "Y": 0.009899494936611667, + "Z": 0.0 + }, + { + "X": 0.5485857864376241, + "Y": 0.009899494936611667, + "Z": 0.0 + }, + { + "X": 0.5485857864376241, + "Y": 3.840100505063388, + "Z": 0.0 + }, + { + "X": 0.0014142135623730879, + "Y": 3.840100505063388, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "45e2bdbd-9e73-4727-b955-2fa1931a4fc9", + "Name": null + }, + "829cf2e3-ba38-4586-ad86-9eb9074aa6e6": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -30.549999999999997, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "45e2bdbd-9e73-4727-b955-2fa1931a4fc9", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "829cf2e3-ba38-4586-ad86-9eb9074aa6e6", + "Name": "FP_2_18" + }, + "127ac052-562e-4426-ab9e-5355d52ac176": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 30.05, + "Y": -60.0, + "Z": 12.2 + }, + { + "X": 30.05, + "Y": -30.0, + "Z": 12.2 + }, + { + "X": 29.95, + "Y": -30.0, + "Z": 12.2 + }, + { + "X": 29.95, + "Y": -60.0, + "Z": 12.2 + } + ] + }, + "Voids": [], + "Id": "127ac052-562e-4426-ab9e-5355d52ac176", + "Name": null + }, + "dcdd633f-7026-44fb-b22a-cc91a5a669c5": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 30.05, + "Y": -60.0, + "Z": 12.2 + }, + { + "X": 30.05, + "Y": -30.0, + "Z": 12.2 + }, + { + "X": 29.95, + "Y": -30.0, + "Z": 12.2 + }, + { + "X": 29.95, + "Y": -60.0, + "Z": 12.2 + } + ] + }, + "Voids": [], + "Id": "dcdd633f-7026-44fb-b22a-cc91a5a669c5", + "Name": null + }, + "a30e4b38-8d72-4c90-91fd-ad7c5537c1a5": { + "discriminator": "Elements.StandardWall", + "CenterLine": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 30.0, + "Y": -60.0, + "Z": 12.2 + }, + "End": { + "X": 30.0, + "Y": -30.0, + "Z": 12.2 + } + }, + "Thickness": 0.1, + "Height": 0.9, + "Profile": null, + "Openings": [], + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "dcdd633f-7026-44fb-b22a-cc91a5a669c5", + "Height": 0.9, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a30e4b38-8d72-4c90-91fd-ad7c5537c1a5", + "Name": null + }, + "2706767b-9a50-4dce-a27b-bfd6eeab47c5": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.00046121355018386746, + "Y": 0.009989358440917353, + "Z": 0.0 + }, + { + "X": 0.17729516376976184, + "Y": 0.009989358440917353, + "Z": 0.0 + }, + { + "X": 0.17729516376976184, + "Y": 3.8400106415590822, + "Z": 0.0 + }, + { + "X": 0.00046121355018386746, + "Y": 3.8400106415590822, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "2706767b-9a50-4dce-a27b-bfd6eeab47c5", + "Name": null + }, + "74838041-141c-495c-9314-34087448a901": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 30.0, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -30.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "2706767b-9a50-4dce-a27b-bfd6eeab47c5", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "74838041-141c-495c-9314-34087448a901", + "Name": "FP_2_0" + }, + "da2ff72e-69bb-4ab9-ae79-eaac9e9cd09b": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.004039326788379083, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 3.8408521128616115, + "Z": 0.0 + }, + { + "X": 0.004039326788379083, + "Y": 3.8408521128616115, + "Z": 0.0 + } + ] + }, + "Voids": [ + { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + } + ], + "Id": "da2ff72e-69bb-4ab9-ae79-eaac9e9cd09b", + "Name": null + }, + "591e087f-51cd-4fd2-aed2-d98ad5cf8c76": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 29.90139850262034, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -29.85209775393051, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "da2ff72e-69bb-4ab9-ae79-eaac9e9cd09b", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Name": "FP_2" + }, + "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 29.90139850262034, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -29.85209775393051, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6d255750-badf-48df-940f-c20cf683aedd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Name": null + }, + "f65f491c-403f-4b7e-93b2-c808f8183afa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 29.90139850262034, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -29.85209775393051, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "f65f491c-403f-4b7e-93b2-c808f8183afa", + "Name": "FP_2_1" + }, + "7664b42f-fca3-462d-acb7-527acc2f3355": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 29.90139850262034, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -29.85209775393051, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "7664b42f-fca3-462d-acb7-527acc2f3355", + "Name": "FG_2_1" + }, + "c86bcb8b-bfe2-4711-91e4-d154fef3048f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 28.958408169037448, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -28.43761225355618, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "c86bcb8b-bfe2-4711-91e4-d154fef3048f", + "Name": "FP_2_2" + }, + "ac1a1ff4-d732-412f-ad36-90b78c1c2e84": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 28.958408169037448, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -28.43761225355618, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "ac1a1ff4-d732-412f-ad36-90b78c1c2e84", + "Name": "FG_2_2" + }, + "e47d00ca-3ce1-4b3c-9967-16872d3a984a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 28.01541783545456, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -27.02312675318184, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "e47d00ca-3ce1-4b3c-9967-16872d3a984a", + "Name": "FP_2_3" + }, + "483d504c-175c-450d-8ec2-7a91e72800f1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 28.01541783545456, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -27.02312675318184, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "483d504c-175c-450d-8ec2-7a91e72800f1", + "Name": "FG_2_3" + }, + "6b59070c-a6d3-43a5-9e22-3efbe0755593": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 27.07242750187167, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -25.60864125280751, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "6b59070c-a6d3-43a5-9e22-3efbe0755593", + "Name": "FP_2_4" + }, + "d8d165d9-bd17-4846-924f-18549835fc88": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 27.07242750187167, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -25.60864125280751, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "d8d165d9-bd17-4846-924f-18549835fc88", + "Name": "FG_2_4" + }, + "eee3c451-53f1-430f-a958-bbf9cd5eca8e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 26.12943716828878, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -24.194155752433176, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "eee3c451-53f1-430f-a958-bbf9cd5eca8e", + "Name": "FP_2_5" + }, + "871b5c80-5ec3-409f-8ec2-c2afa0aa4c70": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 26.12943716828878, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -24.194155752433176, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "871b5c80-5ec3-409f-8ec2-c2afa0aa4c70", + "Name": "FG_2_5" + }, + "d06e878f-4cea-48d7-86ee-391efb375de2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 25.18644683470589, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -22.77967025205884, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "d06e878f-4cea-48d7-86ee-391efb375de2", + "Name": "FP_2_6" + }, + "67982918-1f3f-40d6-bacc-fda03a441d2f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 25.18644683470589, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -22.77967025205884, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "67982918-1f3f-40d6-bacc-fda03a441d2f", + "Name": "FG_2_6" + }, + "c122838d-3c79-4ce3-af56-012ce85d277f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 24.243456501123, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -21.365184751684502, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "c122838d-3c79-4ce3-af56-012ce85d277f", + "Name": "FP_2_7" + }, + "e8432b0d-2f96-41c7-8a50-3022a2ebcab6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 24.243456501123, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -21.365184751684502, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "e8432b0d-2f96-41c7-8a50-3022a2ebcab6", + "Name": "FG_2_7" + }, + "066cae10-2836-45b8-ae20-2bf6723d0d5d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 23.30046616754011, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -19.95069925131017, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "066cae10-2836-45b8-ae20-2bf6723d0d5d", + "Name": "FP_2_8" + }, + "a86e7979-75dc-441a-a0ac-51bcbf9a1f2f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 23.30046616754011, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -19.95069925131017, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "a86e7979-75dc-441a-a0ac-51bcbf9a1f2f", + "Name": "FG_2_8" + }, + "822e3915-4227-4909-8b80-8477f50c0aaf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 22.35747583395722, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -18.536213750935836, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "822e3915-4227-4909-8b80-8477f50c0aaf", + "Name": "FP_2_9" + }, + "ec488917-56b6-4950-964b-7a366702f7be": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 22.35747583395722, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -18.536213750935836, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "ec488917-56b6-4950-964b-7a366702f7be", + "Name": "FG_2_9" + }, + "3c377fab-3ee1-40cb-a757-677fb1b59472": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 21.414485500374333, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -17.121728250561503, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "3c377fab-3ee1-40cb-a757-677fb1b59472", + "Name": "FP_2_10" + }, + "5d47bbab-8081-43f4-a68f-940876a8dae5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 21.414485500374333, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -17.121728250561503, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "5d47bbab-8081-43f4-a68f-940876a8dae5", + "Name": "FG_2_10" + }, + "696c0a48-cf9b-460a-99e2-fee0431cc0ba": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 20.471495166791442, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -15.707242750187168, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "696c0a48-cf9b-460a-99e2-fee0431cc0ba", + "Name": "FP_2_11" + }, + "5cb72309-281d-463d-bcd7-004ce8dfdccd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 20.471495166791442, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -15.707242750187168, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "5cb72309-281d-463d-bcd7-004ce8dfdccd", + "Name": "FG_2_11" + }, + "101fdfc7-99bc-46c9-8658-f1a234eb5952": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 19.52850483320855, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -14.292757249812832, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "101fdfc7-99bc-46c9-8658-f1a234eb5952", + "Name": "FP_2_12" + }, + "e9cc85eb-dda6-4d70-bc02-7af4ec32c945": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 19.52850483320855, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -14.292757249812832, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "e9cc85eb-dda6-4d70-bc02-7af4ec32c945", + "Name": "FG_2_12" + }, + "d40beb6c-c563-4b25-889d-8619416087eb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 18.585514499625663, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -12.878271749438497, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "d40beb6c-c563-4b25-889d-8619416087eb", + "Name": "FP_2_13" + }, + "0a182e4b-e87d-481d-92d5-a4415ec70c9f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 18.585514499625663, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -12.878271749438497, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "0a182e4b-e87d-481d-92d5-a4415ec70c9f", + "Name": "FG_2_13" + }, + "1b30039a-80f0-415a-8c7a-ffc39edd24cd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 17.642524166042776, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -11.463786249064164, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "1b30039a-80f0-415a-8c7a-ffc39edd24cd", + "Name": "FP_2_14" + }, + "fa46b300-c42b-40e9-ab57-b1728ace6b1e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 17.642524166042776, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -11.463786249064164, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "fa46b300-c42b-40e9-ab57-b1728ace6b1e", + "Name": "FG_2_14" + }, + "91fed87a-7af0-43ab-a85c-cb2236fe9f6a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 16.699533832459885, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -10.049300748689827, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "91fed87a-7af0-43ab-a85c-cb2236fe9f6a", + "Name": "FP_2_15" + }, + "8808b4ad-abe9-42a3-9ad4-f11a560dd0c7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 16.699533832459885, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -10.049300748689827, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "8808b4ad-abe9-42a3-9ad4-f11a560dd0c7", + "Name": "FG_2_15" + }, + "9d3f234a-9cc0-4009-a216-0358fa0b6984": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 15.756543498876994, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -8.634815248315494, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "9d3f234a-9cc0-4009-a216-0358fa0b6984", + "Name": "FP_2_16" + }, + "576803ee-1140-4f06-b918-ef27f5e3eb9c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 15.756543498876994, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -8.634815248315494, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "576803ee-1140-4f06-b918-ef27f5e3eb9c", + "Name": "FG_2_16" + }, + "92f13d74-2f6f-4132-ac5b-f6416b8b3192": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 14.813553165294104, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -7.220329747941161, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "92f13d74-2f6f-4132-ac5b-f6416b8b3192", + "Name": "FP_2_17" + }, + "cf937e18-444b-45a2-a2d9-d749f44dd798": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 14.813553165294104, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -7.220329747941161, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "cf937e18-444b-45a2-a2d9-d749f44dd798", + "Name": "FG_2_17" + }, + "31f2e7f4-9f0b-4247-86af-7989ecf94b33": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 13.870562831711215, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -5.805844247566824, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "31f2e7f4-9f0b-4247-86af-7989ecf94b33", + "Name": "FP_2_18" + }, + "8dd7d0ac-6fc7-4600-b999-d0ca13abe64c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 13.870562831711215, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -5.805844247566824, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "8dd7d0ac-6fc7-4600-b999-d0ca13abe64c", + "Name": "FG_2_18" + }, + "4903c03f-c787-495e-b077-592803604a78": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 12.927572498128328, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -4.391358747192491, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "4903c03f-c787-495e-b077-592803604a78", + "Name": "FP_2_19" + }, + "50abdf88-9ff5-454b-8f1c-0b8b2c2d70fc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 12.927572498128328, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -4.391358747192491, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "50abdf88-9ff5-454b-8f1c-0b8b2c2d70fc", + "Name": "FG_2_19" + }, + "968abe86-708b-487c-b07d-78b8ce52d6f8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 11.984582164545436, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -2.9768732468181547, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "968abe86-708b-487c-b07d-78b8ce52d6f8", + "Name": "FP_2_20" + }, + "015970e8-a22a-4db0-a72b-3538ab38b3e2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 11.984582164545436, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -2.9768732468181547, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "015970e8-a22a-4db0-a72b-3538ab38b3e2", + "Name": "FG_2_20" + }, + "047efc0d-2de8-41c8-ab4a-a3aad98010d6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 11.041591830962549, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -1.5623877464438252, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "047efc0d-2de8-41c8-ab4a-a3aad98010d6", + "Name": "FP_2_21" + }, + "77520ac6-5f67-4c0b-bf93-3a6ffbb6bbae": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 11.041591830962549, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -1.5623877464438252, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "77520ac6-5f67-4c0b-bf93-3a6ffbb6bbae", + "Name": "FG_2_21" + }, + "489da548-3960-4d52-aa6b-aefb71a5daee": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.00046121355018386497, + "Y": 0.009989358440917353, + "Z": 0.0 + }, + { + "X": 0.17729516376976087, + "Y": 0.009989358440917353, + "Z": 0.0 + }, + { + "X": 0.17729516376976087, + "Y": 3.8400106415590822, + "Z": 0.0 + }, + { + "X": 0.00046121355018386497, + "Y": 3.8400106415590822, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "489da548-3960-4d52-aa6b-aefb71a5daee", + "Name": null + }, + "f36bf8c8-3804-4478-b942-cf1fc5e8b30b": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 10.09860149737966, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -0.14790224606948854, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "489da548-3960-4d52-aa6b-aefb71a5daee", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f36bf8c8-3804-4478-b942-cf1fc5e8b30b", + "Name": "FP_2_22" + }, + "82ddbd1b-03f1-4e88-8651-8ae795b8251f": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 30.041602514716892, + "Y": -29.972264990188737, + "Z": 12.2 + }, + { + "X": 10.041602514716892, + "Y": 0.02773500981126146, + "Z": 12.2 + }, + { + "X": 9.958397485283108, + "Y": -0.02773500981126146, + "Z": 12.2 + }, + { + "X": 29.958397485283108, + "Y": -30.027735009811263, + "Z": 12.2 + } + ] + }, + "Voids": [], + "Id": "82ddbd1b-03f1-4e88-8651-8ae795b8251f", + "Name": null + }, + "239576d7-74bc-4dc2-a0e1-5cca752035c1": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 30.041602514716892, + "Y": -29.972264990188737, + "Z": 12.2 + }, + { + "X": 10.041602514716892, + "Y": 0.02773500981126146, + "Z": 12.2 + }, + { + "X": 9.958397485283108, + "Y": -0.02773500981126146, + "Z": 12.2 + }, + { + "X": 29.958397485283108, + "Y": -30.027735009811263, + "Z": 12.2 + } + ] + }, + "Voids": [], + "Id": "239576d7-74bc-4dc2-a0e1-5cca752035c1", + "Name": null + }, + "9f386381-7c8b-4165-b28d-6301c2ecdd9b": { + "discriminator": "Elements.StandardWall", + "CenterLine": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 30.0, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 10.0, + "Y": 0.0, + "Z": 12.2 + } + }, + "Thickness": 0.1, + "Height": 0.9, + "Profile": null, + "Openings": [], + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "239576d7-74bc-4dc2-a0e1-5cca752035c1", + "Height": 0.9, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "9f386381-7c8b-4165-b28d-6301c2ecdd9b", + "Name": null + }, + "79977681-802b-4a15-a1dc-096f980cb3cc": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.0019121084163914713, + "Y": 0.009815489870809551, + "Z": 0.0 + }, + { + "X": 0.7480878915836086, + "Y": 0.009815489870809551, + "Z": 0.0 + }, + { + "X": 0.7480878915836086, + "Y": 3.8401845101291903, + "Z": 0.0 + }, + { + "X": 0.0019121084163914713, + "Y": 3.8401845101291903, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "79977681-802b-4a15-a1dc-096f980cb3cc", + "Name": null + }, + "8bddb413-9f4c-47c8-ac42-927f78558e7f": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 10.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "79977681-802b-4a15-a1dc-096f980cb3cc", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "8bddb413-9f4c-47c8-ac42-927f78558e7f", + "Name": "FP_2_0" + }, + "0ab3322d-2c36-4aa4-9189-eb0c1d60e8b4": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.004039326788379083, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 3.8408521128616115, + "Z": 0.0 + }, + { + "X": 0.004039326788379083, + "Y": 3.8408521128616115, + "Z": 0.0 + } + ] + }, + "Voids": [ + { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + } + ], + "Id": "0ab3322d-2c36-4aa4-9189-eb0c1d60e8b4", + "Name": null + }, + "abaaecea-32cf-428f-ab9e-a4ae53a95e0f": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.25, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "0ab3322d-2c36-4aa4-9189-eb0c1d60e8b4", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "abaaecea-32cf-428f-ab9e-a4ae53a95e0f", + "Name": "FP_2" + }, + "876b69b9-b9a0-4f8c-aa07-9abf1212de8a": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.25, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6d255750-badf-48df-940f-c20cf683aedd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "876b69b9-b9a0-4f8c-aa07-9abf1212de8a", + "Name": null + }, + "113037b7-fc1c-4d6d-a6f3-c3bb251d8b00": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "abaaecea-32cf-428f-ab9e-a4ae53a95e0f", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.25, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "113037b7-fc1c-4d6d-a6f3-c3bb251d8b00", + "Name": "FP_2_1" + }, + "6e5d4c1a-6602-4322-96ae-9323366ac24f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "876b69b9-b9a0-4f8c-aa07-9abf1212de8a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.25, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "6e5d4c1a-6602-4322-96ae-9323366ac24f", + "Name": "FG_2_1" + }, + "b7bb35c1-3afe-4ec3-8b53-2fd229e2bc07": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "abaaecea-32cf-428f-ab9e-a4ae53a95e0f", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 7.55, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "b7bb35c1-3afe-4ec3-8b53-2fd229e2bc07", + "Name": "FP_2_2" + }, + "9b46685c-8ba0-42df-912c-d9888a3f5164": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "876b69b9-b9a0-4f8c-aa07-9abf1212de8a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 7.55, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "9b46685c-8ba0-42df-912c-d9888a3f5164", + "Name": "FG_2_2" + }, + "0069b164-151f-405c-b49a-8605df4d7c44": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "abaaecea-32cf-428f-ab9e-a4ae53a95e0f", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 5.85, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "0069b164-151f-405c-b49a-8605df4d7c44", + "Name": "FP_2_3" + }, + "6dcb8e39-0bff-434c-a5f1-79fd5931e6e0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "876b69b9-b9a0-4f8c-aa07-9abf1212de8a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 5.85, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "6dcb8e39-0bff-434c-a5f1-79fd5931e6e0", + "Name": "FG_2_3" + }, + "23086d3a-e9db-4db0-8bf6-17f79c87d8b6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "abaaecea-32cf-428f-ab9e-a4ae53a95e0f", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 4.1499999999999995, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "23086d3a-e9db-4db0-8bf6-17f79c87d8b6", + "Name": "FP_2_4" + }, + "14d6a916-b23c-48f9-b451-a96e2fb9a9d1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "876b69b9-b9a0-4f8c-aa07-9abf1212de8a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 4.1499999999999995, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "14d6a916-b23c-48f9-b451-a96e2fb9a9d1", + "Name": "FG_2_4" + }, + "2a5f347e-48ca-4b84-9177-66a197870afe": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "abaaecea-32cf-428f-ab9e-a4ae53a95e0f", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.4499999999999993, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "2a5f347e-48ca-4b84-9177-66a197870afe", + "Name": "FP_2_5" + }, + "bf011475-55d3-4d39-891a-3dde8bb91902": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "876b69b9-b9a0-4f8c-aa07-9abf1212de8a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.4499999999999993, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "bf011475-55d3-4d39-891a-3dde8bb91902", + "Name": "FG_2_5" + }, + "375bad2e-c3c5-478c-9cdc-8952250c4593": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.0019121084163914713, + "Y": 0.009815489870809551, + "Z": 0.0 + }, + { + "X": 0.7480878915836086, + "Y": 0.009815489870809551, + "Z": 0.0 + }, + { + "X": 0.7480878915836086, + "Y": 3.8401845101291903, + "Z": 0.0 + }, + { + "X": 0.0019121084163914713, + "Y": 3.8401845101291903, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "375bad2e-c3c5-478c-9cdc-8952250c4593", + "Name": null + }, + "b63a5a73-d436-42ff-9182-ace944459eb0": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 0.75, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "375bad2e-c3c5-478c-9cdc-8952250c4593", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "b63a5a73-d436-42ff-9182-ace944459eb0", + "Name": "FP_2_6" + }, + "656564cb-14a9-455c-9135-c7adb0d1e033": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 10.0, + "Y": 0.05, + "Z": 12.2 + }, + { + "X": 0.0, + "Y": 0.05, + "Z": 12.2 + }, + { + "X": 0.0, + "Y": -0.05, + "Z": 12.2 + }, + { + "X": 10.0, + "Y": -0.05, + "Z": 12.2 + } + ] + }, + "Voids": [], + "Id": "656564cb-14a9-455c-9135-c7adb0d1e033", + "Name": null + }, + "0e0f96c7-e925-4bf3-b9c1-d4246c3bfc68": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 10.0, + "Y": 0.05, + "Z": 12.2 + }, + { + "X": 0.0, + "Y": 0.05, + "Z": 12.2 + }, + { + "X": 0.0, + "Y": -0.05, + "Z": 12.2 + }, + { + "X": 10.0, + "Y": -0.05, + "Z": 12.2 + } + ] + }, + "Voids": [], + "Id": "0e0f96c7-e925-4bf3-b9c1-d4246c3bfc68", + "Name": null + }, + "eea86c1a-b7ff-430e-9837-99716320fbac": { + "discriminator": "Elements.StandardWall", + "CenterLine": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.0, + "Y": 0.0, + "Z": 12.2 + }, + "End": { + "X": 0.0, + "Y": 0.0, + "Z": 12.2 + } + }, + "Thickness": 0.1, + "Height": 0.9, + "Profile": null, + "Openings": [], + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "0e0f96c7-e925-4bf3-b9c1-d4246c3bfc68", + "Height": 0.9, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "eea86c1a-b7ff-430e-9837-99716320fbac", + "Name": null + }, + "34f0f88d-ff79-4fd0-b3c9-e5a917df54e1": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.000647985949743371, + "Y": 0.009978983626048056, + "Z": 0.0 + }, + { + "X": 0.2493520140502531, + "Y": 0.009978983626048056, + "Z": 0.0 + }, + { + "X": 0.2493520140502531, + "Y": 3.8400210163739517, + "Z": 0.0 + }, + { + "X": 0.000647985949743371, + "Y": 3.8400210163739517, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "34f0f88d-ff79-4fd0-b3c9-e5a917df54e1", + "Name": null + }, + "974a7c17-acab-4194-b3a4-08fdd678aee3": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + 0.0, + -1.0, + 0.0, + 1.7763568394002506E-16, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "34f0f88d-ff79-4fd0-b3c9-e5a917df54e1", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "974a7c17-acab-4194-b3a4-08fdd678aee3", + "Name": "FP_2_0" + }, + "ef243317-f2b5-46ab-bfff-c5528ca81089": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.004039326788379083, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 3.8408521128616115, + "Z": 0.0 + }, + { + "X": 0.004039326788379083, + "Y": 3.8408521128616115, + "Z": 0.0 + } + ] + }, + "Voids": [ + { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + } + ], + "Id": "ef243317-f2b5-46ab-bfff-c5528ca81089", + "Name": null + }, + "08536181-6c6a-4811-bd8c-26e64e079485": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.4408920985005315E-17, + -1.0, + 0.0, + 1.7763568394002506E-16, + -0.24999999999999645, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "ef243317-f2b5-46ab-bfff-c5528ca81089", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "08536181-6c6a-4811-bd8c-26e64e079485", + "Name": "FP_2" + }, + "b8bb89a8-c302-4c75-ab3e-a1fe29251479": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.4408920985005315E-17, + -1.0, + 0.0, + 1.7763568394002506E-16, + -0.24999999999999645, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6d255750-badf-48df-940f-c20cf683aedd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Name": null + }, + "b1d55d72-1f5b-437a-87fe-318c9cc621c5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.4408920985005315E-17, + -1.0, + 0.0, + 1.7763568394002506E-16, + -0.24999999999999645, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "b1d55d72-1f5b-437a-87fe-318c9cc621c5", + "Name": "FP_2_1" + }, + "f2bd4c07-78c3-49ff-825d-561f16208835": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.4408920985005315E-17, + -1.0, + 0.0, + 1.7763568394002506E-16, + -0.24999999999999645, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "f2bd4c07-78c3-49ff-825d-561f16208835", + "Name": "FG_2_1" + }, + "e1d84665-102e-47be-a5e4-d55fa4740f85": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.4638958368304796E-16, + -1.0, + 0.0, + 1.7763568394002506E-16, + -1.9499999999999966, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "e1d84665-102e-47be-a5e4-d55fa4740f85", + "Name": "FP_2_2" + }, + "c5054ea4-df91-4232-94dc-1f466c5391ee": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.4638958368304796E-16, + -1.0, + 0.0, + 1.7763568394002506E-16, + -1.9499999999999966, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "c5054ea4-df91-4232-94dc-1f466c5391ee", + "Name": "FG_2_2" + }, + "2c653365-7ddc-42a3-9cf5-8a11c047fb88": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.483702463810906E-16, + -1.0, + 0.0, + 1.7763568394002506E-16, + -3.649999999999997, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "2c653365-7ddc-42a3-9cf5-8a11c047fb88", + "Name": "FP_2_3" + }, + "60e2ea78-784f-415f-843b-2302bd6c3d0e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.483702463810906E-16, + -1.0, + 0.0, + 1.7763568394002506E-16, + -3.649999999999997, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "60e2ea78-784f-415f-843b-2302bd6c3d0e", + "Name": "FG_2_3" + }, + "3c1c0697-4580-46a4-a0c7-66490b1f1361": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.503509090791333E-16, + -1.0, + 0.0, + 1.7763568394002506E-16, + -5.349999999999997, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "3c1c0697-4580-46a4-a0c7-66490b1f1361", + "Name": "FP_2_4" + }, + "ad4e1c3b-0420-4ccb-a562-3733aad8b4ad": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.503509090791333E-16, + -1.0, + 0.0, + 1.7763568394002506E-16, + -5.349999999999997, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "ad4e1c3b-0420-4ccb-a562-3733aad8b4ad", + "Name": "FG_2_4" + }, + "32a1eef2-0c7e-45bc-b691-3cba96f8d93b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.252331571777176E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -7.049999999999997, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "32a1eef2-0c7e-45bc-b691-3cba96f8d93b", + "Name": "FP_2_5" + }, + "32ba84d2-8c75-4f51-b5b7-a3b80a639dd8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.252331571777176E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -7.049999999999997, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "32ba84d2-8c75-4f51-b5b7-a3b80a639dd8", + "Name": "FG_2_5" + }, + "51fab152-d6ad-4d9d-8dc3-676938686b2b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.5543122344752184E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -8.749999999999996, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "51fab152-d6ad-4d9d-8dc3-676938686b2b", + "Name": "FP_2_6" + }, + "a8a36069-ea62-4618-9386-eab3a29da60f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.5543122344752184E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -8.749999999999996, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "a8a36069-ea62-4618-9386-eab3a29da60f", + "Name": "FG_2_6" + }, + "841e2e97-f1db-4490-a0d6-3e3f80dd0787": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.8562928971732612E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -10.449999999999998, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "841e2e97-f1db-4490-a0d6-3e3f80dd0787", + "Name": "FP_2_7" + }, + "2178036f-f8f3-47a7-91cf-5ba253234487": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.8562928971732612E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -10.449999999999998, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "2178036f-f8f3-47a7-91cf-5ba253234487", + "Name": "FG_2_7" + }, + "6cdd08ab-f483-461a-bcec-f5fded52ed5d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -2.1582735598713037E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -12.149999999999999, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "6cdd08ab-f483-461a-bcec-f5fded52ed5d", + "Name": "FP_2_8" + }, + "438264af-441b-4764-89de-e972d43c03b1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -2.1582735598713037E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -12.149999999999999, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "438264af-441b-4764-89de-e972d43c03b1", + "Name": "FG_2_8" + }, + "49a18462-c5f1-4dcb-a174-adc177f436d9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -2.4602542225693465E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -13.849999999999998, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "49a18462-c5f1-4dcb-a174-adc177f436d9", + "Name": "FP_2_9" + }, + "54a76ff6-d47c-4191-8826-0c42345205cc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -2.4602542225693465E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -13.849999999999998, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "54a76ff6-d47c-4191-8826-0c42345205cc", + "Name": "FG_2_9" + }, + "847d237b-8697-4bf8-a7b8-7554ba2654c9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -2.762234885267389E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -15.549999999999997, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "847d237b-8697-4bf8-a7b8-7554ba2654c9", + "Name": "FP_2_10" + }, + "419a5e92-9fb0-444d-b8bd-e3bb50865be3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -2.762234885267389E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -15.549999999999997, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "419a5e92-9fb0-444d-b8bd-e3bb50865be3", + "Name": "FG_2_10" + }, + "beee06eb-82db-40b5-a6d1-8a5cfafbf1d4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.0642155479654314E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -17.249999999999996, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "beee06eb-82db-40b5-a6d1-8a5cfafbf1d4", + "Name": "FP_2_11" + }, + "6c74635d-b842-4412-8c6f-27e4fc6284ba": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.0642155479654314E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -17.249999999999996, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "6c74635d-b842-4412-8c6f-27e4fc6284ba", + "Name": "FG_2_11" + }, + "13a9ddf9-fafd-4435-9ff1-6e3d0c608066": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.3661962106634743E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -18.95, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "13a9ddf9-fafd-4435-9ff1-6e3d0c608066", + "Name": "FP_2_12" + }, + "30ec85e0-f27a-45ff-b6d7-ffa4fdbf157e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.3661962106634743E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -18.95, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "30ec85e0-f27a-45ff-b6d7-ffa4fdbf157e", + "Name": "FG_2_12" + }, + "7c23bc28-f76a-4a30-958b-26c4def15b2e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.668176873361517E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -20.65, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "7c23bc28-f76a-4a30-958b-26c4def15b2e", + "Name": "FP_2_13" + }, + "9cb8a285-85ea-458e-a4a8-ebc29775b051": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.668176873361517E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -20.65, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "9cb8a285-85ea-458e-a4a8-ebc29775b051", + "Name": "FG_2_13" + }, + "c61da45c-2978-4ebc-9c0d-da4b85920219": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.9701575360595596E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -22.349999999999998, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "c61da45c-2978-4ebc-9c0d-da4b85920219", + "Name": "FP_2_14" + }, + "bbac01b9-d629-42ba-9a26-da7f74c3d996": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.9701575360595596E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -22.349999999999998, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "bbac01b9-d629-42ba-9a26-da7f74c3d996", + "Name": "FG_2_14" + }, + "fbd61f14-2a8d-4cfa-83a5-8ea35c8ef9f2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.272138198757602E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -24.05, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "fbd61f14-2a8d-4cfa-83a5-8ea35c8ef9f2", + "Name": "FP_2_15" + }, + "c736ded5-4360-40fc-9e68-4aa728d7b5c8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.272138198757602E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -24.05, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "c736ded5-4360-40fc-9e68-4aa728d7b5c8", + "Name": "FG_2_15" + }, + "0065b147-ae3d-42d2-99db-29c451a5b7b4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.574118861455645E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -25.75, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "0065b147-ae3d-42d2-99db-29c451a5b7b4", + "Name": "FP_2_16" + }, + "96fb346c-8aae-4c0b-906b-f6f7fbbd2c09": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.574118861455645E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -25.75, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "96fb346c-8aae-4c0b-906b-f6f7fbbd2c09", + "Name": "FG_2_16" + }, + "bc67b73e-d55a-499b-a177-e965d700e17c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.876099524153688E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -27.45, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "bc67b73e-d55a-499b-a177-e965d700e17c", + "Name": "FP_2_17" + }, + "665db63a-fed3-467a-83d8-1e9aa160b038": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.876099524153688E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -27.45, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "665db63a-fed3-467a-83d8-1e9aa160b038", + "Name": "FG_2_17" + }, + "20ccc4be-2e20-4f89-84d5-54495d70f1ce": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -5.17808018685173E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -29.15, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "20ccc4be-2e20-4f89-84d5-54495d70f1ce", + "Name": "FP_2_18" + }, + "950e2c86-8318-4538-aecb-beedfab1d529": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -5.17808018685173E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -29.15, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "950e2c86-8318-4538-aecb-beedfab1d529", + "Name": "FG_2_18" + }, + "912c0f6f-371d-45fc-bd4c-bfced1007114": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -5.480060849549773E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -30.849999999999998, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "912c0f6f-371d-45fc-bd4c-bfced1007114", + "Name": "FP_2_19" + }, + "db9a41a1-0f5e-47d7-9048-3699871976e2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -5.480060849549773E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -30.849999999999998, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "db9a41a1-0f5e-47d7-9048-3699871976e2", + "Name": "FG_2_19" + }, + "be4d4465-9195-4d2c-b001-c6b2c9b5d0dc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -5.782041512247815E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -32.55, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "be4d4465-9195-4d2c-b001-c6b2c9b5d0dc", + "Name": "FP_2_20" + }, + "95313eca-ed2c-4bb1-b4e8-d4fa7370387a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -5.782041512247815E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -32.55, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "95313eca-ed2c-4bb1-b4e8-d4fa7370387a", + "Name": "FG_2_20" + }, + "1cd13070-ec62-4884-a831-45118f2e6b0e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.0840221749458575E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -34.25, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "1cd13070-ec62-4884-a831-45118f2e6b0e", + "Name": "FP_2_21" + }, + "3be39739-0b8e-40a2-aeed-993a0df93ebc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.0840221749458575E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -34.25, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "3be39739-0b8e-40a2-aeed-993a0df93ebc", + "Name": "FG_2_21" + }, + "f1cabba6-8a40-4af3-bfd9-34a6319dffd5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.3860028376439E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -35.95, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "f1cabba6-8a40-4af3-bfd9-34a6319dffd5", + "Name": "FP_2_22" + }, + "1fd1d0ef-56dd-4326-b991-e9c1ecb0d10d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.3860028376439E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -35.95, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "1fd1d0ef-56dd-4326-b991-e9c1ecb0d10d", + "Name": "FG_2_22" + }, + "96c714f4-a381-48f1-a59a-524ccbd54dda": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.687983500341943E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -37.650000000000006, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "96c714f4-a381-48f1-a59a-524ccbd54dda", + "Name": "FP_2_23" + }, + "a3012d1e-f1e5-4fe8-91b4-325ee85e7eb7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.687983500341943E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -37.650000000000006, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "a3012d1e-f1e5-4fe8-91b4-325ee85e7eb7", + "Name": "FG_2_23" + }, + "cfbf602a-04eb-48e4-8e00-1552c63a7399": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.989964163039985E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -39.349999999999994, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "cfbf602a-04eb-48e4-8e00-1552c63a7399", + "Name": "FP_2_24" + }, + "dd9ef9ff-4bcb-43ce-bb1d-90ced3ab6c91": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.989964163039985E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -39.349999999999994, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "dd9ef9ff-4bcb-43ce-bb1d-90ced3ab6c91", + "Name": "FG_2_24" + }, + "6374bbd1-dbb3-47a4-8932-b53da0013da0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -7.291944825738029E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -41.05, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "6374bbd1-dbb3-47a4-8932-b53da0013da0", + "Name": "FP_2_25" + }, + "5b64a384-1a36-44d9-8035-a3643e36889c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -7.291944825738029E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -41.05, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "5b64a384-1a36-44d9-8035-a3643e36889c", + "Name": "FG_2_25" + }, + "25baac25-4efe-4981-a3c1-9c75995b2b03": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -7.593925488436071E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -42.75, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "25baac25-4efe-4981-a3c1-9c75995b2b03", + "Name": "FP_2_26" + }, + "6df497f0-e19d-4cb7-be9a-65f7de93e46f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -7.593925488436071E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -42.75, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "6df497f0-e19d-4cb7-be9a-65f7de93e46f", + "Name": "FG_2_26" + }, + "c26bc564-a14b-4006-82d6-3b6f637d01af": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -7.895906151134114E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -44.45, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "c26bc564-a14b-4006-82d6-3b6f637d01af", + "Name": "FP_2_27" + }, + "e5ed615a-a482-425f-b06e-922bca5fd0fc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -7.895906151134114E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -44.45, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "e5ed615a-a482-425f-b06e-922bca5fd0fc", + "Name": "FG_2_27" + }, + "b0e745dd-bffe-4a0f-89db-209b00ddfa71": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -8.197886813832156E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -46.150000000000006, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "b0e745dd-bffe-4a0f-89db-209b00ddfa71", + "Name": "FP_2_28" + }, + "4eede944-ff83-4bec-b698-6fcd9c2699b1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -8.197886813832156E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -46.150000000000006, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "4eede944-ff83-4bec-b698-6fcd9c2699b1", + "Name": "FG_2_28" + }, + "74aa154b-c1fc-4e8a-9f40-9f023a93c838": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -8.499867476530199E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -47.85000000000001, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "74aa154b-c1fc-4e8a-9f40-9f023a93c838", + "Name": "FP_2_29" + }, + "cb474f73-1ffc-43e5-a34d-8161e65bbd7d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -8.499867476530199E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -47.85000000000001, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "cb474f73-1ffc-43e5-a34d-8161e65bbd7d", + "Name": "FG_2_29" + }, + "69df6c8d-a0f6-426d-8aed-759ee6081cab": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -8.801848139228241E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -49.55, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "69df6c8d-a0f6-426d-8aed-759ee6081cab", + "Name": "FP_2_30" + }, + "52337a1d-9758-41ec-b005-7573045a3b0a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -8.801848139228241E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -49.55, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "52337a1d-9758-41ec-b005-7573045a3b0a", + "Name": "FG_2_30" + }, + "6a82aceb-3658-4eaa-8ee5-accdf05bf31d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.103828801926285E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -51.25, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "6a82aceb-3658-4eaa-8ee5-accdf05bf31d", + "Name": "FP_2_31" + }, + "aa3bb25c-1177-40a0-9851-c40dd8cba4ec": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.103828801926285E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -51.25, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "aa3bb25c-1177-40a0-9851-c40dd8cba4ec", + "Name": "FG_2_31" + }, + "3b8eda14-9fae-414c-9b03-4bc73e003d43": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.405809464624326E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -52.95, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "3b8eda14-9fae-414c-9b03-4bc73e003d43", + "Name": "FP_2_32" + }, + "4b80a2a2-869c-40c2-8a57-0e4aea554e87": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.405809464624326E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -52.95, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "4b80a2a2-869c-40c2-8a57-0e4aea554e87", + "Name": "FG_2_32" + }, + "73b1e826-6346-4517-a108-82595e931acb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.70779012732237E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -54.650000000000006, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "73b1e826-6346-4517-a108-82595e931acb", + "Name": "FP_2_33" + }, + "ca3cc3e2-35a4-4e79-a700-fb2b847397d8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.70779012732237E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -54.650000000000006, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "ca3cc3e2-35a4-4e79-a700-fb2b847397d8", + "Name": "FG_2_33" + }, + "a7d63dc3-cd5d-428d-99ad-87c26f93bfbc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.0009770790020413E-14, + -1.0, + 0.0, + 1.7763568394002506E-16, + -56.35000000000001, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "a7d63dc3-cd5d-428d-99ad-87c26f93bfbc", + "Name": "FP_2_34" + }, + "c6ac0eeb-12fa-41ae-a16a-d4b7e1b97341": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.0009770790020413E-14, + -1.0, + 0.0, + 1.7763568394002506E-16, + -56.35000000000001, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "c6ac0eeb-12fa-41ae-a16a-d4b7e1b97341", + "Name": "FG_2_34" + }, + "69cf00be-24d0-4be1-ab1e-5e2510fbe719": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.0311751452718455E-14, + -1.0, + 0.0, + 1.7763568394002506E-16, + -58.05, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "69cf00be-24d0-4be1-ab1e-5e2510fbe719", + "Name": "FP_2_35" + }, + "8e8171ea-8497-4df7-927d-d1d4ef11f2a9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.0311751452718455E-14, + -1.0, + 0.0, + 1.7763568394002506E-16, + -58.05, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "8e8171ea-8497-4df7-927d-d1d4ef11f2a9", + "Name": "FG_2_35" + }, + "28b083a7-587e-430d-b743-513cc85803bb": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.0006479859497433802, + "Y": 0.009978983626048054, + "Z": 0.0 + }, + { + "X": 0.24935201405025662, + "Y": 0.009978983626048054, + "Z": 0.0 + }, + { + "X": 0.24935201405025662, + "Y": 3.8400210163739517, + "Z": 0.0 + }, + { + "X": 0.0006479859497433802, + "Y": 3.8400210163739517, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "28b083a7-587e-430d-b743-513cc85803bb", + "Name": null + }, + "0857c85c-c68e-48f6-85aa-15339337b58b": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.0613732115416497E-14, + -1.0, + 0.0, + 1.7763568394002506E-16, + -59.75, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "28b083a7-587e-430d-b743-513cc85803bb", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "0857c85c-c68e-48f6-85aa-15339337b58b", + "Name": "FP_2_36" + }, + "07d9283d-4cf3-43c2-841d-c82dc71d6760": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.05, + "Y": 8.881784197001254E-18, + "Z": 12.2 + }, + { + "X": -0.05000000000001066, + "Y": -60.0, + "Z": 12.2 + }, + { + "X": 0.049999999999989345, + "Y": -60.0, + "Z": 12.2 + }, + { + "X": 0.05, + "Y": -8.881784197001254E-18, + "Z": 12.2 + } + ] + }, + "Voids": [], + "Id": "07d9283d-4cf3-43c2-841d-c82dc71d6760", + "Name": null + }, + "7f810a61-7aa0-4d54-a9e3-a30c0181c9d7": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.05, + "Y": 8.881784197001254E-18, + "Z": 12.2 + }, + { + "X": -0.05000000000001066, + "Y": -60.0, + "Z": 12.2 + }, + { + "X": 0.049999999999989345, + "Y": -60.0, + "Z": 12.2 + }, + { + "X": 0.05, + "Y": -8.881784197001254E-18, + "Z": 12.2 + } + ] + }, + "Voids": [], + "Id": "7f810a61-7aa0-4d54-a9e3-a30c0181c9d7", + "Name": null + }, + "072bccf0-7255-4bc6-9fde-abdb3fee8fbd": { + "discriminator": "Elements.StandardWall", + "CenterLine": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 12.2 + }, + "End": { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 12.2 + } + }, + "Thickness": 0.1, + "Height": 0.9, + "Profile": null, + "Openings": [], + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "7f810a61-7aa0-4d54-a9e3-a30c0181c9d7", + "Height": 0.9, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "072bccf0-7255-4bc6-9fde-abdb3fee8fbd", + "Name": null + }, + "1bc34a74-5aff-4a89-967c-eaaace0b4d50": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "1bc34a74-5aff-4a89-967c-eaaace0b4d50", + "Name": null + }, + "7298d643-9049-4a2b-960d-ae775b50fd80": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.0, + "Green": 0.0, + "Blue": 0.0, + "Alpha": 1.0 + }, + "SpecularFactor": 0.0, + "GlossinessFactor": 0.0, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "EdgeDisplaySettings": null, + "Id": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Name": "black" + }, + "762b6141-87f5-4a25-b644-4b1c66d8d5e5": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -30.30278, + "Z": 0.0 + }, + "End": { + "X": 9.46482, + "Y": -1.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "1bc34a74-5aff-4a89-967c-eaaace0b4d50", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "1bc34a74-5aff-4a89-967c-eaaace0b4d50", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -30.30278, + "Z": 0.0 + }, + "End": { + "X": 9.46482, + "Y": -1.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "762b6141-87f5-4a25-b644-4b1c66d8d5e5", + "Name": null + }, + "d040523b-148a-41e3-8228-523e4597e8ca": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "d040523b-148a-41e3-8228-523e4597e8ca", + "Name": null + }, + "487b40b2-a5dc-4e3d-aeba-6c49a79e00e1": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -30.30278, + "Z": 2.25 + }, + "End": { + "X": 9.46482, + "Y": -1.0, + "Z": 2.25 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "d040523b-148a-41e3-8228-523e4597e8ca", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "d040523b-148a-41e3-8228-523e4597e8ca", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -30.30278, + "Z": 2.25 + }, + "End": { + "X": 9.46482, + "Y": -1.0, + "Z": 2.25 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "487b40b2-a5dc-4e3d-aeba-6c49a79e00e1", + "Name": null + }, + "da794247-52d7-4137-8f6a-2ea2b0d321b6": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "da794247-52d7-4137-8f6a-2ea2b0d321b6", + "Name": null + }, + "5c0f8c0e-0318-43fe-bb17-4764d0d2cb61": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -30.30278, + "Z": 4.5 + }, + "End": { + "X": 9.46482, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "da794247-52d7-4137-8f6a-2ea2b0d321b6", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "da794247-52d7-4137-8f6a-2ea2b0d321b6", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -30.30278, + "Z": 4.5 + }, + "End": { + "X": 9.46482, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "5c0f8c0e-0318-43fe-bb17-4764d0d2cb61", + "Name": null + }, + "2b1e23eb-e5f9-430d-9fa1-d4539e09c134": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "2b1e23eb-e5f9-430d-9fa1-d4539e09c134", + "Name": null + }, + "c568286c-ae77-4d5b-a07e-72bcec1b5a25": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -30.30278, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -30.30278, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "2b1e23eb-e5f9-430d-9fa1-d4539e09c134", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "2b1e23eb-e5f9-430d-9fa1-d4539e09c134", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -30.30278, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -30.30278, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "c568286c-ae77-4d5b-a07e-72bcec1b5a25", + "Name": null + }, + "4a8f40c9-33ea-499c-9ea8-348bd2b41430": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "4a8f40c9-33ea-499c-9ea8-348bd2b41430", + "Name": null + }, + "1d593e24-b5ed-4a27-9a8d-d5b7c364b25a": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 28.16794990224245, + "Y": -29.054704427439727, + "Z": 0.0 + }, + "End": { + "X": 28.16794990224245, + "Y": -29.054704427439727, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "4a8f40c9-33ea-499c-9ea8-348bd2b41430", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "4a8f40c9-33ea-499c-9ea8-348bd2b41430", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 28.16794990224245, + "Y": -29.054704427439727, + "Z": 0.0 + }, + "End": { + "X": 28.16794990224245, + "Y": -29.054704427439727, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "1d593e24-b5ed-4a27-9a8d-d5b7c364b25a", + "Name": null + }, + "fdd95142-0ed3-48b4-98fe-98396287d17b": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "fdd95142-0ed3-48b4-98fe-98396287d17b", + "Name": null + }, + "80717812-352e-48cd-b0be-4ed3b11e16e9": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.3358998044849, + "Y": -27.806628854879452, + "Z": 0.0 + }, + "End": { + "X": 27.3358998044849, + "Y": -27.806628854879452, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "fdd95142-0ed3-48b4-98fe-98396287d17b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "fdd95142-0ed3-48b4-98fe-98396287d17b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.3358998044849, + "Y": -27.806628854879452, + "Z": 0.0 + }, + "End": { + "X": 27.3358998044849, + "Y": -27.806628854879452, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "80717812-352e-48cd-b0be-4ed3b11e16e9", + "Name": null + }, + "3ff6d73e-4946-478e-bfde-0645ad9893b9": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "3ff6d73e-4946-478e-bfde-0645ad9893b9", + "Name": null + }, + "7d57375c-c364-4c05-b9c7-9d384449a3e5": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.50384970672735, + "Y": -26.55855328231918, + "Z": 0.0 + }, + "End": { + "X": 26.50384970672735, + "Y": -26.55855328231918, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "3ff6d73e-4946-478e-bfde-0645ad9893b9", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "3ff6d73e-4946-478e-bfde-0645ad9893b9", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.50384970672735, + "Y": -26.55855328231918, + "Z": 0.0 + }, + "End": { + "X": 26.50384970672735, + "Y": -26.55855328231918, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "7d57375c-c364-4c05-b9c7-9d384449a3e5", + "Name": null + }, + "4d138a3d-8ee2-494d-a1b2-8acb5782a8c6": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "4d138a3d-8ee2-494d-a1b2-8acb5782a8c6", + "Name": null + }, + "1b57cf87-0e10-4adb-afb4-580f95d5b2a8": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 25.6717996089698, + "Y": -25.31047770975891, + "Z": 0.0 + }, + "End": { + "X": 25.6717996089698, + "Y": -25.31047770975891, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "4d138a3d-8ee2-494d-a1b2-8acb5782a8c6", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "4d138a3d-8ee2-494d-a1b2-8acb5782a8c6", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 25.6717996089698, + "Y": -25.31047770975891, + "Z": 0.0 + }, + "End": { + "X": 25.6717996089698, + "Y": -25.31047770975891, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "1b57cf87-0e10-4adb-afb4-580f95d5b2a8", + "Name": null + }, + "95242f67-a116-48c8-8471-b1f9e191d1a7": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "95242f67-a116-48c8-8471-b1f9e191d1a7", + "Name": null + }, + "30c921b3-278d-43b5-bc6e-25b63df5181d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.83974951121225, + "Y": -24.06240213719864, + "Z": 0.0 + }, + "End": { + "X": 24.83974951121225, + "Y": -24.06240213719864, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "95242f67-a116-48c8-8471-b1f9e191d1a7", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "95242f67-a116-48c8-8471-b1f9e191d1a7", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.83974951121225, + "Y": -24.06240213719864, + "Z": 0.0 + }, + "End": { + "X": 24.83974951121225, + "Y": -24.06240213719864, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "30c921b3-278d-43b5-bc6e-25b63df5181d", + "Name": null + }, + "9459bd17-3c8e-46e9-8895-7bfc3adbea34": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "9459bd17-3c8e-46e9-8895-7bfc3adbea34", + "Name": null + }, + "74e505aa-c39e-4a87-a5d0-cee2c496ed6c": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.007699413454702, + "Y": -22.814326564638364, + "Z": 0.0 + }, + "End": { + "X": 24.007699413454702, + "Y": -22.814326564638364, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "9459bd17-3c8e-46e9-8895-7bfc3adbea34", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "9459bd17-3c8e-46e9-8895-7bfc3adbea34", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.007699413454702, + "Y": -22.814326564638364, + "Z": 0.0 + }, + "End": { + "X": 24.007699413454702, + "Y": -22.814326564638364, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "74e505aa-c39e-4a87-a5d0-cee2c496ed6c", + "Name": null + }, + "f2203fd5-75e1-4284-abb2-638463500c12": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "f2203fd5-75e1-4284-abb2-638463500c12", + "Name": null + }, + "197adfd3-8e92-46d9-a7b6-4ce045875a1f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.17564931569715, + "Y": -21.566250992078093, + "Z": 0.0 + }, + "End": { + "X": 23.17564931569715, + "Y": -21.566250992078093, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "f2203fd5-75e1-4284-abb2-638463500c12", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "f2203fd5-75e1-4284-abb2-638463500c12", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.17564931569715, + "Y": -21.566250992078093, + "Z": 0.0 + }, + "End": { + "X": 23.17564931569715, + "Y": -21.566250992078093, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "197adfd3-8e92-46d9-a7b6-4ce045875a1f", + "Name": null + }, + "c6deb3be-8d83-4ddc-a246-38b190d088f9": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "c6deb3be-8d83-4ddc-a246-38b190d088f9", + "Name": null + }, + "2f01d0c4-9958-475e-98d9-24976578050e": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.343599217939598, + "Y": -20.31817541951782, + "Z": 0.0 + }, + "End": { + "X": 22.343599217939598, + "Y": -20.31817541951782, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "c6deb3be-8d83-4ddc-a246-38b190d088f9", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "c6deb3be-8d83-4ddc-a246-38b190d088f9", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.343599217939598, + "Y": -20.31817541951782, + "Z": 0.0 + }, + "End": { + "X": 22.343599217939598, + "Y": -20.31817541951782, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "2f01d0c4-9958-475e-98d9-24976578050e", + "Name": null + }, + "20cc3180-ef20-4ff7-82c0-ec2be19092c6": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "20cc3180-ef20-4ff7-82c0-ec2be19092c6", + "Name": null + }, + "db2fe5a6-e358-4f1b-aac2-b37a8fab6887": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.51154912018205, + "Y": -19.070099846957547, + "Z": 0.0 + }, + "End": { + "X": 21.51154912018205, + "Y": -19.070099846957547, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "20cc3180-ef20-4ff7-82c0-ec2be19092c6", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "20cc3180-ef20-4ff7-82c0-ec2be19092c6", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.51154912018205, + "Y": -19.070099846957547, + "Z": 0.0 + }, + "End": { + "X": 21.51154912018205, + "Y": -19.070099846957547, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "db2fe5a6-e358-4f1b-aac2-b37a8fab6887", + "Name": null + }, + "8fd2c859-20e3-40f0-b1b8-38c0cc1a363d": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "8fd2c859-20e3-40f0-b1b8-38c0cc1a363d", + "Name": null + }, + "d77ce8e5-6af1-4f19-9be2-42cf74458942": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 20.6794990224245, + "Y": -17.822024274397275, + "Z": 0.0 + }, + "End": { + "X": 20.6794990224245, + "Y": -17.822024274397275, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "8fd2c859-20e3-40f0-b1b8-38c0cc1a363d", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "8fd2c859-20e3-40f0-b1b8-38c0cc1a363d", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 20.6794990224245, + "Y": -17.822024274397275, + "Z": 0.0 + }, + "End": { + "X": 20.6794990224245, + "Y": -17.822024274397275, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "d77ce8e5-6af1-4f19-9be2-42cf74458942", + "Name": null + }, + "df06b204-3e10-489e-9104-0cb77222d57d": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "df06b204-3e10-489e-9104-0cb77222d57d", + "Name": null + }, + "ff9c620c-b1d3-4494-ad63-dd6371db654d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.84744892466695, + "Y": -16.573948701837004, + "Z": 0.0 + }, + "End": { + "X": 19.84744892466695, + "Y": -16.573948701837004, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "df06b204-3e10-489e-9104-0cb77222d57d", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "df06b204-3e10-489e-9104-0cb77222d57d", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.84744892466695, + "Y": -16.573948701837004, + "Z": 0.0 + }, + "End": { + "X": 19.84744892466695, + "Y": -16.573948701837004, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "ff9c620c-b1d3-4494-ad63-dd6371db654d", + "Name": null + }, + "8d99beec-8b2d-4f51-b5e0-e3426509070d": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "8d99beec-8b2d-4f51-b5e0-e3426509070d", + "Name": null + }, + "c6dbf26e-d595-4cbd-b80e-4b7a81847fd1": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.0153988269094, + "Y": -15.325873129276731, + "Z": 0.0 + }, + "End": { + "X": 19.0153988269094, + "Y": -15.325873129276731, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "8d99beec-8b2d-4f51-b5e0-e3426509070d", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "8d99beec-8b2d-4f51-b5e0-e3426509070d", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.0153988269094, + "Y": -15.325873129276731, + "Z": 0.0 + }, + "End": { + "X": 19.0153988269094, + "Y": -15.325873129276731, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "c6dbf26e-d595-4cbd-b80e-4b7a81847fd1", + "Name": null + }, + "c354aa25-fee3-4bcc-aaa8-2dfa95e8c5c2": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "c354aa25-fee3-4bcc-aaa8-2dfa95e8c5c2", + "Name": null + }, + "f553c06a-c1b4-4344-b34f-3ad6f5f45c2a": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 18.183348729151852, + "Y": -14.077797556716458, + "Z": 0.0 + }, + "End": { + "X": 18.183348729151852, + "Y": -14.077797556716458, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "c354aa25-fee3-4bcc-aaa8-2dfa95e8c5c2", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "c354aa25-fee3-4bcc-aaa8-2dfa95e8c5c2", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 18.183348729151852, + "Y": -14.077797556716458, + "Z": 0.0 + }, + "End": { + "X": 18.183348729151852, + "Y": -14.077797556716458, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f553c06a-c1b4-4344-b34f-3ad6f5f45c2a", + "Name": null + }, + "40f030e9-02af-45f9-8772-0354f6e83f08": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "40f030e9-02af-45f9-8772-0354f6e83f08", + "Name": null + }, + "4c074df2-03b5-4381-822a-5380fdfb5394": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.3512986313943, + "Y": -12.829721984156187, + "Z": 0.0 + }, + "End": { + "X": 17.3512986313943, + "Y": -12.829721984156187, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "40f030e9-02af-45f9-8772-0354f6e83f08", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "40f030e9-02af-45f9-8772-0354f6e83f08", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.3512986313943, + "Y": -12.829721984156187, + "Z": 0.0 + }, + "End": { + "X": 17.3512986313943, + "Y": -12.829721984156187, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "4c074df2-03b5-4381-822a-5380fdfb5394", + "Name": null + }, + "b91f8f0d-86fa-423a-acd1-3ac26feb9a8b": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "b91f8f0d-86fa-423a-acd1-3ac26feb9a8b", + "Name": null + }, + "b0cd255e-db88-4188-bba8-36aacb8bf1ea": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.51924853363675, + "Y": -11.581646411595916, + "Z": 0.0 + }, + "End": { + "X": 16.51924853363675, + "Y": -11.581646411595916, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "b91f8f0d-86fa-423a-acd1-3ac26feb9a8b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "b91f8f0d-86fa-423a-acd1-3ac26feb9a8b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.51924853363675, + "Y": -11.581646411595916, + "Z": 0.0 + }, + "End": { + "X": 16.51924853363675, + "Y": -11.581646411595916, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "b0cd255e-db88-4188-bba8-36aacb8bf1ea", + "Name": null + }, + "e9d848e3-448d-4aae-b730-7b2432e02b37": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "e9d848e3-448d-4aae-b730-7b2432e02b37", + "Name": null + }, + "6bcd6fac-6c82-42a7-bf67-733575b82465": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 15.6871984358792, + "Y": -10.33357083903564, + "Z": 0.0 + }, + "End": { + "X": 15.6871984358792, + "Y": -10.33357083903564, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "e9d848e3-448d-4aae-b730-7b2432e02b37", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "e9d848e3-448d-4aae-b730-7b2432e02b37", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 15.6871984358792, + "Y": -10.33357083903564, + "Z": 0.0 + }, + "End": { + "X": 15.6871984358792, + "Y": -10.33357083903564, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "6bcd6fac-6c82-42a7-bf67-733575b82465", + "Name": null + }, + "dd083ba7-259b-47a7-8cc8-6f7e86ff1053": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "dd083ba7-259b-47a7-8cc8-6f7e86ff1053", + "Name": null + }, + "8524b05a-6662-4ab2-b3a9-975275ca55fd": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.85514833812165, + "Y": -9.08549526647537, + "Z": 0.0 + }, + "End": { + "X": 14.85514833812165, + "Y": -9.08549526647537, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "dd083ba7-259b-47a7-8cc8-6f7e86ff1053", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "dd083ba7-259b-47a7-8cc8-6f7e86ff1053", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.85514833812165, + "Y": -9.08549526647537, + "Z": 0.0 + }, + "End": { + "X": 14.85514833812165, + "Y": -9.08549526647537, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "8524b05a-6662-4ab2-b3a9-975275ca55fd", + "Name": null + }, + "36f75b30-c3e4-42e7-ab8b-7847588a7b86": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "36f75b30-c3e4-42e7-ab8b-7847588a7b86", + "Name": null + }, + "652c18fd-4626-4acf-ab4a-8e2b2193be04": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.0230982403641, + "Y": -7.837419693915098, + "Z": 0.0 + }, + "End": { + "X": 14.0230982403641, + "Y": -7.837419693915098, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "36f75b30-c3e4-42e7-ab8b-7847588a7b86", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "36f75b30-c3e4-42e7-ab8b-7847588a7b86", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.0230982403641, + "Y": -7.837419693915098, + "Z": 0.0 + }, + "End": { + "X": 14.0230982403641, + "Y": -7.837419693915098, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "652c18fd-4626-4acf-ab4a-8e2b2193be04", + "Name": null + }, + "7ba7bc46-63a5-4d3f-a90a-708a99118dca": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "7ba7bc46-63a5-4d3f-a90a-708a99118dca", + "Name": null + }, + "f31c9cbe-39c6-4407-a110-872841a8b6e3": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 13.19104814260655, + "Y": -6.589344121354824, + "Z": 0.0 + }, + "End": { + "X": 13.19104814260655, + "Y": -6.589344121354824, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "7ba7bc46-63a5-4d3f-a90a-708a99118dca", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "7ba7bc46-63a5-4d3f-a90a-708a99118dca", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 13.19104814260655, + "Y": -6.589344121354824, + "Z": 0.0 + }, + "End": { + "X": 13.19104814260655, + "Y": -6.589344121354824, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f31c9cbe-39c6-4407-a110-872841a8b6e3", + "Name": null + }, + "7867cf66-2d50-4cfe-b219-b56314314a2c": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "7867cf66-2d50-4cfe-b219-b56314314a2c", + "Name": null + }, + "f7ec8249-114b-47d6-a1c0-bb61382fe1f0": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.358998044848999, + "Y": -5.341268548794552, + "Z": 0.0 + }, + "End": { + "X": 12.358998044848999, + "Y": -5.341268548794552, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "7867cf66-2d50-4cfe-b219-b56314314a2c", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "7867cf66-2d50-4cfe-b219-b56314314a2c", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.358998044848999, + "Y": -5.341268548794552, + "Z": 0.0 + }, + "End": { + "X": 12.358998044848999, + "Y": -5.341268548794552, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f7ec8249-114b-47d6-a1c0-bb61382fe1f0", + "Name": null + }, + "6964f996-efc6-4016-9711-b2b90f055904": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "6964f996-efc6-4016-9711-b2b90f055904", + "Name": null + }, + "fcac37e6-333c-4e32-9911-c54f1a7ba929": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 11.526947947091447, + "Y": -4.093192976234278, + "Z": 0.0 + }, + "End": { + "X": 11.526947947091447, + "Y": -4.093192976234278, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "6964f996-efc6-4016-9711-b2b90f055904", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "6964f996-efc6-4016-9711-b2b90f055904", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 11.526947947091447, + "Y": -4.093192976234278, + "Z": 0.0 + }, + "End": { + "X": 11.526947947091447, + "Y": -4.093192976234278, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "fcac37e6-333c-4e32-9911-c54f1a7ba929", + "Name": null + }, + "fda32561-7d07-475a-8956-957c0f46b55a": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "fda32561-7d07-475a-8956-957c0f46b55a", + "Name": null + }, + "5e2ad3eb-4222-462d-9208-d08151fd2fc0": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.694897849333898, + "Y": -2.8451174036740063, + "Z": 0.0 + }, + "End": { + "X": 10.694897849333898, + "Y": -2.8451174036740063, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "fda32561-7d07-475a-8956-957c0f46b55a", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "fda32561-7d07-475a-8956-957c0f46b55a", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.694897849333898, + "Y": -2.8451174036740063, + "Z": 0.0 + }, + "End": { + "X": 10.694897849333898, + "Y": -2.8451174036740063, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "5e2ad3eb-4222-462d-9208-d08151fd2fc0", + "Name": null + }, + "ac7a7672-70b8-4d91-aa6b-0e992f8ea94f": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ac7a7672-70b8-4d91-aa6b-0e992f8ea94f", + "Name": null + }, + "c8b66a3d-1440-40e5-9fd4-489ecfc58a18": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.86284775157635, + "Y": -1.597041831113735, + "Z": 0.0 + }, + "End": { + "X": 9.86284775157635, + "Y": -1.597041831113735, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ac7a7672-70b8-4d91-aa6b-0e992f8ea94f", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ac7a7672-70b8-4d91-aa6b-0e992f8ea94f", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.86284775157635, + "Y": -1.597041831113735, + "Z": 0.0 + }, + "End": { + "X": 9.86284775157635, + "Y": -1.597041831113735, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "c8b66a3d-1440-40e5-9fd4-489ecfc58a18", + "Name": null + }, + "7a2ec1bf-c88c-4878-a9b1-542019901232": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "7a2ec1bf-c88c-4878-a9b1-542019901232", + "Name": null + }, + "231c9fa6-72ae-4f42-b532-4d567a38d164": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.46482, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 9.46482, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "7a2ec1bf-c88c-4878-a9b1-542019901232", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "7a2ec1bf-c88c-4878-a9b1-542019901232", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.46482, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 9.46482, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "231c9fa6-72ae-4f42-b532-4d567a38d164", + "Name": null + }, + "28c5c2b1-d65c-4c46-8689-d651f50f07e7": { + "discriminator": "Elements.Material", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.20000000298023224 + }, + "SpecularFactor": 1.0, + "GlossinessFactor": 1.0, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "EdgeDisplaySettings": null, + "Id": "28c5c2b1-d65c-4c46-8689-d651f50f07e7", + "Name": "glass" + }, + "e32262e9-1265-434b-a7e4-b92de71603f7": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 29.0, + "Y": -30.30278, + "Z": 0.0 + }, + { + "X": 9.46482, + "Y": -1.0, + "Z": 0.0 + }, + { + "X": 9.46482, + "Y": -1.0, + "Z": 4.5 + }, + { + "X": 29.0, + "Y": -30.30278, + "Z": 4.5 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "28c5c2b1-d65c-4c46-8689-d651f50f07e7", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 29.0, + "Y": -30.30278, + "Z": 0.0 + }, + { + "X": 9.46482, + "Y": -1.0, + "Z": 0.0 + }, + { + "X": 9.46482, + "Y": -1.0, + "Z": 4.5 + }, + { + "X": 29.0, + "Y": -30.30278, + "Z": 4.5 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "e32262e9-1265-434b-a7e4-b92de71603f7", + "Name": null + }, + "873755b5-bd57-4001-bdba-4f3d00e2c138": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "873755b5-bd57-4001-bdba-4f3d00e2c138", + "Name": null + }, + "a086b5a3-8ec5-4c43-9b34-53e9cefec988": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.46482, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -1.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "873755b5-bd57-4001-bdba-4f3d00e2c138", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "873755b5-bd57-4001-bdba-4f3d00e2c138", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.46482, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -1.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a086b5a3-8ec5-4c43-9b34-53e9cefec988", + "Name": null + }, + "8b17641e-148a-4f78-95bb-de6b23673222": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "8b17641e-148a-4f78-95bb-de6b23673222", + "Name": null + }, + "0299a21c-b0a7-4499-810b-658db2bfd743": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.46482, + "Y": -1.0, + "Z": 2.25 + }, + "End": { + "X": 1.0, + "Y": -1.0, + "Z": 2.25 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "8b17641e-148a-4f78-95bb-de6b23673222", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "8b17641e-148a-4f78-95bb-de6b23673222", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.46482, + "Y": -1.0, + "Z": 2.25 + }, + "End": { + "X": 1.0, + "Y": -1.0, + "Z": 2.25 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "0299a21c-b0a7-4499-810b-658db2bfd743", + "Name": null + }, + "5ff005b5-9155-4f86-97f8-91aa7d6b6d8e": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "5ff005b5-9155-4f86-97f8-91aa7d6b6d8e", + "Name": null + }, + "d3288cc4-721c-4165-8a82-4327f627e3f6": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.46482, + "Y": -1.0, + "Z": 4.5 + }, + "End": { + "X": 1.0, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "5ff005b5-9155-4f86-97f8-91aa7d6b6d8e", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "5ff005b5-9155-4f86-97f8-91aa7d6b6d8e", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.46482, + "Y": -1.0, + "Z": 4.5 + }, + "End": { + "X": 1.0, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "d3288cc4-721c-4165-8a82-4327f627e3f6", + "Name": null + }, + "6d7b3f8e-7b13-4c90-91b4-3532190b49aa": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "6d7b3f8e-7b13-4c90-91b4-3532190b49aa", + "Name": null + }, + "cc2d3346-1524-4db3-bb09-4f9f1d32c768": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.46482, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 9.46482, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "6d7b3f8e-7b13-4c90-91b4-3532190b49aa", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "6d7b3f8e-7b13-4c90-91b4-3532190b49aa", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.46482, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 9.46482, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "cc2d3346-1524-4db3-bb09-4f9f1d32c768", + "Name": null + }, + "ab566acf-c5e2-49e6-b670-3a4d11e17f12": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ab566acf-c5e2-49e6-b670-3a4d11e17f12", + "Name": null + }, + "8aa1bd9a-d791-4671-92de-3c71eb32c622": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.96482, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 7.96482, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ab566acf-c5e2-49e6-b670-3a4d11e17f12", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ab566acf-c5e2-49e6-b670-3a4d11e17f12", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.96482, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 7.96482, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "8aa1bd9a-d791-4671-92de-3c71eb32c622", + "Name": null + }, + "ae067c09-4fca-435a-9023-4456f08a1648": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ae067c09-4fca-435a-9023-4456f08a1648", + "Name": null + }, + "146818c8-2a71-43b8-a8db-475aad247b99": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 6.46482, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 6.46482, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ae067c09-4fca-435a-9023-4456f08a1648", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ae067c09-4fca-435a-9023-4456f08a1648", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 6.46482, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 6.46482, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "146818c8-2a71-43b8-a8db-475aad247b99", + "Name": null + }, + "b32842b1-91c5-4efc-9d26-1b18a373e299": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "b32842b1-91c5-4efc-9d26-1b18a373e299", + "Name": null + }, + "42a579f6-0b75-4fe4-a06c-fea894313b8d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 4.96482, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 4.96482, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "b32842b1-91c5-4efc-9d26-1b18a373e299", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "b32842b1-91c5-4efc-9d26-1b18a373e299", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 4.96482, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 4.96482, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "42a579f6-0b75-4fe4-a06c-fea894313b8d", + "Name": null + }, + "79154e69-95bd-402f-88a6-1f747d936165": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "79154e69-95bd-402f-88a6-1f747d936165", + "Name": null + }, + "a0f9b4b6-ad00-4463-bfb3-74bb1f34590a": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.4648199999999996, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 3.4648199999999996, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "79154e69-95bd-402f-88a6-1f747d936165", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "79154e69-95bd-402f-88a6-1f747d936165", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.4648199999999996, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 3.4648199999999996, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a0f9b4b6-ad00-4463-bfb3-74bb1f34590a", + "Name": null + }, + "f23ddf57-3f4f-43b7-9dd3-3e05af8163c7": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "f23ddf57-3f4f-43b7-9dd3-3e05af8163c7", + "Name": null + }, + "2cce7278-649a-4ac8-b264-7aa81abe28bb": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.9648200000000005, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 1.9648200000000005, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "f23ddf57-3f4f-43b7-9dd3-3e05af8163c7", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "f23ddf57-3f4f-43b7-9dd3-3e05af8163c7", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.9648200000000005, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 1.9648200000000005, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "2cce7278-649a-4ac8-b264-7aa81abe28bb", + "Name": null + }, + "d104e5e4-4fd4-4c21-8b2c-94e0264fe90f": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "d104e5e4-4fd4-4c21-8b2c-94e0264fe90f", + "Name": null + }, + "79aef24c-6a5b-4385-b897-d8ddbb90806c": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "d104e5e4-4fd4-4c21-8b2c-94e0264fe90f", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "d104e5e4-4fd4-4c21-8b2c-94e0264fe90f", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "79aef24c-6a5b-4385-b897-d8ddbb90806c", + "Name": null + }, + "52cc745e-786a-463f-bf6b-36dd6e53601b": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 9.46482, + "Y": -1.0, + "Z": 0.0 + }, + { + "X": 1.0, + "Y": -1.0, + "Z": 0.0 + }, + { + "X": 1.0, + "Y": -1.0, + "Z": 4.5 + }, + { + "X": 9.46482, + "Y": -1.0, + "Z": 4.5 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "28c5c2b1-d65c-4c46-8689-d651f50f07e7", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 9.46482, + "Y": -1.0, + "Z": 0.0 + }, + { + "X": 1.0, + "Y": -1.0, + "Z": 0.0 + }, + { + "X": 1.0, + "Y": -1.0, + "Z": 4.5 + }, + { + "X": 9.46482, + "Y": -1.0, + "Z": 4.5 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "52cc745e-786a-463f-bf6b-36dd6e53601b", + "Name": null + }, + "4f58b206-79a4-4b92-a5a2-1fd92033d21c": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "4f58b206-79a4-4b92-a5a2-1fd92033d21c", + "Name": null + }, + "98ca7935-db5a-4eb4-948f-2b9f11a75218": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -59.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "4f58b206-79a4-4b92-a5a2-1fd92033d21c", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "4f58b206-79a4-4b92-a5a2-1fd92033d21c", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -59.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "98ca7935-db5a-4eb4-948f-2b9f11a75218", + "Name": null + }, + "09099962-1835-4692-984a-eb010bce4d0d": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "09099962-1835-4692-984a-eb010bce4d0d", + "Name": null + }, + "13d71bcf-21cf-4323-be9a-b1b70033f0a9": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -1.0, + "Z": 2.25 + }, + "End": { + "X": 1.0, + "Y": -59.0, + "Z": 2.25 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "09099962-1835-4692-984a-eb010bce4d0d", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "09099962-1835-4692-984a-eb010bce4d0d", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -1.0, + "Z": 2.25 + }, + "End": { + "X": 1.0, + "Y": -59.0, + "Z": 2.25 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "13d71bcf-21cf-4323-be9a-b1b70033f0a9", + "Name": null + }, + "48da2373-6a89-4352-bfef-bdda79713af5": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "48da2373-6a89-4352-bfef-bdda79713af5", + "Name": null + }, + "79efe3aa-b0d0-4c89-9026-9be1fe70dfeb": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -1.0, + "Z": 4.5 + }, + "End": { + "X": 1.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "48da2373-6a89-4352-bfef-bdda79713af5", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "48da2373-6a89-4352-bfef-bdda79713af5", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -1.0, + "Z": 4.5 + }, + "End": { + "X": 1.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "79efe3aa-b0d0-4c89-9026-9be1fe70dfeb", + "Name": null + }, + "8b5c4f68-a0db-45a9-9563-cf5e39c35ae1": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "8b5c4f68-a0db-45a9-9563-cf5e39c35ae1", + "Name": null + }, + "dbda0112-78e2-4cac-8ed2-f9e28cdc1757": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "8b5c4f68-a0db-45a9-9563-cf5e39c35ae1", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "8b5c4f68-a0db-45a9-9563-cf5e39c35ae1", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "dbda0112-78e2-4cac-8ed2-f9e28cdc1757", + "Name": null + }, + "a75ca899-2fa7-4f14-864b-1915867d735e": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "a75ca899-2fa7-4f14-864b-1915867d735e", + "Name": null + }, + "73ec5b23-bf5e-43ce-b76d-cd8d5658a060": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -2.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -2.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "a75ca899-2fa7-4f14-864b-1915867d735e", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "a75ca899-2fa7-4f14-864b-1915867d735e", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -2.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -2.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "73ec5b23-bf5e-43ce-b76d-cd8d5658a060", + "Name": null + }, + "0b0f7379-c1ba-4635-8c10-8225dced407e": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "0b0f7379-c1ba-4635-8c10-8225dced407e", + "Name": null + }, + "caa25bb6-ed6f-4dba-9556-4f7bd40f1dcc": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -4.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -4.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "0b0f7379-c1ba-4635-8c10-8225dced407e", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "0b0f7379-c1ba-4635-8c10-8225dced407e", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -4.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -4.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "caa25bb6-ed6f-4dba-9556-4f7bd40f1dcc", + "Name": null + }, + "3c27c5d5-0ca1-4813-9060-37b1c58e122e": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "3c27c5d5-0ca1-4813-9060-37b1c58e122e", + "Name": null + }, + "765ccb09-72df-4e60-a46d-1b9a649f1622": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -5.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -5.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "3c27c5d5-0ca1-4813-9060-37b1c58e122e", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "3c27c5d5-0ca1-4813-9060-37b1c58e122e", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -5.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -5.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "765ccb09-72df-4e60-a46d-1b9a649f1622", + "Name": null + }, + "064cf28a-febc-43b7-98f9-d361d0fee195": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "064cf28a-febc-43b7-98f9-d361d0fee195", + "Name": null + }, + "a94b553a-e0eb-47f6-afec-9ce0129f8f13": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -7.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -7.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "064cf28a-febc-43b7-98f9-d361d0fee195", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "064cf28a-febc-43b7-98f9-d361d0fee195", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -7.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -7.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a94b553a-e0eb-47f6-afec-9ce0129f8f13", + "Name": null + }, + "98f28be1-9e15-4c12-9dbb-a1b0e56e0415": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "98f28be1-9e15-4c12-9dbb-a1b0e56e0415", + "Name": null + }, + "b9e3bec8-324b-44c9-a9f3-3328035087b5": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -8.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -8.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "98f28be1-9e15-4c12-9dbb-a1b0e56e0415", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "98f28be1-9e15-4c12-9dbb-a1b0e56e0415", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -8.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -8.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "b9e3bec8-324b-44c9-a9f3-3328035087b5", + "Name": null + }, + "f262da15-7db4-4941-a974-b0c9b85b3eb8": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "f262da15-7db4-4941-a974-b0c9b85b3eb8", + "Name": null + }, + "c8e926c1-3d4e-4a6a-ad0d-4c21adc67e31": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -10.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "f262da15-7db4-4941-a974-b0c9b85b3eb8", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "f262da15-7db4-4941-a974-b0c9b85b3eb8", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -10.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "c8e926c1-3d4e-4a6a-ad0d-4c21adc67e31", + "Name": null + }, + "8287585e-5af4-471b-a102-26e73c4467ae": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "8287585e-5af4-471b-a102-26e73c4467ae", + "Name": null + }, + "977ee5dc-03c3-48a3-aea0-8ca7f889af5d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -11.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -11.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "8287585e-5af4-471b-a102-26e73c4467ae", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "8287585e-5af4-471b-a102-26e73c4467ae", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -11.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -11.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "977ee5dc-03c3-48a3-aea0-8ca7f889af5d", + "Name": null + }, + "ddf3c61c-7bc9-4536-bf74-d53d04c555d2": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ddf3c61c-7bc9-4536-bf74-d53d04c555d2", + "Name": null + }, + "8ba4ab78-b7f3-4d12-8a17-3d4c68aef25f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -13.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -13.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ddf3c61c-7bc9-4536-bf74-d53d04c555d2", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ddf3c61c-7bc9-4536-bf74-d53d04c555d2", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -13.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -13.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "8ba4ab78-b7f3-4d12-8a17-3d4c68aef25f", + "Name": null + }, + "af184823-d760-40d7-845d-50634fb99d7f": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "af184823-d760-40d7-845d-50634fb99d7f", + "Name": null + }, + "e0d4171c-0d1f-4f5c-9056-9b5a13eaabfe": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -14.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -14.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "af184823-d760-40d7-845d-50634fb99d7f", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "af184823-d760-40d7-845d-50634fb99d7f", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -14.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -14.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "e0d4171c-0d1f-4f5c-9056-9b5a13eaabfe", + "Name": null + }, + "3be64d1d-bbdc-4433-87da-a0e7eab0a67a": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "3be64d1d-bbdc-4433-87da-a0e7eab0a67a", + "Name": null + }, + "b43df5db-07eb-47ab-b91c-4b381504646a": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -16.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -16.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "3be64d1d-bbdc-4433-87da-a0e7eab0a67a", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "3be64d1d-bbdc-4433-87da-a0e7eab0a67a", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -16.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -16.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "b43df5db-07eb-47ab-b91c-4b381504646a", + "Name": null + }, + "14353ee1-8757-465f-a67e-998291a57331": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "14353ee1-8757-465f-a67e-998291a57331", + "Name": null + }, + "914e9d64-9da6-4ca4-92b6-3086885216e1": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -17.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -17.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "14353ee1-8757-465f-a67e-998291a57331", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "14353ee1-8757-465f-a67e-998291a57331", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -17.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -17.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "914e9d64-9da6-4ca4-92b6-3086885216e1", + "Name": null + }, + "8e2c3c6a-3fe1-4cb1-a5f4-261a2b7f2398": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "8e2c3c6a-3fe1-4cb1-a5f4-261a2b7f2398", + "Name": null + }, + "55e33382-ad47-421d-847d-dde998c7863f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -19.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -19.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "8e2c3c6a-3fe1-4cb1-a5f4-261a2b7f2398", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "8e2c3c6a-3fe1-4cb1-a5f4-261a2b7f2398", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -19.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -19.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "55e33382-ad47-421d-847d-dde998c7863f", + "Name": null + }, + "b6f25239-474d-4c71-a8cf-771187031726": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "b6f25239-474d-4c71-a8cf-771187031726", + "Name": null + }, + "d06dacf8-9884-4549-bf4a-0fc09e5a08e9": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -20.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -20.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "b6f25239-474d-4c71-a8cf-771187031726", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "b6f25239-474d-4c71-a8cf-771187031726", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -20.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -20.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "d06dacf8-9884-4549-bf4a-0fc09e5a08e9", + "Name": null + }, + "2fde2d11-e127-4dff-86f0-b7ae7115b33a": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "2fde2d11-e127-4dff-86f0-b7ae7115b33a", + "Name": null + }, + "d078a800-f45e-43d9-b5f8-3dae8cbd9e5a": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -22.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -22.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "2fde2d11-e127-4dff-86f0-b7ae7115b33a", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "2fde2d11-e127-4dff-86f0-b7ae7115b33a", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -22.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -22.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "d078a800-f45e-43d9-b5f8-3dae8cbd9e5a", + "Name": null + }, + "19b633f6-f1e1-4342-8b52-b75fff2f6963": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "19b633f6-f1e1-4342-8b52-b75fff2f6963", + "Name": null + }, + "b48c1065-144e-4a58-abd7-60b912ddb9e8": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -23.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -23.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "19b633f6-f1e1-4342-8b52-b75fff2f6963", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "19b633f6-f1e1-4342-8b52-b75fff2f6963", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -23.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -23.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "b48c1065-144e-4a58-abd7-60b912ddb9e8", + "Name": null + }, + "efe1be9b-b00f-4cc6-83f4-1caa2805cc04": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "efe1be9b-b00f-4cc6-83f4-1caa2805cc04", + "Name": null + }, + "8e4cb6d0-e364-48a1-9202-005a41f82e48": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -25.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "efe1be9b-b00f-4cc6-83f4-1caa2805cc04", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "efe1be9b-b00f-4cc6-83f4-1caa2805cc04", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -25.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "8e4cb6d0-e364-48a1-9202-005a41f82e48", + "Name": null + }, + "ec372921-a192-4e32-b211-f0f459e4e5f5": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ec372921-a192-4e32-b211-f0f459e4e5f5", + "Name": null + }, + "2002906c-4bf2-4fd8-98b1-b09c316ae6b2": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -26.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -26.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ec372921-a192-4e32-b211-f0f459e4e5f5", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ec372921-a192-4e32-b211-f0f459e4e5f5", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -26.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -26.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "2002906c-4bf2-4fd8-98b1-b09c316ae6b2", + "Name": null + }, + "89c787b9-1de8-4ac2-9149-574b59b5fc2d": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "89c787b9-1de8-4ac2-9149-574b59b5fc2d", + "Name": null + }, + "3faef0e0-1bdb-4723-9112-14e9ce104a05": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -28.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -28.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "89c787b9-1de8-4ac2-9149-574b59b5fc2d", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "89c787b9-1de8-4ac2-9149-574b59b5fc2d", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -28.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -28.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "3faef0e0-1bdb-4723-9112-14e9ce104a05", + "Name": null + }, + "a7e1efb1-5718-45da-85e4-bff82356b5e0": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "a7e1efb1-5718-45da-85e4-bff82356b5e0", + "Name": null + }, + "adee005d-903e-4ea2-8cd7-a9de5e975fed": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -29.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -29.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "a7e1efb1-5718-45da-85e4-bff82356b5e0", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "a7e1efb1-5718-45da-85e4-bff82356b5e0", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -29.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -29.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "adee005d-903e-4ea2-8cd7-a9de5e975fed", + "Name": null + }, + "764bf663-d0cb-41f0-94bc-0e639c6578fb": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "764bf663-d0cb-41f0-94bc-0e639c6578fb", + "Name": null + }, + "81f1b370-c69c-4907-a2a4-384f549d9af2": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -31.000000000000004, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -31.000000000000004, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "764bf663-d0cb-41f0-94bc-0e639c6578fb", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "764bf663-d0cb-41f0-94bc-0e639c6578fb", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -31.000000000000004, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -31.000000000000004, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "81f1b370-c69c-4907-a2a4-384f549d9af2", + "Name": null + }, + "dba3d51b-420b-4642-8fa5-e74a196aa430": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "dba3d51b-420b-4642-8fa5-e74a196aa430", + "Name": null + }, + "48d1db71-a215-4e19-adb2-8602f72dea04": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -32.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -32.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "dba3d51b-420b-4642-8fa5-e74a196aa430", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "dba3d51b-420b-4642-8fa5-e74a196aa430", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -32.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -32.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "48d1db71-a215-4e19-adb2-8602f72dea04", + "Name": null + }, + "1ceca958-0e42-4df7-b02f-aec37623a5aa": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "1ceca958-0e42-4df7-b02f-aec37623a5aa", + "Name": null + }, + "a6226dce-2682-4a53-b0ff-f990cb45f84d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -34.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -34.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "1ceca958-0e42-4df7-b02f-aec37623a5aa", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "1ceca958-0e42-4df7-b02f-aec37623a5aa", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -34.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -34.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a6226dce-2682-4a53-b0ff-f990cb45f84d", + "Name": null + }, + "0b09e749-de6e-4507-8d50-ca4729d7ea9c": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "0b09e749-de6e-4507-8d50-ca4729d7ea9c", + "Name": null + }, + "2528955e-325a-47e6-8e2f-586a7126954e": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -35.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -35.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "0b09e749-de6e-4507-8d50-ca4729d7ea9c", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "0b09e749-de6e-4507-8d50-ca4729d7ea9c", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -35.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -35.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "2528955e-325a-47e6-8e2f-586a7126954e", + "Name": null + }, + "b91b9895-4f96-4ab3-8532-103d7cc5ba18": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "b91b9895-4f96-4ab3-8532-103d7cc5ba18", + "Name": null + }, + "efad256b-b9e4-4559-b8ff-84894d218e57": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -37.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -37.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "b91b9895-4f96-4ab3-8532-103d7cc5ba18", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "b91b9895-4f96-4ab3-8532-103d7cc5ba18", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -37.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -37.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "efad256b-b9e4-4559-b8ff-84894d218e57", + "Name": null + }, + "4e2f26be-b780-4f22-9b92-df89a6185f73": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "4e2f26be-b780-4f22-9b92-df89a6185f73", + "Name": null + }, + "8370a8c3-1184-4b10-bd36-0c09d45f6183": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -38.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -38.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "4e2f26be-b780-4f22-9b92-df89a6185f73", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "4e2f26be-b780-4f22-9b92-df89a6185f73", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -38.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -38.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "8370a8c3-1184-4b10-bd36-0c09d45f6183", + "Name": null + }, + "53eccb2b-726a-40aa-a121-66dd0ddfe02f": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "53eccb2b-726a-40aa-a121-66dd0ddfe02f", + "Name": null + }, + "10a46ea4-e9e8-41ee-91dc-4b4a3964e067": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -40.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "53eccb2b-726a-40aa-a121-66dd0ddfe02f", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "53eccb2b-726a-40aa-a121-66dd0ddfe02f", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -40.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "10a46ea4-e9e8-41ee-91dc-4b4a3964e067", + "Name": null + }, + "5f2c2039-1468-4194-88e0-8948d0c8620b": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "5f2c2039-1468-4194-88e0-8948d0c8620b", + "Name": null + }, + "44707400-314f-4bd4-a8d2-3296885c519b": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -41.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -41.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "5f2c2039-1468-4194-88e0-8948d0c8620b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "5f2c2039-1468-4194-88e0-8948d0c8620b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -41.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -41.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "44707400-314f-4bd4-a8d2-3296885c519b", + "Name": null + }, + "a5dadcc3-70c6-42d6-9f88-4eaacfb86b21": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "a5dadcc3-70c6-42d6-9f88-4eaacfb86b21", + "Name": null + }, + "45c6fe6d-2b6e-4af5-9d23-726528cc6aba": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -43.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -43.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "a5dadcc3-70c6-42d6-9f88-4eaacfb86b21", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "a5dadcc3-70c6-42d6-9f88-4eaacfb86b21", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -43.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -43.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "45c6fe6d-2b6e-4af5-9d23-726528cc6aba", + "Name": null + }, + "fd72396f-adb0-4f63-a87f-85272e174594": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "fd72396f-adb0-4f63-a87f-85272e174594", + "Name": null + }, + "0a841f20-52f8-41cc-85fe-05c73503dff2": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -44.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -44.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "fd72396f-adb0-4f63-a87f-85272e174594", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "fd72396f-adb0-4f63-a87f-85272e174594", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -44.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -44.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "0a841f20-52f8-41cc-85fe-05c73503dff2", + "Name": null + }, + "cf0c046d-c4e3-414c-9be9-48eb84844feb": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "cf0c046d-c4e3-414c-9be9-48eb84844feb", + "Name": null + }, + "3bd0f885-8663-4fdd-b2cf-0b9bafc361e8": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -46.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -46.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "cf0c046d-c4e3-414c-9be9-48eb84844feb", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "cf0c046d-c4e3-414c-9be9-48eb84844feb", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -46.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -46.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "3bd0f885-8663-4fdd-b2cf-0b9bafc361e8", + "Name": null + }, + "97500fd2-d2c0-427a-8e12-3e20cb77b3f9": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "97500fd2-d2c0-427a-8e12-3e20cb77b3f9", + "Name": null + }, + "9383a6fd-80a5-48ce-bd40-0afcc9c1528f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -47.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -47.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "97500fd2-d2c0-427a-8e12-3e20cb77b3f9", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "97500fd2-d2c0-427a-8e12-3e20cb77b3f9", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -47.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -47.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "9383a6fd-80a5-48ce-bd40-0afcc9c1528f", + "Name": null + }, + "3be1abee-2ccb-4d66-ad8b-eccad3311f0b": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "3be1abee-2ccb-4d66-ad8b-eccad3311f0b", + "Name": null + }, + "a26296ed-6ec2-4208-8c0b-a38f444041ce": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -49.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -49.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "3be1abee-2ccb-4d66-ad8b-eccad3311f0b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "3be1abee-2ccb-4d66-ad8b-eccad3311f0b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -49.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -49.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a26296ed-6ec2-4208-8c0b-a38f444041ce", + "Name": null + }, + "98d4a0fe-e1a3-4386-9a81-0da7cc69259d": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "98d4a0fe-e1a3-4386-9a81-0da7cc69259d", + "Name": null + }, + "33d2a68e-e960-4c83-82a9-1c164fc8325a": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -50.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -50.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "98d4a0fe-e1a3-4386-9a81-0da7cc69259d", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "98d4a0fe-e1a3-4386-9a81-0da7cc69259d", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -50.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -50.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "33d2a68e-e960-4c83-82a9-1c164fc8325a", + "Name": null + }, + "1f072c1c-29a6-4e2b-9ac8-aa7dd914e84e": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "1f072c1c-29a6-4e2b-9ac8-aa7dd914e84e", + "Name": null + }, + "6b48e3ac-6c89-4b03-8ae7-9b8c8d54eb7b": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -52.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -52.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "1f072c1c-29a6-4e2b-9ac8-aa7dd914e84e", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "1f072c1c-29a6-4e2b-9ac8-aa7dd914e84e", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -52.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -52.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "6b48e3ac-6c89-4b03-8ae7-9b8c8d54eb7b", + "Name": null + }, + "0169fef7-7760-45d9-b1c4-cb8016f3359e": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "0169fef7-7760-45d9-b1c4-cb8016f3359e", + "Name": null + }, + "88b74a38-c861-47b8-b9bb-e6746cdac64e": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -53.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -53.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "0169fef7-7760-45d9-b1c4-cb8016f3359e", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "0169fef7-7760-45d9-b1c4-cb8016f3359e", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -53.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -53.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "88b74a38-c861-47b8-b9bb-e6746cdac64e", + "Name": null + }, + "08e99676-4ddc-45ef-94ec-8df764af493e": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "08e99676-4ddc-45ef-94ec-8df764af493e", + "Name": null + }, + "9d9d83d1-ed06-4c56-a60e-d1457b4679de": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -55.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "08e99676-4ddc-45ef-94ec-8df764af493e", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "08e99676-4ddc-45ef-94ec-8df764af493e", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -55.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "9d9d83d1-ed06-4c56-a60e-d1457b4679de", + "Name": null + }, + "cd470729-64f3-4b5c-9644-5f86ff6dcfab": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "cd470729-64f3-4b5c-9644-5f86ff6dcfab", + "Name": null + }, + "d1062adc-0b26-434f-865e-d55fb3791f6d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -56.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -56.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "cd470729-64f3-4b5c-9644-5f86ff6dcfab", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "cd470729-64f3-4b5c-9644-5f86ff6dcfab", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -56.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -56.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "d1062adc-0b26-434f-865e-d55fb3791f6d", + "Name": null + }, + "89d8fb5f-ad50-46c3-ac19-286178f292a9": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "89d8fb5f-ad50-46c3-ac19-286178f292a9", + "Name": null + }, + "f940ce60-af81-401e-b333-593aa7875a1d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -58.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -58.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "89d8fb5f-ad50-46c3-ac19-286178f292a9", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "89d8fb5f-ad50-46c3-ac19-286178f292a9", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -58.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -58.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f940ce60-af81-401e-b333-593aa7875a1d", + "Name": null + }, + "235e1733-465c-4664-9fe4-ac20397c6e75": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "235e1733-465c-4664-9fe4-ac20397c6e75", + "Name": null + }, + "e5309f74-a3ad-4f20-ab9a-8463d3e81298": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "235e1733-465c-4664-9fe4-ac20397c6e75", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "235e1733-465c-4664-9fe4-ac20397c6e75", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "e5309f74-a3ad-4f20-ab9a-8463d3e81298", + "Name": null + }, + "f7e5dfec-3daf-47c7-ae9e-5655d7873dfd": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 1.0, + "Y": -1.0, + "Z": 0.0 + }, + { + "X": 1.0, + "Y": -59.0, + "Z": 0.0 + }, + { + "X": 1.0, + "Y": -59.0, + "Z": 4.5 + }, + { + "X": 1.0, + "Y": -1.0, + "Z": 4.5 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "28c5c2b1-d65c-4c46-8689-d651f50f07e7", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 1.0, + "Y": -1.0, + "Z": 0.0 + }, + { + "X": 1.0, + "Y": -59.0, + "Z": 0.0 + }, + { + "X": 1.0, + "Y": -59.0, + "Z": 4.5 + }, + { + "X": 1.0, + "Y": -1.0, + "Z": 4.5 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f7e5dfec-3daf-47c7-ae9e-5655d7873dfd", + "Name": null + }, + "99b93bca-f665-4b73-9232-f7629bc8903c": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "99b93bca-f665-4b73-9232-f7629bc8903c", + "Name": null + }, + "debc3ff3-499f-4a0a-ab2b-7e41f6c8a127": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -59.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "99b93bca-f665-4b73-9232-f7629bc8903c", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "99b93bca-f665-4b73-9232-f7629bc8903c", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -59.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "debc3ff3-499f-4a0a-ab2b-7e41f6c8a127", + "Name": null + }, + "a0aa1b33-82f6-4edf-834f-79f3dbb94d93": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "a0aa1b33-82f6-4edf-834f-79f3dbb94d93", + "Name": null + }, + "e1a5504c-8f26-4964-9ac3-0620d3c21890": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -59.0, + "Z": 2.25 + }, + "End": { + "X": 29.0, + "Y": -59.0, + "Z": 2.25 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "a0aa1b33-82f6-4edf-834f-79f3dbb94d93", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "a0aa1b33-82f6-4edf-834f-79f3dbb94d93", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -59.0, + "Z": 2.25 + }, + "End": { + "X": 29.0, + "Y": -59.0, + "Z": 2.25 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "e1a5504c-8f26-4964-9ac3-0620d3c21890", + "Name": null + }, + "5328ebb2-dca0-491a-9687-d7bb12142603": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "5328ebb2-dca0-491a-9687-d7bb12142603", + "Name": null + }, + "38430b0c-a9fb-4d6c-b813-1ad286874e20": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -59.0, + "Z": 4.5 + }, + "End": { + "X": 29.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "5328ebb2-dca0-491a-9687-d7bb12142603", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "5328ebb2-dca0-491a-9687-d7bb12142603", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -59.0, + "Z": 4.5 + }, + "End": { + "X": 29.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "38430b0c-a9fb-4d6c-b813-1ad286874e20", + "Name": null + }, + "f9bcd9be-8496-49d5-a6ed-f463b3b32851": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "f9bcd9be-8496-49d5-a6ed-f463b3b32851", + "Name": null + }, + "db2a7ee2-30e1-4872-990d-b8eade1e400f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "f9bcd9be-8496-49d5-a6ed-f463b3b32851", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "f9bcd9be-8496-49d5-a6ed-f463b3b32851", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "db2a7ee2-30e1-4872-990d-b8eade1e400f", + "Name": null + }, + "b7ab6c92-74fc-493b-afb6-f003bcad7e0d": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "b7ab6c92-74fc-493b-afb6-f003bcad7e0d", + "Name": null + }, + "1eee6876-975a-4858-9e8f-b26a979bfdcd": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 2.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "b7ab6c92-74fc-493b-afb6-f003bcad7e0d", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "b7ab6c92-74fc-493b-afb6-f003bcad7e0d", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 2.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "1eee6876-975a-4858-9e8f-b26a979bfdcd", + "Name": null + }, + "4504c6bb-277f-45f5-a5b5-72b7bbd4bf07": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "4504c6bb-277f-45f5-a5b5-72b7bbd4bf07", + "Name": null + }, + "b37a14cc-a004-4efd-a369-33308aac95ea": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 4.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 4.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "4504c6bb-277f-45f5-a5b5-72b7bbd4bf07", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "4504c6bb-277f-45f5-a5b5-72b7bbd4bf07", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 4.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 4.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "b37a14cc-a004-4efd-a369-33308aac95ea", + "Name": null + }, + "264c70f2-92d2-4ced-9418-d3f3e0d00869": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "264c70f2-92d2-4ced-9418-d3f3e0d00869", + "Name": null + }, + "1e45ba9e-f242-4a00-94c7-b9e9733bdd45": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 5.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "264c70f2-92d2-4ced-9418-d3f3e0d00869", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "264c70f2-92d2-4ced-9418-d3f3e0d00869", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 5.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "1e45ba9e-f242-4a00-94c7-b9e9733bdd45", + "Name": null + }, + "661c04a6-72e2-49f8-83fe-8ca6b2deafd4": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "661c04a6-72e2-49f8-83fe-8ca6b2deafd4", + "Name": null + }, + "2fc57063-e4ed-4d29-974a-a1ad7d996651": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 7.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "661c04a6-72e2-49f8-83fe-8ca6b2deafd4", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "661c04a6-72e2-49f8-83fe-8ca6b2deafd4", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 7.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "2fc57063-e4ed-4d29-974a-a1ad7d996651", + "Name": null + }, + "ea92d924-3bc7-4237-828c-65d1ba9ee6ae": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ea92d924-3bc7-4237-828c-65d1ba9ee6ae", + "Name": null + }, + "24e6a070-25d6-4095-9e76-866864281b3a": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 8.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 8.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ea92d924-3bc7-4237-828c-65d1ba9ee6ae", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ea92d924-3bc7-4237-828c-65d1ba9ee6ae", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 8.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 8.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "24e6a070-25d6-4095-9e76-866864281b3a", + "Name": null + }, + "163532af-a140-4c8f-8b39-e0764a55593d": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "163532af-a140-4c8f-8b39-e0764a55593d", + "Name": null + }, + "d85eeb32-02a1-4ca9-991b-61f76fd1f36a": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 10.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "163532af-a140-4c8f-8b39-e0764a55593d", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "163532af-a140-4c8f-8b39-e0764a55593d", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 10.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "d85eeb32-02a1-4ca9-991b-61f76fd1f36a", + "Name": null + }, + "d3f661d6-cd69-4711-9538-a6ae9d198625": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "d3f661d6-cd69-4711-9538-a6ae9d198625", + "Name": null + }, + "11497673-a045-4ef2-8189-5c76ed57b80f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 11.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 11.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "d3f661d6-cd69-4711-9538-a6ae9d198625", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "d3f661d6-cd69-4711-9538-a6ae9d198625", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 11.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 11.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "11497673-a045-4ef2-8189-5c76ed57b80f", + "Name": null + }, + "5368af83-25ec-4fe8-90a6-4a59feee1dca": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "5368af83-25ec-4fe8-90a6-4a59feee1dca", + "Name": null + }, + "7c177cfe-558c-471e-89d3-48640dd3c040": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 13.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 13.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "5368af83-25ec-4fe8-90a6-4a59feee1dca", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "5368af83-25ec-4fe8-90a6-4a59feee1dca", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 13.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 13.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "7c177cfe-558c-471e-89d3-48640dd3c040", + "Name": null + }, + "c53979b0-1e96-4392-bd17-c3fb700c5139": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "c53979b0-1e96-4392-bd17-c3fb700c5139", + "Name": null + }, + "4b105f2a-fbea-4bda-a46c-732db0abf35b": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 14.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "c53979b0-1e96-4392-bd17-c3fb700c5139", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "c53979b0-1e96-4392-bd17-c3fb700c5139", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 14.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "4b105f2a-fbea-4bda-a46c-732db0abf35b", + "Name": null + }, + "95850dd9-34fc-452e-a377-ffffa110e6aa": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "95850dd9-34fc-452e-a377-ffffa110e6aa", + "Name": null + }, + "117e1e0a-81ab-43d6-ba70-5c1841bbf3d5": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "95850dd9-34fc-452e-a377-ffffa110e6aa", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "95850dd9-34fc-452e-a377-ffffa110e6aa", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "117e1e0a-81ab-43d6-ba70-5c1841bbf3d5", + "Name": null + }, + "e4a8d36e-1d20-4c8a-9ff4-33fad9e02af7": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "e4a8d36e-1d20-4c8a-9ff4-33fad9e02af7", + "Name": null + }, + "2cf5618f-3db7-46e0-bb4e-f66f6a4456f7": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 17.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "e4a8d36e-1d20-4c8a-9ff4-33fad9e02af7", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "e4a8d36e-1d20-4c8a-9ff4-33fad9e02af7", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 17.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "2cf5618f-3db7-46e0-bb4e-f66f6a4456f7", + "Name": null + }, + "82241029-8458-4e39-ae2a-ea929600d34b": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "82241029-8458-4e39-ae2a-ea929600d34b", + "Name": null + }, + "6b41dbbb-b702-4dbe-8a58-a90bbfe946d4": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 19.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "82241029-8458-4e39-ae2a-ea929600d34b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "82241029-8458-4e39-ae2a-ea929600d34b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 19.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "6b41dbbb-b702-4dbe-8a58-a90bbfe946d4", + "Name": null + }, + "e27c94ef-98eb-4164-824b-fd425dd621e7": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "e27c94ef-98eb-4164-824b-fd425dd621e7", + "Name": null + }, + "73ce5d53-22ed-4e8e-aa8c-af8f40697e4f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 20.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 20.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "e27c94ef-98eb-4164-824b-fd425dd621e7", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "e27c94ef-98eb-4164-824b-fd425dd621e7", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 20.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 20.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "73ce5d53-22ed-4e8e-aa8c-af8f40697e4f", + "Name": null + }, + "53715e85-82b0-4eeb-8630-6df8ab63ce63": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "53715e85-82b0-4eeb-8630-6df8ab63ce63", + "Name": null + }, + "4359b28c-320f-492e-acf7-7715ffae6c1e": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 22.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "53715e85-82b0-4eeb-8630-6df8ab63ce63", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "53715e85-82b0-4eeb-8630-6df8ab63ce63", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 22.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "4359b28c-320f-492e-acf7-7715ffae6c1e", + "Name": null + }, + "10a2ff40-5964-49ee-8467-2d7009918d19": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "10a2ff40-5964-49ee-8467-2d7009918d19", + "Name": null + }, + "9990420b-c525-4a06-b764-2871a76cf02f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 23.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "10a2ff40-5964-49ee-8467-2d7009918d19", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "10a2ff40-5964-49ee-8467-2d7009918d19", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 23.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "9990420b-c525-4a06-b764-2871a76cf02f", + "Name": null + }, + "c7a838fc-0027-4b73-b7f2-9c871af30c88": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "c7a838fc-0027-4b73-b7f2-9c871af30c88", + "Name": null + }, + "c43d2cc3-0831-463b-89c7-18cf855287f5": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 25.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 25.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "c7a838fc-0027-4b73-b7f2-9c871af30c88", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "c7a838fc-0027-4b73-b7f2-9c871af30c88", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 25.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 25.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "c43d2cc3-0831-463b-89c7-18cf855287f5", + "Name": null + }, + "7160f15b-b545-4f63-8eed-92e1084d6790": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "7160f15b-b545-4f63-8eed-92e1084d6790", + "Name": null + }, + "49605b00-caed-41dd-9307-d41da97301d6": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 26.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "7160f15b-b545-4f63-8eed-92e1084d6790", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "7160f15b-b545-4f63-8eed-92e1084d6790", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 26.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "49605b00-caed-41dd-9307-d41da97301d6", + "Name": null + }, + "df9196e3-81d7-4493-aea4-c9aadb27a367": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "df9196e3-81d7-4493-aea4-c9aadb27a367", + "Name": null + }, + "c0e83a06-514e-4977-baaa-6826bc32176b": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 28.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 28.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "df9196e3-81d7-4493-aea4-c9aadb27a367", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "df9196e3-81d7-4493-aea4-c9aadb27a367", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 28.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 28.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "c0e83a06-514e-4977-baaa-6826bc32176b", + "Name": null + }, + "ed90c76d-3289-43d9-a5a4-4108fb2bf580": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ed90c76d-3289-43d9-a5a4-4108fb2bf580", + "Name": null + }, + "a35bad36-7158-4d40-9889-3c0bc35865c2": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed90c76d-3289-43d9-a5a4-4108fb2bf580", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed90c76d-3289-43d9-a5a4-4108fb2bf580", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a35bad36-7158-4d40-9889-3c0bc35865c2", + "Name": null + }, + "93730af0-e5c6-472f-aba2-f85e640f75f9": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 1.0, + "Y": -59.0, + "Z": 0.0 + }, + { + "X": 29.0, + "Y": -59.0, + "Z": 0.0 + }, + { + "X": 29.0, + "Y": -59.0, + "Z": 4.5 + }, + { + "X": 1.0, + "Y": -59.0, + "Z": 4.5 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "28c5c2b1-d65c-4c46-8689-d651f50f07e7", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 1.0, + "Y": -59.0, + "Z": 0.0 + }, + { + "X": 29.0, + "Y": -59.0, + "Z": 0.0 + }, + { + "X": 29.0, + "Y": -59.0, + "Z": 4.5 + }, + { + "X": 1.0, + "Y": -59.0, + "Z": 4.5 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "93730af0-e5c6-472f-aba2-f85e640f75f9", + "Name": null + }, + "2c6dfe4d-a7e7-471d-b4bb-ec7415a1db2e": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "2c6dfe4d-a7e7-471d-b4bb-ec7415a1db2e", + "Name": null + }, + "a8dd846a-2bf4-460b-91da-6c901e025b1f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -30.30278, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "2c6dfe4d-a7e7-471d-b4bb-ec7415a1db2e", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "2c6dfe4d-a7e7-471d-b4bb-ec7415a1db2e", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -30.30278, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a8dd846a-2bf4-460b-91da-6c901e025b1f", + "Name": null + }, + "8df87452-9217-4b1e-9e14-bfad1cb07683": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "8df87452-9217-4b1e-9e14-bfad1cb07683", + "Name": null + }, + "f4d47d59-5d40-4305-af36-4cd9ff7d3287": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -59.0, + "Z": 2.25 + }, + "End": { + "X": 29.0, + "Y": -30.30278, + "Z": 2.25 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "8df87452-9217-4b1e-9e14-bfad1cb07683", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "8df87452-9217-4b1e-9e14-bfad1cb07683", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -59.0, + "Z": 2.25 + }, + "End": { + "X": 29.0, + "Y": -30.30278, + "Z": 2.25 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f4d47d59-5d40-4305-af36-4cd9ff7d3287", + "Name": null + }, + "58048ca5-5a02-4229-80a1-dedba924f62e": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "58048ca5-5a02-4229-80a1-dedba924f62e", + "Name": null + }, + "8cf556ee-e388-494b-8255-fb30af6248d3": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -59.0, + "Z": 4.5 + }, + "End": { + "X": 29.0, + "Y": -30.30278, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "58048ca5-5a02-4229-80a1-dedba924f62e", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "58048ca5-5a02-4229-80a1-dedba924f62e", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -59.0, + "Z": 4.5 + }, + "End": { + "X": 29.0, + "Y": -30.30278, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "8cf556ee-e388-494b-8255-fb30af6248d3", + "Name": null + }, + "c577c06a-14cb-445d-a7ec-b7373a056ba7": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "c577c06a-14cb-445d-a7ec-b7373a056ba7", + "Name": null + }, + "3873f57c-5d72-4809-9b1e-6ffe00535479": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "c577c06a-14cb-445d-a7ec-b7373a056ba7", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "c577c06a-14cb-445d-a7ec-b7373a056ba7", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "3873f57c-5d72-4809-9b1e-6ffe00535479", + "Name": null + }, + "c549e12a-5ed7-4d85-b3dd-8cfdfbfd5e1a": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "c549e12a-5ed7-4d85-b3dd-8cfdfbfd5e1a", + "Name": null + }, + "7c73ab0b-ee3d-420c-9abf-16482b99c6f0": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -57.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -57.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "c549e12a-5ed7-4d85-b3dd-8cfdfbfd5e1a", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "c549e12a-5ed7-4d85-b3dd-8cfdfbfd5e1a", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -57.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -57.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "7c73ab0b-ee3d-420c-9abf-16482b99c6f0", + "Name": null + }, + "6489090a-fca7-4814-a3b4-c1a1d1aa3a14": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "6489090a-fca7-4814-a3b4-c1a1d1aa3a14", + "Name": null + }, + "d390dfb3-ec3f-4a1b-83ce-005d79a56ee2": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -56.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -56.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "6489090a-fca7-4814-a3b4-c1a1d1aa3a14", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "6489090a-fca7-4814-a3b4-c1a1d1aa3a14", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -56.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -56.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "d390dfb3-ec3f-4a1b-83ce-005d79a56ee2", + "Name": null + }, + "5ae417e7-7aa9-44ea-b25e-5c2ac7c4a509": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "5ae417e7-7aa9-44ea-b25e-5c2ac7c4a509", + "Name": null + }, + "3113083a-ec22-4cdb-813c-46ba0ddee0f0": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -54.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -54.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "5ae417e7-7aa9-44ea-b25e-5c2ac7c4a509", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "5ae417e7-7aa9-44ea-b25e-5c2ac7c4a509", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -54.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -54.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "3113083a-ec22-4cdb-813c-46ba0ddee0f0", + "Name": null + }, + "ab1c0293-4c44-485a-af60-18c6de3b3c93": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ab1c0293-4c44-485a-af60-18c6de3b3c93", + "Name": null + }, + "cbc806c9-3cf8-476e-88c2-663a81447292": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -53.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -53.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ab1c0293-4c44-485a-af60-18c6de3b3c93", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ab1c0293-4c44-485a-af60-18c6de3b3c93", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -53.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -53.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "cbc806c9-3cf8-476e-88c2-663a81447292", + "Name": null + }, + "f2336244-8645-4d29-a733-27c3b432340b": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "f2336244-8645-4d29-a733-27c3b432340b", + "Name": null + }, + "f74c61e1-593d-41a9-b902-2eefaf5043d5": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -51.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -51.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "f2336244-8645-4d29-a733-27c3b432340b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "f2336244-8645-4d29-a733-27c3b432340b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -51.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -51.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f74c61e1-593d-41a9-b902-2eefaf5043d5", + "Name": null + }, + "ecc9f632-802e-4d91-9e93-f73497c2536f": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ecc9f632-802e-4d91-9e93-f73497c2536f", + "Name": null + }, + "dae1804b-4e2a-4701-beb7-e01855726650": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -50.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ecc9f632-802e-4d91-9e93-f73497c2536f", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ecc9f632-802e-4d91-9e93-f73497c2536f", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -50.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "dae1804b-4e2a-4701-beb7-e01855726650", + "Name": null + }, + "ab3fa574-e372-42a5-8a21-8cc938daae0b": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ab3fa574-e372-42a5-8a21-8cc938daae0b", + "Name": null + }, + "0327459b-b744-423a-9136-b7a7d7ae23c3": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -48.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -48.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ab3fa574-e372-42a5-8a21-8cc938daae0b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ab3fa574-e372-42a5-8a21-8cc938daae0b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -48.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -48.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "0327459b-b744-423a-9136-b7a7d7ae23c3", + "Name": null + }, + "8c3388cc-12ba-4439-b477-fab180860567": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "8c3388cc-12ba-4439-b477-fab180860567", + "Name": null + }, + "7d557a36-d258-4bf3-b094-dee285d7f867": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -47.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -47.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "8c3388cc-12ba-4439-b477-fab180860567", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "8c3388cc-12ba-4439-b477-fab180860567", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -47.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -47.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "7d557a36-d258-4bf3-b094-dee285d7f867", + "Name": null + }, + "eba1cd5f-4fc6-4aba-9f79-ef5625c0b415": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "eba1cd5f-4fc6-4aba-9f79-ef5625c0b415", + "Name": null + }, + "5e56674b-3a97-4966-8ef7-814eab3c02d0": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -45.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -45.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "eba1cd5f-4fc6-4aba-9f79-ef5625c0b415", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "eba1cd5f-4fc6-4aba-9f79-ef5625c0b415", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -45.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -45.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "5e56674b-3a97-4966-8ef7-814eab3c02d0", + "Name": null + }, + "8eacceda-08e7-419d-92cd-955ee2e32547": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "8eacceda-08e7-419d-92cd-955ee2e32547", + "Name": null + }, + "b2db9cfe-92a4-406e-a664-0647f8ccca30": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -44.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -44.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "8eacceda-08e7-419d-92cd-955ee2e32547", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "8eacceda-08e7-419d-92cd-955ee2e32547", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -44.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -44.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "b2db9cfe-92a4-406e-a664-0647f8ccca30", + "Name": null + }, + "844c36b4-cedf-4e94-88a6-df931c6f52d0": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "844c36b4-cedf-4e94-88a6-df931c6f52d0", + "Name": null + }, + "4fe8e40e-860a-45c7-9bb6-4f6eef8287f0": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -42.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -42.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "844c36b4-cedf-4e94-88a6-df931c6f52d0", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "844c36b4-cedf-4e94-88a6-df931c6f52d0", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -42.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -42.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "4fe8e40e-860a-45c7-9bb6-4f6eef8287f0", + "Name": null + }, + "0ae51050-f7e4-4fa5-8a45-3c28df241143": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "0ae51050-f7e4-4fa5-8a45-3c28df241143", + "Name": null + }, + "febf34e0-2342-4073-a959-da6ecc62c484": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -41.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -41.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "0ae51050-f7e4-4fa5-8a45-3c28df241143", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "0ae51050-f7e4-4fa5-8a45-3c28df241143", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -41.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -41.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "febf34e0-2342-4073-a959-da6ecc62c484", + "Name": null + }, + "c1b3f3c9-0e76-496a-8d4a-61f76f40a747": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "c1b3f3c9-0e76-496a-8d4a-61f76f40a747", + "Name": null + }, + "2a9e554b-ab84-4ef4-8c9b-6aff65b02193": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -39.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -39.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "c1b3f3c9-0e76-496a-8d4a-61f76f40a747", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "c1b3f3c9-0e76-496a-8d4a-61f76f40a747", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -39.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -39.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "2a9e554b-ab84-4ef4-8c9b-6aff65b02193", + "Name": null + }, + "a988a85c-758b-4860-9b98-fdcc7aeec592": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "a988a85c-758b-4860-9b98-fdcc7aeec592", + "Name": null + }, + "2e64a3bf-3234-490b-8ed2-d22862ba33c3": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -38.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -38.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "a988a85c-758b-4860-9b98-fdcc7aeec592", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "a988a85c-758b-4860-9b98-fdcc7aeec592", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -38.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -38.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "2e64a3bf-3234-490b-8ed2-d22862ba33c3", + "Name": null + }, + "fec977a4-d81f-4e13-8f0d-4992a97aaec2": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "fec977a4-d81f-4e13-8f0d-4992a97aaec2", + "Name": null + }, + "6b194a90-ac4c-4f89-81f2-7eec26a259d9": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -36.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -36.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "fec977a4-d81f-4e13-8f0d-4992a97aaec2", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "fec977a4-d81f-4e13-8f0d-4992a97aaec2", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -36.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -36.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "6b194a90-ac4c-4f89-81f2-7eec26a259d9", + "Name": null + }, + "7e68f498-5590-41cc-839a-3b76b826d59f": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "7e68f498-5590-41cc-839a-3b76b826d59f", + "Name": null + }, + "9cf64079-cdef-40c9-9e1d-71001ecef6ba": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -35.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "7e68f498-5590-41cc-839a-3b76b826d59f", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "7e68f498-5590-41cc-839a-3b76b826d59f", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -35.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "9cf64079-cdef-40c9-9e1d-71001ecef6ba", + "Name": null + }, + "b7c20ef3-5a4b-4c63-9af3-7a20101ff27f": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "b7c20ef3-5a4b-4c63-9af3-7a20101ff27f", + "Name": null + }, + "53125eae-8b92-47f2-b888-db1a08d26614": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -33.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -33.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "b7c20ef3-5a4b-4c63-9af3-7a20101ff27f", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "b7c20ef3-5a4b-4c63-9af3-7a20101ff27f", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -33.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -33.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "53125eae-8b92-47f2-b888-db1a08d26614", + "Name": null + }, + "2e220695-f858-451a-996c-88813b2e4d4c": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "2e220695-f858-451a-996c-88813b2e4d4c", + "Name": null + }, + "19eed878-5722-45e9-968f-bdc5ef1705b7": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -32.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -32.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "2e220695-f858-451a-996c-88813b2e4d4c", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "2e220695-f858-451a-996c-88813b2e4d4c", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -32.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -32.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "19eed878-5722-45e9-968f-bdc5ef1705b7", + "Name": null + }, + "67949bc5-fc6c-4e03-b48e-750d673b3b45": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "67949bc5-fc6c-4e03-b48e-750d673b3b45", + "Name": null + }, + "b04741a8-8d75-4a20-9a02-713c7c9d5961": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -30.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -30.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "67949bc5-fc6c-4e03-b48e-750d673b3b45", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "67949bc5-fc6c-4e03-b48e-750d673b3b45", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -30.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -30.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "b04741a8-8d75-4a20-9a02-713c7c9d5961", + "Name": null + }, + "ffe72ae0-dd3f-4a1a-8a2a-135a997a2ef6": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ffe72ae0-dd3f-4a1a-8a2a-135a997a2ef6", + "Name": null + }, + "71f9813c-15b2-4996-b966-d66fa6c5e1d7": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -30.30278, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -30.30278, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ffe72ae0-dd3f-4a1a-8a2a-135a997a2ef6", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ffe72ae0-dd3f-4a1a-8a2a-135a997a2ef6", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -30.30278, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -30.30278, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "71f9813c-15b2-4996-b966-d66fa6c5e1d7", + "Name": null + }, + "30479846-1e9d-4b13-98d0-ebc246e3e47d": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 29.0, + "Y": -59.0, + "Z": 0.0 + }, + { + "X": 29.0, + "Y": -30.30278, + "Z": 0.0 + }, + { + "X": 29.0, + "Y": -30.30278, + "Z": 4.5 + }, + { + "X": 29.0, + "Y": -59.0, + "Z": 4.5 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "28c5c2b1-d65c-4c46-8689-d651f50f07e7", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 29.0, + "Y": -59.0, + "Z": 0.0 + }, + { + "X": 29.0, + "Y": -30.30278, + "Z": 0.0 + }, + { + "X": 29.0, + "Y": -30.30278, + "Z": 4.5 + }, + { + "X": 29.0, + "Y": -59.0, + "Z": 4.5 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "30479846-1e9d-4b13-98d0-ebc246e3e47d", + "Name": null + }, + "d0679ff9-51db-44d0-9743-3ae8c814face": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.5, + "Green": 0.5, + "Blue": 0.5, + "Alpha": 1.0 + }, + "SpecularFactor": 0.5, + "GlossinessFactor": 0.3, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "Id": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Name": "Steel" + }, + "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.0, + "Green": 0.0, + "Blue": 1.0, + "Alpha": 1.0 + }, + "SpecularFactor": 0.10000000149011612, + "GlossinessFactor": 0.10000000149011612, + "Unlit": true, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "Id": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Name": "Z" + }, + "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151": { + "discriminator": "Elements.Geometry.Profiles.WideFlangeProfile", + "d": 0.45465999999999995, + "tw": 0.008001, + "bf": 0.152908, + "tf": 0.013335, + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.076454, + "Y": -0.1254, + "Z": 0.0 + }, + { + "X": -0.076454, + "Y": -0.138735, + "Z": 0.0 + }, + { + "X": -0.0040005, + "Y": -0.138735, + "Z": 0.0 + }, + { + "X": -0.0040005, + "Y": -0.5667249999999999, + "Z": 0.0 + }, + { + "X": -0.076454, + "Y": -0.5667249999999999, + "Z": 0.0 + }, + { + "X": -0.076454, + "Y": -0.58006, + "Z": 0.0 + }, + { + "X": 0.076454, + "Y": -0.58006, + "Z": 0.0 + }, + { + "X": 0.076454, + "Y": -0.5667249999999999, + "Z": 0.0 + }, + { + "X": 0.0040005, + "Y": -0.5667249999999999, + "Z": 0.0 + }, + { + "X": 0.0040005, + "Y": -0.138735, + "Z": 0.0 + }, + { + "X": 0.076454, + "Y": -0.138735, + "Z": 0.0 + }, + { + "X": 0.076454, + "Y": -0.1254, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Name": "W18x40" + }, + "1f248147-be87-4d6a-922b-e7bf05d5f27e": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 0.7324000000000002, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 0.7324000000000002, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "1f248147-be87-4d6a-922b-e7bf05d5f27e", + "Name": "W18x40" + }, + "e3cd3000-5e61-43c0-a010-a6757408d2ac": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 4.5, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 4.5, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Name": "W18x40" + }, + "c9699dd2-d040-4a2c-ad98-36443b0d037a": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 3.7324, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 3.7324, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "c9699dd2-d040-4a2c-ad98-36443b0d037a", + "Name": "W18x40" + }, + "442ea777-71e8-42e2-a88c-d741cce24ce5": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 5.408326913195984, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 5.408326913195984, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "442ea777-71e8-42e2-a88c-d741cce24ce5", + "Name": "W18x40" + }, + "edad7470-dae0-4697-a2aa-8adc95f4440a": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 7.0, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 7.0, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Name": "W18x40" + }, + "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 1.5, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 1.5, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Name": "W18x40" + }, + "e5972626-f896-4b80-b62f-fa93a8846507": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 0.09859999999999935, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 0.09859999999999935, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "e5972626-f896-4b80-b62f-fa93a8846507", + "Name": "W18x40" + }, + "49319ac3-7aa7-4cea-aa5e-8a40ef05e1ba": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 0.06574000000000169, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 0.06574000000000169, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "49319ac3-7aa7-4cea-aa5e-8a40ef05e1ba", + "Name": "W18x40" + }, + "4dc79d1f-76cc-4eac-ba1d-90c0929442e9": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 0.11850615005137959, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 0.11850615005137959, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "4dc79d1f-76cc-4eac-ba1d-90c0929442e9", + "Name": "W18x40" + }, + "39b28bf6-91db-4c72-b448-44bed8dc6bc0": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 5.890749673853066, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 5.890749673853066, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "39b28bf6-91db-4c72-b448-44bed8dc6bc0", + "Name": "W18x40" + }, + "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 5.0, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 5.0, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Name": "W18x40" + }, + "0b85760d-9483-48e4-99ef-f0158063192f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 3.3990599999999986, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 3.3990599999999986, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "0b85760d-9483-48e4-99ef-f0158063192f", + "Name": "W18x40" + }, + "2d8372e3-18d6-43f5-b8a6-ca8af44199e8": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 6.009244729780939, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 6.009244729780939, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "2d8372e3-18d6-43f5-b8a6-ca8af44199e8", + "Name": "W18x40" + }, + "7cd6c7d4-992c-4217-9c1f-ac7c9170b25c": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 6.732399999999998, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 6.732399999999998, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "7cd6c7d4-992c-4217-9c1f-ac7c9170b25c", + "Name": "W18x40" + }, + "f1f4efee-0d74-4a09-8341-e6127bd83748": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 6.009255823777184, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 6.009255823777184, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "f1f4efee-0d74-4a09-8341-e6127bd83748", + "Name": "W18x40" + }, + "d4da724b-0d2f-4bd3-acf2-5d3697adf278": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 4.598600000000001, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 4.598600000000001, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "d4da724b-0d2f-4bd3-acf2-5d3697adf278", + "Name": "W18x40" + }, + "b110d957-b9da-4137-9c21-3ec50b79b33e": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 3.0657400000000017, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 3.0657400000000017, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "b110d957-b9da-4137-9c21-3ec50b79b33e", + "Name": "W18x40" + }, + "e0c50391-a50c-417e-a648-1d8139e40aa4": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 5.5268330631203275, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 5.5268330631203275, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "e0c50391-a50c-417e-a648-1d8139e40aa4", + "Name": "W18x40" + }, + "3bf2c337-826f-4c12-b4d9-a345602f7c71": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 0.48242276065708173, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 0.48242276065708173, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "3bf2c337-826f-4c12-b4d9-a345602f7c71", + "Name": "W18x40" + }, + "9b7bdf59-55a7-4daf-9c50-86da88398d8a": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 6.399059999999999, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 6.399059999999999, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "9b7bdf59-55a7-4daf-9c50-86da88398d8a", + "Name": "W18x40" + }, + "34bbf385-46d3-47bf-83a0-3a400bd05173": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 0.18196385245427163, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 0.18196385245427163, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "34bbf385-46d3-47bf-83a0-3a400bd05173", + "Name": "W18x40" + }, + "bbfc5b0f-cc29-4045-91bf-821e7813de86": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 6.5, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 6.5, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Name": "W18x40" + }, + "2984e71a-f669-4201-8e3b-e26ab9529910": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 4.848600000000001, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 4.848600000000001, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "2984e71a-f669-4201-8e3b-e26ab9529910", + "Name": "W18x40" + }, + "ae17b256-3a91-41c9-b812-a732b948db41": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1f248147-be87-4d6a-922b-e7bf05d5f27e", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.7324, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "ae17b256-3a91-41c9-b812-a732b948db41", + "Name": "W18x40", + "EdgeId": 5, + "ExternalEdgeId": 5 + }, + "82cbeaef-d3df-4277-80d6-2690654b1c05": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.7324, + "Y": -0.5, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -0.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "82cbeaef-d3df-4277-80d6-2690654b1c05", + "Name": null + }, + "b1f59156-7366-4c12-9ed9-6fe976dba558": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "b1f59156-7366-4c12-9ed9-6fe976dba558", + "Name": "W18x40", + "EdgeId": 6 + }, + "cfbd5350-0d10-43ce-b63c-9d9c38caa4dc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -0.5, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -5.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cfbd5350-0d10-43ce-b63c-9d9c38caa4dc", + "Name": null + }, + "c561276f-cf9b-481a-81ad-93acecd17b23": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c9699dd2-d040-4a2c-ad98-36443b0d037a", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "c561276f-cf9b-481a-81ad-93acecd17b23", + "Name": "W18x40", + "EdgeId": 7 + }, + "753f627d-b9d1-4c55-b3cb-6ee8584fc1c4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 0.0 + }, + "End": { + "X": 12.7324, + "Y": -5.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "753f627d-b9d1-4c55-b3cb-6ee8584fc1c4", + "Name": null + }, + "31e4920c-a82d-4dc1-a3ab-5adb5ba9ff3b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "442ea777-71e8-42e2-a88c-d741cce24ce5", + "Transform": { + "Matrix": { + "Components": [ + 0.5547001962252291, + 0.8320502943378437, + 0.0, + 9.7324, + -0.8320502943378437, + 0.5547001962252291, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "31e4920c-a82d-4dc1-a3ab-5adb5ba9ff3b", + "Name": "W18x40", + "EdgeId": 8, + "ExternalEdgeId": 8 + }, + "877ba8f8-2136-413e-9809-ff6187e71bfe": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.7324, + "Y": -0.5, + "Z": 0.0 + }, + "End": { + "X": 12.7324, + "Y": -5.000000000000001, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "877ba8f8-2136-413e-9809-ff6187e71bfe", + "Name": null + }, + "b3833bc9-d208-41dc-b000-609e389a8291": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "b3833bc9-d208-41dc-b000-609e389a8291", + "Name": "W18x40", + "EdgeId": 16, + "ExternalEdgeId": 16 + }, + "d255fd5c-04f5-4027-976a-141e72bba131": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -0.5, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -0.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d255fd5c-04f5-4027-976a-141e72bba131", + "Name": null + }, + "c8aececb-18c8-4823-ba46-4b0d519535de": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "c8aececb-18c8-4823-ba46-4b0d519535de", + "Name": "W18x40", + "EdgeId": 17 + }, + "41256acb-0d1b-4b7c-9cc3-fa2611f2adde": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -0.5, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -5.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "41256acb-0d1b-4b7c-9cc3-fa2611f2adde", + "Name": null + }, + "466ad02b-076d-487c-af32-38e1f683bce2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "466ad02b-076d-487c-af32-38e1f683bce2", + "Name": "W18x40", + "EdgeId": 18 + }, + "10595b28-3506-44e5-9c50-30c36abfffea": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -5.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "10595b28-3506-44e5-9c50-30c36abfffea", + "Name": null + }, + "a6070242-e5ee-4d3f-961c-5efee9e4d87a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a6070242-e5ee-4d3f-961c-5efee9e4d87a", + "Name": "W18x40", + "EdgeId": 24, + "ExternalEdgeId": 24 + }, + "6e332766-3823-49ef-9e09-023624f445f5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -0.5, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -0.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6e332766-3823-49ef-9e09-023624f445f5", + "Name": null + }, + "97132164-947a-4bf8-bd7b-d1ad761938ef": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "97132164-947a-4bf8-bd7b-d1ad761938ef", + "Name": "W18x40", + "EdgeId": 25, + "ExternalEdgeId": 25 + }, + "ff688718-5b9e-4473-b14b-87a77ef9fa7b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -0.5, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -5.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ff688718-5b9e-4473-b14b-87a77ef9fa7b", + "Name": null + }, + "b7cca279-36ad-44b6-9905-051a28e63e69": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "b7cca279-36ad-44b6-9905-051a28e63e69", + "Name": "W18x40", + "EdgeId": 26 + }, + "37a98013-68f7-4a72-8ed9-ee922b09017b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -5.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -5.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "37a98013-68f7-4a72-8ed9-ee922b09017b", + "Name": null + }, + "e3d693f8-6171-497c-8038-f4d0035f1e4e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e5972626-f896-4b80-b62f-fa93a8846507", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -9.9014, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "e3d693f8-6171-497c-8038-f4d0035f1e4e", + "Name": "W18x40", + "EdgeId": 32 + }, + "c73c0800-487b-4a98-8fb1-92c3e1e615ee": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -9.9014, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c73c0800-487b-4a98-8fb1-92c3e1e615ee", + "Name": null + }, + "92b851c6-b096-406d-821f-799e727c0cc0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "49319ac3-7aa7-4cea-aa5e-8a40ef05e1ba", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "92b851c6-b096-406d-821f-799e727c0cc0", + "Name": "W18x40", + "EdgeId": 33 + }, + "a9f3cc05-0956-4d74-b2ae-ab855a40614c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 16.06574, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a9f3cc05-0956-4d74-b2ae-ab855a40614c", + "Name": null + }, + "39e05e73-5819-4487-ab9d-7f65bc2eec6e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4dc79d1f-76cc-4eac-ba1d-90c0929442e9", + "Transform": { + "Matrix": { + "Components": [ + 0.5547391419896724, + 0.8320243291782772, + 0.0, + 16.0, + -0.8320243291782772, + 0.5547391419896724, + 0.0, + -9.9014, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "39e05e73-5819-4487-ab9d-7f65bc2eec6e", + "Name": "W18x40", + "EdgeId": 34, + "ExternalEdgeId": 34 + }, + "2eb33d03-229f-44d6-b651-3e115a3895cd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -9.9014, + "Z": 0.0 + }, + "End": { + "X": 16.06574, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2eb33d03-229f-44d6-b651-3e115a3895cd", + "Name": null + }, + "1e006143-11ee-4e87-b178-d979565d0b3a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39b28bf6-91db-4c72-b448-44bed8dc6bc0", + "Transform": { + "Matrix": { + "Components": [ + 0.554700196225229, + 0.8320502943378437, + 0.0, + 12.7324, + -0.8320502943378437, + 0.554700196225229, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "1e006143-11ee-4e87-b178-d979565d0b3a", + "Name": "W18x40", + "EdgeId": 41, + "ExternalEdgeId": 41 + }, + "9acdad82-edfc-428f-ac09-ea6d3bc22518": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.7324, + "Y": -5.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -9.9014, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9acdad82-edfc-428f-ac09-ea6d3bc22518", + "Name": null + }, + "e4468727-72c6-4e95-9340-2ea4f16092da": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "e4468727-72c6-4e95-9340-2ea4f16092da", + "Name": "W18x40", + "EdgeId": 42 + }, + "f3baf7cb-f24d-4cb8-be12-9bc0901ee832": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f3baf7cb-f24d-4cb8-be12-9bc0901ee832", + "Name": null + }, + "8a02c5bb-287e-4cc6-a8a9-65b4ea10b2ef": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "8a02c5bb-287e-4cc6-a8a9-65b4ea10b2ef", + "Name": "W18x40", + "EdgeId": 43 + }, + "2b5a6655-46b7-471a-b200-3b5212821674": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2b5a6655-46b7-471a-b200-3b5212821674", + "Name": null + }, + "ec5e2769-91a2-4c5d-9c51-ca1965c7bd16": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "ec5e2769-91a2-4c5d-9c51-ca1965c7bd16", + "Name": "W18x40", + "EdgeId": 47 + }, + "cc444e69-3fef-4829-b15f-d96481d23430": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -5.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cc444e69-3fef-4829-b15f-d96481d23430", + "Name": null + }, + "a9475a27-ff48-4320-87a5-a4356568df4b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a9475a27-ff48-4320-87a5-a4356568df4b", + "Name": "W18x40", + "EdgeId": 48 + }, + "ebd81fb1-ec36-4d7f-a2e3-bad8555dfc97": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ebd81fb1-ec36-4d7f-a2e3-bad8555dfc97", + "Name": null + }, + "b49b476f-0728-4dfb-bf8c-3b801f66251a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "b49b476f-0728-4dfb-bf8c-3b801f66251a", + "Name": "W18x40", + "EdgeId": 52, + "ExternalEdgeId": 52 + }, + "168c09dc-e2ba-47a4-b7b5-cb3e8dd542b3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -5.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "168c09dc-e2ba-47a4-b7b5-cb3e8dd542b3", + "Name": null + }, + "1cfb46f7-63b4-43b0-b104-79dfaabc963b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "1cfb46f7-63b4-43b0-b104-79dfaabc963b", + "Name": "W18x40", + "EdgeId": 53 + }, + "5608a27d-0f01-4c80-b161-c54662595932": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5608a27d-0f01-4c80-b161-c54662595932", + "Name": null + }, + "29c93ade-ace5-4fbe-88fa-d3a6061c388b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "29c93ade-ace5-4fbe-88fa-d3a6061c388b", + "Name": "W18x40", + "EdgeId": 58 + }, + "e4b51bce-581a-4b7b-a35e-e943b7c2144d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e4b51bce-581a-4b7b-a35e-e943b7c2144d", + "Name": null + }, + "4625c2ce-39df-4173-ae2d-b393e079f119": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "0b85760d-9483-48e4-99ef-f0158063192f", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "4625c2ce-39df-4173-ae2d-b393e079f119", + "Name": "W18x40", + "EdgeId": 59 + }, + "4e1b3209-6273-44d5-8900-75a71724d698": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 19.39906, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4e1b3209-6273-44d5-8900-75a71724d698", + "Name": null + }, + "f9cffb1b-0da5-481c-b77e-849634352a77": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2d8372e3-18d6-43f5-b8a6-ca8af44199e8", + "Transform": { + "Matrix": { + "Components": [ + 0.5546986601295418, + 0.8320513183995871, + 0.0, + 16.06574, + -0.8320513183995871, + 0.5546986601295418, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "f9cffb1b-0da5-481c-b77e-849634352a77", + "Name": "W18x40", + "EdgeId": 60, + "ExternalEdgeId": 60 + }, + "621ecd7d-9d31-428e-b432-24b910e8fc53": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.06574, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 19.39906, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "621ecd7d-9d31-428e-b432-24b910e8fc53", + "Name": null + }, + "226e428e-5844-4099-934c-c761c5029249": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "226e428e-5844-4099-934c-c761c5029249", + "Name": "W18x40", + "EdgeId": 65 + }, + "4e2d3230-d888-4514-824a-3b4523c18f13": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4e2d3230-d888-4514-824a-3b4523c18f13", + "Name": null + }, + "2daa57de-4f29-493b-8ecc-1a57c56e3ba1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "2daa57de-4f29-493b-8ecc-1a57c56e3ba1", + "Name": "W18x40", + "EdgeId": 66 + }, + "0daa255c-a59c-456b-9134-01df740622b6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0daa255c-a59c-456b-9134-01df740622b6", + "Name": null + }, + "340a59ac-f7c0-4f16-afe9-316a6c9c39b7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "340a59ac-f7c0-4f16-afe9-316a6c9c39b7", + "Name": "W18x40", + "EdgeId": 70 + }, + "5b664155-fdb4-49cb-a10d-125580438eee": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5b664155-fdb4-49cb-a10d-125580438eee", + "Name": null + }, + "d7891b32-e863-43d0-a5ff-bfe2e8385839": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "d7891b32-e863-43d0-a5ff-bfe2e8385839", + "Name": "W18x40", + "EdgeId": 71 + }, + "8dd0de28-dd71-412e-a94a-2e3ad8c91a48": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8dd0de28-dd71-412e-a94a-2e3ad8c91a48", + "Name": null + }, + "f9e1b96a-32d7-4f7d-9e2d-3ff0de635348": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "f9e1b96a-32d7-4f7d-9e2d-3ff0de635348", + "Name": "W18x40", + "EdgeId": 75, + "ExternalEdgeId": 75 + }, + "14634e11-1ae6-4b2b-91db-4443ea657d96": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "14634e11-1ae6-4b2b-91db-4443ea657d96", + "Name": null + }, + "d78784a4-d29d-4724-ad9e-f0d0c4356c4c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "d78784a4-d29d-4724-ad9e-f0d0c4356c4c", + "Name": "W18x40", + "EdgeId": 76 + }, + "29d9b80a-b9ae-49fd-917e-12a075ccc9e1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "29d9b80a-b9ae-49fd-917e-12a075ccc9e1", + "Name": null + }, + "f23036c8-9449-4e50-83e0-e776ea5edd62": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "f23036c8-9449-4e50-83e0-e776ea5edd62", + "Name": "W18x40", + "EdgeId": 81 + }, + "60eb3957-3a8b-458e-b99e-6c50df3c41a6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "60eb3957-3a8b-458e-b99e-6c50df3c41a6", + "Name": null + }, + "cec114d5-e4d6-454f-9b34-a57d4a79e47e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7cd6c7d4-992c-4217-9c1f-ac7c9170b25c", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "cec114d5-e4d6-454f-9b34-a57d4a79e47e", + "Name": "W18x40", + "EdgeId": 82 + }, + "d9578b9b-c652-4266-a0fd-eb07654736b6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 22.7324, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d9578b9b-c652-4266-a0fd-eb07654736b6", + "Name": null + }, + "f59dbd27-9bde-4cfe-8761-09f55dc5ac0d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "f1f4efee-0d74-4a09-8341-e6127bd83748", + "Transform": { + "Matrix": { + "Components": [ + 0.5547009642709457, + 0.832049782306854, + 0.0, + 19.39906, + -0.832049782306854, + 0.5547009642709457, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "f59dbd27-9bde-4cfe-8761-09f55dc5ac0d", + "Name": "W18x40", + "EdgeId": 83, + "ExternalEdgeId": 83 + }, + "ae45d0c8-1906-4c70-bb93-c32d9466ddc4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.39906, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 22.7324, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ae45d0c8-1906-4c70-bb93-c32d9466ddc4", + "Name": null + }, + "a9dc5e6a-97c9-4c44-a00a-f92205bfcadd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a9dc5e6a-97c9-4c44-a00a-f92205bfcadd", + "Name": "W18x40", + "EdgeId": 88 + }, + "8e7912fe-7b3a-471f-ab34-64bf9ec274e6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8e7912fe-7b3a-471f-ab34-64bf9ec274e6", + "Name": null + }, + "6013df4e-bede-4a41-ad39-05a61f6c79ff": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "6013df4e-bede-4a41-ad39-05a61f6c79ff", + "Name": "W18x40", + "EdgeId": 89 + }, + "4f6a8b84-6e6e-4670-bf2d-d6c05ff49b19": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4f6a8b84-6e6e-4670-bf2d-d6c05ff49b19", + "Name": null + }, + "699e7aa7-8ac3-4131-93f8-238c84378764": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "699e7aa7-8ac3-4131-93f8-238c84378764", + "Name": "W18x40", + "EdgeId": 93 + }, + "bc811a61-40c9-45f7-a21e-06f541b95670": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bc811a61-40c9-45f7-a21e-06f541b95670", + "Name": null + }, + "51d36270-886e-4f9d-859f-d82e4b5dee53": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "51d36270-886e-4f9d-859f-d82e4b5dee53", + "Name": "W18x40", + "EdgeId": 94 + }, + "f49c573e-fc3d-488f-8d50-8ebd1aee2074": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f49c573e-fc3d-488f-8d50-8ebd1aee2074", + "Name": null + }, + "9a1c5df6-ac81-4698-9004-3efe13e37b47": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "9a1c5df6-ac81-4698-9004-3efe13e37b47", + "Name": "W18x40", + "EdgeId": 98, + "ExternalEdgeId": 98 + }, + "c0c93675-73aa-4281-a31e-6e0da3bcafa1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c0c93675-73aa-4281-a31e-6e0da3bcafa1", + "Name": null + }, + "d997ae53-2842-436a-8686-49634a26f17e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "d997ae53-2842-436a-8686-49634a26f17e", + "Name": "W18x40", + "EdgeId": 99 + }, + "228df31a-7ece-46e0-ae50-8eb9c1b21c51": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "228df31a-7ece-46e0-ae50-8eb9c1b21c51", + "Name": null + }, + "20e54c91-a655-4be8-9671-4d5462e74320": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d4da724b-0d2f-4bd3-acf2-5d3697adf278", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -20.4014, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "20e54c91-a655-4be8-9671-4d5462e74320", + "Name": "W18x40", + "EdgeId": 104 + }, + "86529516-d2f5-4df4-8d6b-d51c8b940ed8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -20.4014, + "Z": 0.0 + }, + "End": { + "X": 23.0, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "86529516-d2f5-4df4-8d6b-d51c8b940ed8", + "Name": null + }, + "547eaa00-10da-4755-8fa0-48d58e01685f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b110d957-b9da-4137-9c21-3ec50b79b33e", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "547eaa00-10da-4755-8fa0-48d58e01685f", + "Name": "W18x40", + "EdgeId": 105 + }, + "96a2943d-8b62-40de-9217-89c0c36ea25a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 26.06574, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "96a2943d-8b62-40de-9217-89c0c36ea25a", + "Name": null + }, + "e02ec524-729b-4f92-b280-72484287779c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e0c50391-a50c-417e-a648-1d8139e40aa4", + "Transform": { + "Matrix": { + "Components": [ + 0.5547010313116194, + 0.8320497376129783, + 0.0, + 23.0, + -0.8320497376129783, + 0.5547010313116194, + 0.0, + -20.4014, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "e02ec524-729b-4f92-b280-72484287779c", + "Name": "W18x40", + "EdgeId": 106, + "ExternalEdgeId": 106 + }, + "c2d1b78f-54f3-41f4-a9a3-40db314d57af": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -20.4014, + "Z": 0.0 + }, + "End": { + "X": 26.06574, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c2d1b78f-54f3-41f4-a9a3-40db314d57af", + "Name": null + }, + "0ea3c452-bb63-4e86-9d01-d649e69bc608": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3bf2c337-826f-4c12-b4d9-a345602f7c71", + "Transform": { + "Matrix": { + "Components": [ + 0.5547001962252325, + 0.8320502943378414, + 0.0, + 22.7324, + -0.8320502943378414, + 0.5547001962252325, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "0ea3c452-bb63-4e86-9d01-d649e69bc608", + "Name": "W18x40", + "EdgeId": 113, + "ExternalEdgeId": 113 + }, + "5766748d-7453-43d3-b6af-05d0badf27a9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.7324, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 23.0, + "Y": -20.4014, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5766748d-7453-43d3-b6af-05d0badf27a9", + "Name": null + }, + "7a705425-2382-4657-9852-4c3d323af2a5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "7a705425-2382-4657-9852-4c3d323af2a5", + "Name": "W18x40", + "EdgeId": 114 + }, + "20b42428-92dd-4175-be10-b972fc1a36ec": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "20b42428-92dd-4175-be10-b972fc1a36ec", + "Name": null + }, + "eb853b1e-b0ad-4842-a019-5a86ecba0abb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "eb853b1e-b0ad-4842-a019-5a86ecba0abb", + "Name": "W18x40", + "EdgeId": 115 + }, + "13cc1eea-637f-4be4-8bbf-4cc0a9ff8b8e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "13cc1eea-637f-4be4-8bbf-4cc0a9ff8b8e", + "Name": null + }, + "352550ee-0419-4677-93da-e17b83e458f5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "352550ee-0419-4677-93da-e17b83e458f5", + "Name": "W18x40", + "EdgeId": 119 + }, + "172658a4-8e3d-41ca-bcd0-8502d4a69581": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "172658a4-8e3d-41ca-bcd0-8502d4a69581", + "Name": null + }, + "0cf4265c-2002-492d-8150-79472ec80f7c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "0cf4265c-2002-492d-8150-79472ec80f7c", + "Name": "W18x40", + "EdgeId": 120 + }, + "12353ffe-2c8b-4194-8079-d99389388383": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "12353ffe-2c8b-4194-8079-d99389388383", + "Name": null + }, + "0207f7ff-a77e-41b8-93a2-adcd79f75719": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "0207f7ff-a77e-41b8-93a2-adcd79f75719", + "Name": "W18x40", + "EdgeId": 124 + }, + "55ba5899-ce79-4ef3-8d8c-13795c0eb896": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "55ba5899-ce79-4ef3-8d8c-13795c0eb896", + "Name": null + }, + "dd68a031-f7b3-4a22-8442-1f2af9f15842": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "dd68a031-f7b3-4a22-8442-1f2af9f15842", + "Name": "W18x40", + "EdgeId": 125 + }, + "3e83e411-07fd-40d4-93a4-0b3391c11758": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3e83e411-07fd-40d4-93a4-0b3391c11758", + "Name": null + }, + "00f83664-313a-45ac-856c-45f7582a0779": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "00f83664-313a-45ac-856c-45f7582a0779", + "Name": "W18x40", + "EdgeId": 129, + "ExternalEdgeId": 129 + }, + "27ab68b9-2150-436b-afff-908c6cdad629": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "27ab68b9-2150-436b-afff-908c6cdad629", + "Name": null + }, + "9bb72b77-ce9a-4ad6-a3e4-453ace4dddcf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "9bb72b77-ce9a-4ad6-a3e4-453ace4dddcf", + "Name": "W18x40", + "EdgeId": 130 + }, + "eb6394b6-c2b0-46f3-8a92-7a0161b83654": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "eb6394b6-c2b0-46f3-8a92-7a0161b83654", + "Name": null + }, + "80db92c8-c919-475b-9184-d25b4a000538": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "80db92c8-c919-475b-9184-d25b4a000538", + "Name": "W18x40", + "EdgeId": 135 + }, + "0b6aaf8b-c7e3-47b5-a816-569c02f1bc79": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 23.0, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0b6aaf8b-c7e3-47b5-a816-569c02f1bc79", + "Name": null + }, + "6f0191a8-0e95-49e0-9e33-061a64129074": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "9b7bdf59-55a7-4daf-9c50-86da88398d8a", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "6f0191a8-0e95-49e0-9e33-061a64129074", + "Name": "W18x40", + "EdgeId": 136 + }, + "25cd25be-43f9-4bb0-9cce-c9efbe8488c1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 29.39906, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "25cd25be-43f9-4bb0-9cce-c9efbe8488c1", + "Name": null + }, + "b63d7598-f2d9-47d1-a81c-2398e9dde8c8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2d8372e3-18d6-43f5-b8a6-ca8af44199e8", + "Transform": { + "Matrix": { + "Components": [ + 0.5546986601295418, + 0.8320513183995871, + 0.0, + 26.06574, + -0.8320513183995871, + 0.5546986601295418, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "b63d7598-f2d9-47d1-a81c-2398e9dde8c8", + "Name": "W18x40", + "EdgeId": 137, + "ExternalEdgeId": 137 + }, + "bb46dee5-c65d-4abf-a6fa-cfffb40bb545": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.06574, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 29.39906, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bb46dee5-c65d-4abf-a6fa-cfffb40bb545", + "Name": null + }, + "14bcaa75-d02b-413b-90bb-10e70c336f4c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "14bcaa75-d02b-413b-90bb-10e70c336f4c", + "Name": "W18x40", + "EdgeId": 142 + }, + "5afd924d-be55-4993-b38c-6c59a9cbe103": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5afd924d-be55-4993-b38c-6c59a9cbe103", + "Name": null + }, + "21ec8bb1-aa2d-4937-b29a-058dce56cfb6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "21ec8bb1-aa2d-4937-b29a-058dce56cfb6", + "Name": "W18x40", + "EdgeId": 143 + }, + "e3de19ac-0e78-4532-890e-79da208e913d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e3de19ac-0e78-4532-890e-79da208e913d", + "Name": null + }, + "80e1290c-92e5-48fb-8e47-edbeee3b16de": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "80e1290c-92e5-48fb-8e47-edbeee3b16de", + "Name": "W18x40", + "EdgeId": 147 + }, + "803463fe-3412-4f16-85fd-ceb2b0221053": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "803463fe-3412-4f16-85fd-ceb2b0221053", + "Name": null + }, + "814eb173-0496-447e-81bb-53c70cc1aa50": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "814eb173-0496-447e-81bb-53c70cc1aa50", + "Name": "W18x40", + "EdgeId": 148 + }, + "f789e063-60e9-4a44-9a96-855fe3cdbddc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f789e063-60e9-4a44-9a96-855fe3cdbddc", + "Name": null + }, + "153d24c2-0859-4b89-9558-d7ce786cbdf7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "153d24c2-0859-4b89-9558-d7ce786cbdf7", + "Name": "W18x40", + "EdgeId": 152 + }, + "834b6b1a-8de9-4150-9960-f92ab9f2fa0d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "834b6b1a-8de9-4150-9960-f92ab9f2fa0d", + "Name": null + }, + "7f634a6d-baf6-4dc6-9e1e-503a40faf078": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "7f634a6d-baf6-4dc6-9e1e-503a40faf078", + "Name": "W18x40", + "EdgeId": 153 + }, + "b0b69429-0368-4cf4-856b-b83b9cbbddf1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b0b69429-0368-4cf4-856b-b83b9cbbddf1", + "Name": null + }, + "cc9761fa-4a8f-4e87-9ae4-3b48443ead31": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "cc9761fa-4a8f-4e87-9ae4-3b48443ead31", + "Name": "W18x40", + "EdgeId": 157, + "ExternalEdgeId": 157 + }, + "d238319f-e6d4-470b-9ade-342276086489": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d238319f-e6d4-470b-9ade-342276086489", + "Name": null + }, + "28a300c9-e8a8-454e-8463-ed2fb1223134": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "28a300c9-e8a8-454e-8463-ed2fb1223134", + "Name": "W18x40", + "EdgeId": 158 + }, + "178f4487-4e72-4188-8a0b-374a55919070": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "178f4487-4e72-4188-8a0b-374a55919070", + "Name": null + }, + "c254d40c-2e91-4648-a29b-042a9c9fb997": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "34bbf385-46d3-47bf-83a0-3a400bd05173", + "Transform": { + "Matrix": { + "Components": [ + 0.5547255602613056, + 0.8320333844220319, + 0.0, + 29.39906, + -0.8320333844220319, + 0.5547255602613056, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "c254d40c-2e91-4648-a29b-042a9c9fb997", + "Name": "W18x40", + "EdgeId": 164, + "ExternalEdgeId": 164 + }, + "b1c8b4a4-46b5-4575-93c4-0c9e1a040d60": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.39906, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 29.5, + "Y": -30.1514, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b1c8b4a4-46b5-4575-93c4-0c9e1a040d60", + "Name": null + }, + "3b109814-03b3-451d-b7c4-099f5fe75d2e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "3b109814-03b3-451d-b7c4-099f5fe75d2e", + "Name": "W18x40", + "EdgeId": 165 + }, + "2fa0f4d4-df43-4d21-bba6-cfa9b009546c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 23.0, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2fa0f4d4-df43-4d21-bba6-cfa9b009546c", + "Name": null + }, + "f27f1de6-931f-4841-b988-ef70321cd9e6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "f27f1de6-931f-4841-b988-ef70321cd9e6", + "Name": "W18x40", + "EdgeId": 166 + }, + "cc2d6fa3-1261-4daf-aee8-6058ca30519b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 29.5, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cc2d6fa3-1261-4daf-aee8-6058ca30519b", + "Name": null + }, + "1b5e2158-e374-41f0-9643-cd6884186c74": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2984e71a-f669-4201-8e3b-e26ab9529910", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -30.1514, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "1b5e2158-e374-41f0-9643-cd6884186c74", + "Name": "W18x40", + "EdgeId": 167, + "ExternalEdgeId": 167 + }, + "dd1c836e-0c4c-43d8-af7e-294c0c4b0aa5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -30.1514, + "Z": 0.0 + }, + "End": { + "X": 29.5, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dd1c836e-0c4c-43d8-af7e-294c0c4b0aa5", + "Name": null + }, + "0267933d-f93c-4a68-834a-82f3b75a087f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "0267933d-f93c-4a68-834a-82f3b75a087f", + "Name": "W18x40", + "EdgeId": 173 + }, + "fe8fc3d9-9375-427a-b41e-f51bc1c7c621": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fe8fc3d9-9375-427a-b41e-f51bc1c7c621", + "Name": null + }, + "0312ecbf-c857-4483-9371-79c74eee2b68": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "0312ecbf-c857-4483-9371-79c74eee2b68", + "Name": "W18x40", + "EdgeId": 174 + }, + "0b0d4c85-34ab-43f5-acc1-fdd5f5caba30": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0b0d4c85-34ab-43f5-acc1-fdd5f5caba30", + "Name": null + }, + "42a61dc5-4ab6-4f71-9a76-51c5401cb920": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "42a61dc5-4ab6-4f71-9a76-51c5401cb920", + "Name": "W18x40", + "EdgeId": 178 + }, + "a4ff9b4a-2b07-44b4-9164-2365e10d455b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a4ff9b4a-2b07-44b4-9164-2365e10d455b", + "Name": null + }, + "ec21251a-bea5-487e-b1b3-68bbc46b72ef": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "ec21251a-bea5-487e-b1b3-68bbc46b72ef", + "Name": "W18x40", + "EdgeId": 179 + }, + "28ef286a-a38d-4af2-833a-0b589ea4919f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "28ef286a-a38d-4af2-833a-0b589ea4919f", + "Name": null + }, + "942f1fd1-4e02-410c-af7b-b50c1b651e34": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "942f1fd1-4e02-410c-af7b-b50c1b651e34", + "Name": "W18x40", + "EdgeId": 183 + }, + "e35903a6-272e-49b5-b435-b06debdc5d45": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e35903a6-272e-49b5-b435-b06debdc5d45", + "Name": null + }, + "8d9096ae-1c98-4c6a-acc4-c45b5ee912fe": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "8d9096ae-1c98-4c6a-acc4-c45b5ee912fe", + "Name": "W18x40", + "EdgeId": 184 + }, + "212b18a1-d70b-4c38-a7e2-23280b28e092": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "212b18a1-d70b-4c38-a7e2-23280b28e092", + "Name": null + }, + "71ca6208-6333-470c-843c-9d19f925f5f2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "71ca6208-6333-470c-843c-9d19f925f5f2", + "Name": "W18x40", + "EdgeId": 188, + "ExternalEdgeId": 188 + }, + "580c3b82-8c7f-4ecb-9211-4251e5e518ad": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "580c3b82-8c7f-4ecb-9211-4251e5e518ad", + "Name": null + }, + "27d03f63-12be-4317-b4d7-5959cd9167a8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "27d03f63-12be-4317-b4d7-5959cd9167a8", + "Name": "W18x40", + "EdgeId": 189 + }, + "92ed1097-fbd6-4e08-b27b-f948674dcedd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "92ed1097-fbd6-4e08-b27b-f948674dcedd", + "Name": null + }, + "b5a2f412-ae2a-4599-937e-8db5c5e49059": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "b5a2f412-ae2a-4599-937e-8db5c5e49059", + "Name": "W18x40", + "EdgeId": 194 + }, + "2d2c997d-4597-404d-8ede-5ac742c52316": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 23.0, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2d2c997d-4597-404d-8ede-5ac742c52316", + "Name": null + }, + "e42b18a8-d809-4ae5-a6ac-f6e960dbfa6f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "e42b18a8-d809-4ae5-a6ac-f6e960dbfa6f", + "Name": "W18x40", + "EdgeId": 195 + }, + "b5059e89-9afa-44e0-a2e0-60195ecd7759": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 29.5, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b5059e89-9afa-44e0-a2e0-60195ecd7759", + "Name": null + }, + "28d5c4f5-4a70-4e61-bd27-ebd97a51a13e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "28d5c4f5-4a70-4e61-bd27-ebd97a51a13e", + "Name": "W18x40", + "EdgeId": 196, + "ExternalEdgeId": 196 + }, + "3917c1f5-d035-4528-afb3-56b819596670": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 29.5, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3917c1f5-d035-4528-afb3-56b819596670", + "Name": null + }, + "c24e318a-1dd3-4029-8a0d-0bed4ad16a20": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "c24e318a-1dd3-4029-8a0d-0bed4ad16a20", + "Name": "W18x40", + "EdgeId": 201 + }, + "305c2f31-a475-43e0-b8e8-f28fdc64c91a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "305c2f31-a475-43e0-b8e8-f28fdc64c91a", + "Name": null + }, + "a91f6a1c-c6bf-498f-87c7-824b80dd1029": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a91f6a1c-c6bf-498f-87c7-824b80dd1029", + "Name": "W18x40", + "EdgeId": 202 + }, + "9603393a-2a16-4fd0-8cee-458f2ff36694": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9603393a-2a16-4fd0-8cee-458f2ff36694", + "Name": null + }, + "938f81aa-f830-4892-9e3c-43fad84b3956": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "938f81aa-f830-4892-9e3c-43fad84b3956", + "Name": "W18x40", + "EdgeId": 206 + }, + "30edeeb3-df3d-438e-befd-4d154d7bb541": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "30edeeb3-df3d-438e-befd-4d154d7bb541", + "Name": null + }, + "66263f74-855a-4d72-bc60-e40c1c303b75": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "66263f74-855a-4d72-bc60-e40c1c303b75", + "Name": "W18x40", + "EdgeId": 207 + }, + "0a085250-7e36-470a-9d9b-04b517d9dbaa": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0a085250-7e36-470a-9d9b-04b517d9dbaa", + "Name": null + }, + "78d96028-2809-4763-82c9-1b976ee4409c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "78d96028-2809-4763-82c9-1b976ee4409c", + "Name": "W18x40", + "EdgeId": 211 + }, + "64ce661d-3df1-485c-90ab-f633f935ff10": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "64ce661d-3df1-485c-90ab-f633f935ff10", + "Name": null + }, + "46b02b69-c852-4a72-9ade-e334f2fd6bfb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "46b02b69-c852-4a72-9ade-e334f2fd6bfb", + "Name": "W18x40", + "EdgeId": 212 + }, + "e06995d7-3011-4b07-a0f0-9442f71d14f4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e06995d7-3011-4b07-a0f0-9442f71d14f4", + "Name": null + }, + "0c9f542f-a91c-43a9-8c3e-9345bb876efa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "0c9f542f-a91c-43a9-8c3e-9345bb876efa", + "Name": "W18x40", + "EdgeId": 216, + "ExternalEdgeId": 216 + }, + "b87e37b1-5692-4791-b43d-9337ed140548": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b87e37b1-5692-4791-b43d-9337ed140548", + "Name": null + }, + "7e8b900d-27bc-408a-81ae-53438247f059": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "7e8b900d-27bc-408a-81ae-53438247f059", + "Name": "W18x40", + "EdgeId": 217 + }, + "52ec10a4-b2ab-4860-8c61-45c2c3352c4b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "52ec10a4-b2ab-4860-8c61-45c2c3352c4b", + "Name": null + }, + "a997202a-5a3e-4e46-a8b9-03ba84857820": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a997202a-5a3e-4e46-a8b9-03ba84857820", + "Name": "W18x40", + "EdgeId": 222 + }, + "a1e3e2fa-a755-46d7-8da7-2b149275bdec": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 23.0, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a1e3e2fa-a755-46d7-8da7-2b149275bdec", + "Name": null + }, + "172cf631-3712-4317-a993-91ba09e11d12": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "172cf631-3712-4317-a993-91ba09e11d12", + "Name": "W18x40", + "EdgeId": 223 + }, + "ad7da4a3-fa7e-49d2-8a31-25370b79a641": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 29.5, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ad7da4a3-fa7e-49d2-8a31-25370b79a641", + "Name": null + }, + "eb795953-2568-465f-9b74-f1078a8e68e7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "eb795953-2568-465f-9b74-f1078a8e68e7", + "Name": "W18x40", + "EdgeId": 224, + "ExternalEdgeId": 224 + }, + "83c2a9b0-4ff9-44c8-9387-a1b53bd19876": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 29.5, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "83c2a9b0-4ff9-44c8-9387-a1b53bd19876", + "Name": null + }, + "e89c308d-769d-49fe-9cb3-4e71364adf86": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "e89c308d-769d-49fe-9cb3-4e71364adf86", + "Name": "W18x40", + "EdgeId": 229 + }, + "38923d51-2d66-429c-8df6-c17dcf977aec": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "38923d51-2d66-429c-8df6-c17dcf977aec", + "Name": null + }, + "a6ef0dfa-7138-4619-92dc-f7216e254d21": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a6ef0dfa-7138-4619-92dc-f7216e254d21", + "Name": "W18x40", + "EdgeId": 230 + }, + "3981bba0-275d-409b-be8a-21b147c63b24": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3981bba0-275d-409b-be8a-21b147c63b24", + "Name": null + }, + "c4c352fe-29ce-4226-b0ff-87fe9181f7a8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "c4c352fe-29ce-4226-b0ff-87fe9181f7a8", + "Name": "W18x40", + "EdgeId": 234 + }, + "792d35ba-505b-4717-ae30-0574541c8eee": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "792d35ba-505b-4717-ae30-0574541c8eee", + "Name": null + }, + "54ea5cfa-826d-4678-966a-9a49a295c13f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "54ea5cfa-826d-4678-966a-9a49a295c13f", + "Name": "W18x40", + "EdgeId": 235 + }, + "10a378f9-7aec-40eb-87e5-011b689abdb5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "10a378f9-7aec-40eb-87e5-011b689abdb5", + "Name": null + }, + "fd86a24e-118a-47df-9b62-6b8cc5319f4a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "fd86a24e-118a-47df-9b62-6b8cc5319f4a", + "Name": "W18x40", + "EdgeId": 239 + }, + "fc90d40e-84e6-4702-a2a8-c755dd966525": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fc90d40e-84e6-4702-a2a8-c755dd966525", + "Name": null + }, + "1ca61af4-3939-4a30-8225-dcea7b7de391": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "1ca61af4-3939-4a30-8225-dcea7b7de391", + "Name": "W18x40", + "EdgeId": 240 + }, + "acc0b12a-4dac-4bae-bffd-24899bbcee12": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "acc0b12a-4dac-4bae-bffd-24899bbcee12", + "Name": null + }, + "8dace4b8-440b-48db-9aae-37eb8d311e2e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "8dace4b8-440b-48db-9aae-37eb8d311e2e", + "Name": "W18x40", + "EdgeId": 244, + "ExternalEdgeId": 244 + }, + "cb9ae6b6-1e46-4736-ae26-768d4c7ec0be": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cb9ae6b6-1e46-4736-ae26-768d4c7ec0be", + "Name": null + }, + "ef986c15-2ac9-46fa-a63f-84e8897dae3b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "ef986c15-2ac9-46fa-a63f-84e8897dae3b", + "Name": "W18x40", + "EdgeId": 245 + }, + "72477917-2055-44a6-9eaf-ff2c6fc52f17": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "72477917-2055-44a6-9eaf-ff2c6fc52f17", + "Name": null + }, + "e056abb1-ed90-4b92-8fea-04471d0dad59": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "e056abb1-ed90-4b92-8fea-04471d0dad59", + "Name": "W18x40", + "EdgeId": 250 + }, + "5c2a64a9-de66-4b9b-b9ca-205fa60436c5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 23.0, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5c2a64a9-de66-4b9b-b9ca-205fa60436c5", + "Name": null + }, + "41323531-d1a4-4aed-9c52-4f4b59259096": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "41323531-d1a4-4aed-9c52-4f4b59259096", + "Name": "W18x40", + "EdgeId": 251 + }, + "21304e88-f0df-43e1-99c1-6909c611ac69": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 29.5, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "21304e88-f0df-43e1-99c1-6909c611ac69", + "Name": null + }, + "cbdc7041-d7bf-429d-a991-529ebd23ceb7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "cbdc7041-d7bf-429d-a991-529ebd23ceb7", + "Name": "W18x40", + "EdgeId": 252, + "ExternalEdgeId": 252 + }, + "4c8b2de0-0200-44a0-944e-dbb34527d3bf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 29.5, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4c8b2de0-0200-44a0-944e-dbb34527d3bf", + "Name": null + }, + "4ceaa300-8022-4e39-a0bb-f5cefa889087": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "4ceaa300-8022-4e39-a0bb-f5cefa889087", + "Name": "W18x40", + "EdgeId": 257 + }, + "ee66ca6c-6d45-491e-9df6-69b88afae611": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ee66ca6c-6d45-491e-9df6-69b88afae611", + "Name": null + }, + "aebf6dbe-40f4-41f6-8f7b-41321d57115c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "aebf6dbe-40f4-41f6-8f7b-41321d57115c", + "Name": "W18x40", + "EdgeId": 258 + }, + "083b5588-5e6b-4f02-aa82-6cff6f88b1e9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "083b5588-5e6b-4f02-aa82-6cff6f88b1e9", + "Name": null + }, + "31e5df48-79ef-42ce-a9e4-8d957267c117": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "31e5df48-79ef-42ce-a9e4-8d957267c117", + "Name": "W18x40", + "EdgeId": 262 + }, + "219ed329-0bc5-4c99-862b-f2de6df0322c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "219ed329-0bc5-4c99-862b-f2de6df0322c", + "Name": null + }, + "da1239f7-b819-4ab1-a324-af5463852f4e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "da1239f7-b819-4ab1-a324-af5463852f4e", + "Name": "W18x40", + "EdgeId": 263 + }, + "ef757a8f-64a3-42ee-852d-bf403aa6a580": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ef757a8f-64a3-42ee-852d-bf403aa6a580", + "Name": null + }, + "ccc3f409-ead5-4f79-8dbc-a02d8516b5ff": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "ccc3f409-ead5-4f79-8dbc-a02d8516b5ff", + "Name": "W18x40", + "EdgeId": 267 + }, + "4ce11a50-452e-48b1-b02d-a9f5d1dc4da3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4ce11a50-452e-48b1-b02d-a9f5d1dc4da3", + "Name": null + }, + "8572b7ba-86a0-4ee8-92d4-0f62896efd4a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "8572b7ba-86a0-4ee8-92d4-0f62896efd4a", + "Name": "W18x40", + "EdgeId": 268 + }, + "8f9fb229-5944-4913-bac2-297075383a87": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8f9fb229-5944-4913-bac2-297075383a87", + "Name": null + }, + "4fd42bbe-5a7d-4e8e-abf4-ee176c2088bd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "4fd42bbe-5a7d-4e8e-abf4-ee176c2088bd", + "Name": "W18x40", + "EdgeId": 272, + "ExternalEdgeId": 272 + }, + "da0cd287-2462-42fe-93ca-db4662722c92": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "da0cd287-2462-42fe-93ca-db4662722c92", + "Name": null + }, + "bccdd461-d584-4927-8b16-e92e6a8b2430": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "bccdd461-d584-4927-8b16-e92e6a8b2430", + "Name": "W18x40", + "EdgeId": 273 + }, + "0cc56e04-7f6a-416e-8df6-2805b839072f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0cc56e04-7f6a-416e-8df6-2805b839072f", + "Name": null + }, + "9bf42062-7eb8-4246-858d-7f96ba9dd798": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "9bf42062-7eb8-4246-858d-7f96ba9dd798", + "Name": "W18x40", + "EdgeId": 278 + }, + "58a4a2d1-a820-41d0-a640-3bf442ca65d3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 23.0, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "58a4a2d1-a820-41d0-a640-3bf442ca65d3", + "Name": null + }, + "cce71879-c29e-499b-bbe3-3345e901b7c9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "cce71879-c29e-499b-bbe3-3345e901b7c9", + "Name": "W18x40", + "EdgeId": 279 + }, + "f4ac9691-fe5b-45bf-be64-9c4b7682136e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 29.5, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f4ac9691-fe5b-45bf-be64-9c4b7682136e", + "Name": null + }, + "509bdce4-fd50-43f5-ae44-981200acfbf1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "509bdce4-fd50-43f5-ae44-981200acfbf1", + "Name": "W18x40", + "EdgeId": 280, + "ExternalEdgeId": 280 + }, + "06e8e416-c7c7-4383-bda7-5dfde39a7a4b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 29.5, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "06e8e416-c7c7-4383-bda7-5dfde39a7a4b", + "Name": null + }, + "af4de305-e791-4466-b972-ea5a4f91c3bd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "af4de305-e791-4466-b972-ea5a4f91c3bd", + "Name": "W18x40", + "EdgeId": 285 + }, + "34075005-73c4-4e09-bebb-3288e90c2077": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "34075005-73c4-4e09-bebb-3288e90c2077", + "Name": null + }, + "7b9bf020-4f02-4de5-a71e-115d274ca524": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "7b9bf020-4f02-4de5-a71e-115d274ca524", + "Name": "W18x40", + "EdgeId": 286 + }, + "95578b76-df01-422f-aaaf-0294be5e4ff6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "95578b76-df01-422f-aaaf-0294be5e4ff6", + "Name": null + }, + "b1f7bd78-ff3e-44ea-a40a-163ff4b56750": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "b1f7bd78-ff3e-44ea-a40a-163ff4b56750", + "Name": "W18x40", + "EdgeId": 290 + }, + "cf712197-8635-46d9-a053-67892cf1a895": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cf712197-8635-46d9-a053-67892cf1a895", + "Name": null + }, + "40241f81-75fa-475c-b862-c0585825657e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "40241f81-75fa-475c-b862-c0585825657e", + "Name": "W18x40", + "EdgeId": 291 + }, + "cad36578-ac43-44e6-a79d-f39dda06c8ed": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cad36578-ac43-44e6-a79d-f39dda06c8ed", + "Name": null + }, + "dc296252-72e6-4f46-b78a-24e132cd9e15": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "dc296252-72e6-4f46-b78a-24e132cd9e15", + "Name": "W18x40", + "EdgeId": 295 + }, + "6325c132-549d-455f-915f-46ed65eab9b4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6325c132-549d-455f-915f-46ed65eab9b4", + "Name": null + }, + "d8a1a5b1-5cde-4f8a-ac7d-1c243e95dcce": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "d8a1a5b1-5cde-4f8a-ac7d-1c243e95dcce", + "Name": "W18x40", + "EdgeId": 296 + }, + "e3b51de8-ade1-4f4e-b571-9c6ff749da4e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e3b51de8-ade1-4f4e-b571-9c6ff749da4e", + "Name": null + }, + "9ab58337-1dcd-4ff7-817b-401ed68a61ef": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "9ab58337-1dcd-4ff7-817b-401ed68a61ef", + "Name": "W18x40", + "EdgeId": 300, + "ExternalEdgeId": 300 + }, + "af38a673-6719-4914-91a6-1fff4f946153": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "af38a673-6719-4914-91a6-1fff4f946153", + "Name": null + }, + "baa14628-227b-4931-8af4-81dffebd47f7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "baa14628-227b-4931-8af4-81dffebd47f7", + "Name": "W18x40", + "EdgeId": 301 + }, + "970364de-abf3-436e-898f-c45e74433d64": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "970364de-abf3-436e-898f-c45e74433d64", + "Name": null + }, + "4f5b621b-7f1b-4ea3-b29a-2ad73e0160fd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "4f5b621b-7f1b-4ea3-b29a-2ad73e0160fd", + "Name": "W18x40", + "EdgeId": 306 + }, + "4a1c8a62-ea42-414e-940f-5bf779aff334": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 23.0, + "Y": -59.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4a1c8a62-ea42-414e-940f-5bf779aff334", + "Name": null + }, + "dae33c7d-cfe7-4acb-a455-c3f1451d1378": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "dae33c7d-cfe7-4acb-a455-c3f1451d1378", + "Name": "W18x40", + "EdgeId": 307, + "ExternalEdgeId": 307 + }, + "005b342f-75ba-441c-b00f-dc8f11db1b3b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 29.5, + "Y": -59.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "005b342f-75ba-441c-b00f-dc8f11db1b3b", + "Name": null + }, + "d7ac1548-7650-472a-8741-bad52be9afd9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "d7ac1548-7650-472a-8741-bad52be9afd9", + "Name": "W18x40", + "EdgeId": 308, + "ExternalEdgeId": 308 + }, + "950de28f-aff7-44ed-b2b9-7e7668f518d8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 29.5, + "Y": -59.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "950de28f-aff7-44ed-b2b9-7e7668f518d8", + "Name": null + }, + "d72e0bf9-4229-438e-9047-1d816f068c4e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "d72e0bf9-4229-438e-9047-1d816f068c4e", + "Name": "W18x40", + "EdgeId": 313 + }, + "8a1d8841-6ea7-4d6f-a42f-bea0473987aa": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -59.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8a1d8841-6ea7-4d6f-a42f-bea0473987aa", + "Name": null + }, + "eeb9e196-db05-4d71-84b0-bcebf07b6063": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "eeb9e196-db05-4d71-84b0-bcebf07b6063", + "Name": "W18x40", + "EdgeId": 314, + "ExternalEdgeId": 314 + }, + "e8134d32-05b1-42ab-8599-a6ef0f201ee8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -59.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e8134d32-05b1-42ab-8599-a6ef0f201ee8", + "Name": null + }, + "f4486d31-63dd-4d86-bf93-21122cd0fd7d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "f4486d31-63dd-4d86-bf93-21122cd0fd7d", + "Name": "W18x40", + "EdgeId": 318 + }, + "6b1e787c-a045-410d-8d10-2aea8ffb8f81": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -59.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6b1e787c-a045-410d-8d10-2aea8ffb8f81", + "Name": null + }, + "b105cc2e-6e0a-43bb-b37c-62d76c1f707a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "b105cc2e-6e0a-43bb-b37c-62d76c1f707a", + "Name": "W18x40", + "EdgeId": 319, + "ExternalEdgeId": 319 + }, + "005413af-e9d7-4fdc-b916-ac01234b64d5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -59.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "005413af-e9d7-4fdc-b916-ac01234b64d5", + "Name": null + }, + "ff827db3-a27a-432f-af3d-3d3479b8d84d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "ff827db3-a27a-432f-af3d-3d3479b8d84d", + "Name": "W18x40", + "EdgeId": 323 + }, + "a425b9c2-21ad-4e34-9d73-4edbbea686fc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -59.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a425b9c2-21ad-4e34-9d73-4edbbea686fc", + "Name": null + }, + "f72b2c92-63be-4d8a-b1aa-7dd8569b7445": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "f72b2c92-63be-4d8a-b1aa-7dd8569b7445", + "Name": "W18x40", + "EdgeId": 324, + "ExternalEdgeId": 324 + }, + "dc8b16a4-6045-42ad-9046-29b7f7211e92": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -59.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dc8b16a4-6045-42ad-9046-29b7f7211e92", + "Name": null + }, + "a592d121-7ed6-4df3-b357-3b3952cebe69": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a592d121-7ed6-4df3-b357-3b3952cebe69", + "Name": "W18x40", + "EdgeId": 328, + "ExternalEdgeId": 328 + }, + "ad8cc820-fddc-4b23-a9a6-1c6eb18b0413": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -59.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ad8cc820-fddc-4b23-a9a6-1c6eb18b0413", + "Name": null + }, + "ae3b6a32-2682-4dce-a010-edf6c92760ee": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "ae3b6a32-2682-4dce-a010-edf6c92760ee", + "Name": "W18x40", + "EdgeId": 329, + "ExternalEdgeId": 329 + }, + "53da9573-c7ba-42e4-a746-5c36dfa5bbe5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -59.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "53da9573-c7ba-42e4-a746-5c36dfa5bbe5", + "Name": null + }, + "0e54563f-2fc4-4d9d-9369-32f6c2ea0b49": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1f248147-be87-4d6a-922b-e7bf05d5f27e", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.7324, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "0e54563f-2fc4-4d9d-9369-32f6c2ea0b49", + "Name": "W18x40", + "EdgeId": 331, + "ExternalEdgeId": 331 + }, + "382530bd-989e-4f59-a332-a6c78c466768": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.7324, + "Y": -0.5, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -0.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "382530bd-989e-4f59-a332-a6c78c466768", + "Name": null + }, + "195a46b1-7b5f-4d19-9527-c1f581a96fab": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "195a46b1-7b5f-4d19-9527-c1f581a96fab", + "Name": "W18x40", + "EdgeId": 332 + }, + "02a57abe-d470-4d9f-aeeb-faa2c9c3bcf4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -0.5, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -5.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "02a57abe-d470-4d9f-aeeb-faa2c9c3bcf4", + "Name": null + }, + "673f2af9-52df-4335-9457-1b8ecf1aa4a0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c9699dd2-d040-4a2c-ad98-36443b0d037a", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "673f2af9-52df-4335-9457-1b8ecf1aa4a0", + "Name": "W18x40", + "EdgeId": 333 + }, + "42b6e906-313d-4eb8-b831-ac9753a803cf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 4.5 + }, + "End": { + "X": 12.7324, + "Y": -5.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "42b6e906-313d-4eb8-b831-ac9753a803cf", + "Name": null + }, + "76e6154e-9902-42e5-bd4e-d4a909f8aa79": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "442ea777-71e8-42e2-a88c-d741cce24ce5", + "Transform": { + "Matrix": { + "Components": [ + 0.5547001962252291, + 0.8320502943378437, + 0.0, + 9.7324, + -0.8320502943378437, + 0.5547001962252291, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "76e6154e-9902-42e5-bd4e-d4a909f8aa79", + "Name": "W18x40", + "EdgeId": 334, + "ExternalEdgeId": 334 + }, + "7d9660d4-43b2-482e-82b4-292d8e2d001c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.7324, + "Y": -0.5, + "Z": 4.5 + }, + "End": { + "X": 12.7324, + "Y": -5.000000000000001, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7d9660d4-43b2-482e-82b4-292d8e2d001c", + "Name": null + }, + "292e1a1d-9b9b-4921-b15a-dfac213efee1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "292e1a1d-9b9b-4921-b15a-dfac213efee1", + "Name": "W18x40", + "EdgeId": 339, + "ExternalEdgeId": 339 + }, + "db1e7492-dd35-4398-8549-1c5bf5d84797": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -0.5, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -0.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "db1e7492-dd35-4398-8549-1c5bf5d84797", + "Name": null + }, + "bb07065a-6c3d-4545-90fa-b3c8cb1989ca": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "bb07065a-6c3d-4545-90fa-b3c8cb1989ca", + "Name": "W18x40", + "EdgeId": 340 + }, + "0b731827-dafb-4223-bac7-9f0a03eaaf64": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -0.5, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -5.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0b731827-dafb-4223-bac7-9f0a03eaaf64", + "Name": null + }, + "f24f08a3-0b9d-4cc7-8b93-0ea27a62253a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "f24f08a3-0b9d-4cc7-8b93-0ea27a62253a", + "Name": "W18x40", + "EdgeId": 341 + }, + "b4f95fe4-098d-4fb0-908c-ebef6344d3cd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -5.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b4f95fe4-098d-4fb0-908c-ebef6344d3cd", + "Name": null + }, + "141c3c4a-94b1-4152-9ca8-7b82030d1fdf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "141c3c4a-94b1-4152-9ca8-7b82030d1fdf", + "Name": "W18x40", + "EdgeId": 344, + "ExternalEdgeId": 344 + }, + "91a3462d-81f0-4d87-b12a-e9f41614b325": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -0.5, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -0.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "91a3462d-81f0-4d87-b12a-e9f41614b325", + "Name": null + }, + "3edeb499-9df5-4571-871d-5fc61baca0bb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "3edeb499-9df5-4571-871d-5fc61baca0bb", + "Name": "W18x40", + "EdgeId": 345, + "ExternalEdgeId": 345 + }, + "7645f093-55c5-49bb-a377-3a26c95241c3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -0.5, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -5.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7645f093-55c5-49bb-a377-3a26c95241c3", + "Name": null + }, + "3de06577-6368-4655-93fb-7a6b9d6c25dc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "3de06577-6368-4655-93fb-7a6b9d6c25dc", + "Name": "W18x40", + "EdgeId": 346 + }, + "3519218e-ac4c-4ff6-90b6-460873da9d10": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -5.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -5.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3519218e-ac4c-4ff6-90b6-460873da9d10", + "Name": null + }, + "718acb3a-bda7-40c4-89ca-367e62ad9e52": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e5972626-f896-4b80-b62f-fa93a8846507", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -9.9014, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "718acb3a-bda7-40c4-89ca-367e62ad9e52", + "Name": "W18x40", + "EdgeId": 349 + }, + "0f07889b-470d-4e67-b431-395d9daa9eb8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -9.9014, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0f07889b-470d-4e67-b431-395d9daa9eb8", + "Name": null + }, + "b3568703-34ff-4a0a-ab20-178ad643a787": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "49319ac3-7aa7-4cea-aa5e-8a40ef05e1ba", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "b3568703-34ff-4a0a-ab20-178ad643a787", + "Name": "W18x40", + "EdgeId": 350 + }, + "1965e954-cdc4-4710-8fc6-5eb5759dd77d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 16.06574, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1965e954-cdc4-4710-8fc6-5eb5759dd77d", + "Name": null + }, + "5c0751c6-7dd3-494b-aae2-9f6c6934c3fe": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4dc79d1f-76cc-4eac-ba1d-90c0929442e9", + "Transform": { + "Matrix": { + "Components": [ + 0.5547391419896724, + 0.8320243291782772, + 0.0, + 16.0, + -0.8320243291782772, + 0.5547391419896724, + 0.0, + -9.9014, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "5c0751c6-7dd3-494b-aae2-9f6c6934c3fe", + "Name": "W18x40", + "EdgeId": 351, + "ExternalEdgeId": 351 + }, + "740529b9-4663-427e-b1fa-eff316b90ff7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -9.9014, + "Z": 4.5 + }, + "End": { + "X": 16.06574, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "740529b9-4663-427e-b1fa-eff316b90ff7", + "Name": null + }, + "749fabbe-482f-4e31-a4b3-7f2f85f9c37b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39b28bf6-91db-4c72-b448-44bed8dc6bc0", + "Transform": { + "Matrix": { + "Components": [ + 0.554700196225229, + 0.8320502943378437, + 0.0, + 12.7324, + -0.8320502943378437, + 0.554700196225229, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "749fabbe-482f-4e31-a4b3-7f2f85f9c37b", + "Name": "W18x40", + "EdgeId": 355, + "ExternalEdgeId": 355 + }, + "da7e086b-2aa4-4474-8de1-d8bde6afbc51": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.7324, + "Y": -5.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -9.9014, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "da7e086b-2aa4-4474-8de1-d8bde6afbc51", + "Name": null + }, + "ac2a1b89-4369-4e52-87d0-741afb304b76": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "ac2a1b89-4369-4e52-87d0-741afb304b76", + "Name": "W18x40", + "EdgeId": 356 + }, + "248fc446-6a8c-4ec4-883c-c15ab42c7f7d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "248fc446-6a8c-4ec4-883c-c15ab42c7f7d", + "Name": null + }, + "17420ccd-0b5c-4f6f-b6d0-8fdeab1bcbbf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "17420ccd-0b5c-4f6f-b6d0-8fdeab1bcbbf", + "Name": "W18x40", + "EdgeId": 357 + }, + "b60594d5-586c-4f05-bdd6-91860777b981": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b60594d5-586c-4f05-bdd6-91860777b981", + "Name": null + }, + "c2af512a-b65d-401a-b950-f1e57e453322": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c2af512a-b65d-401a-b950-f1e57e453322", + "Name": "W18x40", + "EdgeId": 359 + }, + "95bf01d5-a35a-497b-aff4-c1c95111424f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -5.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "95bf01d5-a35a-497b-aff4-c1c95111424f", + "Name": null + }, + "51d23319-3e28-4f76-aa8a-493a172e7f14": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "51d23319-3e28-4f76-aa8a-493a172e7f14", + "Name": "W18x40", + "EdgeId": 360 + }, + "ee0f0a9a-4aa2-4eb8-93e5-52adbad8c5fa": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ee0f0a9a-4aa2-4eb8-93e5-52adbad8c5fa", + "Name": null + }, + "acc61123-96b8-425b-8592-58d53bc446c1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "acc61123-96b8-425b-8592-58d53bc446c1", + "Name": "W18x40", + "EdgeId": 362, + "ExternalEdgeId": 362 + }, + "436d63dd-5762-4a4f-afe2-d0bd34ec818b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -5.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "436d63dd-5762-4a4f-afe2-d0bd34ec818b", + "Name": null + }, + "c2359198-8052-48f7-9379-fd30309e7840": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c2359198-8052-48f7-9379-fd30309e7840", + "Name": "W18x40", + "EdgeId": 363 + }, + "7cbf1076-18af-442a-aa94-658b30e1a17a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7cbf1076-18af-442a-aa94-658b30e1a17a", + "Name": null + }, + "32fa9586-f0b8-46c9-b7e1-fdf07c33742b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "32fa9586-f0b8-46c9-b7e1-fdf07c33742b", + "Name": "W18x40", + "EdgeId": 365 + }, + "00bf53c7-2df6-4343-b648-4497d55e6c46": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "00bf53c7-2df6-4343-b648-4497d55e6c46", + "Name": null + }, + "40757812-7faf-4b05-acd8-c6d9bb4ea8f9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "0b85760d-9483-48e4-99ef-f0158063192f", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "40757812-7faf-4b05-acd8-c6d9bb4ea8f9", + "Name": "W18x40", + "EdgeId": 366 + }, + "b187c97c-12f6-4cbc-8258-9077a872f047": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 19.39906, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b187c97c-12f6-4cbc-8258-9077a872f047", + "Name": null + }, + "a61b2830-3e47-47c4-bd3c-8c042ddf65ef": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2d8372e3-18d6-43f5-b8a6-ca8af44199e8", + "Transform": { + "Matrix": { + "Components": [ + 0.5546986601295418, + 0.8320513183995871, + 0.0, + 16.06574, + -0.8320513183995871, + 0.5546986601295418, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "a61b2830-3e47-47c4-bd3c-8c042ddf65ef", + "Name": "W18x40", + "EdgeId": 367, + "ExternalEdgeId": 367 + }, + "72221334-cbd7-49fd-95dc-eeb96145c890": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.06574, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 19.39906, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "72221334-cbd7-49fd-95dc-eeb96145c890", + "Name": null + }, + "c800dae5-a69b-4eb6-93e9-770e672f7eb8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c800dae5-a69b-4eb6-93e9-770e672f7eb8", + "Name": "W18x40", + "EdgeId": 370 + }, + "159daeac-5141-4ab4-bc8d-e7d365f9ec83": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "159daeac-5141-4ab4-bc8d-e7d365f9ec83", + "Name": null + }, + "b4014d37-f1a2-49c1-ada7-8c0f030d5830": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "b4014d37-f1a2-49c1-ada7-8c0f030d5830", + "Name": "W18x40", + "EdgeId": 371 + }, + "8738f1fc-f06c-4c19-8d9c-dedf0d07f4e4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8738f1fc-f06c-4c19-8d9c-dedf0d07f4e4", + "Name": null + }, + "656ed2a6-9138-4e30-853a-3c6c40eafa99": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "656ed2a6-9138-4e30-853a-3c6c40eafa99", + "Name": "W18x40", + "EdgeId": 373 + }, + "1b65f783-6996-4655-ad9d-e1e48a1d6867": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1b65f783-6996-4655-ad9d-e1e48a1d6867", + "Name": null + }, + "dab2bc72-f1a0-4400-964c-6b23013d5bf2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "dab2bc72-f1a0-4400-964c-6b23013d5bf2", + "Name": "W18x40", + "EdgeId": 374 + }, + "75af2fca-942c-4e6b-be8f-6c31e1e4e474": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "75af2fca-942c-4e6b-be8f-6c31e1e4e474", + "Name": null + }, + "d2abbea9-a0d8-4786-a45b-462010cf62a2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "d2abbea9-a0d8-4786-a45b-462010cf62a2", + "Name": "W18x40", + "EdgeId": 376, + "ExternalEdgeId": 376 + }, + "402ad856-dc8d-4bff-88bd-ca1f8e452dd3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "402ad856-dc8d-4bff-88bd-ca1f8e452dd3", + "Name": null + }, + "40bcc871-c45b-4ae9-b403-fa0dcf71781e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "40bcc871-c45b-4ae9-b403-fa0dcf71781e", + "Name": "W18x40", + "EdgeId": 377 + }, + "dfd51255-c9e9-45c0-b842-2efd6c54d75b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dfd51255-c9e9-45c0-b842-2efd6c54d75b", + "Name": null + }, + "7b25fcba-3cdf-404e-b2c7-52adb2f843f2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "7b25fcba-3cdf-404e-b2c7-52adb2f843f2", + "Name": "W18x40", + "EdgeId": 379 + }, + "c5eb6f00-5098-43ee-ba90-76fb7c1530e8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c5eb6f00-5098-43ee-ba90-76fb7c1530e8", + "Name": null + }, + "e0d46986-35b9-4396-a0ff-d69e5b378932": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7cd6c7d4-992c-4217-9c1f-ac7c9170b25c", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e0d46986-35b9-4396-a0ff-d69e5b378932", + "Name": "W18x40", + "EdgeId": 380 + }, + "1c32c468-a24a-466b-9003-b64055e11f3c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 22.7324, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1c32c468-a24a-466b-9003-b64055e11f3c", + "Name": null + }, + "fa7471a7-7703-4446-ad4f-37431975557f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "f1f4efee-0d74-4a09-8341-e6127bd83748", + "Transform": { + "Matrix": { + "Components": [ + 0.5547009642709457, + 0.832049782306854, + 0.0, + 19.39906, + -0.832049782306854, + 0.5547009642709457, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "fa7471a7-7703-4446-ad4f-37431975557f", + "Name": "W18x40", + "EdgeId": 381, + "ExternalEdgeId": 381 + }, + "c5747bbb-afce-4c64-bca1-821500537422": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.39906, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 22.7324, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c5747bbb-afce-4c64-bca1-821500537422", + "Name": null + }, + "451d339c-1696-4e1b-8be7-7cfc352a3ba5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "451d339c-1696-4e1b-8be7-7cfc352a3ba5", + "Name": "W18x40", + "EdgeId": 384 + }, + "f8fb7ada-b5bb-4658-9b54-e4fe304c6652": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f8fb7ada-b5bb-4658-9b54-e4fe304c6652", + "Name": null + }, + "33715d15-e80c-463d-8b31-fbedafa243fd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "33715d15-e80c-463d-8b31-fbedafa243fd", + "Name": "W18x40", + "EdgeId": 385 + }, + "0814bde4-623d-404f-992e-26bab4883fa4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0814bde4-623d-404f-992e-26bab4883fa4", + "Name": null + }, + "ae178a39-4f27-45b7-8829-cdc742bdf6f5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "ae178a39-4f27-45b7-8829-cdc742bdf6f5", + "Name": "W18x40", + "EdgeId": 387 + }, + "5c32ba28-a744-48ee-af46-8a3287d3f45c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5c32ba28-a744-48ee-af46-8a3287d3f45c", + "Name": null + }, + "9e7d58e0-2394-4a53-a737-139875c5dc7f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "9e7d58e0-2394-4a53-a737-139875c5dc7f", + "Name": "W18x40", + "EdgeId": 388 + }, + "64442de3-4d5f-4cad-8e05-33e5d1784cb3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "64442de3-4d5f-4cad-8e05-33e5d1784cb3", + "Name": null + }, + "8df09f90-c4fc-4c2e-bddc-d4531599deae": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "8df09f90-c4fc-4c2e-bddc-d4531599deae", + "Name": "W18x40", + "EdgeId": 390, + "ExternalEdgeId": 390 + }, + "9e0d4b17-495b-41ac-8787-b65e05887465": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9e0d4b17-495b-41ac-8787-b65e05887465", + "Name": null + }, + "104c49c5-4a16-4492-a389-993e86a706c2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "104c49c5-4a16-4492-a389-993e86a706c2", + "Name": "W18x40", + "EdgeId": 391 + }, + "f4dc01cd-0805-41bc-9fbd-aa675966eb16": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f4dc01cd-0805-41bc-9fbd-aa675966eb16", + "Name": null + }, + "45819a07-0377-4f96-b35c-ebfb8b10dfb5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d4da724b-0d2f-4bd3-acf2-5d3697adf278", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -20.4014, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "45819a07-0377-4f96-b35c-ebfb8b10dfb5", + "Name": "W18x40", + "EdgeId": 393 + }, + "2eff71a1-49f2-4d4e-8f58-165535c16473": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -20.4014, + "Z": 4.5 + }, + "End": { + "X": 23.0, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2eff71a1-49f2-4d4e-8f58-165535c16473", + "Name": null + }, + "3b6ed46a-d0f6-4f32-9a08-f7f047aaa3f2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b110d957-b9da-4137-9c21-3ec50b79b33e", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "3b6ed46a-d0f6-4f32-9a08-f7f047aaa3f2", + "Name": "W18x40", + "EdgeId": 394 + }, + "416847c1-4fcd-4931-94fd-55f44df7586c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 26.06574, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "416847c1-4fcd-4931-94fd-55f44df7586c", + "Name": null + }, + "12a373e4-f160-464e-a0ef-18bb895f4635": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e0c50391-a50c-417e-a648-1d8139e40aa4", + "Transform": { + "Matrix": { + "Components": [ + 0.5547010313116194, + 0.8320497376129783, + 0.0, + 23.0, + -0.8320497376129783, + 0.5547010313116194, + 0.0, + -20.4014, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "12a373e4-f160-464e-a0ef-18bb895f4635", + "Name": "W18x40", + "EdgeId": 395, + "ExternalEdgeId": 395 + }, + "312c9e72-ecf9-47f5-aa9f-e7b35c198b36": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -20.4014, + "Z": 4.5 + }, + "End": { + "X": 26.06574, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "312c9e72-ecf9-47f5-aa9f-e7b35c198b36", + "Name": null + }, + "847c76f8-f248-408e-b962-a7e61eb8fd2d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3bf2c337-826f-4c12-b4d9-a345602f7c71", + "Transform": { + "Matrix": { + "Components": [ + 0.5547001962252325, + 0.8320502943378414, + 0.0, + 22.7324, + -0.8320502943378414, + 0.5547001962252325, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "847c76f8-f248-408e-b962-a7e61eb8fd2d", + "Name": "W18x40", + "EdgeId": 399, + "ExternalEdgeId": 399 + }, + "8dafe523-5d01-45ef-b715-26bb1a00f4df": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.7324, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 23.0, + "Y": -20.4014, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8dafe523-5d01-45ef-b715-26bb1a00f4df", + "Name": null + }, + "a160a36b-01b6-4f2f-a3ec-165f2c05aa13": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "a160a36b-01b6-4f2f-a3ec-165f2c05aa13", + "Name": "W18x40", + "EdgeId": 400 + }, + "0577e476-df51-4fad-a3e5-ff33e6ec5588": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0577e476-df51-4fad-a3e5-ff33e6ec5588", + "Name": null + }, + "a8a8f2c0-0e1e-4627-b27a-8f8307805127": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "a8a8f2c0-0e1e-4627-b27a-8f8307805127", + "Name": "W18x40", + "EdgeId": 401 + }, + "25ac06b9-8ef6-4732-8cd1-00d1b4a4fffa": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "25ac06b9-8ef6-4732-8cd1-00d1b4a4fffa", + "Name": null + }, + "9267a1a4-0447-45e1-aff0-20846e3d839b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "9267a1a4-0447-45e1-aff0-20846e3d839b", + "Name": "W18x40", + "EdgeId": 403 + }, + "253f18ab-d786-49ef-9f5c-8598933a4ec7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "253f18ab-d786-49ef-9f5c-8598933a4ec7", + "Name": null + }, + "1cbc815e-0d8f-475f-ae7d-1e8a6d511faa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "1cbc815e-0d8f-475f-ae7d-1e8a6d511faa", + "Name": "W18x40", + "EdgeId": 404 + }, + "ddf4b673-90a1-4013-b3bf-c3b1a0e2409b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ddf4b673-90a1-4013-b3bf-c3b1a0e2409b", + "Name": null + }, + "649a01ad-d0b4-4d53-9b99-632517b2172a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "649a01ad-d0b4-4d53-9b99-632517b2172a", + "Name": "W18x40", + "EdgeId": 406 + }, + "6d543297-c151-45b1-b188-6cd797ee2285": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6d543297-c151-45b1-b188-6cd797ee2285", + "Name": null + }, + "713c9309-23f4-4527-90a8-5167233eba5c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "713c9309-23f4-4527-90a8-5167233eba5c", + "Name": "W18x40", + "EdgeId": 407 + }, + "9357660f-8eec-4acb-bd9d-be170e7658ce": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9357660f-8eec-4acb-bd9d-be170e7658ce", + "Name": null + }, + "2bb3c432-7ec0-4aad-957f-994c26cb24b3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "2bb3c432-7ec0-4aad-957f-994c26cb24b3", + "Name": "W18x40", + "EdgeId": 409, + "ExternalEdgeId": 409 + }, + "8ca2205f-8655-4456-9d57-c6146c5ed35a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8ca2205f-8655-4456-9d57-c6146c5ed35a", + "Name": null + }, + "3f056e54-a892-4e0b-b4b0-347b1765c30a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "3f056e54-a892-4e0b-b4b0-347b1765c30a", + "Name": "W18x40", + "EdgeId": 410 + }, + "2c3e8f2f-95c7-465e-a1fc-8f6195d6a35f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2c3e8f2f-95c7-465e-a1fc-8f6195d6a35f", + "Name": null + }, + "8a459e9f-44b8-4307-b4c8-3ec45376516b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "8a459e9f-44b8-4307-b4c8-3ec45376516b", + "Name": "W18x40", + "EdgeId": 412 + }, + "49929cc0-4add-46a7-8fac-9610355983c8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 23.0, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "49929cc0-4add-46a7-8fac-9610355983c8", + "Name": null + }, + "7b18568a-91ad-4146-8471-65965440b805": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "9b7bdf59-55a7-4daf-9c50-86da88398d8a", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "7b18568a-91ad-4146-8471-65965440b805", + "Name": "W18x40", + "EdgeId": 413 + }, + "008ef7fa-65f7-490e-a5a7-a2a4d111ab47": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 29.39906, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "008ef7fa-65f7-490e-a5a7-a2a4d111ab47", + "Name": null + }, + "f7f33c38-10b7-406e-89de-63d6c5522a81": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2d8372e3-18d6-43f5-b8a6-ca8af44199e8", + "Transform": { + "Matrix": { + "Components": [ + 0.5546986601295418, + 0.8320513183995871, + 0.0, + 26.06574, + -0.8320513183995871, + 0.5546986601295418, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "f7f33c38-10b7-406e-89de-63d6c5522a81", + "Name": "W18x40", + "EdgeId": 414, + "ExternalEdgeId": 414 + }, + "30c29c96-54d1-416a-9b97-198c4c923db0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.06574, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 29.39906, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "30c29c96-54d1-416a-9b97-198c4c923db0", + "Name": null + }, + "9fbc8044-2452-4ddd-b104-7b561f8bdf19": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "9fbc8044-2452-4ddd-b104-7b561f8bdf19", + "Name": "W18x40", + "EdgeId": 417 + }, + "d1b10d77-49c8-4642-a634-3bc4e02cde9b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d1b10d77-49c8-4642-a634-3bc4e02cde9b", + "Name": null + }, + "7f61102a-dfe9-4113-82ec-f374eeeb3f90": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "7f61102a-dfe9-4113-82ec-f374eeeb3f90", + "Name": "W18x40", + "EdgeId": 418 + }, + "1084d9b9-dc29-4953-8a00-e4fc03b42647": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1084d9b9-dc29-4953-8a00-e4fc03b42647", + "Name": null + }, + "27d1ffe8-96c8-4c81-be51-e376ec06d25f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "27d1ffe8-96c8-4c81-be51-e376ec06d25f", + "Name": "W18x40", + "EdgeId": 420 + }, + "18b34de6-b22b-4897-9d96-15c4d1991d3f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "18b34de6-b22b-4897-9d96-15c4d1991d3f", + "Name": null + }, + "6d18d66d-7a36-436c-b2cf-00cc993788db": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "6d18d66d-7a36-436c-b2cf-00cc993788db", + "Name": "W18x40", + "EdgeId": 421 + }, + "578f57d7-1433-46c5-814b-78ae38400cb2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "578f57d7-1433-46c5-814b-78ae38400cb2", + "Name": null + }, + "3b423e1c-a877-4221-a221-8c4dfbd0e187": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "3b423e1c-a877-4221-a221-8c4dfbd0e187", + "Name": "W18x40", + "EdgeId": 423 + }, + "7ea52dc9-565a-4ff8-8963-d66911ec7f5e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7ea52dc9-565a-4ff8-8963-d66911ec7f5e", + "Name": null + }, + "e6ea7cf7-8c0a-45f7-8b14-f2979589894b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e6ea7cf7-8c0a-45f7-8b14-f2979589894b", + "Name": "W18x40", + "EdgeId": 424 + }, + "4d41e8b9-b2a4-4796-8b22-96c260fef66d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4d41e8b9-b2a4-4796-8b22-96c260fef66d", + "Name": null + }, + "e7831153-d604-4c44-a914-0b6918dc68af": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e7831153-d604-4c44-a914-0b6918dc68af", + "Name": "W18x40", + "EdgeId": 426, + "ExternalEdgeId": 426 + }, + "7235648b-0f6f-4231-9e5d-7f9de2c81780": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7235648b-0f6f-4231-9e5d-7f9de2c81780", + "Name": null + }, + "5f714000-5e54-458d-bbe7-ffca726908a9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "5f714000-5e54-458d-bbe7-ffca726908a9", + "Name": "W18x40", + "EdgeId": 427 + }, + "56101f9b-8867-42fd-9816-526ae55b646a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "56101f9b-8867-42fd-9816-526ae55b646a", + "Name": null + }, + "73d82ef5-a6b2-46b2-a132-cc7dd324259a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "34bbf385-46d3-47bf-83a0-3a400bd05173", + "Transform": { + "Matrix": { + "Components": [ + 0.5547255602613056, + 0.8320333844220319, + 0.0, + 29.39906, + -0.8320333844220319, + 0.5547255602613056, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "73d82ef5-a6b2-46b2-a132-cc7dd324259a", + "Name": "W18x40", + "EdgeId": 429, + "ExternalEdgeId": 429 + }, + "5dedbb9e-79d9-48f1-b723-a36aeac940d8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.39906, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 29.5, + "Y": -30.1514, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5dedbb9e-79d9-48f1-b723-a36aeac940d8", + "Name": null + }, + "e8004738-0626-4beb-8c08-00db5d95a624": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e8004738-0626-4beb-8c08-00db5d95a624", + "Name": "W18x40", + "EdgeId": 430 + }, + "e4323265-26da-4946-b144-f9eddee07379": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 23.0, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e4323265-26da-4946-b144-f9eddee07379", + "Name": null + }, + "32408f50-cc83-4827-b93b-648ebad40097": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "32408f50-cc83-4827-b93b-648ebad40097", + "Name": "W18x40", + "EdgeId": 431 + }, + "a8284ffb-52e5-4a8f-8bd6-7973fb1e8588": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 29.5, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a8284ffb-52e5-4a8f-8bd6-7973fb1e8588", + "Name": null + }, + "f5ab5f57-1803-42d5-ab6d-e6ee86f62cbf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2984e71a-f669-4201-8e3b-e26ab9529910", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -30.1514, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "f5ab5f57-1803-42d5-ab6d-e6ee86f62cbf", + "Name": "W18x40", + "EdgeId": 432, + "ExternalEdgeId": 432 + }, + "4007b698-78dc-4890-bebf-5692fdbbd43b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -30.1514, + "Z": 4.5 + }, + "End": { + "X": 29.5, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4007b698-78dc-4890-bebf-5692fdbbd43b", + "Name": null + }, + "a74c3554-0a61-4b0b-9120-993989ab26a4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "a74c3554-0a61-4b0b-9120-993989ab26a4", + "Name": "W18x40", + "EdgeId": 436 + }, + "73ba442c-a45a-439c-8dc8-5a0b2f4606d3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "73ba442c-a45a-439c-8dc8-5a0b2f4606d3", + "Name": null + }, + "2110c24d-f114-4bf8-b4dc-63d22bcfda09": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "2110c24d-f114-4bf8-b4dc-63d22bcfda09", + "Name": "W18x40", + "EdgeId": 437 + }, + "195d04a7-372b-42bd-9725-ae7e8ccce118": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "195d04a7-372b-42bd-9725-ae7e8ccce118", + "Name": null + }, + "66b14883-7a7a-438f-8717-fd0904df8d27": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "66b14883-7a7a-438f-8717-fd0904df8d27", + "Name": "W18x40", + "EdgeId": 439 + }, + "29a5217f-850a-4143-97de-af8ec842764d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "29a5217f-850a-4143-97de-af8ec842764d", + "Name": null + }, + "2ea79f52-0eb6-4e89-9a95-7bd922a0e78e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "2ea79f52-0eb6-4e89-9a95-7bd922a0e78e", + "Name": "W18x40", + "EdgeId": 440 + }, + "1824fdfa-4793-4e1b-8613-fcbc78c14c51": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1824fdfa-4793-4e1b-8613-fcbc78c14c51", + "Name": null + }, + "ed751285-34d5-414a-85dd-58bdf461faf8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "ed751285-34d5-414a-85dd-58bdf461faf8", + "Name": "W18x40", + "EdgeId": 442 + }, + "8fcc4ba8-5084-469f-8415-db61f7a0c1b2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8fcc4ba8-5084-469f-8415-db61f7a0c1b2", + "Name": null + }, + "4083fd59-fa75-424a-bcf4-84af740ad572": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "4083fd59-fa75-424a-bcf4-84af740ad572", + "Name": "W18x40", + "EdgeId": 443 + }, + "e51fd538-194e-4abb-b1f1-884bd6471568": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e51fd538-194e-4abb-b1f1-884bd6471568", + "Name": null + }, + "f0c83f7b-a5c3-473f-940a-c0ebd646916e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "f0c83f7b-a5c3-473f-940a-c0ebd646916e", + "Name": "W18x40", + "EdgeId": 445, + "ExternalEdgeId": 445 + }, + "2cf14a56-d854-4c73-af24-f33793017b0c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2cf14a56-d854-4c73-af24-f33793017b0c", + "Name": null + }, + "46ed86de-64bb-4902-b188-98db4ee2e175": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "46ed86de-64bb-4902-b188-98db4ee2e175", + "Name": "W18x40", + "EdgeId": 446 + }, + "eadf1133-5eca-45d7-9c55-ec26a1018752": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "eadf1133-5eca-45d7-9c55-ec26a1018752", + "Name": null + }, + "e1c5627c-fc71-4ef1-8d6f-6b4e573d0993": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e1c5627c-fc71-4ef1-8d6f-6b4e573d0993", + "Name": "W18x40", + "EdgeId": 448 + }, + "0d401603-857a-4692-8813-8a3b73af5578": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 23.0, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0d401603-857a-4692-8813-8a3b73af5578", + "Name": null + }, + "b79410e0-c167-41e1-8726-65dba97a33b3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "b79410e0-c167-41e1-8726-65dba97a33b3", + "Name": "W18x40", + "EdgeId": 449 + }, + "c9bc4f63-ee39-4ded-919e-2d44b9237177": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 29.5, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c9bc4f63-ee39-4ded-919e-2d44b9237177", + "Name": null + }, + "aa1588e4-2804-4100-a062-d5127b4dc8f1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "aa1588e4-2804-4100-a062-d5127b4dc8f1", + "Name": "W18x40", + "EdgeId": 450, + "ExternalEdgeId": 450 + }, + "cd81d1f2-ecc9-4565-8c54-adb26184d4ff": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 29.5, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cd81d1f2-ecc9-4565-8c54-adb26184d4ff", + "Name": null + }, + "fff28568-1fe8-401e-9968-258e175b2e69": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "fff28568-1fe8-401e-9968-258e175b2e69", + "Name": "W18x40", + "EdgeId": 453 + }, + "9978c910-dd89-4f77-b64d-23df3a81825b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9978c910-dd89-4f77-b64d-23df3a81825b", + "Name": null + }, + "ee17cc36-e38b-49f1-a74b-85754d3eaa4a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "ee17cc36-e38b-49f1-a74b-85754d3eaa4a", + "Name": "W18x40", + "EdgeId": 454 + }, + "06ca1c3f-92b1-4a5b-bc4f-9c9f027f757b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "06ca1c3f-92b1-4a5b-bc4f-9c9f027f757b", + "Name": null + }, + "c98792b3-04a5-49f4-9915-2c94212b7fe7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c98792b3-04a5-49f4-9915-2c94212b7fe7", + "Name": "W18x40", + "EdgeId": 456 + }, + "5dd74521-1769-4163-9424-d980103ddbb0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5dd74521-1769-4163-9424-d980103ddbb0", + "Name": null + }, + "072f4e73-3da9-486f-90bc-0329df07512a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "072f4e73-3da9-486f-90bc-0329df07512a", + "Name": "W18x40", + "EdgeId": 457 + }, + "cfbc82bf-57b1-4d90-84fa-5e13b704a778": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cfbc82bf-57b1-4d90-84fa-5e13b704a778", + "Name": null + }, + "a8003fbf-556a-4bb9-bdd9-63b0212fe18d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "a8003fbf-556a-4bb9-bdd9-63b0212fe18d", + "Name": "W18x40", + "EdgeId": 459 + }, + "ef153aba-9d58-47bb-a1a4-2911b17de41f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ef153aba-9d58-47bb-a1a4-2911b17de41f", + "Name": null + }, + "408ced1f-be08-4106-887a-62e256471875": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "408ced1f-be08-4106-887a-62e256471875", + "Name": "W18x40", + "EdgeId": 460 + }, + "edeef0c9-53c1-40e5-a952-f959d87ad14c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "edeef0c9-53c1-40e5-a952-f959d87ad14c", + "Name": null + }, + "202f4b4c-a6ce-4a09-abfd-4173f238376b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "202f4b4c-a6ce-4a09-abfd-4173f238376b", + "Name": "W18x40", + "EdgeId": 462, + "ExternalEdgeId": 462 + }, + "bddc1693-3599-46ae-8fac-3ec141bb8769": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bddc1693-3599-46ae-8fac-3ec141bb8769", + "Name": null + }, + "38322f4a-9058-46aa-a786-28846e770b10": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "38322f4a-9058-46aa-a786-28846e770b10", + "Name": "W18x40", + "EdgeId": 463 + }, + "e3e92db6-a2e5-406e-8c22-9bb781763552": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e3e92db6-a2e5-406e-8c22-9bb781763552", + "Name": null + }, + "e19c675b-1e8b-4762-948d-31e27a5ce963": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e19c675b-1e8b-4762-948d-31e27a5ce963", + "Name": "W18x40", + "EdgeId": 465 + }, + "d07b6671-6ba0-488b-87d3-adbe1c0a7484": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 23.0, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d07b6671-6ba0-488b-87d3-adbe1c0a7484", + "Name": null + }, + "35333aed-6c8a-4b8a-b6d8-a8273f32dcb3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "35333aed-6c8a-4b8a-b6d8-a8273f32dcb3", + "Name": "W18x40", + "EdgeId": 466 + }, + "2d6c93c9-9d15-47f0-9f31-7845171aa504": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 29.5, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2d6c93c9-9d15-47f0-9f31-7845171aa504", + "Name": null + }, + "2580066f-8237-4d91-937f-2372c6d7abe9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "2580066f-8237-4d91-937f-2372c6d7abe9", + "Name": "W18x40", + "EdgeId": 467, + "ExternalEdgeId": 467 + }, + "94b0cf9d-a4d6-46ab-8f03-22871c3d919d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 29.5, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "94b0cf9d-a4d6-46ab-8f03-22871c3d919d", + "Name": null + }, + "5bd49134-a8e6-4cf7-aafa-769be27b6e8d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "5bd49134-a8e6-4cf7-aafa-769be27b6e8d", + "Name": "W18x40", + "EdgeId": 470 + }, + "9673e9b7-47c4-4fe7-9858-70aa7c7fcb21": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9673e9b7-47c4-4fe7-9858-70aa7c7fcb21", + "Name": null + }, + "f3da95cd-fd36-4904-ac2a-e22d74980eed": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "f3da95cd-fd36-4904-ac2a-e22d74980eed", + "Name": "W18x40", + "EdgeId": 471 + }, + "d7a6c2c8-e952-4723-9da2-f3a700a7352c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d7a6c2c8-e952-4723-9da2-f3a700a7352c", + "Name": null + }, + "781f9978-5ed2-487d-849e-e13f09067163": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "781f9978-5ed2-487d-849e-e13f09067163", + "Name": "W18x40", + "EdgeId": 473 + }, + "06b06cdd-6655-4f1b-b950-d62b64cdc5c1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "06b06cdd-6655-4f1b-b950-d62b64cdc5c1", + "Name": null + }, + "c6dbc864-7a61-44c7-9d78-1540a133cbb9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c6dbc864-7a61-44c7-9d78-1540a133cbb9", + "Name": "W18x40", + "EdgeId": 474 + }, + "21ad6249-617e-4ab0-9ebb-e8046d05fd5a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "21ad6249-617e-4ab0-9ebb-e8046d05fd5a", + "Name": null + }, + "898c5207-cd7b-4b78-8662-4fcabf1b860b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "898c5207-cd7b-4b78-8662-4fcabf1b860b", + "Name": "W18x40", + "EdgeId": 476 + }, + "4e226bf1-de18-4c4c-bcfe-04c032592a0a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4e226bf1-de18-4c4c-bcfe-04c032592a0a", + "Name": null + }, + "c028ef97-ecfa-4670-8b41-80f0d0a92318": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c028ef97-ecfa-4670-8b41-80f0d0a92318", + "Name": "W18x40", + "EdgeId": 477 + }, + "344aaf41-0de7-43b2-9220-48b619e7e23e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "344aaf41-0de7-43b2-9220-48b619e7e23e", + "Name": null + }, + "ec832f5f-50c4-440e-9bfb-9d9b9738fa02": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "ec832f5f-50c4-440e-9bfb-9d9b9738fa02", + "Name": "W18x40", + "EdgeId": 479, + "ExternalEdgeId": 479 + }, + "3e915036-6d9b-4e7a-b9f6-b64a8581a075": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3e915036-6d9b-4e7a-b9f6-b64a8581a075", + "Name": null + }, + "b5888ddd-b9ef-4e23-9534-565cafcb157d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "b5888ddd-b9ef-4e23-9534-565cafcb157d", + "Name": "W18x40", + "EdgeId": 480 + }, + "83b916ff-734b-4d7b-9f6f-9606284c4189": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "83b916ff-734b-4d7b-9f6f-9606284c4189", + "Name": null + }, + "51c40da0-79ed-4900-a96f-cf620f4870ac": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "51c40da0-79ed-4900-a96f-cf620f4870ac", + "Name": "W18x40", + "EdgeId": 482 + }, + "88d5337b-e54c-477f-884e-8101e3cae098": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 23.0, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "88d5337b-e54c-477f-884e-8101e3cae098", + "Name": null + }, + "4213249f-7d5b-4f8c-ae84-9f5ad218a3b1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "4213249f-7d5b-4f8c-ae84-9f5ad218a3b1", + "Name": "W18x40", + "EdgeId": 483 + }, + "54c567fc-0b1a-46e4-a803-88d69edc6489": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 29.5, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "54c567fc-0b1a-46e4-a803-88d69edc6489", + "Name": null + }, + "12ad9ce2-4321-4264-a566-07768ba4e2c1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "12ad9ce2-4321-4264-a566-07768ba4e2c1", + "Name": "W18x40", + "EdgeId": 484, + "ExternalEdgeId": 484 + }, + "cd019d14-61a4-45d4-9620-465183fae753": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 29.5, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cd019d14-61a4-45d4-9620-465183fae753", + "Name": null + }, + "c8dde09f-beea-4648-8823-300f7bbaa4eb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c8dde09f-beea-4648-8823-300f7bbaa4eb", + "Name": "W18x40", + "EdgeId": 487 + }, + "091509da-b7d5-4719-8777-ac41c1b4ae6f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "091509da-b7d5-4719-8777-ac41c1b4ae6f", + "Name": null + }, + "cb1771b1-8be6-4ae0-9ca9-641f72c0ec21": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "cb1771b1-8be6-4ae0-9ca9-641f72c0ec21", + "Name": "W18x40", + "EdgeId": 488 + }, + "6bad82ac-248a-41f4-8c14-b4d8593d498a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6bad82ac-248a-41f4-8c14-b4d8593d498a", + "Name": null + }, + "3cd2302f-863f-4789-b78c-864c4504c151": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "3cd2302f-863f-4789-b78c-864c4504c151", + "Name": "W18x40", + "EdgeId": 490 + }, + "407c9a72-8c14-4915-97ba-f5043fd4b307": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "407c9a72-8c14-4915-97ba-f5043fd4b307", + "Name": null + }, + "d49e6c12-100f-4f98-a8d3-0f869b94934e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "d49e6c12-100f-4f98-a8d3-0f869b94934e", + "Name": "W18x40", + "EdgeId": 491 + }, + "dc3c545d-c603-4230-98f3-e632009d19cd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dc3c545d-c603-4230-98f3-e632009d19cd", + "Name": null + }, + "63ae07e2-98ce-4baa-a154-63fca89ad3f8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "63ae07e2-98ce-4baa-a154-63fca89ad3f8", + "Name": "W18x40", + "EdgeId": 493 + }, + "f871cfc6-b8a0-49f6-8e69-a7d8a9d8f3cf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f871cfc6-b8a0-49f6-8e69-a7d8a9d8f3cf", + "Name": null + }, + "e18772cd-c699-41f3-8af6-efbab1c35001": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e18772cd-c699-41f3-8af6-efbab1c35001", + "Name": "W18x40", + "EdgeId": 494 + }, + "134a0fe3-d9ed-4fcb-b0b9-45c1d32f1ca4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "134a0fe3-d9ed-4fcb-b0b9-45c1d32f1ca4", + "Name": null + }, + "8ff37956-7786-4ce0-96b8-8c6570207400": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "8ff37956-7786-4ce0-96b8-8c6570207400", + "Name": "W18x40", + "EdgeId": 496, + "ExternalEdgeId": 496 + }, + "7fec4a62-3fcb-49c6-9213-83efaeb037a3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7fec4a62-3fcb-49c6-9213-83efaeb037a3", + "Name": null + }, + "0864ec9b-91aa-4b7f-8815-45325fc29f2a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "0864ec9b-91aa-4b7f-8815-45325fc29f2a", + "Name": "W18x40", + "EdgeId": 497 + }, + "f4593ac0-13c3-4977-b06f-935f4954cfb8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f4593ac0-13c3-4977-b06f-935f4954cfb8", + "Name": null + }, + "24133a3b-98ad-4df5-a8b1-b2ba54cfec4e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "24133a3b-98ad-4df5-a8b1-b2ba54cfec4e", + "Name": "W18x40", + "EdgeId": 499 + }, + "b5a5e7a6-294c-4f53-9acf-6625b08d6c16": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 23.0, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b5a5e7a6-294c-4f53-9acf-6625b08d6c16", + "Name": null + }, + "e48a76ca-de62-4c0a-9eb3-3a3171c525f7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e48a76ca-de62-4c0a-9eb3-3a3171c525f7", + "Name": "W18x40", + "EdgeId": 500 + }, + "042604eb-4a63-4775-9b3e-c972f2826472": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 29.5, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "042604eb-4a63-4775-9b3e-c972f2826472", + "Name": null + }, + "ea16284c-c2b8-4010-9cf2-72c882acc2f3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "ea16284c-c2b8-4010-9cf2-72c882acc2f3", + "Name": "W18x40", + "EdgeId": 501, + "ExternalEdgeId": 501 + }, + "2b77f4af-f61a-4d56-84b6-26f42bc05c36": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 29.5, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2b77f4af-f61a-4d56-84b6-26f42bc05c36", + "Name": null + }, + "35539d96-d549-4c0c-a473-254181c0f522": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "35539d96-d549-4c0c-a473-254181c0f522", + "Name": "W18x40", + "EdgeId": 504 + }, + "21357ccc-2127-4f97-908f-4f3192d3dc53": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "21357ccc-2127-4f97-908f-4f3192d3dc53", + "Name": null + }, + "5b9182eb-9dd8-4f91-99f0-84a49cdbde12": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "5b9182eb-9dd8-4f91-99f0-84a49cdbde12", + "Name": "W18x40", + "EdgeId": 505 + }, + "9f9aed96-f99d-4ab6-9084-57d8f9056ecb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9f9aed96-f99d-4ab6-9084-57d8f9056ecb", + "Name": null + }, + "0cfb36e1-67cc-47b3-97c0-f43c1cfb38a0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "0cfb36e1-67cc-47b3-97c0-f43c1cfb38a0", + "Name": "W18x40", + "EdgeId": 507 + }, + "ce81b307-6508-4089-9325-9c1258910861": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ce81b307-6508-4089-9325-9c1258910861", + "Name": null + }, + "fa15ba16-d9d4-4e0c-b6c0-a15393bbf965": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "fa15ba16-d9d4-4e0c-b6c0-a15393bbf965", + "Name": "W18x40", + "EdgeId": 508 + }, + "3916623a-8af1-47b3-94fd-6cf921adb0d0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3916623a-8af1-47b3-94fd-6cf921adb0d0", + "Name": null + }, + "1c7fff3d-db80-4626-bf22-e3490fa22e5e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "1c7fff3d-db80-4626-bf22-e3490fa22e5e", + "Name": "W18x40", + "EdgeId": 510 + }, + "30efc5a2-57d2-47e5-bb15-956d56f7d0f8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "30efc5a2-57d2-47e5-bb15-956d56f7d0f8", + "Name": null + }, + "7b2471a0-6ddf-4c44-8621-674fff7db443": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "7b2471a0-6ddf-4c44-8621-674fff7db443", + "Name": "W18x40", + "EdgeId": 511 + }, + "78c0a8a3-c448-414a-b071-ff83bfc9950c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "78c0a8a3-c448-414a-b071-ff83bfc9950c", + "Name": null + }, + "fa03b414-d8bb-49cb-bff2-6f12bbff989d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "fa03b414-d8bb-49cb-bff2-6f12bbff989d", + "Name": "W18x40", + "EdgeId": 513, + "ExternalEdgeId": 513 + }, + "716c77e2-9bb4-4fd2-a9e3-91cbb2ee1582": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "716c77e2-9bb4-4fd2-a9e3-91cbb2ee1582", + "Name": null + }, + "5fb29c1c-1de2-42e9-8fa0-22843ac23f97": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "5fb29c1c-1de2-42e9-8fa0-22843ac23f97", + "Name": "W18x40", + "EdgeId": 514 + }, + "23008b41-5a5c-4bc3-bdea-0fe8a1f0fe93": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "23008b41-5a5c-4bc3-bdea-0fe8a1f0fe93", + "Name": null + }, + "786e1ae8-4b5c-41f1-bf7d-2605505edd95": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "786e1ae8-4b5c-41f1-bf7d-2605505edd95", + "Name": "W18x40", + "EdgeId": 516 + }, + "1477736d-1342-4704-a8a1-1cae631da591": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 23.0, + "Y": -59.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1477736d-1342-4704-a8a1-1cae631da591", + "Name": null + }, + "dcbb564e-b680-41d3-a03c-4b4b7331f018": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "dcbb564e-b680-41d3-a03c-4b4b7331f018", + "Name": "W18x40", + "EdgeId": 517, + "ExternalEdgeId": 517 + }, + "50fcfc58-7b38-4936-bef9-402960d869cb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 29.5, + "Y": -59.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "50fcfc58-7b38-4936-bef9-402960d869cb", + "Name": null + }, + "7a499bf1-09e7-4c46-88b9-9ee39f48dfb5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "7a499bf1-09e7-4c46-88b9-9ee39f48dfb5", + "Name": "W18x40", + "EdgeId": 518, + "ExternalEdgeId": 518 + }, + "6e3484f9-2666-4ddb-8991-52481c425075": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 29.5, + "Y": -59.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6e3484f9-2666-4ddb-8991-52481c425075", + "Name": null + }, + "a91312c2-1538-46bb-9fcb-67610f58662b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "a91312c2-1538-46bb-9fcb-67610f58662b", + "Name": "W18x40", + "EdgeId": 521 + }, + "363d564e-15ee-404e-992d-757c898f3c58": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -59.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "363d564e-15ee-404e-992d-757c898f3c58", + "Name": null + }, + "f8cff8e0-7525-49ef-a226-c844fcf92da8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "f8cff8e0-7525-49ef-a226-c844fcf92da8", + "Name": "W18x40", + "EdgeId": 522, + "ExternalEdgeId": 522 + }, + "9f9f8a52-f753-4bef-8f60-e9577263d57d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -59.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9f9f8a52-f753-4bef-8f60-e9577263d57d", + "Name": null + }, + "01386b9d-711d-45a3-9cdb-a64d2d9ef76b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "01386b9d-711d-45a3-9cdb-a64d2d9ef76b", + "Name": "W18x40", + "EdgeId": 524 + }, + "66d53930-aaac-45ae-9a6a-811bf8ada88d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -59.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "66d53930-aaac-45ae-9a6a-811bf8ada88d", + "Name": null + }, + "4d999ee2-79be-4e87-9ee5-303dd62ee13a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "4d999ee2-79be-4e87-9ee5-303dd62ee13a", + "Name": "W18x40", + "EdgeId": 525, + "ExternalEdgeId": 525 + }, + "881990a9-c500-4dc6-a9ee-768a38cc6ddf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -59.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "881990a9-c500-4dc6-a9ee-768a38cc6ddf", + "Name": null + }, + "65b564be-5588-4955-834f-99c5532759b9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "65b564be-5588-4955-834f-99c5532759b9", + "Name": "W18x40", + "EdgeId": 527 + }, + "1d4514bd-1943-48d0-b1f4-ea4dd6905f95": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -59.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1d4514bd-1943-48d0-b1f4-ea4dd6905f95", + "Name": null + }, + "cf5f8d4b-791d-48ba-9630-67652ad9333d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "cf5f8d4b-791d-48ba-9630-67652ad9333d", + "Name": "W18x40", + "EdgeId": 528, + "ExternalEdgeId": 528 + }, + "2c3b4e05-70f1-496f-b415-71a5783f4c2f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -59.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2c3b4e05-70f1-496f-b415-71a5783f4c2f", + "Name": null + }, + "2ba9ddbc-d2c4-4659-8567-09c4564d5705": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "2ba9ddbc-d2c4-4659-8567-09c4564d5705", + "Name": "W18x40", + "EdgeId": 530, + "ExternalEdgeId": 530 + }, + "1cc1cd68-4ef8-4d29-9d15-36a5464b483a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -59.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1cc1cd68-4ef8-4d29-9d15-36a5464b483a", + "Name": null + }, + "3d7ba69a-bce3-41f4-a9f2-230aaea63481": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "3d7ba69a-bce3-41f4-a9f2-230aaea63481", + "Name": "W18x40", + "EdgeId": 531, + "ExternalEdgeId": 531 + }, + "8613ad7e-d740-41cf-997b-a381e7de7eec": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -59.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8613ad7e-d740-41cf-997b-a381e7de7eec", + "Name": null + }, + "82709de5-2093-458e-9b1a-bf8f09b499f3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1f248147-be87-4d6a-922b-e7bf05d5f27e", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.7324, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "82709de5-2093-458e-9b1a-bf8f09b499f3", + "Name": "W18x40", + "EdgeId": 533, + "ExternalEdgeId": 533 + }, + "6d98902a-e135-4064-8535-dfecaba53d8d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.7324, + "Y": -0.5, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -0.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6d98902a-e135-4064-8535-dfecaba53d8d", + "Name": null + }, + "732896dc-6029-4516-b565-d888f81fdb55": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "732896dc-6029-4516-b565-d888f81fdb55", + "Name": "W18x40", + "EdgeId": 534 + }, + "e026282a-23cc-4d9d-94ba-5c4434ab22fc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -0.5, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -5.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e026282a-23cc-4d9d-94ba-5c4434ab22fc", + "Name": null + }, + "531a3451-a5de-4441-b5e3-0aa303ab18c4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c9699dd2-d040-4a2c-ad98-36443b0d037a", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "531a3451-a5de-4441-b5e3-0aa303ab18c4", + "Name": "W18x40", + "EdgeId": 535 + }, + "df0903f7-b1e5-4d10-b88d-966e28ff3c39": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 8.35 + }, + "End": { + "X": 12.7324, + "Y": -5.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "df0903f7-b1e5-4d10-b88d-966e28ff3c39", + "Name": null + }, + "dfba7895-9944-49af-99b9-12735d7dac29": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "442ea777-71e8-42e2-a88c-d741cce24ce5", + "Transform": { + "Matrix": { + "Components": [ + 0.5547001962252291, + 0.8320502943378437, + 0.0, + 9.7324, + -0.8320502943378437, + 0.5547001962252291, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "dfba7895-9944-49af-99b9-12735d7dac29", + "Name": "W18x40", + "EdgeId": 536, + "ExternalEdgeId": 536 + }, + "f3809848-30d4-45a8-b2df-ea6b9eebc03e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.7324, + "Y": -0.5, + "Z": 8.35 + }, + "End": { + "X": 12.7324, + "Y": -5.000000000000001, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f3809848-30d4-45a8-b2df-ea6b9eebc03e", + "Name": null + }, + "6da1a03b-f3ce-412d-8484-2aa7a29e1872": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "6da1a03b-f3ce-412d-8484-2aa7a29e1872", + "Name": "W18x40", + "EdgeId": 541, + "ExternalEdgeId": 541 + }, + "2126646f-4b86-4108-8ecc-2225934277c9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -0.5, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -0.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2126646f-4b86-4108-8ecc-2225934277c9", + "Name": null + }, + "0d9f7576-3e6b-4547-b7b4-19a2373142b9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "0d9f7576-3e6b-4547-b7b4-19a2373142b9", + "Name": "W18x40", + "EdgeId": 542 + }, + "44dc0ab1-c628-43e8-9341-5895e14481f8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -0.5, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -5.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "44dc0ab1-c628-43e8-9341-5895e14481f8", + "Name": null + }, + "36309f39-2557-46c6-91e4-d10f1bed4595": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "36309f39-2557-46c6-91e4-d10f1bed4595", + "Name": "W18x40", + "EdgeId": 543 + }, + "6fb7cada-40a5-4868-bf0e-9a472581bcc6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -5.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6fb7cada-40a5-4868-bf0e-9a472581bcc6", + "Name": null + }, + "77c2d152-c901-4a73-844e-1759d5dc9add": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "77c2d152-c901-4a73-844e-1759d5dc9add", + "Name": "W18x40", + "EdgeId": 546, + "ExternalEdgeId": 546 + }, + "e6ce235e-5bdf-4047-8259-52641e61fc5b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -0.5, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -0.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e6ce235e-5bdf-4047-8259-52641e61fc5b", + "Name": null + }, + "aaba0f83-47fd-4085-a5d5-b09583bdd0d6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "aaba0f83-47fd-4085-a5d5-b09583bdd0d6", + "Name": "W18x40", + "EdgeId": 547, + "ExternalEdgeId": 547 + }, + "e34cd9b7-913a-4ca6-8917-96cfd57abcf2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -0.5, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -5.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e34cd9b7-913a-4ca6-8917-96cfd57abcf2", + "Name": null + }, + "553d02eb-e5a8-4e1e-856f-8ac87d14ae03": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "553d02eb-e5a8-4e1e-856f-8ac87d14ae03", + "Name": "W18x40", + "EdgeId": 548 + }, + "b5864596-d19a-47e6-9735-ccc266d3dafe": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -5.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -5.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b5864596-d19a-47e6-9735-ccc266d3dafe", + "Name": null + }, + "ef4fc27e-f345-4cfb-9905-fce410f57cd4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e5972626-f896-4b80-b62f-fa93a8846507", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -9.9014, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "ef4fc27e-f345-4cfb-9905-fce410f57cd4", + "Name": "W18x40", + "EdgeId": 551 + }, + "7e4b8d91-7179-480a-9357-72ff32f91015": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -9.9014, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7e4b8d91-7179-480a-9357-72ff32f91015", + "Name": null + }, + "440c0fb1-907a-4b70-b03d-33d3f8b3ad43": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "49319ac3-7aa7-4cea-aa5e-8a40ef05e1ba", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "440c0fb1-907a-4b70-b03d-33d3f8b3ad43", + "Name": "W18x40", + "EdgeId": 552 + }, + "4d104296-008e-4bfb-93b6-8be080f77e15": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 16.06574, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4d104296-008e-4bfb-93b6-8be080f77e15", + "Name": null + }, + "b7d5d464-f8cd-4643-83c9-100af647f3e1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4dc79d1f-76cc-4eac-ba1d-90c0929442e9", + "Transform": { + "Matrix": { + "Components": [ + 0.5547391419896724, + 0.8320243291782772, + 0.0, + 16.0, + -0.8320243291782772, + 0.5547391419896724, + 0.0, + -9.9014, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "b7d5d464-f8cd-4643-83c9-100af647f3e1", + "Name": "W18x40", + "EdgeId": 553, + "ExternalEdgeId": 553 + }, + "159f6e96-82cd-4825-a48e-dd6566c370ec": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -9.9014, + "Z": 8.35 + }, + "End": { + "X": 16.06574, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "159f6e96-82cd-4825-a48e-dd6566c370ec", + "Name": null + }, + "bf4e21aa-36d6-4319-90d2-5782f1f92c55": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39b28bf6-91db-4c72-b448-44bed8dc6bc0", + "Transform": { + "Matrix": { + "Components": [ + 0.554700196225229, + 0.8320502943378437, + 0.0, + 12.7324, + -0.8320502943378437, + 0.554700196225229, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "bf4e21aa-36d6-4319-90d2-5782f1f92c55", + "Name": "W18x40", + "EdgeId": 557, + "ExternalEdgeId": 557 + }, + "8cfed69e-0e43-4388-860d-aa71121e6044": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.7324, + "Y": -5.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -9.9014, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8cfed69e-0e43-4388-860d-aa71121e6044", + "Name": null + }, + "30381bd3-9e57-456f-861c-2bf567df1fbb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "30381bd3-9e57-456f-861c-2bf567df1fbb", + "Name": "W18x40", + "EdgeId": 558 + }, + "ae148857-66ec-469b-90f6-00728af88075": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ae148857-66ec-469b-90f6-00728af88075", + "Name": null + }, + "ae9b234a-15df-4841-a6f5-56d479728ba4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "ae9b234a-15df-4841-a6f5-56d479728ba4", + "Name": "W18x40", + "EdgeId": 559 + }, + "f040c36d-4668-4a29-93a2-fd43a2e108ff": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f040c36d-4668-4a29-93a2-fd43a2e108ff", + "Name": null + }, + "c27b6bdf-486b-4eae-9318-8e0cdb2240d2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "c27b6bdf-486b-4eae-9318-8e0cdb2240d2", + "Name": "W18x40", + "EdgeId": 561 + }, + "45e5953a-6668-4da1-a880-015d7774fa29": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -5.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "45e5953a-6668-4da1-a880-015d7774fa29", + "Name": null + }, + "9cdae8d5-38db-4c6a-b6fc-b16bafe93936": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "9cdae8d5-38db-4c6a-b6fc-b16bafe93936", + "Name": "W18x40", + "EdgeId": 562 + }, + "5a52281c-f6ae-441e-bb7c-6b2458845a68": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5a52281c-f6ae-441e-bb7c-6b2458845a68", + "Name": null + }, + "cbffc2b6-d5bd-408d-80c6-bc302d4e2ec2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "cbffc2b6-d5bd-408d-80c6-bc302d4e2ec2", + "Name": "W18x40", + "EdgeId": 564, + "ExternalEdgeId": 564 + }, + "faa27509-b0a8-4807-994e-970d95778a66": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -5.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "faa27509-b0a8-4807-994e-970d95778a66", + "Name": null + }, + "d45af803-8b10-4bbf-80ce-987d8634c059": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d45af803-8b10-4bbf-80ce-987d8634c059", + "Name": "W18x40", + "EdgeId": 565 + }, + "5ee3ed80-b8d1-4db3-83d8-c567b68ff4d9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5ee3ed80-b8d1-4db3-83d8-c567b68ff4d9", + "Name": null + }, + "18251fd4-4c52-4057-9d41-0a7d1ba8403a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "18251fd4-4c52-4057-9d41-0a7d1ba8403a", + "Name": "W18x40", + "EdgeId": 567 + }, + "13619d49-7821-4ce6-9bf9-b6158ba7147d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "13619d49-7821-4ce6-9bf9-b6158ba7147d", + "Name": null + }, + "2646a5ea-75f3-4afe-8776-a34d3cba01b9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "0b85760d-9483-48e4-99ef-f0158063192f", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "2646a5ea-75f3-4afe-8776-a34d3cba01b9", + "Name": "W18x40", + "EdgeId": 568 + }, + "08286746-8261-43b9-b1d4-add93b0442b8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 19.39906, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "08286746-8261-43b9-b1d4-add93b0442b8", + "Name": null + }, + "e99f1d37-12b3-4b77-aaeb-c0514863ceb8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2d8372e3-18d6-43f5-b8a6-ca8af44199e8", + "Transform": { + "Matrix": { + "Components": [ + 0.5546986601295418, + 0.8320513183995871, + 0.0, + 16.06574, + -0.8320513183995871, + 0.5546986601295418, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "e99f1d37-12b3-4b77-aaeb-c0514863ceb8", + "Name": "W18x40", + "EdgeId": 569, + "ExternalEdgeId": 569 + }, + "7fc26bbb-689f-48cf-9694-f9a5d20bb297": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.06574, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 19.39906, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7fc26bbb-689f-48cf-9694-f9a5d20bb297", + "Name": null + }, + "11dcb1b5-c7ad-4955-a308-680dea537863": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "11dcb1b5-c7ad-4955-a308-680dea537863", + "Name": "W18x40", + "EdgeId": 572 + }, + "e48e653f-9cae-404f-8781-a38cba71622d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e48e653f-9cae-404f-8781-a38cba71622d", + "Name": null + }, + "60f6edbf-099b-4403-b538-fd86f4a94318": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "60f6edbf-099b-4403-b538-fd86f4a94318", + "Name": "W18x40", + "EdgeId": 573 + }, + "e5c8b139-92b6-4522-bc54-a0e58c4da197": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e5c8b139-92b6-4522-bc54-a0e58c4da197", + "Name": null + }, + "2b8db37d-b668-4583-8713-c8fb4f01e2a7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "2b8db37d-b668-4583-8713-c8fb4f01e2a7", + "Name": "W18x40", + "EdgeId": 575 + }, + "81e09bb2-cc85-4668-8a92-d16ab3dbb658": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "81e09bb2-cc85-4668-8a92-d16ab3dbb658", + "Name": null + }, + "5f562ec8-560f-4f50-9a8d-02c1a9ee9129": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "5f562ec8-560f-4f50-9a8d-02c1a9ee9129", + "Name": "W18x40", + "EdgeId": 576 + }, + "b67b9ecd-f0bd-414f-bb6f-faa4582132a1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b67b9ecd-f0bd-414f-bb6f-faa4582132a1", + "Name": null + }, + "b86d4b15-fade-4abd-92f9-beda551ec426": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "b86d4b15-fade-4abd-92f9-beda551ec426", + "Name": "W18x40", + "EdgeId": 578, + "ExternalEdgeId": 578 + }, + "facd80c3-d842-4c86-8557-33393436f4f1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "facd80c3-d842-4c86-8557-33393436f4f1", + "Name": null + }, + "a768dd55-59da-49e7-8f55-326e2bae23b2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "a768dd55-59da-49e7-8f55-326e2bae23b2", + "Name": "W18x40", + "EdgeId": 579 + }, + "87d71f27-cec5-48c6-be6f-0fe77e64b67a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "87d71f27-cec5-48c6-be6f-0fe77e64b67a", + "Name": null + }, + "b3a10a02-d1b6-47eb-a34f-a80ed7de65e8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "b3a10a02-d1b6-47eb-a34f-a80ed7de65e8", + "Name": "W18x40", + "EdgeId": 581 + }, + "32c08391-736b-48b8-a108-94c861adcf80": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "32c08391-736b-48b8-a108-94c861adcf80", + "Name": null + }, + "40815228-0652-4a31-8667-2ad82257949f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7cd6c7d4-992c-4217-9c1f-ac7c9170b25c", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "40815228-0652-4a31-8667-2ad82257949f", + "Name": "W18x40", + "EdgeId": 582 + }, + "1ed54863-c7e7-4e55-ab4e-7478d51f99d7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 22.7324, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1ed54863-c7e7-4e55-ab4e-7478d51f99d7", + "Name": null + }, + "cdaf6ec3-2eab-4656-bd6d-4c2f0c9dd196": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "f1f4efee-0d74-4a09-8341-e6127bd83748", + "Transform": { + "Matrix": { + "Components": [ + 0.5547009642709457, + 0.832049782306854, + 0.0, + 19.39906, + -0.832049782306854, + 0.5547009642709457, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "cdaf6ec3-2eab-4656-bd6d-4c2f0c9dd196", + "Name": "W18x40", + "EdgeId": 583, + "ExternalEdgeId": 583 + }, + "6595382e-b658-40f8-8d1f-e02731fce3b0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.39906, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 22.7324, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6595382e-b658-40f8-8d1f-e02731fce3b0", + "Name": null + }, + "d08eaf1f-fdb0-4cd9-bc05-a4461fe773a8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d08eaf1f-fdb0-4cd9-bc05-a4461fe773a8", + "Name": "W18x40", + "EdgeId": 586 + }, + "c1f1347b-b979-4744-b514-0d41c7705bbd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c1f1347b-b979-4744-b514-0d41c7705bbd", + "Name": null + }, + "50f1b3e2-ae23-4fc3-b661-a216a7e4cbe5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "50f1b3e2-ae23-4fc3-b661-a216a7e4cbe5", + "Name": "W18x40", + "EdgeId": 587 + }, + "9564ff58-bd64-4b45-ba6a-0788332140e9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9564ff58-bd64-4b45-ba6a-0788332140e9", + "Name": null + }, + "d8a38080-0444-4ee4-8216-05ba26e27146": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d8a38080-0444-4ee4-8216-05ba26e27146", + "Name": "W18x40", + "EdgeId": 589 + }, + "9fa86edd-b765-44e1-be26-306e501b9f58": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9fa86edd-b765-44e1-be26-306e501b9f58", + "Name": null + }, + "57bc1d9b-b00a-40c9-8723-e6fc6d208f18": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "57bc1d9b-b00a-40c9-8723-e6fc6d208f18", + "Name": "W18x40", + "EdgeId": 590 + }, + "6e6de7ef-42cf-473d-90d5-adcfbbe260c4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6e6de7ef-42cf-473d-90d5-adcfbbe260c4", + "Name": null + }, + "8cc1458c-393e-49dc-9324-dc9d1822744e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "8cc1458c-393e-49dc-9324-dc9d1822744e", + "Name": "W18x40", + "EdgeId": 592, + "ExternalEdgeId": 592 + }, + "5826ef4b-f0a3-406d-931f-d439b158936c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5826ef4b-f0a3-406d-931f-d439b158936c", + "Name": null + }, + "936fe620-b84d-4c04-bb11-d1f35ce79776": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "936fe620-b84d-4c04-bb11-d1f35ce79776", + "Name": "W18x40", + "EdgeId": 593 + }, + "088af1c1-ecd6-41ca-9be4-2d964a97a977": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "088af1c1-ecd6-41ca-9be4-2d964a97a977", + "Name": null + }, + "efc11817-9104-4a7a-9f5b-33ad621e0417": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d4da724b-0d2f-4bd3-acf2-5d3697adf278", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -20.4014, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "efc11817-9104-4a7a-9f5b-33ad621e0417", + "Name": "W18x40", + "EdgeId": 595 + }, + "3c89d32b-5a44-4c7f-af26-228e77df13cd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -20.4014, + "Z": 8.35 + }, + "End": { + "X": 23.0, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3c89d32b-5a44-4c7f-af26-228e77df13cd", + "Name": null + }, + "ba888f8b-b24f-4d6e-a97e-e67451855487": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b110d957-b9da-4137-9c21-3ec50b79b33e", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "ba888f8b-b24f-4d6e-a97e-e67451855487", + "Name": "W18x40", + "EdgeId": 596 + }, + "23f1c4df-0ef7-4474-b9dc-3fbd78b40649": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 26.06574, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "23f1c4df-0ef7-4474-b9dc-3fbd78b40649", + "Name": null + }, + "ca2b2483-283e-4669-96aa-2c1bd17af9a4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e0c50391-a50c-417e-a648-1d8139e40aa4", + "Transform": { + "Matrix": { + "Components": [ + 0.5547010313116194, + 0.8320497376129783, + 0.0, + 23.0, + -0.8320497376129783, + 0.5547010313116194, + 0.0, + -20.4014, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "ca2b2483-283e-4669-96aa-2c1bd17af9a4", + "Name": "W18x40", + "EdgeId": 597, + "ExternalEdgeId": 597 + }, + "193c5f89-e69d-45a3-9d1b-c97a2ce7daaf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -20.4014, + "Z": 8.35 + }, + "End": { + "X": 26.06574, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "193c5f89-e69d-45a3-9d1b-c97a2ce7daaf", + "Name": null + }, + "c6d445c1-5f48-4421-a286-821bba3d7a76": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3bf2c337-826f-4c12-b4d9-a345602f7c71", + "Transform": { + "Matrix": { + "Components": [ + 0.5547001962252325, + 0.8320502943378414, + 0.0, + 22.7324, + -0.8320502943378414, + 0.5547001962252325, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "c6d445c1-5f48-4421-a286-821bba3d7a76", + "Name": "W18x40", + "EdgeId": 601, + "ExternalEdgeId": 601 + }, + "0867c95f-7168-4b23-b340-21813bb6c0da": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.7324, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 23.0, + "Y": -20.4014, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0867c95f-7168-4b23-b340-21813bb6c0da", + "Name": null + }, + "16834ca5-faff-47f1-9cdd-a870ad74ba83": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "16834ca5-faff-47f1-9cdd-a870ad74ba83", + "Name": "W18x40", + "EdgeId": 602 + }, + "b88259ce-9134-469a-8a4e-6a8326867f0b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b88259ce-9134-469a-8a4e-6a8326867f0b", + "Name": null + }, + "7dcbcbe4-7829-40ef-addc-6d1cac014c05": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "7dcbcbe4-7829-40ef-addc-6d1cac014c05", + "Name": "W18x40", + "EdgeId": 603 + }, + "d7df921b-beba-4d8d-8010-47bb6ab3a559": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d7df921b-beba-4d8d-8010-47bb6ab3a559", + "Name": null + }, + "62e320d4-80ef-4844-ae6e-9e7820cae6fd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "62e320d4-80ef-4844-ae6e-9e7820cae6fd", + "Name": "W18x40", + "EdgeId": 605 + }, + "91588d9a-0e75-43ab-8b87-f40c7bd0e9ba": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "91588d9a-0e75-43ab-8b87-f40c7bd0e9ba", + "Name": null + }, + "789ce616-a358-4da0-abd1-c2cd96d96c77": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "789ce616-a358-4da0-abd1-c2cd96d96c77", + "Name": "W18x40", + "EdgeId": 606 + }, + "f0d1faad-5527-4b7b-8b69-93478f3c3a39": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f0d1faad-5527-4b7b-8b69-93478f3c3a39", + "Name": null + }, + "c0cd3c93-d2ed-40b2-87e8-bae9075fb034": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "c0cd3c93-d2ed-40b2-87e8-bae9075fb034", + "Name": "W18x40", + "EdgeId": 608 + }, + "72d1ea92-99b3-43e3-b2b0-39195d5e6784": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "72d1ea92-99b3-43e3-b2b0-39195d5e6784", + "Name": null + }, + "d68c905f-3144-4f37-b3f7-e8fcf9ad0580": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d68c905f-3144-4f37-b3f7-e8fcf9ad0580", + "Name": "W18x40", + "EdgeId": 609 + }, + "ec69dbe0-24cc-4c69-9a17-6370b74fe341": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ec69dbe0-24cc-4c69-9a17-6370b74fe341", + "Name": null + }, + "57445ce6-80b5-4057-b74f-a3312f7f6c7f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "57445ce6-80b5-4057-b74f-a3312f7f6c7f", + "Name": "W18x40", + "EdgeId": 611, + "ExternalEdgeId": 611 + }, + "92b60307-d3a3-4367-b801-dfd01e369b13": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "92b60307-d3a3-4367-b801-dfd01e369b13", + "Name": null + }, + "5cbc2d16-2196-4845-a278-6cbec774f77d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "5cbc2d16-2196-4845-a278-6cbec774f77d", + "Name": "W18x40", + "EdgeId": 612 + }, + "212043e5-070b-4769-a2e7-ad8b6f72fc30": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "212043e5-070b-4769-a2e7-ad8b6f72fc30", + "Name": null + }, + "d5ade6f8-a253-4e2b-8e67-2bebef4e43c2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d5ade6f8-a253-4e2b-8e67-2bebef4e43c2", + "Name": "W18x40", + "EdgeId": 614 + }, + "923ccd38-bb60-48d9-a326-5adedfdf4e91": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 23.0, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "923ccd38-bb60-48d9-a326-5adedfdf4e91", + "Name": null + }, + "a05fe6ac-71a8-490f-bdbf-24afdabfa1bb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "9b7bdf59-55a7-4daf-9c50-86da88398d8a", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "a05fe6ac-71a8-490f-bdbf-24afdabfa1bb", + "Name": "W18x40", + "EdgeId": 615 + }, + "047231a8-2c6a-4505-bb2e-49b604e0a16d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 29.39906, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "047231a8-2c6a-4505-bb2e-49b604e0a16d", + "Name": null + }, + "974201ba-8ba2-4c4b-91ab-0d88f3fb53fd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2d8372e3-18d6-43f5-b8a6-ca8af44199e8", + "Transform": { + "Matrix": { + "Components": [ + 0.5546986601295418, + 0.8320513183995871, + 0.0, + 26.06574, + -0.8320513183995871, + 0.5546986601295418, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "974201ba-8ba2-4c4b-91ab-0d88f3fb53fd", + "Name": "W18x40", + "EdgeId": 616, + "ExternalEdgeId": 616 + }, + "adafce07-2c95-4901-b4d5-739a9cf47bbd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.06574, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 29.39906, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "adafce07-2c95-4901-b4d5-739a9cf47bbd", + "Name": null + }, + "d0c8759a-9c91-4f22-a1cc-b94d5c45abab": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d0c8759a-9c91-4f22-a1cc-b94d5c45abab", + "Name": "W18x40", + "EdgeId": 619 + }, + "669ef044-3557-47cf-bf23-0a17b92724bf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "669ef044-3557-47cf-bf23-0a17b92724bf", + "Name": null + }, + "f464c76d-6a27-4b91-bdd4-21f37a9df2e0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "f464c76d-6a27-4b91-bdd4-21f37a9df2e0", + "Name": "W18x40", + "EdgeId": 620 + }, + "33c9dd82-8239-46cd-9709-5ed6c52dd653": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "33c9dd82-8239-46cd-9709-5ed6c52dd653", + "Name": null + }, + "4904ebb7-77bc-4b67-bb5a-054ebd7231ad": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "4904ebb7-77bc-4b67-bb5a-054ebd7231ad", + "Name": "W18x40", + "EdgeId": 622 + }, + "fa1518ea-7c05-426c-9d7b-1781e4a01034": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fa1518ea-7c05-426c-9d7b-1781e4a01034", + "Name": null + }, + "0e48fd48-ef21-4f02-a90d-d51b139cb09e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "0e48fd48-ef21-4f02-a90d-d51b139cb09e", + "Name": "W18x40", + "EdgeId": 623 + }, + "ae2d3589-0442-4ad8-89d3-36864fd25b4f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ae2d3589-0442-4ad8-89d3-36864fd25b4f", + "Name": null + }, + "8fdb757a-bfb8-41fe-9848-0ba0d8f15b02": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "8fdb757a-bfb8-41fe-9848-0ba0d8f15b02", + "Name": "W18x40", + "EdgeId": 625 + }, + "9e4b89f6-e940-48e8-9065-d1b6bd17348b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9e4b89f6-e940-48e8-9065-d1b6bd17348b", + "Name": null + }, + "55f24018-a730-4851-8806-4474071fbf7d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "55f24018-a730-4851-8806-4474071fbf7d", + "Name": "W18x40", + "EdgeId": 626 + }, + "01716952-2b3c-4567-9606-e5eed9fa1b04": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "01716952-2b3c-4567-9606-e5eed9fa1b04", + "Name": null + }, + "496e4a9e-1e09-4265-b237-93d553c94cf7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "496e4a9e-1e09-4265-b237-93d553c94cf7", + "Name": "W18x40", + "EdgeId": 628, + "ExternalEdgeId": 628 + }, + "c5940f3c-4157-477a-81ab-aa0f8a74dbd3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c5940f3c-4157-477a-81ab-aa0f8a74dbd3", + "Name": null + }, + "598893a7-a401-4411-bff3-55d7a1c0857d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "598893a7-a401-4411-bff3-55d7a1c0857d", + "Name": "W18x40", + "EdgeId": 629 + }, + "4bd68415-f16a-45ba-b1d4-3f0aef241629": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4bd68415-f16a-45ba-b1d4-3f0aef241629", + "Name": null + }, + "8b81275f-4d44-45af-81fa-003c41bf7c90": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "34bbf385-46d3-47bf-83a0-3a400bd05173", + "Transform": { + "Matrix": { + "Components": [ + 0.5547255602613056, + 0.8320333844220319, + 0.0, + 29.39906, + -0.8320333844220319, + 0.5547255602613056, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "8b81275f-4d44-45af-81fa-003c41bf7c90", + "Name": "W18x40", + "EdgeId": 631, + "ExternalEdgeId": 631 + }, + "c4c646be-fd29-48c8-9d34-f765107b31dd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.39906, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 29.5, + "Y": -30.1514, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c4c646be-fd29-48c8-9d34-f765107b31dd", + "Name": null + }, + "41a95020-fe80-44bd-85fb-4993379dd1d1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "41a95020-fe80-44bd-85fb-4993379dd1d1", + "Name": "W18x40", + "EdgeId": 632 + }, + "55736b40-1d0d-4476-8001-980e135f6ed3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 23.0, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "55736b40-1d0d-4476-8001-980e135f6ed3", + "Name": null + }, + "f0103a92-4216-4c66-ad52-37ec0db58e40": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "f0103a92-4216-4c66-ad52-37ec0db58e40", + "Name": "W18x40", + "EdgeId": 633 + }, + "11e5cb44-d8bf-4f79-ae9f-973342842153": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 29.5, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "11e5cb44-d8bf-4f79-ae9f-973342842153", + "Name": null + }, + "856924b0-f6b9-4705-a5bc-d6f422a242ed": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2984e71a-f669-4201-8e3b-e26ab9529910", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -30.1514, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "856924b0-f6b9-4705-a5bc-d6f422a242ed", + "Name": "W18x40", + "EdgeId": 634, + "ExternalEdgeId": 634 + }, + "b65785e2-56b7-478c-85bc-70d32d8c5bd0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -30.1514, + "Z": 8.35 + }, + "End": { + "X": 29.5, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b65785e2-56b7-478c-85bc-70d32d8c5bd0", + "Name": null + }, + "90c18d70-2de7-470d-b4c7-3134dde7c081": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "90c18d70-2de7-470d-b4c7-3134dde7c081", + "Name": "W18x40", + "EdgeId": 638 + }, + "37a187ef-32f4-4a48-9a18-5a68c9d45e91": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "37a187ef-32f4-4a48-9a18-5a68c9d45e91", + "Name": null + }, + "0efdd0d4-69a6-4010-97e5-549d788097f0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "0efdd0d4-69a6-4010-97e5-549d788097f0", + "Name": "W18x40", + "EdgeId": 639 + }, + "0c74bb05-47ec-48ad-96d4-d8c6b8186425": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0c74bb05-47ec-48ad-96d4-d8c6b8186425", + "Name": null + }, + "0d72ef8e-341f-42db-8070-9aa2d1906935": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "0d72ef8e-341f-42db-8070-9aa2d1906935", + "Name": "W18x40", + "EdgeId": 641 + }, + "8570b9a5-a1ff-45f2-abed-9c3f5825b645": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8570b9a5-a1ff-45f2-abed-9c3f5825b645", + "Name": null + }, + "c3af9d39-5435-4e99-a49b-f46543ebc474": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "c3af9d39-5435-4e99-a49b-f46543ebc474", + "Name": "W18x40", + "EdgeId": 642 + }, + "ece1ff08-e34f-4073-8b78-faa59c3a95ff": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ece1ff08-e34f-4073-8b78-faa59c3a95ff", + "Name": null + }, + "731fe8f4-16ab-45ad-bd79-dfdbc86da032": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "731fe8f4-16ab-45ad-bd79-dfdbc86da032", + "Name": "W18x40", + "EdgeId": 644 + }, + "e3e7c14c-5616-4a17-9bcf-8f752f1da869": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e3e7c14c-5616-4a17-9bcf-8f752f1da869", + "Name": null + }, + "70df52ce-0402-4727-99f1-00ad5d1a13cd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "70df52ce-0402-4727-99f1-00ad5d1a13cd", + "Name": "W18x40", + "EdgeId": 645 + }, + "e667196c-8e07-4865-afcc-1053169ea9ff": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e667196c-8e07-4865-afcc-1053169ea9ff", + "Name": null + }, + "94c6fbc3-b8c2-48ac-af52-df631ee1b3d3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "94c6fbc3-b8c2-48ac-af52-df631ee1b3d3", + "Name": "W18x40", + "EdgeId": 647, + "ExternalEdgeId": 647 + }, + "5fdbaa73-0bad-440f-95ee-dc89c177c392": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5fdbaa73-0bad-440f-95ee-dc89c177c392", + "Name": null + }, + "a2e652c1-52c7-400d-9862-ea1d79a02daa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "a2e652c1-52c7-400d-9862-ea1d79a02daa", + "Name": "W18x40", + "EdgeId": 648 + }, + "23179f5b-0691-4e38-8d02-31e1391821e5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "23179f5b-0691-4e38-8d02-31e1391821e5", + "Name": null + }, + "1639e74f-1ab2-4284-af23-7b2920053694": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "1639e74f-1ab2-4284-af23-7b2920053694", + "Name": "W18x40", + "EdgeId": 650 + }, + "213981cb-b6a4-4067-a1d6-6d2feaa0a5f1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 23.0, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "213981cb-b6a4-4067-a1d6-6d2feaa0a5f1", + "Name": null + }, + "1cfef996-38bf-423a-b89c-a22527bd808b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "1cfef996-38bf-423a-b89c-a22527bd808b", + "Name": "W18x40", + "EdgeId": 651 + }, + "7c45c886-b9ee-4d53-af0c-d27717a1fefb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 29.5, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7c45c886-b9ee-4d53-af0c-d27717a1fefb", + "Name": null + }, + "438608be-71bd-4916-aac3-b792fa314e6b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "438608be-71bd-4916-aac3-b792fa314e6b", + "Name": "W18x40", + "EdgeId": 652, + "ExternalEdgeId": 652 + }, + "df61e984-0c0e-473a-80a4-00cdfbe01db4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 29.5, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "df61e984-0c0e-473a-80a4-00cdfbe01db4", + "Name": null + }, + "9c7a13ff-626a-44c2-b8de-c11e1d574557": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "9c7a13ff-626a-44c2-b8de-c11e1d574557", + "Name": "W18x40", + "EdgeId": 655 + }, + "7f9d113c-148b-466d-b559-8687bfb89acf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7f9d113c-148b-466d-b559-8687bfb89acf", + "Name": null + }, + "68503447-8ffd-483b-b7d9-5f04308eb45a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "68503447-8ffd-483b-b7d9-5f04308eb45a", + "Name": "W18x40", + "EdgeId": 656 + }, + "4a77d3ad-f7fa-4aef-863d-baa1e3949a5d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4a77d3ad-f7fa-4aef-863d-baa1e3949a5d", + "Name": null + }, + "17556f05-3714-4782-aeea-e29a3ce38da8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "17556f05-3714-4782-aeea-e29a3ce38da8", + "Name": "W18x40", + "EdgeId": 658 + }, + "1146f832-cda6-45a1-8aac-01bef1491ecb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1146f832-cda6-45a1-8aac-01bef1491ecb", + "Name": null + }, + "4b0cb37f-2669-44d9-be31-f4c129261170": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "4b0cb37f-2669-44d9-be31-f4c129261170", + "Name": "W18x40", + "EdgeId": 659 + }, + "713828b8-d8c6-4f5a-8cd5-af664d42e099": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "713828b8-d8c6-4f5a-8cd5-af664d42e099", + "Name": null + }, + "2171e22b-7f6b-434c-bb02-8de29fe8c897": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "2171e22b-7f6b-434c-bb02-8de29fe8c897", + "Name": "W18x40", + "EdgeId": 661 + }, + "a86c1578-00d6-4e88-998e-5202e2e809ea": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a86c1578-00d6-4e88-998e-5202e2e809ea", + "Name": null + }, + "3ee749a3-05d9-4fe5-a1a2-4f0544780b5b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "3ee749a3-05d9-4fe5-a1a2-4f0544780b5b", + "Name": "W18x40", + "EdgeId": 662 + }, + "02668896-213e-42e1-91e4-d792f781a20b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "02668896-213e-42e1-91e4-d792f781a20b", + "Name": null + }, + "02337205-a9b8-45df-851a-a72e39765d5c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "02337205-a9b8-45df-851a-a72e39765d5c", + "Name": "W18x40", + "EdgeId": 664, + "ExternalEdgeId": 664 + }, + "c861af71-4204-4f3d-9c09-99aa28512a32": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c861af71-4204-4f3d-9c09-99aa28512a32", + "Name": null + }, + "5d55ba06-766f-4ab3-8f6f-f55fc5ec65a4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "5d55ba06-766f-4ab3-8f6f-f55fc5ec65a4", + "Name": "W18x40", + "EdgeId": 665 + }, + "44319f82-bcac-43bd-a36e-c7b59709c4a3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "44319f82-bcac-43bd-a36e-c7b59709c4a3", + "Name": null + }, + "e78eddf3-3116-4cfc-8f48-96ce1a55ad3e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "e78eddf3-3116-4cfc-8f48-96ce1a55ad3e", + "Name": "W18x40", + "EdgeId": 667 + }, + "5272dd16-7d31-4c50-a8a9-7df801128e9b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 23.0, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5272dd16-7d31-4c50-a8a9-7df801128e9b", + "Name": null + }, + "a1d867fe-f5cd-4693-84df-2aa6efb42666": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "a1d867fe-f5cd-4693-84df-2aa6efb42666", + "Name": "W18x40", + "EdgeId": 668 + }, + "f00e3222-b4c6-45cf-83cb-3d5004fe9972": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 29.5, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f00e3222-b4c6-45cf-83cb-3d5004fe9972", + "Name": null + }, + "d7f63a4a-bc14-4e51-b500-e205a0df7438": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d7f63a4a-bc14-4e51-b500-e205a0df7438", + "Name": "W18x40", + "EdgeId": 669, + "ExternalEdgeId": 669 + }, + "188b0ee1-01af-4945-bf1e-9345ac5b8c2d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 29.5, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "188b0ee1-01af-4945-bf1e-9345ac5b8c2d", + "Name": null + }, + "0f12bef3-0263-4aa0-9fb6-ff0b36cc2a42": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "0f12bef3-0263-4aa0-9fb6-ff0b36cc2a42", + "Name": "W18x40", + "EdgeId": 672 + }, + "d82797e6-1e45-4ba6-aad6-dfa0bdd288ae": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d82797e6-1e45-4ba6-aad6-dfa0bdd288ae", + "Name": null + }, + "bb40d9d1-da82-4767-97f4-a04832c2511c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "bb40d9d1-da82-4767-97f4-a04832c2511c", + "Name": "W18x40", + "EdgeId": 673 + }, + "38807bd4-8a0f-4c1f-8130-c7f1f68c4d73": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "38807bd4-8a0f-4c1f-8130-c7f1f68c4d73", + "Name": null + }, + "0335932e-9777-479e-a61e-4c5920d7f26c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "0335932e-9777-479e-a61e-4c5920d7f26c", + "Name": "W18x40", + "EdgeId": 675 + }, + "7ef946e6-9996-406d-a8d3-6204f670d74c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7ef946e6-9996-406d-a8d3-6204f670d74c", + "Name": null + }, + "152b55c8-0f1a-4dc1-9b53-4d8e1aa8d63d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "152b55c8-0f1a-4dc1-9b53-4d8e1aa8d63d", + "Name": "W18x40", + "EdgeId": 676 + }, + "960ebc28-e19b-4d56-96c9-336d4ad4b9ce": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "960ebc28-e19b-4d56-96c9-336d4ad4b9ce", + "Name": null + }, + "2a4e78db-55eb-46bc-a92f-cbef56700e54": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "2a4e78db-55eb-46bc-a92f-cbef56700e54", + "Name": "W18x40", + "EdgeId": 678 + }, + "197372bd-4243-418a-8bf0-24e9a047e7a7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "197372bd-4243-418a-8bf0-24e9a047e7a7", + "Name": null + }, + "7e466ee8-ba28-423a-b2e3-09e8befdd55e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "7e466ee8-ba28-423a-b2e3-09e8befdd55e", + "Name": "W18x40", + "EdgeId": 679 + }, + "621d7cba-486d-4c87-a89a-27bcf925dd34": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "621d7cba-486d-4c87-a89a-27bcf925dd34", + "Name": null + }, + "097b411b-c31c-450e-ad41-631dfa5fd716": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "097b411b-c31c-450e-ad41-631dfa5fd716", + "Name": "W18x40", + "EdgeId": 681, + "ExternalEdgeId": 681 + }, + "2d72d68c-1cdd-4d53-8b12-efb29b1e4ca5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2d72d68c-1cdd-4d53-8b12-efb29b1e4ca5", + "Name": null + }, + "afff9e36-4812-492f-9120-19adafd33b4b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "afff9e36-4812-492f-9120-19adafd33b4b", + "Name": "W18x40", + "EdgeId": 682 + }, + "e8dc1d66-b730-41d4-830d-aea8a2e55a09": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e8dc1d66-b730-41d4-830d-aea8a2e55a09", + "Name": null + }, + "b960de5c-c968-403a-899e-536ca8bd0c65": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "b960de5c-c968-403a-899e-536ca8bd0c65", + "Name": "W18x40", + "EdgeId": 684 + }, + "4b74e2cf-f7e6-409c-90f5-8bcff539deae": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 23.0, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4b74e2cf-f7e6-409c-90f5-8bcff539deae", + "Name": null + }, + "4427efa4-fd38-46ed-bf1a-ea530b6c2ee3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "4427efa4-fd38-46ed-bf1a-ea530b6c2ee3", + "Name": "W18x40", + "EdgeId": 685 + }, + "6badb462-afef-4fc4-be4e-8fefe80c01e7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 29.5, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6badb462-afef-4fc4-be4e-8fefe80c01e7", + "Name": null + }, + "8ec52ca1-0b49-44c2-bee5-eee48b3cc5ce": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "8ec52ca1-0b49-44c2-bee5-eee48b3cc5ce", + "Name": "W18x40", + "EdgeId": 686, + "ExternalEdgeId": 686 + }, + "b22adece-0233-417e-bbac-43ba6b7a441e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 29.5, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b22adece-0233-417e-bbac-43ba6b7a441e", + "Name": null + }, + "e720ef94-b7fe-4e9d-841b-1d206930b45a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "e720ef94-b7fe-4e9d-841b-1d206930b45a", + "Name": "W18x40", + "EdgeId": 689 + }, + "fc2db445-77aa-4ed0-a6b4-de497f7de4e6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fc2db445-77aa-4ed0-a6b4-de497f7de4e6", + "Name": null + }, + "de9e670c-f9c5-41b0-81f2-94967ed7162b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "de9e670c-f9c5-41b0-81f2-94967ed7162b", + "Name": "W18x40", + "EdgeId": 690 + }, + "7b516efa-2836-4ef5-8440-31af77332211": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7b516efa-2836-4ef5-8440-31af77332211", + "Name": null + }, + "a549ab27-74da-453b-9236-622e0ad74f6b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "a549ab27-74da-453b-9236-622e0ad74f6b", + "Name": "W18x40", + "EdgeId": 692 + }, + "22dddca2-ae26-45be-9f6c-21972a573998": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "22dddca2-ae26-45be-9f6c-21972a573998", + "Name": null + }, + "cc7761db-f00b-463c-81be-d0483014b063": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "cc7761db-f00b-463c-81be-d0483014b063", + "Name": "W18x40", + "EdgeId": 693 + }, + "7d8c69fe-0433-459a-9d21-bccea609b225": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7d8c69fe-0433-459a-9d21-bccea609b225", + "Name": null + }, + "6fc38163-b854-49a5-85b2-5be323c2850b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "6fc38163-b854-49a5-85b2-5be323c2850b", + "Name": "W18x40", + "EdgeId": 695 + }, + "d6141e17-0070-4ce8-ad38-723e5e73c36b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d6141e17-0070-4ce8-ad38-723e5e73c36b", + "Name": null + }, + "2785888a-eff3-4efb-9ea1-a6b6c12744c8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "2785888a-eff3-4efb-9ea1-a6b6c12744c8", + "Name": "W18x40", + "EdgeId": 696 + }, + "93e1e0f0-0e8a-4aeb-867f-f258b61048d3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "93e1e0f0-0e8a-4aeb-867f-f258b61048d3", + "Name": null + }, + "ee7099e6-33ba-4d25-9c9e-d1c67d9b8fa3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "ee7099e6-33ba-4d25-9c9e-d1c67d9b8fa3", + "Name": "W18x40", + "EdgeId": 698, + "ExternalEdgeId": 698 + }, + "d56afa21-4686-4392-9274-961eb900858f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d56afa21-4686-4392-9274-961eb900858f", + "Name": null + }, + "f725689d-470c-4eac-9ea9-f8d4e907dbd0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "f725689d-470c-4eac-9ea9-f8d4e907dbd0", + "Name": "W18x40", + "EdgeId": 699 + }, + "0dcf95a6-7244-4d90-8e2f-1c635c5354f4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0dcf95a6-7244-4d90-8e2f-1c635c5354f4", + "Name": null + }, + "4e218c34-6142-46b4-bbd6-7a0ebb2390f9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "4e218c34-6142-46b4-bbd6-7a0ebb2390f9", + "Name": "W18x40", + "EdgeId": 701 + }, + "fd1748dd-e5a7-41d4-a2af-77c1ac721375": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 23.0, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fd1748dd-e5a7-41d4-a2af-77c1ac721375", + "Name": null + }, + "285764b0-4fdd-4bcc-bb17-f88af2757a42": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "285764b0-4fdd-4bcc-bb17-f88af2757a42", + "Name": "W18x40", + "EdgeId": 702 + }, + "4f4a540e-97a9-4899-a62c-06b63d13cce0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 29.5, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4f4a540e-97a9-4899-a62c-06b63d13cce0", + "Name": null + }, + "63f7a03e-fd12-4c62-b502-e04948630395": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "63f7a03e-fd12-4c62-b502-e04948630395", + "Name": "W18x40", + "EdgeId": 703, + "ExternalEdgeId": 703 + }, + "12339089-9808-45f7-aabc-06e5dde7d0b4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 29.5, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "12339089-9808-45f7-aabc-06e5dde7d0b4", + "Name": null + }, + "67e36fac-3eef-43ba-a1ef-bac68b1bb4b5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "67e36fac-3eef-43ba-a1ef-bac68b1bb4b5", + "Name": "W18x40", + "EdgeId": 706 + }, + "0c580409-ad34-4524-ac77-877676bb2dae": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0c580409-ad34-4524-ac77-877676bb2dae", + "Name": null + }, + "6b051126-0250-4fd6-a927-201c7a207eb8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "6b051126-0250-4fd6-a927-201c7a207eb8", + "Name": "W18x40", + "EdgeId": 707 + }, + "461c624c-a959-491d-8cfb-0e6c814ff2cf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "461c624c-a959-491d-8cfb-0e6c814ff2cf", + "Name": null + }, + "802833d2-eb2c-473e-9cd4-7a911ca9afbf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "802833d2-eb2c-473e-9cd4-7a911ca9afbf", + "Name": "W18x40", + "EdgeId": 709 + }, + "f3e08c36-2f9e-4a22-9ab1-1d83b699b63d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f3e08c36-2f9e-4a22-9ab1-1d83b699b63d", + "Name": null + }, + "f67e7b9e-cc99-46d4-9795-9a06d9eedd52": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "f67e7b9e-cc99-46d4-9795-9a06d9eedd52", + "Name": "W18x40", + "EdgeId": 710 + }, + "fe985664-3fff-40f0-8c2c-f2d16b72bd9a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fe985664-3fff-40f0-8c2c-f2d16b72bd9a", + "Name": null + }, + "6712b459-3ca2-43a8-a170-782ca04dffc5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "6712b459-3ca2-43a8-a170-782ca04dffc5", + "Name": "W18x40", + "EdgeId": 712 + }, + "424e571e-6182-4fec-95c0-aedd296a4548": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "424e571e-6182-4fec-95c0-aedd296a4548", + "Name": null + }, + "2bdf99f6-9504-4858-b0e2-512f07819cbf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "2bdf99f6-9504-4858-b0e2-512f07819cbf", + "Name": "W18x40", + "EdgeId": 713 + }, + "1da82b37-17c2-47ea-87e9-e73438c62084": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1da82b37-17c2-47ea-87e9-e73438c62084", + "Name": null + }, + "c4213c32-b37a-495a-a76d-4ea63c0f5022": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "c4213c32-b37a-495a-a76d-4ea63c0f5022", + "Name": "W18x40", + "EdgeId": 715, + "ExternalEdgeId": 715 + }, + "41b62742-7c1d-46e3-aa5b-fa3f84d66de7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "41b62742-7c1d-46e3-aa5b-fa3f84d66de7", + "Name": null + }, + "86fc3b96-8b4b-4c2c-8847-e30f73f8626c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "86fc3b96-8b4b-4c2c-8847-e30f73f8626c", + "Name": "W18x40", + "EdgeId": 716 + }, + "1745e124-4060-4571-b15d-1936e374af86": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1745e124-4060-4571-b15d-1936e374af86", + "Name": null + }, + "314674f9-2d4b-4679-ad3c-7c8f613a4077": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "314674f9-2d4b-4679-ad3c-7c8f613a4077", + "Name": "W18x40", + "EdgeId": 718 + }, + "9074c498-0d66-4e3f-8c1c-7342296a8eb8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 23.0, + "Y": -59.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9074c498-0d66-4e3f-8c1c-7342296a8eb8", + "Name": null + }, + "c1c09f5b-1a1f-47ad-a376-eb66a6786392": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "c1c09f5b-1a1f-47ad-a376-eb66a6786392", + "Name": "W18x40", + "EdgeId": 719, + "ExternalEdgeId": 719 + }, + "bb98b3dd-8fce-43fe-b41f-89739b78be22": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 29.5, + "Y": -59.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bb98b3dd-8fce-43fe-b41f-89739b78be22", + "Name": null + }, + "bf51ef59-9801-4933-8fbc-a96fb94acca1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "bf51ef59-9801-4933-8fbc-a96fb94acca1", + "Name": "W18x40", + "EdgeId": 720, + "ExternalEdgeId": 720 + }, + "e414ac4b-ff52-48b9-981c-b3edddea0b7a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 29.5, + "Y": -59.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e414ac4b-ff52-48b9-981c-b3edddea0b7a", + "Name": null + }, + "e08b3150-d842-4c01-89c8-5f3e046ca18a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "e08b3150-d842-4c01-89c8-5f3e046ca18a", + "Name": "W18x40", + "EdgeId": 723 + }, + "dc69d71e-b19b-4ddf-9c15-58ef2734fc77": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -59.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dc69d71e-b19b-4ddf-9c15-58ef2734fc77", + "Name": null + }, + "6c43088a-9d54-4e00-a19d-b0b4528d3896": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "6c43088a-9d54-4e00-a19d-b0b4528d3896", + "Name": "W18x40", + "EdgeId": 724, + "ExternalEdgeId": 724 + }, + "7daa4cd1-c930-42d1-9418-6241abbd842c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -59.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7daa4cd1-c930-42d1-9418-6241abbd842c", + "Name": null + }, + "92093ca5-b651-430c-828a-b577685d68dd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "92093ca5-b651-430c-828a-b577685d68dd", + "Name": "W18x40", + "EdgeId": 726 + }, + "66096f54-35b0-4dfa-9514-4da037eaf739": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -59.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "66096f54-35b0-4dfa-9514-4da037eaf739", + "Name": null + }, + "3248ccd0-0d78-45c6-b1a2-9179e54da3a6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "3248ccd0-0d78-45c6-b1a2-9179e54da3a6", + "Name": "W18x40", + "EdgeId": 727, + "ExternalEdgeId": 727 + }, + "df1756c5-010c-4af7-822a-d4dc8fdf84a2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -59.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "df1756c5-010c-4af7-822a-d4dc8fdf84a2", + "Name": null + }, + "09db585f-b4d6-40c2-9764-e25865e034d3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "09db585f-b4d6-40c2-9764-e25865e034d3", + "Name": "W18x40", + "EdgeId": 729 + }, + "5d9b9e6f-5951-4e22-bd0d-69aad03ddfc5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -59.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5d9b9e6f-5951-4e22-bd0d-69aad03ddfc5", + "Name": null + }, + "0a7d1485-5017-42fb-ab83-49b8295b2f6a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "0a7d1485-5017-42fb-ab83-49b8295b2f6a", + "Name": "W18x40", + "EdgeId": 730, + "ExternalEdgeId": 730 + }, + "b303bdd4-8e84-4523-b986-8d075f960771": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -59.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b303bdd4-8e84-4523-b986-8d075f960771", + "Name": null + }, + "6678d9fc-8d61-4903-9d80-156ad0014450": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "6678d9fc-8d61-4903-9d80-156ad0014450", + "Name": "W18x40", + "EdgeId": 732, + "ExternalEdgeId": 732 + }, + "ca3b112d-8218-403c-9343-20a643d38435": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -59.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ca3b112d-8218-403c-9343-20a643d38435", + "Name": null + }, + "d5465768-3985-433d-a36f-90d52e2de837": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d5465768-3985-433d-a36f-90d52e2de837", + "Name": "W18x40", + "EdgeId": 733, + "ExternalEdgeId": 733 + }, + "12da39bf-4637-4864-bb1e-1c42ff40031a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -59.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "12da39bf-4637-4864-bb1e-1c42ff40031a", + "Name": null + }, + "6278eb75-ee82-4711-82a4-551acd3604fb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1f248147-be87-4d6a-922b-e7bf05d5f27e", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.7324, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "6278eb75-ee82-4711-82a4-551acd3604fb", + "Name": "W18x40", + "EdgeId": 735, + "ExternalEdgeId": 735 + }, + "5e31d40d-60d4-45ad-ab5c-44be440068b4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.7324, + "Y": -0.5, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -0.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5e31d40d-60d4-45ad-ab5c-44be440068b4", + "Name": null + }, + "2828b295-3d8b-4bce-b93d-b7aeeb0f002c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "2828b295-3d8b-4bce-b93d-b7aeeb0f002c", + "Name": "W18x40", + "EdgeId": 736 + }, + "52a5901a-2eb2-4776-9db5-fb22d30cd1ca": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -0.5, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -5.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "52a5901a-2eb2-4776-9db5-fb22d30cd1ca", + "Name": null + }, + "14c6e7bc-e519-483a-ab5b-b8c7b0dc2a37": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c9699dd2-d040-4a2c-ad98-36443b0d037a", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "14c6e7bc-e519-483a-ab5b-b8c7b0dc2a37", + "Name": "W18x40", + "EdgeId": 737 + }, + "511f9f9c-1788-4f75-828d-49f9594082f3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 12.2 + }, + "End": { + "X": 12.7324, + "Y": -5.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "511f9f9c-1788-4f75-828d-49f9594082f3", + "Name": null + }, + "172770b0-c1e4-49b2-989e-c8ab281b1da2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "442ea777-71e8-42e2-a88c-d741cce24ce5", + "Transform": { + "Matrix": { + "Components": [ + 0.5547001962252291, + 0.8320502943378437, + 0.0, + 9.7324, + -0.8320502943378437, + 0.5547001962252291, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "172770b0-c1e4-49b2-989e-c8ab281b1da2", + "Name": "W18x40", + "EdgeId": 738, + "ExternalEdgeId": 738 + }, + "0e240d5c-4b42-4601-9340-dba9521eeb9f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.7324, + "Y": -0.5, + "Z": 12.2 + }, + "End": { + "X": 12.7324, + "Y": -5.000000000000001, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0e240d5c-4b42-4601-9340-dba9521eeb9f", + "Name": null + }, + "ab8905c5-4c44-4b33-8183-3575cb364226": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "ab8905c5-4c44-4b33-8183-3575cb364226", + "Name": "W18x40", + "EdgeId": 751, + "ExternalEdgeId": 751 + }, + "7830efee-c59b-42ca-8c46-b0ff10bfdced": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -0.5, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -0.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7830efee-c59b-42ca-8c46-b0ff10bfdced", + "Name": null + }, + "e9f186fb-58c3-4a6b-a2f0-c1b4bf2cff82": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "e9f186fb-58c3-4a6b-a2f0-c1b4bf2cff82", + "Name": "W18x40", + "EdgeId": 752 + }, + "4443adb2-bb80-406e-ad94-8f6bdab9076b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -0.5, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -5.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4443adb2-bb80-406e-ad94-8f6bdab9076b", + "Name": null + }, + "a82d229f-f699-48b7-8578-d42fab0f313f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "a82d229f-f699-48b7-8578-d42fab0f313f", + "Name": "W18x40", + "EdgeId": 753 + }, + "9507fcbf-4b43-4b75-b340-217776be17f7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -5.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9507fcbf-4b43-4b75-b340-217776be17f7", + "Name": null + }, + "02179fe1-712e-47bd-a17e-4ff602253db1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "02179fe1-712e-47bd-a17e-4ff602253db1", + "Name": "W18x40", + "EdgeId": 761, + "ExternalEdgeId": 761 + }, + "d22a4302-0363-4b52-8886-fca1e1c95dc3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -0.5, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -0.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d22a4302-0363-4b52-8886-fca1e1c95dc3", + "Name": null + }, + "d9243ebf-3865-4b35-981f-c29eda40bb7a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d9243ebf-3865-4b35-981f-c29eda40bb7a", + "Name": "W18x40", + "EdgeId": 762, + "ExternalEdgeId": 762 + }, + "2047e28a-ee64-4672-877a-6cca26ba35bf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -0.5, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -5.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2047e28a-ee64-4672-877a-6cca26ba35bf", + "Name": null + }, + "63a4be15-49ec-4b28-913e-0936b135b944": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "63a4be15-49ec-4b28-913e-0936b135b944", + "Name": "W18x40", + "EdgeId": 763 + }, + "25484848-c8da-48fa-a591-ce74cbfad519": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -5.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -5.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "25484848-c8da-48fa-a591-ce74cbfad519", + "Name": null + }, + "d677110d-bd61-4a67-a0b2-ba16e43a1cc4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e5972626-f896-4b80-b62f-fa93a8846507", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -9.9014, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d677110d-bd61-4a67-a0b2-ba16e43a1cc4", + "Name": "W18x40", + "EdgeId": 771 + }, + "d030b8a9-e8bf-4669-8ca4-de79a9644c0a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -9.9014, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d030b8a9-e8bf-4669-8ca4-de79a9644c0a", + "Name": null + }, + "4fae3e42-b0ab-468a-8f0f-220eee32fe62": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "49319ac3-7aa7-4cea-aa5e-8a40ef05e1ba", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "4fae3e42-b0ab-468a-8f0f-220eee32fe62", + "Name": "W18x40", + "EdgeId": 772 + }, + "3bd386f8-e4e7-4af0-9074-5364afe58181": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 16.06574, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3bd386f8-e4e7-4af0-9074-5364afe58181", + "Name": null + }, + "a2d324d5-d3f2-4f1a-adf1-4544f7ebb76d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4dc79d1f-76cc-4eac-ba1d-90c0929442e9", + "Transform": { + "Matrix": { + "Components": [ + 0.5547391419896724, + 0.8320243291782772, + 0.0, + 16.0, + -0.8320243291782772, + 0.5547391419896724, + 0.0, + -9.9014, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "a2d324d5-d3f2-4f1a-adf1-4544f7ebb76d", + "Name": "W18x40", + "EdgeId": 773, + "ExternalEdgeId": 773 + }, + "ddd8f4d5-84b4-477d-aab8-a580f63fe88f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -9.9014, + "Z": 12.2 + }, + "End": { + "X": 16.06574, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ddd8f4d5-84b4-477d-aab8-a580f63fe88f", + "Name": null + }, + "6070f0bc-4975-416a-89cb-1ee11dfb4ff4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39b28bf6-91db-4c72-b448-44bed8dc6bc0", + "Transform": { + "Matrix": { + "Components": [ + 0.554700196225229, + 0.8320502943378437, + 0.0, + 12.7324, + -0.8320502943378437, + 0.554700196225229, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "6070f0bc-4975-416a-89cb-1ee11dfb4ff4", + "Name": "W18x40", + "EdgeId": 783, + "ExternalEdgeId": 783 + }, + "af8a7abe-5366-4953-9590-4249df93344c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.7324, + "Y": -5.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -9.9014, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "af8a7abe-5366-4953-9590-4249df93344c", + "Name": null + }, + "08fed6cd-bdee-4114-a596-e023c67e6ca7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "08fed6cd-bdee-4114-a596-e023c67e6ca7", + "Name": "W18x40", + "EdgeId": 784 + }, + "04621c3b-5d98-417e-8c9b-001f150ed81e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "04621c3b-5d98-417e-8c9b-001f150ed81e", + "Name": null + }, + "4aecf056-d65e-4b4a-af8c-5db3ac13082d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "4aecf056-d65e-4b4a-af8c-5db3ac13082d", + "Name": "W18x40", + "EdgeId": 785 + }, + "562192f6-974a-49db-8985-ff5fdacb7f65": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "562192f6-974a-49db-8985-ff5fdacb7f65", + "Name": null + }, + "cb613018-a485-4790-921d-b536813b985f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "cb613018-a485-4790-921d-b536813b985f", + "Name": "W18x40", + "EdgeId": 791 + }, + "2e9aa2f3-926a-48f5-bb05-11f03eb4953c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -5.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2e9aa2f3-926a-48f5-bb05-11f03eb4953c", + "Name": null + }, + "d5a2fecd-5102-4110-88b1-9c6b5c17f9b9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d5a2fecd-5102-4110-88b1-9c6b5c17f9b9", + "Name": "W18x40", + "EdgeId": 792 + }, + "7e8a56aa-621f-4635-bfad-8d864dd6b724": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7e8a56aa-621f-4635-bfad-8d864dd6b724", + "Name": null + }, + "525ca0d5-12ff-426a-b61d-a0cf9782416e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "525ca0d5-12ff-426a-b61d-a0cf9782416e", + "Name": "W18x40", + "EdgeId": 797, + "ExternalEdgeId": 797 + }, + "20d0c086-e029-4225-8892-4e47f629e4d0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -5.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "20d0c086-e029-4225-8892-4e47f629e4d0", + "Name": null + }, + "e408ea7f-f097-41cf-b61f-10dee50f3a17": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "e408ea7f-f097-41cf-b61f-10dee50f3a17", + "Name": "W18x40", + "EdgeId": 798 + }, + "2940d88f-755b-4bda-ad10-e6269c4bc883": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2940d88f-755b-4bda-ad10-e6269c4bc883", + "Name": null + }, + "60732040-fcec-4636-a642-c9e7dc85fbb1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "60732040-fcec-4636-a642-c9e7dc85fbb1", + "Name": "W18x40", + "EdgeId": 803 + }, + "d49c71a8-f057-4c78-acd1-cb75e701e09e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d49c71a8-f057-4c78-acd1-cb75e701e09e", + "Name": null + }, + "57191743-eb24-4780-b427-bf4438a33760": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "0b85760d-9483-48e4-99ef-f0158063192f", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "57191743-eb24-4780-b427-bf4438a33760", + "Name": "W18x40", + "EdgeId": 804 + }, + "5bb53622-1219-4cf1-92cb-566522e7a5ce": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 19.39906, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5bb53622-1219-4cf1-92cb-566522e7a5ce", + "Name": null + }, + "7bd1ab4c-482c-47d4-aedd-6aab66a8618c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2d8372e3-18d6-43f5-b8a6-ca8af44199e8", + "Transform": { + "Matrix": { + "Components": [ + 0.5546986601295418, + 0.8320513183995871, + 0.0, + 16.06574, + -0.8320513183995871, + 0.5546986601295418, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "7bd1ab4c-482c-47d4-aedd-6aab66a8618c", + "Name": "W18x40", + "EdgeId": 805, + "ExternalEdgeId": 805 + }, + "d43d26e5-df76-41c9-86fa-df0221c56d5f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.06574, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 19.39906, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d43d26e5-df76-41c9-86fa-df0221c56d5f", + "Name": null + }, + "e21df52a-aab0-4e93-96aa-63634c3ed924": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "e21df52a-aab0-4e93-96aa-63634c3ed924", + "Name": "W18x40", + "EdgeId": 813 + }, + "7bd4f717-f725-4eb5-87a8-99d0470ffb73": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7bd4f717-f725-4eb5-87a8-99d0470ffb73", + "Name": null + }, + "795c0d71-630e-413b-ade7-fa1fdc2d6c48": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "795c0d71-630e-413b-ade7-fa1fdc2d6c48", + "Name": "W18x40", + "EdgeId": 814 + }, + "2266fcdf-ce58-4a4f-927a-050231eb7286": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2266fcdf-ce58-4a4f-927a-050231eb7286", + "Name": null + }, + "0650d3ac-fdc3-4935-8432-c01dc436ca09": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "0650d3ac-fdc3-4935-8432-c01dc436ca09", + "Name": "W18x40", + "EdgeId": 819 + }, + "8fc1ab94-0d45-4a7c-aba9-27260378ad4a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8fc1ab94-0d45-4a7c-aba9-27260378ad4a", + "Name": null + }, + "7d025b16-4fdb-464a-89c5-bfad331a46b8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "7d025b16-4fdb-464a-89c5-bfad331a46b8", + "Name": "W18x40", + "EdgeId": 820 + }, + "39d90870-f39a-415f-9c8b-550e7fcd5332": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "39d90870-f39a-415f-9c8b-550e7fcd5332", + "Name": null + }, + "b8bd6171-1d3b-4eef-9c9a-dcd566d19782": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "b8bd6171-1d3b-4eef-9c9a-dcd566d19782", + "Name": "W18x40", + "EdgeId": 825, + "ExternalEdgeId": 825 + }, + "6c1240fc-8715-47e5-ae08-5d969dcc943f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6c1240fc-8715-47e5-ae08-5d969dcc943f", + "Name": null + }, + "0cfe8387-77e3-4bcb-93bb-8d3047e2ee56": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "0cfe8387-77e3-4bcb-93bb-8d3047e2ee56", + "Name": "W18x40", + "EdgeId": 826 + }, + "2e44b8e7-bb85-460d-ba88-55c9db3acef9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2e44b8e7-bb85-460d-ba88-55c9db3acef9", + "Name": null + }, + "66b8949a-79b7-48ff-ac04-e172e38b25c4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "66b8949a-79b7-48ff-ac04-e172e38b25c4", + "Name": "W18x40", + "EdgeId": 831 + }, + "b2ee679a-0ac9-4bb3-9725-fa2b899a955d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b2ee679a-0ac9-4bb3-9725-fa2b899a955d", + "Name": null + }, + "77e1e159-d80f-4cfe-97a5-658569553785": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7cd6c7d4-992c-4217-9c1f-ac7c9170b25c", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "77e1e159-d80f-4cfe-97a5-658569553785", + "Name": "W18x40", + "EdgeId": 832 + }, + "6623faa6-9f86-4b0d-b6f9-36062756577a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 22.7324, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6623faa6-9f86-4b0d-b6f9-36062756577a", + "Name": null + }, + "353b4408-5054-41f6-9fbe-ce9213a963ec": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "f1f4efee-0d74-4a09-8341-e6127bd83748", + "Transform": { + "Matrix": { + "Components": [ + 0.5547009642709457, + 0.832049782306854, + 0.0, + 19.39906, + -0.832049782306854, + 0.5547009642709457, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "353b4408-5054-41f6-9fbe-ce9213a963ec", + "Name": "W18x40", + "EdgeId": 833, + "ExternalEdgeId": 833 + }, + "d9122a01-28f8-4ca1-9698-537b71aaf575": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.39906, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 22.7324, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d9122a01-28f8-4ca1-9698-537b71aaf575", + "Name": null + }, + "a3ded4ae-5988-4e14-9091-3984a5765d91": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "a3ded4ae-5988-4e14-9091-3984a5765d91", + "Name": "W18x40", + "EdgeId": 841 + }, + "72e3fe47-cc82-400a-ba3a-03d1b52d04b5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "72e3fe47-cc82-400a-ba3a-03d1b52d04b5", + "Name": null + }, + "ddb22953-fc40-4db0-84bf-87094f33a482": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "ddb22953-fc40-4db0-84bf-87094f33a482", + "Name": "W18x40", + "EdgeId": 842 + }, + "1345f66e-d8a4-4e05-864b-e632845e9c2b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1345f66e-d8a4-4e05-864b-e632845e9c2b", + "Name": null + }, + "1e292f0f-af50-4b4a-b4f0-ff35d23979a3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "1e292f0f-af50-4b4a-b4f0-ff35d23979a3", + "Name": "W18x40", + "EdgeId": 847 + }, + "07a4d9d4-6206-4407-a1ee-4ab956141201": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "07a4d9d4-6206-4407-a1ee-4ab956141201", + "Name": null + }, + "46aa6fa9-1a45-425d-bf58-5e2b5c944636": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "46aa6fa9-1a45-425d-bf58-5e2b5c944636", + "Name": "W18x40", + "EdgeId": 848 + }, + "80f1200e-0057-49e6-b25e-fb25e537e433": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "80f1200e-0057-49e6-b25e-fb25e537e433", + "Name": null + }, + "c40d8899-5076-4b17-a890-5df23beb6e57": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "c40d8899-5076-4b17-a890-5df23beb6e57", + "Name": "W18x40", + "EdgeId": 853, + "ExternalEdgeId": 853 + }, + "69ffbdcc-9c53-4ee8-a442-2fcc55b449af": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "69ffbdcc-9c53-4ee8-a442-2fcc55b449af", + "Name": null + }, + "da87b32a-cfea-46aa-8452-6ad7c83ea8f3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "da87b32a-cfea-46aa-8452-6ad7c83ea8f3", + "Name": "W18x40", + "EdgeId": 854 + }, + "02443929-50ae-4bf0-8a5f-6217a21fa38b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "02443929-50ae-4bf0-8a5f-6217a21fa38b", + "Name": null + }, + "53ce087d-b3d2-4865-b37b-0844e03d3e05": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d4da724b-0d2f-4bd3-acf2-5d3697adf278", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -20.4014, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "53ce087d-b3d2-4865-b37b-0844e03d3e05", + "Name": "W18x40", + "EdgeId": 859 + }, + "1ab6c488-1d06-4bba-9977-8bd646178cb0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -20.4014, + "Z": 12.2 + }, + "End": { + "X": 23.0, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1ab6c488-1d06-4bba-9977-8bd646178cb0", + "Name": null + }, + "dedb3cfa-481a-4010-b82a-e1a7a93bfd8e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b110d957-b9da-4137-9c21-3ec50b79b33e", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "dedb3cfa-481a-4010-b82a-e1a7a93bfd8e", + "Name": "W18x40", + "EdgeId": 860 + }, + "ee727740-89eb-4290-b113-94dee3d030eb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 26.06574, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ee727740-89eb-4290-b113-94dee3d030eb", + "Name": null + }, + "92442fb7-e836-4d9d-9e72-f022b7158515": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e0c50391-a50c-417e-a648-1d8139e40aa4", + "Transform": { + "Matrix": { + "Components": [ + 0.5547010313116194, + 0.8320497376129783, + 0.0, + 23.0, + -0.8320497376129783, + 0.5547010313116194, + 0.0, + -20.4014, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "92442fb7-e836-4d9d-9e72-f022b7158515", + "Name": "W18x40", + "EdgeId": 861, + "ExternalEdgeId": 861 + }, + "4b24b6f7-a6aa-4f9b-906d-5d0b6c389755": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -20.4014, + "Z": 12.2 + }, + "End": { + "X": 26.06574, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4b24b6f7-a6aa-4f9b-906d-5d0b6c389755", + "Name": null + }, + "6de5caf2-d34f-4877-9014-4393b49f8e3a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3bf2c337-826f-4c12-b4d9-a345602f7c71", + "Transform": { + "Matrix": { + "Components": [ + 0.5547001962252325, + 0.8320502943378414, + 0.0, + 22.7324, + -0.8320502943378414, + 0.5547001962252325, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "6de5caf2-d34f-4877-9014-4393b49f8e3a", + "Name": "W18x40", + "EdgeId": 871, + "ExternalEdgeId": 871 + }, + "1d3ce3a1-b4c2-4d21-acb6-f3a03d31b55b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.7324, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 23.0, + "Y": -20.4014, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1d3ce3a1-b4c2-4d21-acb6-f3a03d31b55b", + "Name": null + }, + "6ccb20e7-1f65-4483-8655-1ed1e178151d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "6ccb20e7-1f65-4483-8655-1ed1e178151d", + "Name": "W18x40", + "EdgeId": 872 + }, + "6a3b4aa0-6f7f-4b03-b933-9611f334af51": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6a3b4aa0-6f7f-4b03-b933-9611f334af51", + "Name": null + }, + "b7b67984-e0c0-49db-a5d3-7e8c822b4810": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "b7b67984-e0c0-49db-a5d3-7e8c822b4810", + "Name": "W18x40", + "EdgeId": 873 + }, + "0328129d-f77b-417e-b165-e9445e54280c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0328129d-f77b-417e-b165-e9445e54280c", + "Name": null + }, + "0cea2cc5-01f0-486b-aebe-cfebd88754db": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "0cea2cc5-01f0-486b-aebe-cfebd88754db", + "Name": "W18x40", + "EdgeId": 879 + }, + "acbcc01a-2cfc-4e40-9c6f-3e968ef5818d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "acbcc01a-2cfc-4e40-9c6f-3e968ef5818d", + "Name": null + }, + "4ed6dd27-071f-419c-945e-0a10b8505d2a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "4ed6dd27-071f-419c-945e-0a10b8505d2a", + "Name": "W18x40", + "EdgeId": 880 + }, + "0b003873-b0e1-4229-8b54-ee009ac85354": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0b003873-b0e1-4229-8b54-ee009ac85354", + "Name": null + }, + "845a29d2-6b72-48bd-9100-19f761f009af": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "845a29d2-6b72-48bd-9100-19f761f009af", + "Name": "W18x40", + "EdgeId": 885 + }, + "de308678-58ed-48d3-8fbc-fc0ccba87c0b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "de308678-58ed-48d3-8fbc-fc0ccba87c0b", + "Name": null + }, + "b61e2aa8-2ae0-4ab6-b217-8c09d8147b97": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "b61e2aa8-2ae0-4ab6-b217-8c09d8147b97", + "Name": "W18x40", + "EdgeId": 886 + }, + "95c91f2f-6311-461a-b4ea-9af2f612c4e4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "95c91f2f-6311-461a-b4ea-9af2f612c4e4", + "Name": null + }, + "4ed5e031-168d-44d7-9508-5b96d3e00952": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "4ed5e031-168d-44d7-9508-5b96d3e00952", + "Name": "W18x40", + "EdgeId": 891, + "ExternalEdgeId": 891 + }, + "a353f84c-8ac9-492a-993f-f903b6e8763f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a353f84c-8ac9-492a-993f-f903b6e8763f", + "Name": null + }, + "202f4412-041e-4af1-8f53-39f5ca607324": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "202f4412-041e-4af1-8f53-39f5ca607324", + "Name": "W18x40", + "EdgeId": 892 + }, + "8a48b564-ac10-4860-8d2c-53697554f6fa": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8a48b564-ac10-4860-8d2c-53697554f6fa", + "Name": null + }, + "b022f0ef-e871-4e2d-9f82-e011e3f198aa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "b022f0ef-e871-4e2d-9f82-e011e3f198aa", + "Name": "W18x40", + "EdgeId": 897 + }, + "9c26bef7-4919-4401-a94a-a802f75c7b5f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 23.0, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9c26bef7-4919-4401-a94a-a802f75c7b5f", + "Name": null + }, + "434f96fa-11fe-4fd6-873d-dc3cc619039c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "9b7bdf59-55a7-4daf-9c50-86da88398d8a", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "434f96fa-11fe-4fd6-873d-dc3cc619039c", + "Name": "W18x40", + "EdgeId": 898 + }, + "014b9d7d-b169-4ef4-951c-dbc1fe300a4f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 29.39906, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "014b9d7d-b169-4ef4-951c-dbc1fe300a4f", + "Name": null + }, + "97840780-9e87-43c7-a95c-9e18a2f32a16": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2d8372e3-18d6-43f5-b8a6-ca8af44199e8", + "Transform": { + "Matrix": { + "Components": [ + 0.5546986601295418, + 0.8320513183995871, + 0.0, + 26.06574, + -0.8320513183995871, + 0.5546986601295418, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "97840780-9e87-43c7-a95c-9e18a2f32a16", + "Name": "W18x40", + "EdgeId": 899, + "ExternalEdgeId": 899 + }, + "d5b6ea80-71cf-4ff8-ad7b-fee3d363ad99": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.06574, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 29.39906, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d5b6ea80-71cf-4ff8-ad7b-fee3d363ad99", + "Name": null + }, + "7f37d961-7941-4f30-a73c-7e56e111305d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "7f37d961-7941-4f30-a73c-7e56e111305d", + "Name": "W18x40", + "EdgeId": 907 + }, + "238bec02-62d5-4b95-924a-1ae428241d45": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "238bec02-62d5-4b95-924a-1ae428241d45", + "Name": null + }, + "87f4d676-8b6d-4962-834d-ac53f051abab": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "87f4d676-8b6d-4962-834d-ac53f051abab", + "Name": "W18x40", + "EdgeId": 908 + }, + "b0546e5a-e494-4ff6-a336-b24d9f9a94c7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b0546e5a-e494-4ff6-a336-b24d9f9a94c7", + "Name": null + }, + "b85323f7-1b7e-47c0-afdc-2fa219a807b4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "b85323f7-1b7e-47c0-afdc-2fa219a807b4", + "Name": "W18x40", + "EdgeId": 913 + }, + "3367a3b0-c696-4e0c-a5d3-9f5403edb042": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3367a3b0-c696-4e0c-a5d3-9f5403edb042", + "Name": null + }, + "be7ad5a2-0596-49e5-9dd2-03b5f3480b1e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "be7ad5a2-0596-49e5-9dd2-03b5f3480b1e", + "Name": "W18x40", + "EdgeId": 914 + }, + "04cc2833-d566-4f56-b028-b15d614dbbd7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "04cc2833-d566-4f56-b028-b15d614dbbd7", + "Name": null + }, + "72f08611-40a3-44ff-bd59-ba61a6995784": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "72f08611-40a3-44ff-bd59-ba61a6995784", + "Name": "W18x40", + "EdgeId": 919 + }, + "6007d404-e4e2-4146-a7b0-54aed9170f57": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6007d404-e4e2-4146-a7b0-54aed9170f57", + "Name": null + }, + "af146aef-0199-4145-98aa-d4bfc4c21b40": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "af146aef-0199-4145-98aa-d4bfc4c21b40", + "Name": "W18x40", + "EdgeId": 920 + }, + "f2d204dd-e4f0-4833-9068-86b553633cbf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f2d204dd-e4f0-4833-9068-86b553633cbf", + "Name": null + }, + "8485bda3-641d-41a5-a8ec-2284d3f2e0e0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "8485bda3-641d-41a5-a8ec-2284d3f2e0e0", + "Name": "W18x40", + "EdgeId": 925, + "ExternalEdgeId": 925 + }, + "4486f5c8-a4ce-4761-93e7-f5ef6fc1f642": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4486f5c8-a4ce-4761-93e7-f5ef6fc1f642", + "Name": null + }, + "326e18c0-0c54-4b0e-9d9a-645a15db3c9a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "326e18c0-0c54-4b0e-9d9a-645a15db3c9a", + "Name": "W18x40", + "EdgeId": 926 + }, + "1aef58bf-2c31-4ab8-9a5a-5f4feac4c023": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1aef58bf-2c31-4ab8-9a5a-5f4feac4c023", + "Name": null + }, + "e0887725-f83d-4055-943b-67a28ffed050": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "34bbf385-46d3-47bf-83a0-3a400bd05173", + "Transform": { + "Matrix": { + "Components": [ + 0.5547255602613056, + 0.8320333844220319, + 0.0, + 29.39906, + -0.8320333844220319, + 0.5547255602613056, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "e0887725-f83d-4055-943b-67a28ffed050", + "Name": "W18x40", + "EdgeId": 931, + "ExternalEdgeId": 931 + }, + "224bbb6f-07da-49ec-93c3-e72644363d67": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.39906, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 29.5, + "Y": -30.1514, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "224bbb6f-07da-49ec-93c3-e72644363d67", + "Name": null + }, + "56bdf867-fa4d-4d37-b7bd-896a7df4849c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "56bdf867-fa4d-4d37-b7bd-896a7df4849c", + "Name": "W18x40", + "EdgeId": 932 + }, + "02e5a1d4-05cf-4be3-b2e4-4eeb60a784bf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 23.0, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "02e5a1d4-05cf-4be3-b2e4-4eeb60a784bf", + "Name": null + }, + "5257ce25-325d-49b6-954d-172df4eebc17": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "5257ce25-325d-49b6-954d-172df4eebc17", + "Name": "W18x40", + "EdgeId": 933 + }, + "47aead43-688c-49d1-abf9-0b0d840457df": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 29.5, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "47aead43-688c-49d1-abf9-0b0d840457df", + "Name": null + }, + "a597527a-d8bc-4ed1-a56e-6c38a1e55aaf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2984e71a-f669-4201-8e3b-e26ab9529910", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -30.1514, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "a597527a-d8bc-4ed1-a56e-6c38a1e55aaf", + "Name": "W18x40", + "EdgeId": 934, + "ExternalEdgeId": 934 + }, + "b36a4080-9c01-4049-832a-84dc2005b912": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -30.1514, + "Z": 12.2 + }, + "End": { + "X": 29.5, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b36a4080-9c01-4049-832a-84dc2005b912", + "Name": null + }, + "3f396256-cb3f-4b89-8e36-f3d385163b72": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "3f396256-cb3f-4b89-8e36-f3d385163b72", + "Name": "W18x40", + "EdgeId": 945 + }, + "e270a422-370f-48d9-8cf7-f2c1b518a851": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e270a422-370f-48d9-8cf7-f2c1b518a851", + "Name": null + }, + "cade78b7-d216-48df-b73b-3493856c9176": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "cade78b7-d216-48df-b73b-3493856c9176", + "Name": "W18x40", + "EdgeId": 946 + }, + "86907db9-a070-4ee0-972e-c7a5f5673fde": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "86907db9-a070-4ee0-972e-c7a5f5673fde", + "Name": null + }, + "9e25c8e3-ed7e-46af-85df-5c640338891a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "9e25c8e3-ed7e-46af-85df-5c640338891a", + "Name": "W18x40", + "EdgeId": 951 + }, + "5b872b24-8232-4086-a6ac-a79a39b4abcb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5b872b24-8232-4086-a6ac-a79a39b4abcb", + "Name": null + }, + "bb6d153d-c853-4e86-91c3-23b3e5059381": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "bb6d153d-c853-4e86-91c3-23b3e5059381", + "Name": "W18x40", + "EdgeId": 952 + }, + "ca1933d4-2a1e-4783-81ed-574d4688a8b6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ca1933d4-2a1e-4783-81ed-574d4688a8b6", + "Name": null + }, + "21897307-b491-478c-b951-48f35e9f4fae": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "21897307-b491-478c-b951-48f35e9f4fae", + "Name": "W18x40", + "EdgeId": 957 + }, + "a69ad1ab-10e7-4f06-ac0f-809526d2fb82": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a69ad1ab-10e7-4f06-ac0f-809526d2fb82", + "Name": null + }, + "5cc9406f-3ea5-4a89-a3b3-41d089c4dcde": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "5cc9406f-3ea5-4a89-a3b3-41d089c4dcde", + "Name": "W18x40", + "EdgeId": 958 + }, + "aad658cd-6d93-4496-9005-0a5add074f90": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "aad658cd-6d93-4496-9005-0a5add074f90", + "Name": null + }, + "d92bd33c-4cd5-4f06-a895-d234dcec5d6b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d92bd33c-4cd5-4f06-a895-d234dcec5d6b", + "Name": "W18x40", + "EdgeId": 963, + "ExternalEdgeId": 963 + }, + "19a31dcd-0000-461d-b2d4-2491119b7202": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "19a31dcd-0000-461d-b2d4-2491119b7202", + "Name": null + }, + "19788b97-b34b-45c0-93e2-009dbf63c25d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "19788b97-b34b-45c0-93e2-009dbf63c25d", + "Name": "W18x40", + "EdgeId": 964 + }, + "4fb6e98b-2334-4b35-bbf2-117c9d475f3f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4fb6e98b-2334-4b35-bbf2-117c9d475f3f", + "Name": null + }, + "0064a6ca-833c-4a64-93ff-064c1d856491": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "0064a6ca-833c-4a64-93ff-064c1d856491", + "Name": "W18x40", + "EdgeId": 969 + }, + "0c437276-905d-4145-a257-6ff53010845b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 23.0, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0c437276-905d-4145-a257-6ff53010845b", + "Name": null + }, + "97e67332-44ff-4c68-9e17-4e8b5cb76537": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "97e67332-44ff-4c68-9e17-4e8b5cb76537", + "Name": "W18x40", + "EdgeId": 970 + }, + "2cf860e0-7abd-4125-9f9a-b3609f23259f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 29.5, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2cf860e0-7abd-4125-9f9a-b3609f23259f", + "Name": null + }, + "51a6e81f-9be7-44f4-84d4-fb10f4721dbe": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "51a6e81f-9be7-44f4-84d4-fb10f4721dbe", + "Name": "W18x40", + "EdgeId": 971, + "ExternalEdgeId": 971 + }, + "33f4d2a1-3fbe-43db-9764-4d4d05461b1e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 29.5, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "33f4d2a1-3fbe-43db-9764-4d4d05461b1e", + "Name": null + }, + "5d33760f-aed3-4335-a39f-614d74db1c8e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "5d33760f-aed3-4335-a39f-614d74db1c8e", + "Name": "W18x40", + "EdgeId": 979 + }, + "09ddf95b-5b1f-4689-8d6c-e9a745d216fe": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "09ddf95b-5b1f-4689-8d6c-e9a745d216fe", + "Name": null + }, + "841e1873-a5ce-4e5f-a4d3-a22fa20e0f77": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "841e1873-a5ce-4e5f-a4d3-a22fa20e0f77", + "Name": "W18x40", + "EdgeId": 980 + }, + "d8cca4fd-3e92-42ff-9cbb-975de2d16cce": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d8cca4fd-3e92-42ff-9cbb-975de2d16cce", + "Name": null + }, + "b30a3068-4e4b-4f1a-aac9-bbb0e0e2f8aa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "b30a3068-4e4b-4f1a-aac9-bbb0e0e2f8aa", + "Name": "W18x40", + "EdgeId": 985 + }, + "ec8a7ebb-ab99-4ecc-a245-780b55747dff": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ec8a7ebb-ab99-4ecc-a245-780b55747dff", + "Name": null + }, + "73887299-2003-476c-87aa-d8c5c9bf9c64": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "73887299-2003-476c-87aa-d8c5c9bf9c64", + "Name": "W18x40", + "EdgeId": 986 + }, + "12864b4c-7915-4a5f-a6df-6e4322701cbd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "12864b4c-7915-4a5f-a6df-6e4322701cbd", + "Name": null + }, + "57a5c10e-df9b-4241-87a4-63a9ceae33ad": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "57a5c10e-df9b-4241-87a4-63a9ceae33ad", + "Name": "W18x40", + "EdgeId": 991 + }, + "bedf52ae-f9c0-47bc-8ccd-5e038fd511f6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bedf52ae-f9c0-47bc-8ccd-5e038fd511f6", + "Name": null + }, + "f06bcf45-d1aa-4c58-b44b-74d4d1b64815": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "f06bcf45-d1aa-4c58-b44b-74d4d1b64815", + "Name": "W18x40", + "EdgeId": 992 + }, + "20ca2a12-e319-4251-ab17-46f027198811": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "20ca2a12-e319-4251-ab17-46f027198811", + "Name": null + }, + "f7053a12-a73d-4c6a-a042-d1a79b695591": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "f7053a12-a73d-4c6a-a042-d1a79b695591", + "Name": "W18x40", + "EdgeId": 997, + "ExternalEdgeId": 997 + }, + "63838ec7-5e20-428b-9400-e687d8e3e5d0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "63838ec7-5e20-428b-9400-e687d8e3e5d0", + "Name": null + }, + "25414101-4368-4632-98b5-f81152fd630e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "25414101-4368-4632-98b5-f81152fd630e", + "Name": "W18x40", + "EdgeId": 998 + }, + "122f88db-5dfe-4749-9652-248f605ff7bd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "122f88db-5dfe-4749-9652-248f605ff7bd", + "Name": null + }, + "90d23a15-350f-4f3a-b35c-c63aae5f1a78": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "90d23a15-350f-4f3a-b35c-c63aae5f1a78", + "Name": "W18x40", + "EdgeId": 1003 + }, + "f505cdde-bc96-4bdb-b288-b361227c3db0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 23.0, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f505cdde-bc96-4bdb-b288-b361227c3db0", + "Name": null + }, + "0653fa17-dfaa-48c8-8238-00d9788555a2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "0653fa17-dfaa-48c8-8238-00d9788555a2", + "Name": "W18x40", + "EdgeId": 1004 + }, + "0e094db9-767a-4414-ba25-ab1b9e786b43": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 29.5, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0e094db9-767a-4414-ba25-ab1b9e786b43", + "Name": null + }, + "b8a3d14d-3e3a-481e-aa41-698d92bfaa8a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "b8a3d14d-3e3a-481e-aa41-698d92bfaa8a", + "Name": "W18x40", + "EdgeId": 1005, + "ExternalEdgeId": 1005 + }, + "2bdaff6f-830d-48d6-8a4d-42cdd73c0399": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 29.5, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2bdaff6f-830d-48d6-8a4d-42cdd73c0399", + "Name": null + }, + "b030f520-90b0-40a5-9f74-7fe0509ebbe4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "b030f520-90b0-40a5-9f74-7fe0509ebbe4", + "Name": "W18x40", + "EdgeId": 1013 + }, + "8c10d6c6-284e-46cb-8e8e-b786e9e22b7d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8c10d6c6-284e-46cb-8e8e-b786e9e22b7d", + "Name": null + }, + "3299945c-a95d-421b-b727-272c5f30a116": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "3299945c-a95d-421b-b727-272c5f30a116", + "Name": "W18x40", + "EdgeId": 1014 + }, + "b431ab58-6ead-439d-a469-cc5c6b130be6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b431ab58-6ead-439d-a469-cc5c6b130be6", + "Name": null + }, + "b3c1e6b6-c4a4-4ed0-a261-c5746181dccd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "b3c1e6b6-c4a4-4ed0-a261-c5746181dccd", + "Name": "W18x40", + "EdgeId": 1019 + }, + "45101495-88be-44a7-9fbe-94e0136170e3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "45101495-88be-44a7-9fbe-94e0136170e3", + "Name": null + }, + "b53e6cef-503e-4360-9fc0-cb10010a6768": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "b53e6cef-503e-4360-9fc0-cb10010a6768", + "Name": "W18x40", + "EdgeId": 1020 + }, + "356238d6-5168-4196-9ba3-2c1e71b4e0e9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "356238d6-5168-4196-9ba3-2c1e71b4e0e9", + "Name": null + }, + "13183004-63cc-4007-af24-e232118246b5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "13183004-63cc-4007-af24-e232118246b5", + "Name": "W18x40", + "EdgeId": 1025 + }, + "7ed0fbee-305e-4949-aa54-c901c3b4646b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7ed0fbee-305e-4949-aa54-c901c3b4646b", + "Name": null + }, + "f211b2d4-05ea-4999-86f0-8e52af6b3424": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "f211b2d4-05ea-4999-86f0-8e52af6b3424", + "Name": "W18x40", + "EdgeId": 1026 + }, + "ada75c3f-6841-443e-9b1c-ee37bcf487ea": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ada75c3f-6841-443e-9b1c-ee37bcf487ea", + "Name": null + }, + "0ca744f2-c1d8-421d-b1f9-6ed37218fc7f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "0ca744f2-c1d8-421d-b1f9-6ed37218fc7f", + "Name": "W18x40", + "EdgeId": 1031, + "ExternalEdgeId": 1031 + }, + "e205c057-0bf7-4fe6-90fd-796ad945b239": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e205c057-0bf7-4fe6-90fd-796ad945b239", + "Name": null + }, + "ba3a81a6-17ad-4f21-b74e-5efa1af8c89a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "ba3a81a6-17ad-4f21-b74e-5efa1af8c89a", + "Name": "W18x40", + "EdgeId": 1032 + }, + "9385c7de-30af-4209-baa0-6275e49b4014": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9385c7de-30af-4209-baa0-6275e49b4014", + "Name": null + }, + "8b60a443-dd33-457b-9f4b-af6e912995e2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "8b60a443-dd33-457b-9f4b-af6e912995e2", + "Name": "W18x40", + "EdgeId": 1037 + }, + "792048f0-8bc3-4371-b0e6-686075799980": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 23.0, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "792048f0-8bc3-4371-b0e6-686075799980", + "Name": null + }, + "07ab2d04-b671-4557-9787-0be69c71fdff": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "07ab2d04-b671-4557-9787-0be69c71fdff", + "Name": "W18x40", + "EdgeId": 1038 + }, + "737aeea6-bc4f-4365-aed6-f0bc0da758b2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 29.5, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "737aeea6-bc4f-4365-aed6-f0bc0da758b2", + "Name": null + }, + "4cae0f49-a7b4-4233-a84d-2a65aa402ab2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "4cae0f49-a7b4-4233-a84d-2a65aa402ab2", + "Name": "W18x40", + "EdgeId": 1039, + "ExternalEdgeId": 1039 + }, + "9c526e10-ee01-4583-b79a-041158e88eb2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 29.5, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9c526e10-ee01-4583-b79a-041158e88eb2", + "Name": null + }, + "842db928-cb4e-4841-ba4e-e54a53e0c300": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "842db928-cb4e-4841-ba4e-e54a53e0c300", + "Name": "W18x40", + "EdgeId": 1047 + }, + "f20d1831-8a72-4e0a-94cc-39ea0a44ddfb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f20d1831-8a72-4e0a-94cc-39ea0a44ddfb", + "Name": null + }, + "7feba37c-ef3a-4fd4-b23c-7fd8b03a3d70": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "7feba37c-ef3a-4fd4-b23c-7fd8b03a3d70", + "Name": "W18x40", + "EdgeId": 1048 + }, + "4ef0579c-1165-4b8c-b54c-24a7a5f9b210": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4ef0579c-1165-4b8c-b54c-24a7a5f9b210", + "Name": null + }, + "c259c496-7702-44f8-8f86-5b622316afe3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "c259c496-7702-44f8-8f86-5b622316afe3", + "Name": "W18x40", + "EdgeId": 1053 + }, + "1e832f87-1838-4842-9287-546747bcb1d0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1e832f87-1838-4842-9287-546747bcb1d0", + "Name": null + }, + "ad05947a-43fb-4b48-9e9a-4b1d6e67df6e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "ad05947a-43fb-4b48-9e9a-4b1d6e67df6e", + "Name": "W18x40", + "EdgeId": 1054 + }, + "e2b6d25b-6e74-47b4-b902-b4edaf4d0a9c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e2b6d25b-6e74-47b4-b902-b4edaf4d0a9c", + "Name": null + }, + "fac774d4-8062-41ae-b582-c8f95063a717": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "fac774d4-8062-41ae-b582-c8f95063a717", + "Name": "W18x40", + "EdgeId": 1059 + }, + "99729961-09a4-4eed-8de8-cc8f33a2ea65": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "99729961-09a4-4eed-8de8-cc8f33a2ea65", + "Name": null + }, + "6ac34513-5421-44fc-b586-2a8940408c70": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "6ac34513-5421-44fc-b586-2a8940408c70", + "Name": "W18x40", + "EdgeId": 1060 + }, + "1c0ff0bf-a658-4707-bf4e-257a8677bcd1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1c0ff0bf-a658-4707-bf4e-257a8677bcd1", + "Name": null + }, + "6fe44760-40a1-4ee4-a425-ad47a2c4977a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "6fe44760-40a1-4ee4-a425-ad47a2c4977a", + "Name": "W18x40", + "EdgeId": 1065, + "ExternalEdgeId": 1065 + }, + "88707677-feaa-4195-aaf2-1459810c56d2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "88707677-feaa-4195-aaf2-1459810c56d2", + "Name": null + }, + "4581c9a3-4ad8-4632-b1c1-e547d19623c7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "4581c9a3-4ad8-4632-b1c1-e547d19623c7", + "Name": "W18x40", + "EdgeId": 1066 + }, + "334be1ae-722b-4936-8647-3a315193571b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "334be1ae-722b-4936-8647-3a315193571b", + "Name": null + }, + "c2b14c7e-2cda-44d5-8096-0ab4516bbad2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "c2b14c7e-2cda-44d5-8096-0ab4516bbad2", + "Name": "W18x40", + "EdgeId": 1071 + }, + "ecf7ec55-4fb0-4a40-a222-1197b0e9ab97": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 23.0, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ecf7ec55-4fb0-4a40-a222-1197b0e9ab97", + "Name": null + }, + "68c6e619-9420-41bc-abfb-5332f7ff9176": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "68c6e619-9420-41bc-abfb-5332f7ff9176", + "Name": "W18x40", + "EdgeId": 1072 + }, + "122ec086-fc79-4c98-94bd-5e3928d4e6ff": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 29.5, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "122ec086-fc79-4c98-94bd-5e3928d4e6ff", + "Name": null + }, + "7e62bb88-aba9-42a3-b3f7-c57950b3f539": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "7e62bb88-aba9-42a3-b3f7-c57950b3f539", + "Name": "W18x40", + "EdgeId": 1073, + "ExternalEdgeId": 1073 + }, + "69121062-d5c5-46b5-93fc-3a894c17da79": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 29.5, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "69121062-d5c5-46b5-93fc-3a894c17da79", + "Name": null + }, + "069e53f9-7101-47df-9ac0-7aba65d55112": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "069e53f9-7101-47df-9ac0-7aba65d55112", + "Name": "W18x40", + "EdgeId": 1081 + }, + "03cca63e-8eb4-43f0-ab09-4d0f0066eaeb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "03cca63e-8eb4-43f0-ab09-4d0f0066eaeb", + "Name": null + }, + "0146905f-d047-451c-a766-7da7adb8a634": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "0146905f-d047-451c-a766-7da7adb8a634", + "Name": "W18x40", + "EdgeId": 1082 + }, + "26610b95-a6c1-43b9-b1b9-4e069a3662d9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "26610b95-a6c1-43b9-b1b9-4e069a3662d9", + "Name": null + }, + "9c1ec1d1-3815-4d65-8520-acec9321895c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "9c1ec1d1-3815-4d65-8520-acec9321895c", + "Name": "W18x40", + "EdgeId": 1087 + }, + "5e5c948f-8d93-4025-9bc3-d2e3e1f42df9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5e5c948f-8d93-4025-9bc3-d2e3e1f42df9", + "Name": null + }, + "c165d5f3-38ba-4beb-ac9c-e7218d9ae4a5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "c165d5f3-38ba-4beb-ac9c-e7218d9ae4a5", + "Name": "W18x40", + "EdgeId": 1088 + }, + "e827e482-650d-4b1f-8599-1ab31e092d6c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e827e482-650d-4b1f-8599-1ab31e092d6c", + "Name": null + }, + "1d9cf1d2-c33b-42f6-99bf-97e67b980f87": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "1d9cf1d2-c33b-42f6-99bf-97e67b980f87", + "Name": "W18x40", + "EdgeId": 1093 + }, + "63e6b456-592e-4a89-bd27-a2d0a9fd7754": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "63e6b456-592e-4a89-bd27-a2d0a9fd7754", + "Name": null + }, + "0ae2f756-987c-44a8-b108-5f1fb90b7ec4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "0ae2f756-987c-44a8-b108-5f1fb90b7ec4", + "Name": "W18x40", + "EdgeId": 1094 + }, + "5e98b592-3177-4431-bd26-ce3eaef766c1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5e98b592-3177-4431-bd26-ce3eaef766c1", + "Name": null + }, + "2c488f87-15c2-4601-a52e-313f85d3b074": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "2c488f87-15c2-4601-a52e-313f85d3b074", + "Name": "W18x40", + "EdgeId": 1099, + "ExternalEdgeId": 1099 + }, + "686cf60d-a032-4763-9880-e161132bc47f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "686cf60d-a032-4763-9880-e161132bc47f", + "Name": null + }, + "ba8620a3-8f7d-4eed-a751-034fe965a15d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "ba8620a3-8f7d-4eed-a751-034fe965a15d", + "Name": "W18x40", + "EdgeId": 1100 + }, + "e2f50129-1b6b-4820-89a6-1fea563e9190": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e2f50129-1b6b-4820-89a6-1fea563e9190", + "Name": null + }, + "c4504696-bf38-4e1d-8052-7a36144a107b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "c4504696-bf38-4e1d-8052-7a36144a107b", + "Name": "W18x40", + "EdgeId": 1105 + }, + "c0975bdd-0fa5-4f9a-9d01-a639c21d71e1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 23.0, + "Y": -59.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c0975bdd-0fa5-4f9a-9d01-a639c21d71e1", + "Name": null + }, + "f04bd75e-2a0e-4d3d-ae8e-4916576b0c32": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "f04bd75e-2a0e-4d3d-ae8e-4916576b0c32", + "Name": "W18x40", + "EdgeId": 1106, + "ExternalEdgeId": 1106 + }, + "68432f5b-933a-417f-bc7d-8ede14e900b3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 29.5, + "Y": -59.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "68432f5b-933a-417f-bc7d-8ede14e900b3", + "Name": null + }, + "1ed05372-58db-4b76-8e17-b198ba1a47f8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "1ed05372-58db-4b76-8e17-b198ba1a47f8", + "Name": "W18x40", + "EdgeId": 1107, + "ExternalEdgeId": 1107 + }, + "734caf1a-caed-49be-a580-985d2b31de86": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 29.5, + "Y": -59.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "734caf1a-caed-49be-a580-985d2b31de86", + "Name": null + }, + "28ee7ea3-4d7b-4732-808c-aee4d80f4d29": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "28ee7ea3-4d7b-4732-808c-aee4d80f4d29", + "Name": "W18x40", + "EdgeId": 1115 + }, + "890ca6ff-89d9-46e3-b80e-135f22f863de": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -59.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "890ca6ff-89d9-46e3-b80e-135f22f863de", + "Name": null + }, + "2617c055-0f7c-496f-93b0-c56282d8dc89": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "2617c055-0f7c-496f-93b0-c56282d8dc89", + "Name": "W18x40", + "EdgeId": 1116, + "ExternalEdgeId": 1116 + }, + "0d7a00d2-fc67-4b0c-a444-f1cb107c93d1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -59.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0d7a00d2-fc67-4b0c-a444-f1cb107c93d1", + "Name": null + }, + "a04426ef-3811-4523-bb52-4fdc05146523": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "a04426ef-3811-4523-bb52-4fdc05146523", + "Name": "W18x40", + "EdgeId": 1121 + }, + "4730ad2e-5e56-45a8-b370-3409a00c60e2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -59.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4730ad2e-5e56-45a8-b370-3409a00c60e2", + "Name": null + }, + "9ed94cac-a200-4fe9-a48d-8cda6f79d8b9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "9ed94cac-a200-4fe9-a48d-8cda6f79d8b9", + "Name": "W18x40", + "EdgeId": 1122, + "ExternalEdgeId": 1122 + }, + "33802575-64c8-4662-b003-e57a72c61d83": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -59.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "33802575-64c8-4662-b003-e57a72c61d83", + "Name": null + }, + "2ab1d6ef-a307-49aa-bb63-8ee84d8d0a20": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "2ab1d6ef-a307-49aa-bb63-8ee84d8d0a20", + "Name": "W18x40", + "EdgeId": 1127 + }, + "357366fb-303b-4a27-954d-4b57371fa7ab": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -59.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "357366fb-303b-4a27-954d-4b57371fa7ab", + "Name": null + }, + "d32b8c0d-780f-47bf-a48b-175320edbcd4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d32b8c0d-780f-47bf-a48b-175320edbcd4", + "Name": "W18x40", + "EdgeId": 1128, + "ExternalEdgeId": 1128 + }, + "9ab272b5-8bd6-4999-a586-9cf9ca59b05b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -59.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9ab272b5-8bd6-4999-a586-9cf9ca59b05b", + "Name": null + }, + "292516de-95d8-44b1-a523-02ae4900c662": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "292516de-95d8-44b1-a523-02ae4900c662", + "Name": "W18x40", + "EdgeId": 1133, + "ExternalEdgeId": 1133 + }, + "653c69cd-6178-457f-b9ef-8dae21dfeacd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -59.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "653c69cd-6178-457f-b9ef-8dae21dfeacd", + "Name": null + }, + "20991959-31f3-4543-a74e-6b2c1faae1b5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "20991959-31f3-4543-a74e-6b2c1faae1b5", + "Name": "W18x40", + "EdgeId": 1134, + "ExternalEdgeId": 1134 + }, + "73b4469f-b20c-4663-9314-bfc38a1b686d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -59.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "73b4469f-b20c-4663-9314-bfc38a1b686d", + "Name": null + }, + "2c7eb993-4cd4-4f20-8317-9f163c87afc5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1f248147-be87-4d6a-922b-e7bf05d5f27e", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.7324, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "2c7eb993-4cd4-4f20-8317-9f163c87afc5", + "Name": "W18x40", + "EdgeId": 743, + "ExternalEdgeId": 743 + }, + "8663cb0c-7427-4bd0-8cbc-cad30654bcc2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.7324, + "Y": -0.5, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -0.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8663cb0c-7427-4bd0-8cbc-cad30654bcc2", + "Name": null + }, + "5756762a-2263-45b8-be4e-a2ad7639e4e4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5756762a-2263-45b8-be4e-a2ad7639e4e4", + "Name": "W18x40", + "EdgeId": 744, + "ExternalEdgeId": 744 + }, + "73a74312-97bc-4cef-82de-e4c2a579f925": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -0.5, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -5.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "73a74312-97bc-4cef-82de-e4c2a579f925", + "Name": null + }, + "b5b0811b-cb0b-4d76-8d5c-e01131948b0a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c9699dd2-d040-4a2c-ad98-36443b0d037a", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "b5b0811b-cb0b-4d76-8d5c-e01131948b0a", + "Name": "W18x40", + "EdgeId": 745, + "ExternalEdgeId": 745 + }, + "7b6151cf-07db-4a66-95c5-ab33ba68b16e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 20.0 + }, + "End": { + "X": 12.7324, + "Y": -5.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7b6151cf-07db-4a66-95c5-ab33ba68b16e", + "Name": null + }, + "0321b70d-cd9e-4fa7-9ac2-38ac0f08bab7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "442ea777-71e8-42e2-a88c-d741cce24ce5", + "Transform": { + "Matrix": { + "Components": [ + 0.5547001962252291, + 0.8320502943378437, + 0.0, + 9.7324, + -0.8320502943378437, + 0.5547001962252291, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "0321b70d-cd9e-4fa7-9ac2-38ac0f08bab7", + "Name": "W18x40", + "EdgeId": 746, + "ExternalEdgeId": 746 + }, + "d3d26f53-ed8c-4b28-9a8f-275ea2d5666f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.7324, + "Y": -0.5, + "Z": 20.0 + }, + "End": { + "X": 12.7324, + "Y": -5.000000000000001, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d3d26f53-ed8c-4b28-9a8f-275ea2d5666f", + "Name": null + }, + "b043f409-ee4d-4888-a089-0bdd02a18c85": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "b043f409-ee4d-4888-a089-0bdd02a18c85", + "Name": "W18x40", + "EdgeId": 756, + "ExternalEdgeId": 756 + }, + "38e3f2b7-efce-40ca-b287-764275ff732b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -0.5, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -0.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "38e3f2b7-efce-40ca-b287-764275ff732b", + "Name": null + }, + "5132d139-53df-47fc-b4e0-01402b2ff457": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5132d139-53df-47fc-b4e0-01402b2ff457", + "Name": "W18x40", + "EdgeId": 757, + "ExternalEdgeId": 757 + }, + "cf827c03-1d40-48f8-81ed-cbd2a689b310": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -0.5, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -5.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cf827c03-1d40-48f8-81ed-cbd2a689b310", + "Name": null + }, + "bce2b108-d4f7-480a-8ec5-f41e537e159c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "bce2b108-d4f7-480a-8ec5-f41e537e159c", + "Name": "W18x40", + "EdgeId": 758, + "ExternalEdgeId": 758 + }, + "6ff41ea2-caa9-4a70-a098-1801a987e5f0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -5.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6ff41ea2-caa9-4a70-a098-1801a987e5f0", + "Name": null + }, + "38b34cb0-298c-4166-9d59-ded344b19df4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "38b34cb0-298c-4166-9d59-ded344b19df4", + "Name": "W18x40", + "EdgeId": 766, + "ExternalEdgeId": 766 + }, + "c0ef46fb-af19-43c0-aedb-14bcf36be031": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -0.5, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -0.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c0ef46fb-af19-43c0-aedb-14bcf36be031", + "Name": null + }, + "d7c4da69-c1c2-4fbc-bd21-d4809a0ef5fe": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "d7c4da69-c1c2-4fbc-bd21-d4809a0ef5fe", + "Name": "W18x40", + "EdgeId": 767, + "ExternalEdgeId": 767 + }, + "3ed175cb-b5d1-49db-94a7-b77b70556d25": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -0.5, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -5.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3ed175cb-b5d1-49db-94a7-b77b70556d25", + "Name": null + }, + "cb4583df-2059-49fb-a900-929869c892ee": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "cb4583df-2059-49fb-a900-929869c892ee", + "Name": "W18x40", + "EdgeId": 768, + "ExternalEdgeId": 768 + }, + "828084ab-62c7-4ab4-b643-dbe6d0c1e89f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -5.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -5.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "828084ab-62c7-4ab4-b643-dbe6d0c1e89f", + "Name": null + }, + "71ae6296-8777-40f8-82d8-8ee0bd2b089f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e5972626-f896-4b80-b62f-fa93a8846507", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -9.9014, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "71ae6296-8777-40f8-82d8-8ee0bd2b089f", + "Name": "W18x40", + "EdgeId": 777, + "ExternalEdgeId": 777 + }, + "7788f3e8-a530-4b70-b586-a3bf3b4aad13": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -9.9014, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7788f3e8-a530-4b70-b586-a3bf3b4aad13", + "Name": null + }, + "ee9be891-f9c8-4f9a-978a-97dc932ff571": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "49319ac3-7aa7-4cea-aa5e-8a40ef05e1ba", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ee9be891-f9c8-4f9a-978a-97dc932ff571", + "Name": "W18x40", + "EdgeId": 778, + "ExternalEdgeId": 778 + }, + "950cb672-8034-4cba-b1bc-2d775e62da27": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 16.06574, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "950cb672-8034-4cba-b1bc-2d775e62da27", + "Name": null + }, + "2473e0ee-e5ae-488c-ba80-d6a29fd67dcb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4dc79d1f-76cc-4eac-ba1d-90c0929442e9", + "Transform": { + "Matrix": { + "Components": [ + 0.5547391419896724, + 0.8320243291782772, + 0.0, + 16.0, + -0.8320243291782772, + 0.5547391419896724, + 0.0, + -9.9014, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "2473e0ee-e5ae-488c-ba80-d6a29fd67dcb", + "Name": "W18x40", + "EdgeId": 779, + "ExternalEdgeId": 779 + }, + "9c19123b-a9b1-485d-9566-dbdbd9216efb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -9.9014, + "Z": 20.0 + }, + "End": { + "X": 16.06574, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9c19123b-a9b1-485d-9566-dbdbd9216efb", + "Name": null + }, + "bb40d15e-e079-4dc2-93de-e18ceceaecad": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39b28bf6-91db-4c72-b448-44bed8dc6bc0", + "Transform": { + "Matrix": { + "Components": [ + 0.554700196225229, + 0.8320502943378437, + 0.0, + 12.7324, + -0.8320502943378437, + 0.554700196225229, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "bb40d15e-e079-4dc2-93de-e18ceceaecad", + "Name": "W18x40", + "EdgeId": 787, + "ExternalEdgeId": 787 + }, + "34a8d463-fc09-4115-a43c-0ee0b975aef4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.7324, + "Y": -5.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -9.9014, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "34a8d463-fc09-4115-a43c-0ee0b975aef4", + "Name": null + }, + "65981e7e-d5a1-4313-8676-b35279a176bc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "65981e7e-d5a1-4313-8676-b35279a176bc", + "Name": "W18x40", + "EdgeId": 788, + "ExternalEdgeId": 788 + }, + "ac7e3056-82e6-4587-8fe7-735f65926c34": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ac7e3056-82e6-4587-8fe7-735f65926c34", + "Name": null + }, + "41822c49-718f-43a8-a3ea-d357d91566aa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "41822c49-718f-43a8-a3ea-d357d91566aa", + "Name": "W18x40", + "EdgeId": 789, + "ExternalEdgeId": 789 + }, + "243f6eeb-15f9-43e6-bd7a-6dfbfccde7d4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "243f6eeb-15f9-43e6-bd7a-6dfbfccde7d4", + "Name": null + }, + "e218b82a-f3fc-4467-b5ef-38a4da62bca2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "e218b82a-f3fc-4467-b5ef-38a4da62bca2", + "Name": "W18x40", + "EdgeId": 794, + "ExternalEdgeId": 794 + }, + "6cbf7deb-dae4-41d0-8e8d-82c3260a2430": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -5.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6cbf7deb-dae4-41d0-8e8d-82c3260a2430", + "Name": null + }, + "da2dc2c2-0df2-42f2-b2d7-b929ad3d3d53": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "da2dc2c2-0df2-42f2-b2d7-b929ad3d3d53", + "Name": "W18x40", + "EdgeId": 795, + "ExternalEdgeId": 795 + }, + "52aea727-371e-4797-b661-b7889feef359": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "52aea727-371e-4797-b661-b7889feef359", + "Name": null + }, + "e20f78b6-c5f5-46c6-b47d-ebd49576e288": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "e20f78b6-c5f5-46c6-b47d-ebd49576e288", + "Name": "W18x40", + "EdgeId": 800, + "ExternalEdgeId": 800 + }, + "44bff635-6507-4c63-afbb-56351081e556": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -5.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "44bff635-6507-4c63-afbb-56351081e556", + "Name": null + }, + "3e33cffe-9621-4dd3-a2fa-97a6ee0c80ef": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "3e33cffe-9621-4dd3-a2fa-97a6ee0c80ef", + "Name": "W18x40", + "EdgeId": 801, + "ExternalEdgeId": 801 + }, + "7ae1d603-4118-485e-969b-f0c500108f0b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7ae1d603-4118-485e-969b-f0c500108f0b", + "Name": null + }, + "f665b099-8d3f-4f2f-8efb-78684869ee9a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "f665b099-8d3f-4f2f-8efb-78684869ee9a", + "Name": "W18x40", + "EdgeId": 808, + "ExternalEdgeId": 808 + }, + "65656ef1-fabc-42a7-950b-3cbb77315098": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "65656ef1-fabc-42a7-950b-3cbb77315098", + "Name": null + }, + "62b1a0fd-51db-4848-bc63-a54b510683d3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "0b85760d-9483-48e4-99ef-f0158063192f", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "62b1a0fd-51db-4848-bc63-a54b510683d3", + "Name": "W18x40", + "EdgeId": 809, + "ExternalEdgeId": 809 + }, + "b78ebffa-56bc-4113-b30a-f8bf8ee25d50": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 19.39906, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b78ebffa-56bc-4113-b30a-f8bf8ee25d50", + "Name": null + }, + "ff320985-20bc-4322-838c-a8268cbb31e7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2d8372e3-18d6-43f5-b8a6-ca8af44199e8", + "Transform": { + "Matrix": { + "Components": [ + 0.5546986601295418, + 0.8320513183995871, + 0.0, + 16.06574, + -0.8320513183995871, + 0.5546986601295418, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ff320985-20bc-4322-838c-a8268cbb31e7", + "Name": "W18x40", + "EdgeId": 810, + "ExternalEdgeId": 810 + }, + "d3883d30-ddc0-413b-be63-9138d286a076": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.06574, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 19.39906, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d3883d30-ddc0-413b-be63-9138d286a076", + "Name": null + }, + "4a518308-397c-4ffd-85d2-a0cf7fc869a8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "4a518308-397c-4ffd-85d2-a0cf7fc869a8", + "Name": "W18x40", + "EdgeId": 816, + "ExternalEdgeId": 816 + }, + "bfbd8a52-9670-4628-8ffd-15f8473f936f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bfbd8a52-9670-4628-8ffd-15f8473f936f", + "Name": null + }, + "4ccc9ba0-0d14-4a09-824f-17be83ece5fb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "4ccc9ba0-0d14-4a09-824f-17be83ece5fb", + "Name": "W18x40", + "EdgeId": 817, + "ExternalEdgeId": 817 + }, + "6e347141-937a-4777-9759-33424e9ff420": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6e347141-937a-4777-9759-33424e9ff420", + "Name": null + }, + "95814d6a-59f3-4dc7-b58f-11046e48fd77": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "95814d6a-59f3-4dc7-b58f-11046e48fd77", + "Name": "W18x40", + "EdgeId": 822, + "ExternalEdgeId": 822 + }, + "89d6c147-b368-46ab-a23c-8ce956c9108d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "89d6c147-b368-46ab-a23c-8ce956c9108d", + "Name": null + }, + "5661d36f-32ca-4590-8f6e-8a7c093db3d7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5661d36f-32ca-4590-8f6e-8a7c093db3d7", + "Name": "W18x40", + "EdgeId": 823, + "ExternalEdgeId": 823 + }, + "6ff4922b-1361-470e-bdde-889202ccfad9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6ff4922b-1361-470e-bdde-889202ccfad9", + "Name": null + }, + "ecf1ed6e-0aae-4cdd-9970-e6844cd79632": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ecf1ed6e-0aae-4cdd-9970-e6844cd79632", + "Name": "W18x40", + "EdgeId": 828, + "ExternalEdgeId": 828 + }, + "f6d9d95e-ed0a-46d3-aa9d-46fd12655481": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f6d9d95e-ed0a-46d3-aa9d-46fd12655481", + "Name": null + }, + "3adb9c36-6df2-46b9-beeb-cc9f9476a6a1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "3adb9c36-6df2-46b9-beeb-cc9f9476a6a1", + "Name": "W18x40", + "EdgeId": 829, + "ExternalEdgeId": 829 + }, + "721b5f74-a61a-479d-a3c4-80357ca13269": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "721b5f74-a61a-479d-a3c4-80357ca13269", + "Name": null + }, + "bedc85d6-d54d-4c4a-9eda-77a124c04fdf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "bedc85d6-d54d-4c4a-9eda-77a124c04fdf", + "Name": "W18x40", + "EdgeId": 836, + "ExternalEdgeId": 836 + }, + "6408316b-1e56-41e8-9d1d-e4dfb779b7bf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6408316b-1e56-41e8-9d1d-e4dfb779b7bf", + "Name": null + }, + "a342edcf-f7fa-4ec7-9dc5-6e3179058dc9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7cd6c7d4-992c-4217-9c1f-ac7c9170b25c", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "a342edcf-f7fa-4ec7-9dc5-6e3179058dc9", + "Name": "W18x40", + "EdgeId": 837, + "ExternalEdgeId": 837 + }, + "a65c9b1a-22e6-496c-808f-637dc2dc29f0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 22.7324, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a65c9b1a-22e6-496c-808f-637dc2dc29f0", + "Name": null + }, + "3b72397b-b999-4167-b563-85082306e283": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "f1f4efee-0d74-4a09-8341-e6127bd83748", + "Transform": { + "Matrix": { + "Components": [ + 0.5547009642709457, + 0.832049782306854, + 0.0, + 19.39906, + -0.832049782306854, + 0.5547009642709457, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "3b72397b-b999-4167-b563-85082306e283", + "Name": "W18x40", + "EdgeId": 838, + "ExternalEdgeId": 838 + }, + "77d9f8aa-d428-4c21-93df-66a7c3cb4e7b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.39906, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 22.7324, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "77d9f8aa-d428-4c21-93df-66a7c3cb4e7b", + "Name": null + }, + "d0e7a827-0007-49c1-b7bd-19876abd9664": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "d0e7a827-0007-49c1-b7bd-19876abd9664", + "Name": "W18x40", + "EdgeId": 844, + "ExternalEdgeId": 844 + }, + "a7c2923a-7f60-44ff-9140-ad25c85b6c02": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a7c2923a-7f60-44ff-9140-ad25c85b6c02", + "Name": null + }, + "0ce428b1-7ae5-48df-a70a-c208c6144f46": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "0ce428b1-7ae5-48df-a70a-c208c6144f46", + "Name": "W18x40", + "EdgeId": 845, + "ExternalEdgeId": 845 + }, + "60d0cc29-63f4-4bbb-8120-75671843a2f9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "60d0cc29-63f4-4bbb-8120-75671843a2f9", + "Name": null + }, + "c3d4d65b-35a7-4b46-a6c6-ade3ce953ad6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "c3d4d65b-35a7-4b46-a6c6-ade3ce953ad6", + "Name": "W18x40", + "EdgeId": 850, + "ExternalEdgeId": 850 + }, + "f52dc20f-c60e-49c6-bea8-f80bd1f74321": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f52dc20f-c60e-49c6-bea8-f80bd1f74321", + "Name": null + }, + "94246612-0f92-4187-8cd0-d6cd6415d402": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "94246612-0f92-4187-8cd0-d6cd6415d402", + "Name": "W18x40", + "EdgeId": 851, + "ExternalEdgeId": 851 + }, + "85975820-fc2b-4c25-ad99-5b4d3d8f1be5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "85975820-fc2b-4c25-ad99-5b4d3d8f1be5", + "Name": null + }, + "8c8b161d-d579-44e1-a9a1-3659d664ac19": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "8c8b161d-d579-44e1-a9a1-3659d664ac19", + "Name": "W18x40", + "EdgeId": 856, + "ExternalEdgeId": 856 + }, + "459d04bf-a8b5-4434-ace4-f0071301e4f5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "459d04bf-a8b5-4434-ace4-f0071301e4f5", + "Name": null + }, + "0430ef17-e21e-44a8-88d3-9a4d4cafb4d8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "0430ef17-e21e-44a8-88d3-9a4d4cafb4d8", + "Name": "W18x40", + "EdgeId": 857, + "ExternalEdgeId": 857 + }, + "b5ad1334-5949-49d1-a1f9-585b5099a88d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b5ad1334-5949-49d1-a1f9-585b5099a88d", + "Name": null + }, + "30ffb01c-8106-450b-a0f5-217ee9a49c3c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d4da724b-0d2f-4bd3-acf2-5d3697adf278", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -20.4014, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "30ffb01c-8106-450b-a0f5-217ee9a49c3c", + "Name": "W18x40", + "EdgeId": 865, + "ExternalEdgeId": 865 + }, + "444bcd1b-af72-442c-91fe-3fa51a086344": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -20.4014, + "Z": 20.0 + }, + "End": { + "X": 23.0, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "444bcd1b-af72-442c-91fe-3fa51a086344", + "Name": null + }, + "34ac1015-8fa2-458c-88b4-9c3a44a410ad": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b110d957-b9da-4137-9c21-3ec50b79b33e", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "34ac1015-8fa2-458c-88b4-9c3a44a410ad", + "Name": "W18x40", + "EdgeId": 866, + "ExternalEdgeId": 866 + }, + "63be612e-2c6c-45e3-a336-67f869575bdf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 26.06574, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "63be612e-2c6c-45e3-a336-67f869575bdf", + "Name": null + }, + "a17f5d18-cd51-4d21-8264-1bbde173aade": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e0c50391-a50c-417e-a648-1d8139e40aa4", + "Transform": { + "Matrix": { + "Components": [ + 0.5547010313116194, + 0.8320497376129783, + 0.0, + 23.0, + -0.8320497376129783, + 0.5547010313116194, + 0.0, + -20.4014, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "a17f5d18-cd51-4d21-8264-1bbde173aade", + "Name": "W18x40", + "EdgeId": 867, + "ExternalEdgeId": 867 + }, + "e9284f9c-d88c-4bb6-8bdc-4ed852eb477a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -20.4014, + "Z": 20.0 + }, + "End": { + "X": 26.06574, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e9284f9c-d88c-4bb6-8bdc-4ed852eb477a", + "Name": null + }, + "693cdb0c-e4cd-4bb6-baf2-f3e754bcd5b0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3bf2c337-826f-4c12-b4d9-a345602f7c71", + "Transform": { + "Matrix": { + "Components": [ + 0.5547001962252325, + 0.8320502943378414, + 0.0, + 22.7324, + -0.8320502943378414, + 0.5547001962252325, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "693cdb0c-e4cd-4bb6-baf2-f3e754bcd5b0", + "Name": "W18x40", + "EdgeId": 875, + "ExternalEdgeId": 875 + }, + "961c967d-6fe0-42eb-a8a0-12a8e4b83c17": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.7324, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 23.0, + "Y": -20.4014, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "961c967d-6fe0-42eb-a8a0-12a8e4b83c17", + "Name": null + }, + "5ccb4c9e-2a53-4d93-a600-e6bc4cbc0317": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5ccb4c9e-2a53-4d93-a600-e6bc4cbc0317", + "Name": "W18x40", + "EdgeId": 876, + "ExternalEdgeId": 876 + }, + "a2a24add-5406-4e8c-9719-b0c2b6fc564d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a2a24add-5406-4e8c-9719-b0c2b6fc564d", + "Name": null + }, + "66b9b86b-606c-48cb-aa7d-e3d991825009": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "66b9b86b-606c-48cb-aa7d-e3d991825009", + "Name": "W18x40", + "EdgeId": 877, + "ExternalEdgeId": 877 + }, + "10904fb9-2f15-44f2-a0bf-e0414d04cdb4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "10904fb9-2f15-44f2-a0bf-e0414d04cdb4", + "Name": null + }, + "36be7197-ee41-4c8f-8a36-421985abc6dd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "36be7197-ee41-4c8f-8a36-421985abc6dd", + "Name": "W18x40", + "EdgeId": 882, + "ExternalEdgeId": 882 + }, + "e2806254-740d-4b80-9b03-2f18691629d7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e2806254-740d-4b80-9b03-2f18691629d7", + "Name": null + }, + "28f31813-d4bf-4f0e-b249-1e2a82cf87fd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "28f31813-d4bf-4f0e-b249-1e2a82cf87fd", + "Name": "W18x40", + "EdgeId": 883, + "ExternalEdgeId": 883 + }, + "b9aa9f70-f29e-496f-8fde-c5c3771b5a56": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b9aa9f70-f29e-496f-8fde-c5c3771b5a56", + "Name": null + }, + "623831a9-1c60-4d67-a71c-2e3d6f4e502c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "623831a9-1c60-4d67-a71c-2e3d6f4e502c", + "Name": "W18x40", + "EdgeId": 888, + "ExternalEdgeId": 888 + }, + "05a16553-518c-45dd-a305-c7f6b9c04bb2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "05a16553-518c-45dd-a305-c7f6b9c04bb2", + "Name": null + }, + "92a9090a-4ba7-47c4-aff6-2417b3ba43a6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "92a9090a-4ba7-47c4-aff6-2417b3ba43a6", + "Name": "W18x40", + "EdgeId": 889, + "ExternalEdgeId": 889 + }, + "62649b46-d79e-4a58-9d57-fa27f1a8214e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "62649b46-d79e-4a58-9d57-fa27f1a8214e", + "Name": null + }, + "92f8f5e9-f770-4ec5-851e-d485a3f0f77f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "92f8f5e9-f770-4ec5-851e-d485a3f0f77f", + "Name": "W18x40", + "EdgeId": 894, + "ExternalEdgeId": 894 + }, + "f271ffb4-48d9-4f9d-81ad-f02950f9dd13": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f271ffb4-48d9-4f9d-81ad-f02950f9dd13", + "Name": null + }, + "b7cab596-9e32-4caf-a586-96421f96a748": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "b7cab596-9e32-4caf-a586-96421f96a748", + "Name": "W18x40", + "EdgeId": 895, + "ExternalEdgeId": 895 + }, + "70c077ab-9d1d-40e1-8d5e-e06581dc9cbd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "70c077ab-9d1d-40e1-8d5e-e06581dc9cbd", + "Name": null + }, + "7566054d-9770-4a02-a74b-568fd5c011ab": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "7566054d-9770-4a02-a74b-568fd5c011ab", + "Name": "W18x40", + "EdgeId": 902, + "ExternalEdgeId": 902 + }, + "6d949604-4db6-48a8-a715-238cc841e241": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 23.0, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6d949604-4db6-48a8-a715-238cc841e241", + "Name": null + }, + "fcb071dd-e00b-4d80-8f28-d8b678c4e22c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "9b7bdf59-55a7-4daf-9c50-86da88398d8a", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "fcb071dd-e00b-4d80-8f28-d8b678c4e22c", + "Name": "W18x40", + "EdgeId": 903, + "ExternalEdgeId": 903 + }, + "b4131bed-9735-4b2a-93a4-db8400dc7cf1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 29.39906, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b4131bed-9735-4b2a-93a4-db8400dc7cf1", + "Name": null + }, + "32993163-28bf-446d-bc41-e38dc63dcf63": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2d8372e3-18d6-43f5-b8a6-ca8af44199e8", + "Transform": { + "Matrix": { + "Components": [ + 0.5546986601295418, + 0.8320513183995871, + 0.0, + 26.06574, + -0.8320513183995871, + 0.5546986601295418, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "32993163-28bf-446d-bc41-e38dc63dcf63", + "Name": "W18x40", + "EdgeId": 904, + "ExternalEdgeId": 904 + }, + "cebc0a4c-75a5-4f98-bc26-627264d2d24c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.06574, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 29.39906, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cebc0a4c-75a5-4f98-bc26-627264d2d24c", + "Name": null + }, + "714355d3-4abe-4fbd-9d7c-ca868550ca9d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "714355d3-4abe-4fbd-9d7c-ca868550ca9d", + "Name": "W18x40", + "EdgeId": 910, + "ExternalEdgeId": 910 + }, + "8837d5be-0438-4d00-a44f-d56165d5f86b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8837d5be-0438-4d00-a44f-d56165d5f86b", + "Name": null + }, + "0122a9d8-8a9c-44f4-9ed2-973ff1371324": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "0122a9d8-8a9c-44f4-9ed2-973ff1371324", + "Name": "W18x40", + "EdgeId": 911, + "ExternalEdgeId": 911 + }, + "368d544b-1bc0-4772-afaa-4fa96f0bf5d6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "368d544b-1bc0-4772-afaa-4fa96f0bf5d6", + "Name": null + }, + "12b5ec13-41b5-4e8a-bd0c-f3685a74b648": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "12b5ec13-41b5-4e8a-bd0c-f3685a74b648", + "Name": "W18x40", + "EdgeId": 916, + "ExternalEdgeId": 916 + }, + "be1eea6c-5381-4a49-9607-4e47e5a12b78": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "be1eea6c-5381-4a49-9607-4e47e5a12b78", + "Name": null + }, + "ffd2e42e-eba8-4dae-9be3-4a08fd21717b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ffd2e42e-eba8-4dae-9be3-4a08fd21717b", + "Name": "W18x40", + "EdgeId": 917, + "ExternalEdgeId": 917 + }, + "d31d51e9-ce64-4226-a448-637d7c7aee90": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d31d51e9-ce64-4226-a448-637d7c7aee90", + "Name": null + }, + "e70f7a79-8204-45b6-b93e-c463fef45005": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "e70f7a79-8204-45b6-b93e-c463fef45005", + "Name": "W18x40", + "EdgeId": 922, + "ExternalEdgeId": 922 + }, + "79ab0755-68bb-47da-8548-4b6c81777e0f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "79ab0755-68bb-47da-8548-4b6c81777e0f", + "Name": null + }, + "2674f30b-a4de-4f3d-820f-efd5a19ef366": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "2674f30b-a4de-4f3d-820f-efd5a19ef366", + "Name": "W18x40", + "EdgeId": 923, + "ExternalEdgeId": 923 + }, + "14762112-2644-420c-bac2-15118c85b1c5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "14762112-2644-420c-bac2-15118c85b1c5", + "Name": null + }, + "5f898749-d865-43f3-94e6-f4dfe98ecb80": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5f898749-d865-43f3-94e6-f4dfe98ecb80", + "Name": "W18x40", + "EdgeId": 928, + "ExternalEdgeId": 928 + }, + "ac5a5eac-2ebe-4ed7-acda-a5906bc8c520": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ac5a5eac-2ebe-4ed7-acda-a5906bc8c520", + "Name": null + }, + "8ba3fc5e-c4f7-401b-a83a-8b3fef431bfc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "8ba3fc5e-c4f7-401b-a83a-8b3fef431bfc", + "Name": "W18x40", + "EdgeId": 929, + "ExternalEdgeId": 929 + }, + "ef3034db-548f-410f-90cd-b9338048aede": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ef3034db-548f-410f-90cd-b9338048aede", + "Name": null + }, + "53296270-fce1-41bd-9d78-3f9dbb774191": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "34bbf385-46d3-47bf-83a0-3a400bd05173", + "Transform": { + "Matrix": { + "Components": [ + 0.5547255602613056, + 0.8320333844220319, + 0.0, + 29.39906, + -0.8320333844220319, + 0.5547255602613056, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "53296270-fce1-41bd-9d78-3f9dbb774191", + "Name": "W18x40", + "EdgeId": 938, + "ExternalEdgeId": 938 + }, + "9f54c068-1b29-4670-8d39-d3bdf2135f77": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.39906, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 29.5, + "Y": -30.1514, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9f54c068-1b29-4670-8d39-d3bdf2135f77", + "Name": null + }, + "721061e9-d727-4962-8bfd-c5927f6ffdf3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "721061e9-d727-4962-8bfd-c5927f6ffdf3", + "Name": "W18x40", + "EdgeId": 939, + "ExternalEdgeId": 939 + }, + "7c86758a-223d-4005-8e05-a70915727041": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 23.0, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7c86758a-223d-4005-8e05-a70915727041", + "Name": null + }, + "e24785cc-7120-4edb-8430-7a59883bfe30": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "e24785cc-7120-4edb-8430-7a59883bfe30", + "Name": "W18x40", + "EdgeId": 940, + "ExternalEdgeId": 940 + }, + "2d2b99f4-b82b-4524-831d-5c24d3a1cddc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 29.5, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2d2b99f4-b82b-4524-831d-5c24d3a1cddc", + "Name": null + }, + "fdfff1e4-2107-47fe-b6b4-00f44348b518": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2984e71a-f669-4201-8e3b-e26ab9529910", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -30.1514, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "fdfff1e4-2107-47fe-b6b4-00f44348b518", + "Name": "W18x40", + "EdgeId": 941, + "ExternalEdgeId": 941 + }, + "fbb81037-5754-4d19-8cc3-2b070c916858": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -30.1514, + "Z": 20.0 + }, + "End": { + "X": 29.5, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fbb81037-5754-4d19-8cc3-2b070c916858", + "Name": null + }, + "c59fd964-46f1-47dd-b042-1357c366eeca": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "c59fd964-46f1-47dd-b042-1357c366eeca", + "Name": "W18x40", + "EdgeId": 948, + "ExternalEdgeId": 948 + }, + "e5fa3f8a-f2d9-4409-af93-183d7fef4b13": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e5fa3f8a-f2d9-4409-af93-183d7fef4b13", + "Name": null + }, + "ac1a3fe0-2302-4749-906a-b07f147d4c48": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ac1a3fe0-2302-4749-906a-b07f147d4c48", + "Name": "W18x40", + "EdgeId": 949, + "ExternalEdgeId": 949 + }, + "ea6ffe64-4db0-4878-a2f1-5b42902c3472": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ea6ffe64-4db0-4878-a2f1-5b42902c3472", + "Name": null + }, + "587341cb-ec42-431e-a66a-ec5f6a9ba78a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "587341cb-ec42-431e-a66a-ec5f6a9ba78a", + "Name": "W18x40", + "EdgeId": 954, + "ExternalEdgeId": 954 + }, + "487b1b5b-84c1-4cf2-b777-6ce3c2595f1e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "487b1b5b-84c1-4cf2-b777-6ce3c2595f1e", + "Name": null + }, + "b62c2d59-e03e-49de-a2b9-f9a4ca6bc863": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "b62c2d59-e03e-49de-a2b9-f9a4ca6bc863", + "Name": "W18x40", + "EdgeId": 955, + "ExternalEdgeId": 955 + }, + "b64bff93-2329-42be-8d9c-c9a51a4d68be": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b64bff93-2329-42be-8d9c-c9a51a4d68be", + "Name": null + }, + "654c062f-a3d5-4646-940b-d16b68e75ac7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "654c062f-a3d5-4646-940b-d16b68e75ac7", + "Name": "W18x40", + "EdgeId": 960, + "ExternalEdgeId": 960 + }, + "c64b40cd-45ea-4411-878c-f96656f3d512": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c64b40cd-45ea-4411-878c-f96656f3d512", + "Name": null + }, + "ae39f61f-1e45-4f2b-bb05-dff285aa5231": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ae39f61f-1e45-4f2b-bb05-dff285aa5231", + "Name": "W18x40", + "EdgeId": 961, + "ExternalEdgeId": 961 + }, + "8adba4b3-ce06-47f6-92f0-74792f86a334": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8adba4b3-ce06-47f6-92f0-74792f86a334", + "Name": null + }, + "9a32a250-7090-4ece-8064-e5d566ef045a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "9a32a250-7090-4ece-8064-e5d566ef045a", + "Name": "W18x40", + "EdgeId": 966, + "ExternalEdgeId": 966 + }, + "6738b108-a109-45c5-b0cf-ea19feaeca6a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6738b108-a109-45c5-b0cf-ea19feaeca6a", + "Name": null + }, + "8a4d5797-fc3e-4e1c-a76d-f25a45aef2b9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "8a4d5797-fc3e-4e1c-a76d-f25a45aef2b9", + "Name": "W18x40", + "EdgeId": 967, + "ExternalEdgeId": 967 + }, + "5bb43beb-dedb-4d48-80b5-566a5035974c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5bb43beb-dedb-4d48-80b5-566a5035974c", + "Name": null + }, + "c1b9a3e3-87ea-4d35-9c10-dde0976a3a56": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "c1b9a3e3-87ea-4d35-9c10-dde0976a3a56", + "Name": "W18x40", + "EdgeId": 974, + "ExternalEdgeId": 974 + }, + "d1b989fa-cdc4-4f82-a779-dffd764cab77": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 23.0, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d1b989fa-cdc4-4f82-a779-dffd764cab77", + "Name": null + }, + "8422fc73-f654-40be-92ef-b47bfa083722": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "8422fc73-f654-40be-92ef-b47bfa083722", + "Name": "W18x40", + "EdgeId": 975, + "ExternalEdgeId": 975 + }, + "32847fe1-8fce-421e-978f-067f16b4cbe7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 29.5, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "32847fe1-8fce-421e-978f-067f16b4cbe7", + "Name": null + }, + "a3aed147-8a79-4e25-90da-ceed483bfb0a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "a3aed147-8a79-4e25-90da-ceed483bfb0a", + "Name": "W18x40", + "EdgeId": 976, + "ExternalEdgeId": 976 + }, + "62eba8bb-7ed6-40b9-b40a-3aede2fe15cd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 29.5, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "62eba8bb-7ed6-40b9-b40a-3aede2fe15cd", + "Name": null + }, + "1338175c-45d5-48f8-b3cd-5bfcce3a26be": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "1338175c-45d5-48f8-b3cd-5bfcce3a26be", + "Name": "W18x40", + "EdgeId": 982, + "ExternalEdgeId": 982 + }, + "83d5bbae-24a5-4ccb-bdf5-fefe56a4da96": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "83d5bbae-24a5-4ccb-bdf5-fefe56a4da96", + "Name": null + }, + "5ba70cc0-1749-498a-ba7c-a113c849c0ee": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5ba70cc0-1749-498a-ba7c-a113c849c0ee", + "Name": "W18x40", + "EdgeId": 983, + "ExternalEdgeId": 983 + }, + "fda51021-19ea-47c2-89d8-bebefae64ef7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fda51021-19ea-47c2-89d8-bebefae64ef7", + "Name": null + }, + "aee751e8-23b3-43b6-ad64-46e454aa4e01": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "aee751e8-23b3-43b6-ad64-46e454aa4e01", + "Name": "W18x40", + "EdgeId": 988, + "ExternalEdgeId": 988 + }, + "b3be5363-5298-4e00-9c9a-d29bd855b1ba": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b3be5363-5298-4e00-9c9a-d29bd855b1ba", + "Name": null + }, + "00cd6d38-81c0-4546-ae18-577def7829ac": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "00cd6d38-81c0-4546-ae18-577def7829ac", + "Name": "W18x40", + "EdgeId": 989, + "ExternalEdgeId": 989 + }, + "6f10f44f-4bea-4415-97bc-75f6a29ead0f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6f10f44f-4bea-4415-97bc-75f6a29ead0f", + "Name": null + }, + "9331dc8b-e289-49b1-a173-ddb610239644": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "9331dc8b-e289-49b1-a173-ddb610239644", + "Name": "W18x40", + "EdgeId": 994, + "ExternalEdgeId": 994 + }, + "5d25370a-d634-49b0-98e4-3c3a643493a3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5d25370a-d634-49b0-98e4-3c3a643493a3", + "Name": null + }, + "d3303415-fd73-4c95-ba14-0d4a738f3710": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "d3303415-fd73-4c95-ba14-0d4a738f3710", + "Name": "W18x40", + "EdgeId": 995, + "ExternalEdgeId": 995 + }, + "9ff47446-ad73-475c-bd69-29d9910f2eee": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9ff47446-ad73-475c-bd69-29d9910f2eee", + "Name": null + }, + "f7fd7ce1-e38d-4262-a535-65297ffec748": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "f7fd7ce1-e38d-4262-a535-65297ffec748", + "Name": "W18x40", + "EdgeId": 1000, + "ExternalEdgeId": 1000 + }, + "afba6cb7-2cb7-45cd-94c4-89cb9febc67f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "afba6cb7-2cb7-45cd-94c4-89cb9febc67f", + "Name": null + }, + "3400de3a-be17-43a5-b35e-2e24a05a60d6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "3400de3a-be17-43a5-b35e-2e24a05a60d6", + "Name": "W18x40", + "EdgeId": 1001, + "ExternalEdgeId": 1001 + }, + "528c9834-f0e7-4420-9a89-e3e25eeb63c5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "528c9834-f0e7-4420-9a89-e3e25eeb63c5", + "Name": null + }, + "ce9d7ceb-1e34-48d1-8dc3-e065820bf4ca": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ce9d7ceb-1e34-48d1-8dc3-e065820bf4ca", + "Name": "W18x40", + "EdgeId": 1008, + "ExternalEdgeId": 1008 + }, + "7f1188b8-b857-498c-ac4f-0c0b0e7dfa5c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 23.0, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7f1188b8-b857-498c-ac4f-0c0b0e7dfa5c", + "Name": null + }, + "0a728c89-ee3d-4e8c-a333-f7fcf52c83ef": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "0a728c89-ee3d-4e8c-a333-f7fcf52c83ef", + "Name": "W18x40", + "EdgeId": 1009, + "ExternalEdgeId": 1009 + }, + "e735e45f-1105-450c-8196-70eaf295de28": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 29.5, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e735e45f-1105-450c-8196-70eaf295de28", + "Name": null + }, + "01ad8d79-bdc1-4996-82c8-f12caffcca7c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "01ad8d79-bdc1-4996-82c8-f12caffcca7c", + "Name": "W18x40", + "EdgeId": 1010, + "ExternalEdgeId": 1010 + }, + "74dbfe53-ed7c-45d0-84b2-4f8102e7a988": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 29.5, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "74dbfe53-ed7c-45d0-84b2-4f8102e7a988", + "Name": null + }, + "d3b77ff3-da08-4bfc-8455-67982cb68b91": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "d3b77ff3-da08-4bfc-8455-67982cb68b91", + "Name": "W18x40", + "EdgeId": 1016, + "ExternalEdgeId": 1016 + }, + "4f840cd7-cf6f-416e-b568-1ec54c879391": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4f840cd7-cf6f-416e-b568-1ec54c879391", + "Name": null + }, + "4a67bc8d-d672-4e1d-b148-48c1161a338e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "4a67bc8d-d672-4e1d-b148-48c1161a338e", + "Name": "W18x40", + "EdgeId": 1017, + "ExternalEdgeId": 1017 + }, + "5a84afaa-2916-4f0e-b296-a7b8457373a4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5a84afaa-2916-4f0e-b296-a7b8457373a4", + "Name": null + }, + "6dbfb248-8bf5-4825-bf8e-dde9fe8087e7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "6dbfb248-8bf5-4825-bf8e-dde9fe8087e7", + "Name": "W18x40", + "EdgeId": 1022, + "ExternalEdgeId": 1022 + }, + "6d9bad59-e1f2-4cd0-a52b-3f4b6370bf6c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6d9bad59-e1f2-4cd0-a52b-3f4b6370bf6c", + "Name": null + }, + "430f0555-2259-4f0a-90bd-1955db210de8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "430f0555-2259-4f0a-90bd-1955db210de8", + "Name": "W18x40", + "EdgeId": 1023, + "ExternalEdgeId": 1023 + }, + "95048724-622a-431b-8caa-4a4c25b6fd77": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "95048724-622a-431b-8caa-4a4c25b6fd77", + "Name": null + }, + "5b17eeb9-8f36-448f-a70a-0ee3cec4e307": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5b17eeb9-8f36-448f-a70a-0ee3cec4e307", + "Name": "W18x40", + "EdgeId": 1028, + "ExternalEdgeId": 1028 + }, + "d65f691e-d173-44ed-a5bd-97dbc3742fbb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d65f691e-d173-44ed-a5bd-97dbc3742fbb", + "Name": null + }, + "1855a12a-4644-41c5-8643-b41a84160976": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "1855a12a-4644-41c5-8643-b41a84160976", + "Name": "W18x40", + "EdgeId": 1029, + "ExternalEdgeId": 1029 + }, + "0b1dcd83-8da1-403c-a45d-efffdf6ab4c6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0b1dcd83-8da1-403c-a45d-efffdf6ab4c6", + "Name": null + }, + "ca0c0fa4-ce88-43c4-ba38-94ba716a28f8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ca0c0fa4-ce88-43c4-ba38-94ba716a28f8", + "Name": "W18x40", + "EdgeId": 1034, + "ExternalEdgeId": 1034 + }, + "6a6f15af-2700-4a08-8ba2-0fea76108621": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6a6f15af-2700-4a08-8ba2-0fea76108621", + "Name": null + }, + "6eed850c-cf55-44c8-a524-2e118f502216": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "6eed850c-cf55-44c8-a524-2e118f502216", + "Name": "W18x40", + "EdgeId": 1035, + "ExternalEdgeId": 1035 + }, + "ebcd5df0-0959-49b8-a4de-0930b927c256": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ebcd5df0-0959-49b8-a4de-0930b927c256", + "Name": null + }, + "214e40dc-9bab-4536-812a-99914eefee2a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "214e40dc-9bab-4536-812a-99914eefee2a", + "Name": "W18x40", + "EdgeId": 1042, + "ExternalEdgeId": 1042 + }, + "5a554915-ef21-4142-ad3e-2b19ed3bbbc7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 23.0, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5a554915-ef21-4142-ad3e-2b19ed3bbbc7", + "Name": null + }, + "8b12b4c9-d97b-4aa8-94d3-4f9cb50ff424": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "8b12b4c9-d97b-4aa8-94d3-4f9cb50ff424", + "Name": "W18x40", + "EdgeId": 1043, + "ExternalEdgeId": 1043 + }, + "a8855d0e-8c83-4093-8b3a-45d565bf1d6c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 29.5, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a8855d0e-8c83-4093-8b3a-45d565bf1d6c", + "Name": null + }, + "1ecdee24-569f-4399-b36f-fdff365f0d55": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "1ecdee24-569f-4399-b36f-fdff365f0d55", + "Name": "W18x40", + "EdgeId": 1044, + "ExternalEdgeId": 1044 + }, + "80570f75-78b0-4df7-9905-00fc6a6b763f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 29.5, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "80570f75-78b0-4df7-9905-00fc6a6b763f", + "Name": null + }, + "23394662-b582-4370-86df-dd403bd134ba": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "23394662-b582-4370-86df-dd403bd134ba", + "Name": "W18x40", + "EdgeId": 1050, + "ExternalEdgeId": 1050 + }, + "18762e61-5387-4317-89c4-9be721f4510e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "18762e61-5387-4317-89c4-9be721f4510e", + "Name": null + }, + "14f2860a-81de-4a1c-9ec9-8035154a191c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "14f2860a-81de-4a1c-9ec9-8035154a191c", + "Name": "W18x40", + "EdgeId": 1051, + "ExternalEdgeId": 1051 + }, + "d74448c6-43ce-4b44-9bea-675ed2995fdf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d74448c6-43ce-4b44-9bea-675ed2995fdf", + "Name": null + }, + "aa1ccf4e-9039-4e6b-a62b-cba3f34f923e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "aa1ccf4e-9039-4e6b-a62b-cba3f34f923e", + "Name": "W18x40", + "EdgeId": 1056, + "ExternalEdgeId": 1056 + }, + "87d89d5e-8f0f-4736-a1e8-046736c22475": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "87d89d5e-8f0f-4736-a1e8-046736c22475", + "Name": null + }, + "1064435f-bc3f-4ab5-86ef-9c4e2ce0d8cc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "1064435f-bc3f-4ab5-86ef-9c4e2ce0d8cc", + "Name": "W18x40", + "EdgeId": 1057, + "ExternalEdgeId": 1057 + }, + "97533c8f-5966-47ba-a0be-c64dd35738b1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "97533c8f-5966-47ba-a0be-c64dd35738b1", + "Name": null + }, + "e4b7c94a-f81d-4917-a6e7-19154823c805": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "e4b7c94a-f81d-4917-a6e7-19154823c805", + "Name": "W18x40", + "EdgeId": 1062, + "ExternalEdgeId": 1062 + }, + "09c4971b-e5cb-4215-b128-45eda3433813": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "09c4971b-e5cb-4215-b128-45eda3433813", + "Name": null + }, + "beb1ef4e-cb97-4d05-b750-cae86722bfe5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "beb1ef4e-cb97-4d05-b750-cae86722bfe5", + "Name": "W18x40", + "EdgeId": 1063, + "ExternalEdgeId": 1063 + }, + "92acd662-e306-4d5b-bdf0-30e4ab652210": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "92acd662-e306-4d5b-bdf0-30e4ab652210", + "Name": null + }, + "1ec03e95-eb8c-4585-a2c5-02c45cd66b50": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "1ec03e95-eb8c-4585-a2c5-02c45cd66b50", + "Name": "W18x40", + "EdgeId": 1068, + "ExternalEdgeId": 1068 + }, + "802825c3-ed25-45e0-a04e-0e4d827e0541": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "802825c3-ed25-45e0-a04e-0e4d827e0541", + "Name": null + }, + "024831f0-b74c-40b9-978a-699fe12c616e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "024831f0-b74c-40b9-978a-699fe12c616e", + "Name": "W18x40", + "EdgeId": 1069, + "ExternalEdgeId": 1069 + }, + "c5e4d3cf-ca69-4e87-b412-11a742db9a8e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c5e4d3cf-ca69-4e87-b412-11a742db9a8e", + "Name": null + }, + "187b44aa-cfc6-4aba-97d5-ec7dec3ae4ef": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "187b44aa-cfc6-4aba-97d5-ec7dec3ae4ef", + "Name": "W18x40", + "EdgeId": 1076, + "ExternalEdgeId": 1076 + }, + "611cbf05-1da3-485d-b6cb-654dc0c54555": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 23.0, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "611cbf05-1da3-485d-b6cb-654dc0c54555", + "Name": null + }, + "3d248dc6-5a3c-44c8-b2f4-d7de43d857b3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "3d248dc6-5a3c-44c8-b2f4-d7de43d857b3", + "Name": "W18x40", + "EdgeId": 1077, + "ExternalEdgeId": 1077 + }, + "b46db0c6-c3c2-4213-8a2a-16ad7eaad69d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 29.5, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b46db0c6-c3c2-4213-8a2a-16ad7eaad69d", + "Name": null + }, + "f34b4850-ffd7-47eb-be95-9792c25c0733": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "f34b4850-ffd7-47eb-be95-9792c25c0733", + "Name": "W18x40", + "EdgeId": 1078, + "ExternalEdgeId": 1078 + }, + "032ed244-4c60-402a-957b-1bd82fdec910": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 29.5, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "032ed244-4c60-402a-957b-1bd82fdec910", + "Name": null + }, + "5810d885-305f-42dd-8513-1d3c2a737daa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5810d885-305f-42dd-8513-1d3c2a737daa", + "Name": "W18x40", + "EdgeId": 1084, + "ExternalEdgeId": 1084 + }, + "c612bae5-4240-4b8c-9278-4ca6e904550f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c612bae5-4240-4b8c-9278-4ca6e904550f", + "Name": null + }, + "5118949c-7cc2-4973-a00f-a94da863bd41": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5118949c-7cc2-4973-a00f-a94da863bd41", + "Name": "W18x40", + "EdgeId": 1085, + "ExternalEdgeId": 1085 + }, + "aa787c70-926c-4233-b06c-6f04c3833999": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "aa787c70-926c-4233-b06c-6f04c3833999", + "Name": null + }, + "9028e06e-6a51-4b62-ac9e-13c69457c5de": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "9028e06e-6a51-4b62-ac9e-13c69457c5de", + "Name": "W18x40", + "EdgeId": 1090, + "ExternalEdgeId": 1090 + }, + "98865673-61d3-4a80-9466-6513a3ca88fa": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "98865673-61d3-4a80-9466-6513a3ca88fa", + "Name": null + }, + "f3b26343-1ddf-4fe1-bc4b-5fe71233bc63": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "f3b26343-1ddf-4fe1-bc4b-5fe71233bc63", + "Name": "W18x40", + "EdgeId": 1091, + "ExternalEdgeId": 1091 + }, + "744d0008-e4fa-4613-82c8-54d440a2b431": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "744d0008-e4fa-4613-82c8-54d440a2b431", + "Name": null + }, + "afed523c-ea8b-49b2-ac48-197fbcdf05cb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "afed523c-ea8b-49b2-ac48-197fbcdf05cb", + "Name": "W18x40", + "EdgeId": 1096, + "ExternalEdgeId": 1096 + }, + "f2d4b68b-7ff1-474e-b84e-376809fd6204": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f2d4b68b-7ff1-474e-b84e-376809fd6204", + "Name": null + }, + "b7d778c8-bf39-4e50-886d-d96f51c232c4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "b7d778c8-bf39-4e50-886d-d96f51c232c4", + "Name": "W18x40", + "EdgeId": 1097, + "ExternalEdgeId": 1097 + }, + "1c58ef99-e6ef-4d3d-9f75-7e8c3f76216b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1c58ef99-e6ef-4d3d-9f75-7e8c3f76216b", + "Name": null + }, + "523695b9-4db3-45d0-aa2b-9726ea2c687e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "523695b9-4db3-45d0-aa2b-9726ea2c687e", + "Name": "W18x40", + "EdgeId": 1102, + "ExternalEdgeId": 1102 + }, + "0e100606-1bfc-4a69-8a50-e464b1715fb4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0e100606-1bfc-4a69-8a50-e464b1715fb4", + "Name": null + }, + "f6e6d5fb-9011-4fce-856a-5531d17517e5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "f6e6d5fb-9011-4fce-856a-5531d17517e5", + "Name": "W18x40", + "EdgeId": 1103, + "ExternalEdgeId": 1103 + }, + "109f3366-a42b-4108-9e0e-4d092146ad2d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "109f3366-a42b-4108-9e0e-4d092146ad2d", + "Name": null + }, + "06a695f9-33db-4275-9ed6-6ab24f1b7d5d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "06a695f9-33db-4275-9ed6-6ab24f1b7d5d", + "Name": "W18x40", + "EdgeId": 1110, + "ExternalEdgeId": 1110 + }, + "1a598a52-c112-448d-ae36-6060d5c3b8db": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 23.0, + "Y": -59.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1a598a52-c112-448d-ae36-6060d5c3b8db", + "Name": null + }, + "ff8d58ae-1250-40ef-9efc-9d8d93fe210f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ff8d58ae-1250-40ef-9efc-9d8d93fe210f", + "Name": "W18x40", + "EdgeId": 1111, + "ExternalEdgeId": 1111 + }, + "b0cbb75b-ef17-431d-a588-38fcdd915df7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 29.5, + "Y": -59.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b0cbb75b-ef17-431d-a588-38fcdd915df7", + "Name": null + }, + "4b655ede-2c4f-4872-9484-c3fe68376324": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "4b655ede-2c4f-4872-9484-c3fe68376324", + "Name": "W18x40", + "EdgeId": 1112, + "ExternalEdgeId": 1112 + }, + "95e50dbf-f04b-4409-b717-700a2779b620": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 29.5, + "Y": -59.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "95e50dbf-f04b-4409-b717-700a2779b620", + "Name": null + }, + "6d67d031-8d8a-4597-9f85-bfc610289575": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "6d67d031-8d8a-4597-9f85-bfc610289575", + "Name": "W18x40", + "EdgeId": 1118, + "ExternalEdgeId": 1118 + }, + "5f46b3b3-4cf0-4256-b453-27b01cab9f67": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -59.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5f46b3b3-4cf0-4256-b453-27b01cab9f67", + "Name": null + }, + "68faa333-8a54-4377-baf5-cc022c013146": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "68faa333-8a54-4377-baf5-cc022c013146", + "Name": "W18x40", + "EdgeId": 1119, + "ExternalEdgeId": 1119 + }, + "53326853-5982-4ac1-bdc5-e5cef8c3a686": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -59.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "53326853-5982-4ac1-bdc5-e5cef8c3a686", + "Name": null + }, + "ddd81600-a8f0-4a72-a38c-fdb9b6fc4fd5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ddd81600-a8f0-4a72-a38c-fdb9b6fc4fd5", + "Name": "W18x40", + "EdgeId": 1124, + "ExternalEdgeId": 1124 + }, + "68e28ab2-00b2-4b63-a569-13f4a46a86a3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -59.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "68e28ab2-00b2-4b63-a569-13f4a46a86a3", + "Name": null + }, + "2a3074b5-e468-4f65-a93d-f7f9365d9cad": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "2a3074b5-e468-4f65-a93d-f7f9365d9cad", + "Name": "W18x40", + "EdgeId": 1125, + "ExternalEdgeId": 1125 + }, + "aad7fa2a-9081-4561-a963-6c7c20eb1fa4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -59.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "aad7fa2a-9081-4561-a963-6c7c20eb1fa4", + "Name": null + }, + "151fe9cb-c75b-4dab-aef0-d615cd614234": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "151fe9cb-c75b-4dab-aef0-d615cd614234", + "Name": "W18x40", + "EdgeId": 1130, + "ExternalEdgeId": 1130 + }, + "57a22834-7313-48d6-b5ca-2c0d99d484fa": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -59.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "57a22834-7313-48d6-b5ca-2c0d99d484fa", + "Name": null + }, + "ce5a878c-d590-4c85-a750-48063db872fe": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ce5a878c-d590-4c85-a750-48063db872fe", + "Name": "W18x40", + "EdgeId": 1131, + "ExternalEdgeId": 1131 + }, + "90a9a41e-5559-4818-b679-12b0944a5b2e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -59.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "90a9a41e-5559-4818-b679-12b0944a5b2e", + "Name": null + }, + "c1d16bc0-9bbe-4518-8c13-7c7a16d175c8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "c1d16bc0-9bbe-4518-8c13-7c7a16d175c8", + "Name": "W18x40", + "EdgeId": 1136, + "ExternalEdgeId": 1136 + }, + "1c60aea2-e24f-4661-b48e-f393be79fbd3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -59.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1c60aea2-e24f-4661-b48e-f393be79fbd3", + "Name": null + }, + "757ae4ce-eab0-4f33-90ec-f6bc52e2cfce": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "757ae4ce-eab0-4f33-90ec-f6bc52e2cfce", + "Name": "W18x40", + "EdgeId": 1137, + "ExternalEdgeId": 1137 + }, + "2faa0294-dc44-4d7f-8825-7bb4a04bcdeb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -59.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2faa0294-dc44-4d7f-8825-7bb4a04bcdeb", + "Name": null + }, + "ba999146-e65c-442e-91e9-eb65608079b8": { + "discriminator": "Elements.Geometry.Profiles.WideFlangeProfile", + "d": 0.34797999999999996, + "tw": 0.022098, + "bf": 0.3175, + "tf": 0.035559999999999994, + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.15875, + "Y": -0.1254, + "Z": 0.0 + }, + { + "X": -0.15875, + "Y": -0.16096, + "Z": 0.0 + }, + { + "X": -0.011049, + "Y": -0.16096, + "Z": 0.0 + }, + { + "X": -0.011049, + "Y": -0.43782, + "Z": 0.0 + }, + { + "X": -0.15875, + "Y": -0.43782, + "Z": 0.0 + }, + { + "X": -0.15875, + "Y": -0.47337999999999997, + "Z": 0.0 + }, + { + "X": 0.15875, + "Y": -0.47337999999999997, + "Z": 0.0 + }, + { + "X": 0.15875, + "Y": -0.43782, + "Z": 0.0 + }, + { + "X": 0.011049, + "Y": -0.43782, + "Z": 0.0 + }, + { + "X": 0.011049, + "Y": -0.16096, + "Z": 0.0 + }, + { + "X": 0.15875, + "Y": -0.16096, + "Z": 0.0 + }, + { + "X": 0.15875, + "Y": -0.1254, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ba999146-e65c-442e-91e9-eb65608079b8", + "Name": "W12x152" + }, + "0a4b6575-3b0a-47a0-834e-6e427af090ca": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 1.7324000000000002, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 1.7324000000000002, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "0a4b6575-3b0a-47a0-834e-6e427af090ca", + "Name": "W12x152" + }, + "449114c8-aba4-45a1-ac2c-1deab031ba63": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "0a4b6575-3b0a-47a0-834e-6e427af090ca", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -2.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "449114c8-aba4-45a1-ac2c-1deab031ba63", + "Name": "W12x152", + "CellId": 1, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "84347875-374d-48bb-9ebc-b23333323928": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -2.0, + "Z": 0.0 + }, + "End": { + "X": 10.7324, + "Y": -2.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "84347875-374d-48bb-9ebc-b23333323928", + "Name": null + }, + "c30b6320-d3a9-4244-9b8e-ff895659beb0": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 2.7324, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 2.7324, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "c30b6320-d3a9-4244-9b8e-ff895659beb0", + "Name": "W12x152" + }, + "0901f2b3-e657-4fcd-bcea-51ba11feff7e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c30b6320-d3a9-4244-9b8e-ff895659beb0", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -3.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "0901f2b3-e657-4fcd-bcea-51ba11feff7e", + "Name": "W12x152", + "CellId": 1, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "434e5170-a2e4-489d-af09-6e2f56c8ec34": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -3.5, + "Z": 0.0 + }, + "End": { + "X": 11.7324, + "Y": -3.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "434e5170-a2e4-489d-af09-6e2f56c8ec34", + "Name": null + }, + "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 4.5, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 4.5, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Name": "W12x152" + }, + "9bed612f-e237-4382-a50e-8ca5bbcfdd23": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "9bed612f-e237-4382-a50e-8ca5bbcfdd23", + "Name": "W12x152", + "CellId": 2, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6479ba6c-d57a-4b59-a288-f25cb6652175": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -5.0, + "Z": 0.0 + }, + "End": { + "X": 3.75, + "Y": -0.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6479ba6c-d57a-4b59-a288-f25cb6652175", + "Name": null + }, + "3d231d2f-006e-4afd-bdb7-bc4274237b15": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "3d231d2f-006e-4afd-bdb7-bc4274237b15", + "Name": "W12x152", + "CellId": 2, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a754a688-2691-4a44-90a2-e6b6be1f78ce": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -5.0, + "Z": 0.0 + }, + "End": { + "X": 5.5, + "Y": -0.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a754a688-2691-4a44-90a2-e6b6be1f78ce", + "Name": null + }, + "a9f4d907-24c1-4efc-9f62-773ee1029d41": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a9f4d907-24c1-4efc-9f62-773ee1029d41", + "Name": "W12x152", + "CellId": 2, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b4aa8881-1a7f-462e-b80e-b3e05a626a85": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -5.0, + "Z": 0.0 + }, + "End": { + "X": 7.25, + "Y": -0.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b4aa8881-1a7f-462e-b80e-b3e05a626a85", + "Name": null + }, + "671f5123-41bb-4c51-acf5-878316d496f4": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 1.5, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 1.5, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "671f5123-41bb-4c51-acf5-878316d496f4", + "Name": "W12x152" + }, + "08c46ad5-a131-4196-8d2e-d01760fe677b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -3.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "08c46ad5-a131-4196-8d2e-d01760fe677b", + "Name": "W12x152", + "CellId": 3, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "58fa04fb-9784-434b-a2ef-a1ecec0dd2ef": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -3.5, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -3.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "58fa04fb-9784-434b-a2ef-a1ecec0dd2ef", + "Name": null + }, + "4e04d4c7-03f7-42ad-88c0-5ef8088bf0e1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -2.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "4e04d4c7-03f7-42ad-88c0-5ef8088bf0e1", + "Name": "W12x152", + "CellId": 3, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "e33aff5e-7199-4d7d-b105-bf291daefb56": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -2.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -2.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e33aff5e-7199-4d7d-b105-bf291daefb56", + "Name": null + }, + "b835b073-27e7-4087-a023-3557ecf67ad3": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 5.0, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 5.0, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Name": "W12x152" + }, + "b363be0f-c937-438f-9a6e-9150f75e36a8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "b363be0f-c937-438f-9a6e-9150f75e36a8", + "Name": "W12x152", + "CellId": 5, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ce741b06-e484-4ed0-92c0-7b9a0cf95480": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 10.75, + "Y": -5.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ce741b06-e484-4ed0-92c0-7b9a0cf95480", + "Name": null + }, + "907e56e7-f3df-4850-861c-b9c75d67e770": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "907e56e7-f3df-4850-861c-b9c75d67e770", + "Name": "W12x152", + "CellId": 5, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "15b213ec-5c5b-41c3-aefe-d1c9d41c271a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 12.5, + "Y": -5.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "15b213ec-5c5b-41c3-aefe-d1c9d41c271a", + "Name": null + }, + "d463367e-606b-478f-9829-18208e0b592e": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 2.7235999999999994, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 2.7235999999999994, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "d463367e-606b-478f-9829-18208e0b592e", + "Name": "W12x152" + }, + "81a8a73d-b5c5-4991-a557-2d6945472e50": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d463367e-606b-478f-9829-18208e0b592e", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "81a8a73d-b5c5-4991-a557-2d6945472e50", + "Name": "W12x152", + "CellId": 5, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a063db72-4c35-4e63-bb1d-2166750a058e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 14.25, + "Y": -7.276400000000001, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a063db72-4c35-4e63-bb1d-2166750a058e", + "Name": null + }, + "379c1421-dcff-429c-bbb2-600d8b5a79a9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "379c1421-dcff-429c-bbb2-600d8b5a79a9", + "Name": "W12x152", + "CellId": 6, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "65bbc369-7924-40ff-afc9-a86a94605429": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 3.75, + "Y": -5.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "65bbc369-7924-40ff-afc9-a86a94605429", + "Name": null + }, + "6f8b4a01-2bb1-4f8a-a561-d55a9450046b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "6f8b4a01-2bb1-4f8a-a561-d55a9450046b", + "Name": "W12x152", + "CellId": 6, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "52a037bc-05aa-4a65-940f-341b13c993bc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 5.5, + "Y": -5.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "52a037bc-05aa-4a65-940f-341b13c993bc", + "Name": null + }, + "d05f8c24-bddf-412e-927e-fe6aebe03ecf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "d05f8c24-bddf-412e-927e-fe6aebe03ecf", + "Name": "W12x152", + "CellId": 6, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a01e0837-5d91-4ad8-95d7-deae343fc12b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 7.25, + "Y": -5.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a01e0837-5d91-4ad8-95d7-deae343fc12b", + "Name": null + }, + "486bb3f6-862d-4f65-be5b-b0c46c466f22": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -8.333333333333334, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "486bb3f6-862d-4f65-be5b-b0c46c466f22", + "Name": "W12x152", + "CellId": 7, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "5f3cf050-e289-4113-94f6-ccae99edfe6f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -8.333333333333334, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -8.333333333333334, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5f3cf050-e289-4113-94f6-ccae99edfe6f", + "Name": null + }, + "a0983a2e-fbc2-4c0d-a13d-719e5daf6304": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -6.666666666666667, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a0983a2e-fbc2-4c0d-a13d-719e5daf6304", + "Name": "W12x152", + "CellId": 7, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "30784c32-148f-4d5c-a040-a6461d8eb8cc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -6.666666666666667, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -6.666666666666667, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "30784c32-148f-4d5c-a040-a6461d8eb8cc", + "Name": null + }, + "e9998d1f-f37e-4ec1-9a37-d6129df9567b": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 1.1768466666666662, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 1.1768466666666662, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "e9998d1f-f37e-4ec1-9a37-d6129df9567b", + "Name": "W12x152" + }, + "c81c4880-8791-458b-919f-e8e3bfec18f9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e9998d1f-f37e-4ec1-9a37-d6129df9567b", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -11.666666666666666, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "c81c4880-8791-458b-919f-e8e3bfec18f9", + "Name": "W12x152", + "CellId": 8, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "634805b1-e125-4c91-80f7-420458d80c1a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -11.666666666666666, + "Z": 0.0 + }, + "End": { + "X": 17.176846666666666, + "Y": -11.666666666666666, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "634805b1-e125-4c91-80f7-420458d80c1a", + "Name": null + }, + "48a4ab2f-6f28-414c-be2a-e0687d5249cc": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 2.287953333333334, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 2.287953333333334, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "48a4ab2f-6f28-414c-be2a-e0687d5249cc", + "Name": "W12x152" + }, + "a94f957d-f83c-4f67-99a4-39ec8b978fdb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "48a4ab2f-6f28-414c-be2a-e0687d5249cc", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -13.333333333333332, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a94f957d-f83c-4f67-99a4-39ec8b978fdb", + "Name": "W12x152", + "CellId": 8, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "b52a05c9-634e-4088-b781-2b0991333f4b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -13.333333333333332, + "Z": 0.0 + }, + "End": { + "X": 18.287953333333334, + "Y": -13.333333333333332, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b52a05c9-634e-4088-b781-2b0991333f4b", + "Name": null + }, + "96407be9-dfa2-4201-aedb-5e9af21811b8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "96407be9-dfa2-4201-aedb-5e9af21811b8", + "Name": "W12x152", + "CellId": 9, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fde535c1-34ef-49eb-a1b3-0f629e2a5b86": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 10.75, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fde535c1-34ef-49eb-a1b3-0f629e2a5b86", + "Name": null + }, + "9afa8a8d-5341-4990-ae7a-483622d2e033": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "9afa8a8d-5341-4990-ae7a-483622d2e033", + "Name": "W12x152", + "CellId": 9, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "31d042c1-e5f3-4109-b9d4-aa3842be5912": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 12.5, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "31d042c1-e5f3-4109-b9d4-aa3842be5912", + "Name": null + }, + "80a53a2a-673b-475d-a044-c29ff8124ce7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "80a53a2a-673b-475d-a044-c29ff8124ce7", + "Name": "W12x152", + "CellId": 9, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "53d9fcb7-193b-43ec-bf15-8016f74cc06d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 14.25, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "53d9fcb7-193b-43ec-bf15-8016f74cc06d", + "Name": null + }, + "1f0d4419-51cc-41b4-9b9f-c8acb9e9b125": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "1f0d4419-51cc-41b4-9b9f-c8acb9e9b125", + "Name": "W12x152", + "CellId": 10, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6c9c94ef-9560-4b0b-96ca-5533c3e417e6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 3.75, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6c9c94ef-9560-4b0b-96ca-5533c3e417e6", + "Name": null + }, + "223e8f48-53b0-420d-9566-e42927f37af0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "223e8f48-53b0-420d-9566-e42927f37af0", + "Name": "W12x152", + "CellId": 10, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "294fd0b7-9dcf-4976-8694-c2d11915cf50": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 5.5, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "294fd0b7-9dcf-4976-8694-c2d11915cf50", + "Name": null + }, + "e7c8d611-9bd0-449e-895f-41b4f189df9a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "e7c8d611-9bd0-449e-895f-41b4f189df9a", + "Name": "W12x152", + "CellId": 10, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "bf38e54e-58a5-4c93-8db0-d04ff1d2771f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 7.25, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bf38e54e-58a5-4c93-8db0-d04ff1d2771f", + "Name": null + }, + "072e735e-97cf-4835-abc3-37cfda558744": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -13.333333333333334, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "072e735e-97cf-4835-abc3-37cfda558744", + "Name": "W12x152", + "CellId": 11, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "7613040a-6d75-42e2-8939-835b7786f804": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -13.333333333333334, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -13.333333333333334, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7613040a-6d75-42e2-8939-835b7786f804", + "Name": null + }, + "6452829f-e877-40a4-90b7-ca0cfd622257": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -11.666666666666668, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "6452829f-e877-40a4-90b7-ca0cfd622257", + "Name": "W12x152", + "CellId": 11, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "9dc97b70-3fc3-48f2-b69b-9c3b04287c3a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -11.666666666666668, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -11.666666666666668, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9dc97b70-3fc3-48f2-b69b-9c3b04287c3a", + "Name": null + }, + "55db97f8-49be-48d7-ae39-e4f3046bf020": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.6831, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "55db97f8-49be-48d7-ae39-e4f3046bf020", + "Name": "W12x152", + "CellId": 12, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9fe0863f-78d5-4d02-bf09-54e101a052d4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.6831, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 17.6831, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9fe0863f-78d5-4d02-bf09-54e101a052d4", + "Name": null + }, + "74b73145-d10e-494c-abfa-a1f4b4698f76": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.3662, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "74b73145-d10e-494c-abfa-a1f4b4698f76", + "Name": "W12x152", + "CellId": 12, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "11170d2d-96d3-4bd4-8606-691d3fcb9ca9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.3662, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 19.3662, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "11170d2d-96d3-4bd4-8606-691d3fcb9ca9", + "Name": null + }, + "a14957ee-e204-468a-8e80-821f5ea2eabc": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 2.5246449507100976, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 2.5246449507100976, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "a14957ee-e204-468a-8e80-821f5ea2eabc", + "Name": "W12x152" + }, + "eb1ab162-e201-4584-9488-fb3f8f7f8e8a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "a14957ee-e204-468a-8e80-821f5ea2eabc", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.0493, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "eb1ab162-e201-4584-9488-fb3f8f7f8e8a", + "Name": "W12x152", + "CellId": 12, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "35a21f74-63e3-4b51-935f-da6596ad2349": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.0493, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 21.0493, + "Y": -17.475355049289902, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "35a21f74-63e3-4b51-935f-da6596ad2349", + "Name": null + }, + "32a38780-bc18-494e-a490-85bf4fd5b42e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "32a38780-bc18-494e-a490-85bf4fd5b42e", + "Name": "W12x152", + "CellId": 13, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b0be2b8a-66fb-447a-b94e-edbe55badf43": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 10.75, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b0be2b8a-66fb-447a-b94e-edbe55badf43", + "Name": null + }, + "0a190965-7886-4017-a503-6254f1ce54f8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "0a190965-7886-4017-a503-6254f1ce54f8", + "Name": "W12x152", + "CellId": 13, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4646d504-8b54-4ce8-bb44-74e79029d746": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 12.5, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4646d504-8b54-4ce8-bb44-74e79029d746", + "Name": null + }, + "45807bf8-4758-46d0-8066-cbf9e1f2e20c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "45807bf8-4758-46d0-8066-cbf9e1f2e20c", + "Name": "W12x152", + "CellId": 13, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5f742c34-556a-4a25-a69e-bba30ef7bbcf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 14.25, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5f742c34-556a-4a25-a69e-bba30ef7bbcf", + "Name": null + }, + "9d91550b-1cee-478a-9fe2-e68912aa699b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "9d91550b-1cee-478a-9fe2-e68912aa699b", + "Name": "W12x152", + "CellId": 14, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fc563825-c1d7-404f-85a9-cc4a1eb00218": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 3.75, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fc563825-c1d7-404f-85a9-cc4a1eb00218", + "Name": null + }, + "53140030-acfc-4890-b228-8735aa9202ec": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "53140030-acfc-4890-b228-8735aa9202ec", + "Name": "W12x152", + "CellId": 14, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0bcd1f7f-852c-4738-8292-f30d29c6bf8e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 5.5, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0bcd1f7f-852c-4738-8292-f30d29c6bf8e", + "Name": null + }, + "537e2b30-223f-4bdb-82df-ad3e63cff89a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "537e2b30-223f-4bdb-82df-ad3e63cff89a", + "Name": "W12x152", + "CellId": 14, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fe87032c-8bc7-43b4-bdef-32ae4125b1fd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 7.25, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fe87032c-8bc7-43b4-bdef-32ae4125b1fd", + "Name": null + }, + "6bb90384-e500-40b3-8cda-6dcf66b1e94e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -18.333333333333332, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "6bb90384-e500-40b3-8cda-6dcf66b1e94e", + "Name": "W12x152", + "CellId": 15, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "4c749511-44d6-4af3-9ab5-0d41047a43e6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -18.333333333333332, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -18.333333333333332, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4c749511-44d6-4af3-9ab5-0d41047a43e6", + "Name": null + }, + "8ce4e6fa-3570-4962-a142-ab88971bfefd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -16.666666666666668, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "8ce4e6fa-3570-4962-a142-ab88971bfefd", + "Name": "W12x152", + "CellId": 15, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "8d727634-8a31-48dd-bbd9-2e3b15399bf9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -16.666666666666668, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -16.666666666666668, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8d727634-8a31-48dd-bbd9-2e3b15399bf9", + "Name": null + }, + "00428e4f-d368-4fa9-9b91-6b35a98db880": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 1.021913333333334, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 1.021913333333334, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "00428e4f-d368-4fa9-9b91-6b35a98db880", + "Name": "W12x152" + }, + "ef687703-9143-444e-b4f2-6fb7a2b587c6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "00428e4f-d368-4fa9-9b91-6b35a98db880", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -21.934266666666666, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "ef687703-9143-444e-b4f2-6fb7a2b587c6", + "Name": "W12x152", + "CellId": 16, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "88421fcd-5d63-45ff-aa16-74c52bd313c5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -21.934266666666666, + "Z": 0.0 + }, + "End": { + "X": 24.021913333333334, + "Y": -21.934266666666666, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "88421fcd-5d63-45ff-aa16-74c52bd313c5", + "Name": null + }, + "2a51b0ec-7a36-4993-b509-32bf4c52b9b4": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 2.043826666666668, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 2.043826666666668, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "2a51b0ec-7a36-4993-b509-32bf4c52b9b4", + "Name": "W12x152" + }, + "41cbe9f7-e93a-4d2b-b79a-1be05425266a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2a51b0ec-7a36-4993-b509-32bf4c52b9b4", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -23.467133333333333, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "41cbe9f7-e93a-4d2b-b79a-1be05425266a", + "Name": "W12x152", + "CellId": 16, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "719b7363-b074-4045-9695-22f2ebe87ad8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -23.467133333333333, + "Z": 0.0 + }, + "End": { + "X": 25.043826666666668, + "Y": -23.467133333333333, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "719b7363-b074-4045-9695-22f2ebe87ad8", + "Name": null + }, + "096908ac-1df9-4d07-9ac7-a8579865819d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "096908ac-1df9-4d07-9ac7-a8579865819d", + "Name": "W12x152", + "CellId": 17, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "713e84a5-f413-4098-81b8-b6e91f320a34": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 17.75, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "713e84a5-f413-4098-81b8-b6e91f320a34", + "Name": null + }, + "7af7feb5-9f26-4d62-87f2-813f0b548bc0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "7af7feb5-9f26-4d62-87f2-813f0b548bc0", + "Name": "W12x152", + "CellId": 17, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0b367183-5431-4c29-a58c-561b71950836": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 19.5, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0b367183-5431-4c29-a58c-561b71950836", + "Name": null + }, + "e382b529-e95d-44ca-acc6-4695c9e303ca": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "e382b529-e95d-44ca-acc6-4695c9e303ca", + "Name": "W12x152", + "CellId": 17, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "11db4bde-461c-41ee-8193-8281feefa892": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 21.25, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "11db4bde-461c-41ee-8193-8281feefa892", + "Name": null + }, + "6ccd0013-a834-4d86-8b2d-84f9ecc9064c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "6ccd0013-a834-4d86-8b2d-84f9ecc9064c", + "Name": "W12x152", + "CellId": 18, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "40f48473-8ee9-4897-a3df-83de50094edd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 10.75, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "40f48473-8ee9-4897-a3df-83de50094edd", + "Name": null + }, + "a50a119e-9b36-49b3-9f5f-b63b2b92c8de": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a50a119e-9b36-49b3-9f5f-b63b2b92c8de", + "Name": "W12x152", + "CellId": 18, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fbf05b8e-60ae-48f7-b3de-3cf1f5496dc6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 12.5, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fbf05b8e-60ae-48f7-b3de-3cf1f5496dc6", + "Name": null + }, + "f995d5db-874c-45e0-9699-c8711fa07656": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "f995d5db-874c-45e0-9699-c8711fa07656", + "Name": "W12x152", + "CellId": 18, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "13249f6c-95d8-499a-b1ac-3274f9717251": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 14.25, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "13249f6c-95d8-499a-b1ac-3274f9717251", + "Name": null + }, + "2ec7b373-71f5-46da-b975-3d777eeb50ad": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "2ec7b373-71f5-46da-b975-3d777eeb50ad", + "Name": "W12x152", + "CellId": 19, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c554a074-76b3-4f22-bed8-0ebd8a49da02": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 3.75, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c554a074-76b3-4f22-bed8-0ebd8a49da02", + "Name": null + }, + "26d090e7-433b-41b5-b58b-602168f54dda": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "26d090e7-433b-41b5-b58b-602168f54dda", + "Name": "W12x152", + "CellId": 19, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0a922690-2b55-432a-a96c-a79d1c47e25a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 5.5, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0a922690-2b55-432a-a96c-a79d1c47e25a", + "Name": null + }, + "70c341b7-d624-420b-bd31-5a7193407a1b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "70c341b7-d624-420b-bd31-5a7193407a1b", + "Name": "W12x152", + "CellId": 19, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0d79f155-a182-4615-b48e-32ee7f6f4e0b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 7.25, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0d79f155-a182-4615-b48e-32ee7f6f4e0b", + "Name": null + }, + "7e27aeb9-8dcb-4c6d-80ce-236cf011cb84": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -23.333333333333332, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "7e27aeb9-8dcb-4c6d-80ce-236cf011cb84", + "Name": "W12x152", + "CellId": 20, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "796e4e6e-338b-4c02-a61d-4ed24e10b992": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -23.333333333333332, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -23.333333333333332, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "796e4e6e-338b-4c02-a61d-4ed24e10b992", + "Name": null + }, + "1adf6423-7aa3-422a-a23f-76a0a8db3419": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -21.666666666666668, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "1adf6423-7aa3-422a-a23f-76a0a8db3419", + "Name": "W12x152", + "CellId": 20, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "ca0c878a-7b20-4085-99c4-b81ce71979f9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -21.666666666666668, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -21.666666666666668, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ca0c878a-7b20-4085-99c4-b81ce71979f9", + "Name": null + }, + "73eddbbd-42c3-458b-9597-f9bd49147a87": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.599764999999998, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "73eddbbd-42c3-458b-9597-f9bd49147a87", + "Name": "W12x152", + "CellId": 21, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1430d63a-a64c-4fa3-a94d-9419c60e68f5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.599764999999998, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 24.599764999999998, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1430d63a-a64c-4fa3-a94d-9419c60e68f5", + "Name": null + }, + "c86c7794-702f-43dc-82a1-ccf5f1b5deea": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 4.799314197256791, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 4.799314197256791, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "c86c7794-702f-43dc-82a1-ccf5f1b5deea", + "Name": "W12x152" + }, + "ae823504-a480-4343-a424-3f09806bc38f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c86c7794-702f-43dc-82a1-ccf5f1b5deea", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.19953, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "ae823504-a480-4343-a424-3f09806bc38f", + "Name": "W12x152", + "CellId": 21, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "185a4fc8-23f1-4445-bcec-66e5cfaddde2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.19953, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 26.19953, + "Y": -25.20068580274321, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "185a4fc8-23f1-4445-bcec-66e5cfaddde2", + "Name": null + }, + "d27c8274-35d1-48e6-a623-33a7ddfb778f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 2.3996570986283956, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 2.3996570986283956, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "d27c8274-35d1-48e6-a623-33a7ddfb778f", + "Name": "W12x152" + }, + "150efd5e-2748-42a9-b38a-ff9706c24107": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d27c8274-35d1-48e6-a623-33a7ddfb778f", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.799295, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "150efd5e-2748-42a9-b38a-ff9706c24107", + "Name": "W12x152", + "CellId": 21, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "66270b5d-8823-4729-9e96-635806fbf3c6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.799295, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 27.799295, + "Y": -27.600342901371604, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "66270b5d-8823-4729-9e96-635806fbf3c6", + "Name": null + }, + "8e927082-1213-4ebd-8af8-ea2ede83306b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "8e927082-1213-4ebd-8af8-ea2ede83306b", + "Name": "W12x152", + "CellId": 22, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f34a7472-5e0c-4307-994c-7e71c017cd3c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 17.75, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f34a7472-5e0c-4307-994c-7e71c017cd3c", + "Name": null + }, + "d0774240-8e91-4077-afc1-3e240fbaecc4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "d0774240-8e91-4077-afc1-3e240fbaecc4", + "Name": "W12x152", + "CellId": 22, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3515422d-9e82-4ee1-a1e1-4afdad29545b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 19.5, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3515422d-9e82-4ee1-a1e1-4afdad29545b", + "Name": null + }, + "9f09a16c-5df6-4c7d-99ee-99d675eb7076": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "9f09a16c-5df6-4c7d-99ee-99d675eb7076", + "Name": "W12x152", + "CellId": 22, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "94b2c49f-4aef-4cc6-af8d-418e00dfeab4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 21.25, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "94b2c49f-4aef-4cc6-af8d-418e00dfeab4", + "Name": null + }, + "d978b146-4c91-41ff-80df-b9e8fb255920": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "d978b146-4c91-41ff-80df-b9e8fb255920", + "Name": "W12x152", + "CellId": 23, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "da48e726-ed32-4fa7-bb65-6f611857d70a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 10.75, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "da48e726-ed32-4fa7-bb65-6f611857d70a", + "Name": null + }, + "11eb21f4-2a54-474c-b3e6-011a117ec662": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "11eb21f4-2a54-474c-b3e6-011a117ec662", + "Name": "W12x152", + "CellId": 23, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "cff448d8-9482-47a7-b3c4-77b5cd3ec65a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 12.5, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cff448d8-9482-47a7-b3c4-77b5cd3ec65a", + "Name": null + }, + "32e12537-1518-4d48-992b-517ca6b4f0bb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "32e12537-1518-4d48-992b-517ca6b4f0bb", + "Name": "W12x152", + "CellId": 23, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5c897942-8264-49f4-acb2-f0a6a22027ca": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 14.25, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5c897942-8264-49f4-acb2-f0a6a22027ca", + "Name": null + }, + "9530151f-c2cb-47f9-9340-8d86fc0ef29c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "9530151f-c2cb-47f9-9340-8d86fc0ef29c", + "Name": "W12x152", + "CellId": 24, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5cdfd673-d2f2-44bc-a5bf-ff3e46950256": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 3.75, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5cdfd673-d2f2-44bc-a5bf-ff3e46950256", + "Name": null + }, + "77c43644-dc3c-4c46-b2b4-0a4dcc64ac4f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "77c43644-dc3c-4c46-b2b4-0a4dcc64ac4f", + "Name": "W12x152", + "CellId": 24, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "de83349c-f30c-4f37-8d56-ff23d8dcef2f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 5.5, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "de83349c-f30c-4f37-8d56-ff23d8dcef2f", + "Name": null + }, + "a4a12eba-f2ae-40d9-85d4-c66721437e9f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a4a12eba-f2ae-40d9-85d4-c66721437e9f", + "Name": "W12x152", + "CellId": 24, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "36c45f6f-10af-4764-a3c9-fb840a7737e6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 7.25, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "36c45f6f-10af-4764-a3c9-fb840a7737e6", + "Name": null + }, + "50576bdb-41bc-43f8-964c-af9495e3b331": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -28.333333333333332, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "50576bdb-41bc-43f8-964c-af9495e3b331", + "Name": "W12x152", + "CellId": 25, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "507f0f4d-5d6d-485b-9a18-ff81fe18ccc5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -28.333333333333332, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -28.333333333333332, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "507f0f4d-5d6d-485b-9a18-ff81fe18ccc5", + "Name": null + }, + "7b6fd675-912b-4dde-a328-bae204f0ad7a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -26.666666666666668, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "7b6fd675-912b-4dde-a328-bae204f0ad7a", + "Name": "W12x152", + "CellId": 25, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "c038f132-fd60-4f08-bcf5-655d19117733": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -26.666666666666668, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -26.666666666666668, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c038f132-fd60-4f08-bcf5-655d19117733", + "Name": null + }, + "45494bc0-d354-40a6-9d9d-7933c9e00331": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "45494bc0-d354-40a6-9d9d-7933c9e00331", + "Name": "W12x152", + "CellId": 26, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a7b96791-9e77-4642-98a1-75c87267de1b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 24.625, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a7b96791-9e77-4642-98a1-75c87267de1b", + "Name": null + }, + "a208744d-1c3a-4cd2-bb8f-14082699838f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a208744d-1c3a-4cd2-bb8f-14082699838f", + "Name": "W12x152", + "CellId": 26, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "dda71185-3ffc-4b4b-b79e-23f4aaa9d3ca": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 26.25, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dda71185-3ffc-4b4b-b79e-23f4aaa9d3ca", + "Name": null + }, + "7e687872-ded4-48cd-8245-51f74404515c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "7e687872-ded4-48cd-8245-51f74404515c", + "Name": "W12x152", + "CellId": 26, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4e8c14c7-4008-4325-9ee2-ed9dac51efee": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 27.875, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4e8c14c7-4008-4325-9ee2-ed9dac51efee", + "Name": null + }, + "e4847f09-4b91-4e61-9379-9ee45e62c4e0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "e4847f09-4b91-4e61-9379-9ee45e62c4e0", + "Name": "W12x152", + "CellId": 27, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a209e7b8-c48d-4454-bc15-6a2401b89116": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 17.75, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a209e7b8-c48d-4454-bc15-6a2401b89116", + "Name": null + }, + "dae3bab9-0df0-473e-8d50-3d82a8d27a46": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "dae3bab9-0df0-473e-8d50-3d82a8d27a46", + "Name": "W12x152", + "CellId": 27, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1dbee02d-13f2-4056-83eb-966a267a952f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 19.5, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1dbee02d-13f2-4056-83eb-966a267a952f", + "Name": null + }, + "ec8a5c7f-9519-4aca-92e7-b6e58d02338d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "ec8a5c7f-9519-4aca-92e7-b6e58d02338d", + "Name": "W12x152", + "CellId": 27, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b783f26a-a206-45ed-be60-8a6647df0b2b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 21.25, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b783f26a-a206-45ed-be60-8a6647df0b2b", + "Name": null + }, + "09d57c6a-425a-43fb-8316-a0ec9de7ba5c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "09d57c6a-425a-43fb-8316-a0ec9de7ba5c", + "Name": "W12x152", + "CellId": 28, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "dae7d621-f7ab-4af7-ae9d-19cee40f808e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 10.75, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dae7d621-f7ab-4af7-ae9d-19cee40f808e", + "Name": null + }, + "bc9b0b17-5573-4b3f-a175-2657ed80643a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "bc9b0b17-5573-4b3f-a175-2657ed80643a", + "Name": "W12x152", + "CellId": 28, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d6afdf8a-baa6-4438-8178-23cba308f0a0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 12.5, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d6afdf8a-baa6-4438-8178-23cba308f0a0", + "Name": null + }, + "fcc52638-f388-4d47-bfd0-745b142e0487": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "fcc52638-f388-4d47-bfd0-745b142e0487", + "Name": "W12x152", + "CellId": 28, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c60a4a95-abec-478b-a76d-913fc8f0d88f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 14.25, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c60a4a95-abec-478b-a76d-913fc8f0d88f", + "Name": null + }, + "f3ee0cc1-3222-4845-9635-10e63227f319": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "f3ee0cc1-3222-4845-9635-10e63227f319", + "Name": "W12x152", + "CellId": 29, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "bcef46d8-677a-498f-a089-ea26f710c338": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 3.75, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bcef46d8-677a-498f-a089-ea26f710c338", + "Name": null + }, + "13c74fca-2e25-4b63-b3ad-e821b30b5df8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "13c74fca-2e25-4b63-b3ad-e821b30b5df8", + "Name": "W12x152", + "CellId": 29, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f1cf3cc1-be2b-4791-9cf7-3a205ea6cc62": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 5.5, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f1cf3cc1-be2b-4791-9cf7-3a205ea6cc62", + "Name": null + }, + "7c3ce826-496f-4c9d-98cb-d33004a59413": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "7c3ce826-496f-4c9d-98cb-d33004a59413", + "Name": "W12x152", + "CellId": 29, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "91f7b08a-4c26-4576-aedf-eb76b03f1434": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 7.25, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "91f7b08a-4c26-4576-aedf-eb76b03f1434", + "Name": null + }, + "47ed683f-61a5-48f1-9238-7232ab540b4d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -33.333333333333336, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "47ed683f-61a5-48f1-9238-7232ab540b4d", + "Name": "W12x152", + "CellId": 30, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "ac5b2d66-73b0-441c-b75f-92a4024d5c2e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -33.333333333333336, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -33.333333333333336, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ac5b2d66-73b0-441c-b75f-92a4024d5c2e", + "Name": null + }, + "75d651b3-962f-4419-ba4b-3ee0ca67d410": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -31.666666666666668, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "75d651b3-962f-4419-ba4b-3ee0ca67d410", + "Name": "W12x152", + "CellId": 30, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "6ffa8756-8cc9-4c6f-b853-33672bf04b9f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -31.666666666666668, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -31.666666666666668, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6ffa8756-8cc9-4c6f-b853-33672bf04b9f", + "Name": null + }, + "51af5325-e2b1-492d-b6f5-40eab780def2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "51af5325-e2b1-492d-b6f5-40eab780def2", + "Name": "W12x152", + "CellId": 31, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "bef307c2-51db-4bca-bebb-75ea102175ae": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 24.625, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bef307c2-51db-4bca-bebb-75ea102175ae", + "Name": null + }, + "a2d43a20-26aa-43e7-ad44-6603b5475594": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a2d43a20-26aa-43e7-ad44-6603b5475594", + "Name": "W12x152", + "CellId": 31, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c00b4dda-8a7b-4046-b628-8a870e3cc223": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 26.25, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c00b4dda-8a7b-4046-b628-8a870e3cc223", + "Name": null + }, + "4bb5c6c3-bba0-4e94-a5cc-da6a39066226": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "4bb5c6c3-bba0-4e94-a5cc-da6a39066226", + "Name": "W12x152", + "CellId": 31, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e71c5e31-532e-425f-8647-fd38007b8fbb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 27.875, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e71c5e31-532e-425f-8647-fd38007b8fbb", + "Name": null + }, + "28f03623-691d-49ed-b8c2-43c1dfcbdac4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "28f03623-691d-49ed-b8c2-43c1dfcbdac4", + "Name": "W12x152", + "CellId": 32, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "cfc5377f-9b99-4141-86ee-d6d5a8c77d50": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 17.75, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cfc5377f-9b99-4141-86ee-d6d5a8c77d50", + "Name": null + }, + "c9231c44-34e0-41f1-bf2c-3eeec2e93c0c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "c9231c44-34e0-41f1-bf2c-3eeec2e93c0c", + "Name": "W12x152", + "CellId": 32, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "2254ec5c-dd41-4dcc-aaaf-8bfbc0e6f0fc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 19.5, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2254ec5c-dd41-4dcc-aaaf-8bfbc0e6f0fc", + "Name": null + }, + "4722a9e0-781a-4ebb-b58a-19ef0fcb05e8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "4722a9e0-781a-4ebb-b58a-19ef0fcb05e8", + "Name": "W12x152", + "CellId": 32, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "38e0ceb2-e476-49c6-bf4c-2929c5207a39": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 21.25, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "38e0ceb2-e476-49c6-bf4c-2929c5207a39", + "Name": null + }, + "521d5f5a-dc9d-4043-9e48-95cae654028c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "521d5f5a-dc9d-4043-9e48-95cae654028c", + "Name": "W12x152", + "CellId": 33, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d4d5f3e5-efe9-46fb-ab40-d41e667d7304": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 10.75, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d4d5f3e5-efe9-46fb-ab40-d41e667d7304", + "Name": null + }, + "8b9b12f9-cead-41a7-b3c8-90d2255ba341": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "8b9b12f9-cead-41a7-b3c8-90d2255ba341", + "Name": "W12x152", + "CellId": 33, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "2b91a5b9-6445-4500-9683-83bb0229bb29": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 12.5, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2b91a5b9-6445-4500-9683-83bb0229bb29", + "Name": null + }, + "1f132686-6a0e-4aa5-a6f6-45e9ec98b930": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "1f132686-6a0e-4aa5-a6f6-45e9ec98b930", + "Name": "W12x152", + "CellId": 33, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e21b5238-969f-439e-ac28-be8ed3b6e49b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 14.25, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e21b5238-969f-439e-ac28-be8ed3b6e49b", + "Name": null + }, + "04b9948e-e3a0-45eb-85ca-56a999587e53": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "04b9948e-e3a0-45eb-85ca-56a999587e53", + "Name": "W12x152", + "CellId": 34, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "91898d1b-18e3-4992-a53d-7e3f4ac1fa70": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 3.75, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "91898d1b-18e3-4992-a53d-7e3f4ac1fa70", + "Name": null + }, + "8ab06ea6-6b32-44d6-a59c-9209015c4cb3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "8ab06ea6-6b32-44d6-a59c-9209015c4cb3", + "Name": "W12x152", + "CellId": 34, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "63de46ec-9197-4579-b669-1da517c2386a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 5.5, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "63de46ec-9197-4579-b669-1da517c2386a", + "Name": null + }, + "c0397584-a924-4178-bf4a-0c502247ceda": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "c0397584-a924-4178-bf4a-0c502247ceda", + "Name": "W12x152", + "CellId": 34, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f1d2ff49-e219-4efb-affc-0570b81243c7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 7.25, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f1d2ff49-e219-4efb-affc-0570b81243c7", + "Name": null + }, + "d7d293f7-27f8-4f57-9d43-e2729fca35b9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -38.333333333333336, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "d7d293f7-27f8-4f57-9d43-e2729fca35b9", + "Name": "W12x152", + "CellId": 35, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "009a3c04-7e3a-48df-8427-f2131f4e144a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -38.333333333333336, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -38.333333333333336, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "009a3c04-7e3a-48df-8427-f2131f4e144a", + "Name": null + }, + "3b58dd3e-881e-4c7e-ab80-924948ae8c5a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -36.666666666666664, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "3b58dd3e-881e-4c7e-ab80-924948ae8c5a", + "Name": "W12x152", + "CellId": 35, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "9983adec-488d-41d1-911a-fca8b52cd676": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -36.666666666666664, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -36.666666666666664, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9983adec-488d-41d1-911a-fca8b52cd676", + "Name": null + }, + "3978ae7b-3902-4c43-8242-64c8b3f264d9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "3978ae7b-3902-4c43-8242-64c8b3f264d9", + "Name": "W12x152", + "CellId": 36, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "266377a6-7a7e-435d-b2ce-4975ac80d6bf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 24.625, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "266377a6-7a7e-435d-b2ce-4975ac80d6bf", + "Name": null + }, + "eb0f333e-04ed-4fdc-beef-254f0220d5b8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "eb0f333e-04ed-4fdc-beef-254f0220d5b8", + "Name": "W12x152", + "CellId": 36, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e0bc6873-4b72-447d-b94a-6843dcaae93c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 26.25, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e0bc6873-4b72-447d-b94a-6843dcaae93c", + "Name": null + }, + "f7beb439-c888-4b32-bd40-ffd4d3de7619": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "f7beb439-c888-4b32-bd40-ffd4d3de7619", + "Name": "W12x152", + "CellId": 36, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "209f118b-c488-4497-89be-119d3045cd2f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 27.875, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "209f118b-c488-4497-89be-119d3045cd2f", + "Name": null + }, + "d0abd2c8-0137-4538-bce9-a3dc40cc61ec": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "d0abd2c8-0137-4538-bce9-a3dc40cc61ec", + "Name": "W12x152", + "CellId": 37, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d02220a4-0bc3-4822-9bab-36ddeaf63fdc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 17.75, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d02220a4-0bc3-4822-9bab-36ddeaf63fdc", + "Name": null + }, + "11b1b5d6-6d4d-4044-8b42-b4a172675f42": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "11b1b5d6-6d4d-4044-8b42-b4a172675f42", + "Name": "W12x152", + "CellId": 37, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "dc8b3c26-dcaa-4bf3-824f-377fe4e2be72": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 19.5, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dc8b3c26-dcaa-4bf3-824f-377fe4e2be72", + "Name": null + }, + "5bdd093c-be6f-4798-8e7e-50509a1d1027": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "5bdd093c-be6f-4798-8e7e-50509a1d1027", + "Name": "W12x152", + "CellId": 37, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ae2d289f-ecdb-437b-9d79-5143b76fdbe4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 21.25, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ae2d289f-ecdb-437b-9d79-5143b76fdbe4", + "Name": null + }, + "4dbaf034-8676-4d42-86b8-f5b58808dd1d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "4dbaf034-8676-4d42-86b8-f5b58808dd1d", + "Name": "W12x152", + "CellId": 38, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6a1595bf-5327-4d63-a808-b5df7d121c6c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 10.75, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6a1595bf-5327-4d63-a808-b5df7d121c6c", + "Name": null + }, + "401032fd-300d-4c1f-bb88-08004f58c78d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "401032fd-300d-4c1f-bb88-08004f58c78d", + "Name": "W12x152", + "CellId": 38, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "46aeb8af-ce91-458f-bb17-5d061dddf5ab": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 12.5, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "46aeb8af-ce91-458f-bb17-5d061dddf5ab", + "Name": null + }, + "f02a3449-c4ba-42d1-a80b-3f60d2ae4cac": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "f02a3449-c4ba-42d1-a80b-3f60d2ae4cac", + "Name": "W12x152", + "CellId": 38, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e5fbb417-902c-4ab9-9d0a-4ea91b5a9d72": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 14.25, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e5fbb417-902c-4ab9-9d0a-4ea91b5a9d72", + "Name": null + }, + "28d80df9-8635-4aea-8858-f6688917c042": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "28d80df9-8635-4aea-8858-f6688917c042", + "Name": "W12x152", + "CellId": 39, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "153b177f-7a25-464d-9c35-477e6a21b3b5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 3.75, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "153b177f-7a25-464d-9c35-477e6a21b3b5", + "Name": null + }, + "9aa11d96-4c02-4bd6-a9f5-cb0ff1ae89e7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "9aa11d96-4c02-4bd6-a9f5-cb0ff1ae89e7", + "Name": "W12x152", + "CellId": 39, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "23f6302f-4943-4e3c-9e45-285e356f7b54": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 5.5, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "23f6302f-4943-4e3c-9e45-285e356f7b54", + "Name": null + }, + "a0c519ce-9505-4648-aa29-ba28fc934e97": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a0c519ce-9505-4648-aa29-ba28fc934e97", + "Name": "W12x152", + "CellId": 39, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "982d1253-9520-48bd-826f-85768f2746e4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 7.25, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "982d1253-9520-48bd-826f-85768f2746e4", + "Name": null + }, + "6633755c-74a8-4b81-8a27-4bed972fe486": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -43.333333333333336, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "6633755c-74a8-4b81-8a27-4bed972fe486", + "Name": "W12x152", + "CellId": 40, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "9bd702cb-06a2-4907-9034-d1e2cb291833": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -43.333333333333336, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -43.333333333333336, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9bd702cb-06a2-4907-9034-d1e2cb291833", + "Name": null + }, + "5f1fc8d2-a4cd-4006-b093-f5b3f99acb01": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -41.666666666666664, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "5f1fc8d2-a4cd-4006-b093-f5b3f99acb01", + "Name": "W12x152", + "CellId": 40, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "b62aef0d-663c-45d6-a596-bfb9efb82f3f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -41.666666666666664, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -41.666666666666664, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b62aef0d-663c-45d6-a596-bfb9efb82f3f", + "Name": null + }, + "81ffe3d7-70c4-4c07-8a34-6fba513036d6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "81ffe3d7-70c4-4c07-8a34-6fba513036d6", + "Name": "W12x152", + "CellId": 41, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "35261318-f9b4-4d2e-b7b9-e6586a0d5a5a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 24.625, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "35261318-f9b4-4d2e-b7b9-e6586a0d5a5a", + "Name": null + }, + "f2a916d8-7814-4ad7-9a88-1f96d580a2a5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "f2a916d8-7814-4ad7-9a88-1f96d580a2a5", + "Name": "W12x152", + "CellId": 41, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "dbf78bea-0448-4edf-86ed-668d1c2f6d7a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 26.25, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dbf78bea-0448-4edf-86ed-668d1c2f6d7a", + "Name": null + }, + "84d82613-1663-47ed-b854-d61149a1ba45": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "84d82613-1663-47ed-b854-d61149a1ba45", + "Name": "W12x152", + "CellId": 41, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ffa65e98-279b-4838-bd1d-b61819892491": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 27.875, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ffa65e98-279b-4838-bd1d-b61819892491", + "Name": null + }, + "1defd089-935e-4a24-b99e-c13d0502a09d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "1defd089-935e-4a24-b99e-c13d0502a09d", + "Name": "W12x152", + "CellId": 42, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3dda4dbd-8b8d-4638-b874-e8221e9f45ba": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 17.75, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3dda4dbd-8b8d-4638-b874-e8221e9f45ba", + "Name": null + }, + "8149523d-6285-4cd6-97fd-ad49a05bf490": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "8149523d-6285-4cd6-97fd-ad49a05bf490", + "Name": "W12x152", + "CellId": 42, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0312cd53-fa86-4ac4-980b-e10998643044": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 19.5, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0312cd53-fa86-4ac4-980b-e10998643044", + "Name": null + }, + "25c866f6-b7be-4109-a373-06f2ad031549": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "25c866f6-b7be-4109-a373-06f2ad031549", + "Name": "W12x152", + "CellId": 42, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4a9110d6-0d5f-4f9d-9e82-218c1c256689": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 21.25, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4a9110d6-0d5f-4f9d-9e82-218c1c256689", + "Name": null + }, + "6397a936-d1b9-48b0-91ce-7bc44c5f4f78": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "6397a936-d1b9-48b0-91ce-7bc44c5f4f78", + "Name": "W12x152", + "CellId": 43, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "538cc0e5-6b6f-4595-9f77-cd6478003329": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 10.75, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "538cc0e5-6b6f-4595-9f77-cd6478003329", + "Name": null + }, + "85bdf280-2915-4ad7-9914-188f075856c9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "85bdf280-2915-4ad7-9914-188f075856c9", + "Name": "W12x152", + "CellId": 43, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ec630cc5-ff39-4cdc-bbbd-f587ca9bf7ad": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 12.5, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ec630cc5-ff39-4cdc-bbbd-f587ca9bf7ad", + "Name": null + }, + "56752b61-d7a6-47b6-8072-47dc61e93793": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "56752b61-d7a6-47b6-8072-47dc61e93793", + "Name": "W12x152", + "CellId": 43, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "82d39ff1-998f-4a17-84e4-331393f50f34": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 14.25, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "82d39ff1-998f-4a17-84e4-331393f50f34", + "Name": null + }, + "33b52d2b-f8a0-492b-8968-4ed518d6eee9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "33b52d2b-f8a0-492b-8968-4ed518d6eee9", + "Name": "W12x152", + "CellId": 44, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e6a55ae0-7c22-425e-9ae8-595ba5d2803b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 3.75, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e6a55ae0-7c22-425e-9ae8-595ba5d2803b", + "Name": null + }, + "1d409dbd-5056-42d8-aa40-2973d3e2d7c3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "1d409dbd-5056-42d8-aa40-2973d3e2d7c3", + "Name": "W12x152", + "CellId": 44, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "faf54d56-b8f3-4b07-b94b-604c1324f65c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 5.5, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "faf54d56-b8f3-4b07-b94b-604c1324f65c", + "Name": null + }, + "ec96e27f-b66b-445a-82cb-85bf8bc44063": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "ec96e27f-b66b-445a-82cb-85bf8bc44063", + "Name": "W12x152", + "CellId": 44, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b9441968-fa3c-4b93-aa8a-c22fd1a00435": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 7.25, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b9441968-fa3c-4b93-aa8a-c22fd1a00435", + "Name": null + }, + "3048093c-84ba-4cdd-a861-f3fe3bf174ea": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -48.333333333333336, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "3048093c-84ba-4cdd-a861-f3fe3bf174ea", + "Name": "W12x152", + "CellId": 45, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "b2990e62-17ab-4dcb-9238-910a7e181b75": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -48.333333333333336, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -48.333333333333336, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b2990e62-17ab-4dcb-9238-910a7e181b75", + "Name": null + }, + "5186e40a-234f-43c7-9df7-b18b53944bf3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -46.666666666666664, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "5186e40a-234f-43c7-9df7-b18b53944bf3", + "Name": "W12x152", + "CellId": 45, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "faa6d2dc-4712-4f6c-8ed5-f08d0b9f9990": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -46.666666666666664, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -46.666666666666664, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "faa6d2dc-4712-4f6c-8ed5-f08d0b9f9990", + "Name": null + }, + "ff7a015a-8459-44a6-a363-543bb7a0ad23": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "ff7a015a-8459-44a6-a363-543bb7a0ad23", + "Name": "W12x152", + "CellId": 46, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "15cdca0f-25aa-4287-9e32-85d1d91cfff8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 24.625, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "15cdca0f-25aa-4287-9e32-85d1d91cfff8", + "Name": null + }, + "fab6a8d3-4942-4112-9ba7-ed958b4bbc2b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "fab6a8d3-4942-4112-9ba7-ed958b4bbc2b", + "Name": "W12x152", + "CellId": 46, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9a11745d-ed4c-4caf-84e0-8284a1a3e7ac": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 26.25, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9a11745d-ed4c-4caf-84e0-8284a1a3e7ac", + "Name": null + }, + "0bce3971-c00b-4adc-8b73-e1b5881300a0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "0bce3971-c00b-4adc-8b73-e1b5881300a0", + "Name": "W12x152", + "CellId": 46, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "47151969-1411-4cd4-a8e7-0b12a144292c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 27.875, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "47151969-1411-4cd4-a8e7-0b12a144292c", + "Name": null + }, + "54b14074-d71e-438e-81e2-ab436c2ff359": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "54b14074-d71e-438e-81e2-ab436c2ff359", + "Name": "W12x152", + "CellId": 47, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "feb5ef92-59c7-410b-99f9-00b0fca9415f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 17.75, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "feb5ef92-59c7-410b-99f9-00b0fca9415f", + "Name": null + }, + "d2705ada-62cf-4c15-b9e7-89039d07dcfe": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "d2705ada-62cf-4c15-b9e7-89039d07dcfe", + "Name": "W12x152", + "CellId": 47, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0041a7fe-72f5-4b49-a8ef-c6fa9da5136f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 19.5, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0041a7fe-72f5-4b49-a8ef-c6fa9da5136f", + "Name": null + }, + "d097b48a-7968-4c68-bfa5-888badba72a6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "d097b48a-7968-4c68-bfa5-888badba72a6", + "Name": "W12x152", + "CellId": 47, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d0c5af5f-1bd1-467a-affd-30d78ae2a10f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 21.25, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d0c5af5f-1bd1-467a-affd-30d78ae2a10f", + "Name": null + }, + "258b3022-b11f-4961-b5a2-6fff2538d5e2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "258b3022-b11f-4961-b5a2-6fff2538d5e2", + "Name": "W12x152", + "CellId": 48, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e5334086-20d8-43d8-afcd-779e88da33a9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 10.75, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e5334086-20d8-43d8-afcd-779e88da33a9", + "Name": null + }, + "6e6b024b-64ed-471e-ac9b-008ac3d24ba1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "6e6b024b-64ed-471e-ac9b-008ac3d24ba1", + "Name": "W12x152", + "CellId": 48, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "dc7eb616-2236-4d18-9e2d-7c882556ee97": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 12.5, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dc7eb616-2236-4d18-9e2d-7c882556ee97", + "Name": null + }, + "4bb67059-5567-471b-beb3-db6ca779f84e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "4bb67059-5567-471b-beb3-db6ca779f84e", + "Name": "W12x152", + "CellId": 48, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "001a6dce-2246-4e22-83d1-73feb574d55f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 14.25, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "001a6dce-2246-4e22-83d1-73feb574d55f", + "Name": null + }, + "06fdb599-0bc9-43d3-9017-f88c3bc7fd88": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "06fdb599-0bc9-43d3-9017-f88c3bc7fd88", + "Name": "W12x152", + "CellId": 49, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "341ac4e5-c785-4871-905d-a558945e0340": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 3.75, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "341ac4e5-c785-4871-905d-a558945e0340", + "Name": null + }, + "6fd0dcd2-2419-4329-80b7-e20af2dfdb74": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "6fd0dcd2-2419-4329-80b7-e20af2dfdb74", + "Name": "W12x152", + "CellId": 49, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ea4d4086-ba12-4519-bbb5-8a9000e2ab82": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 5.5, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ea4d4086-ba12-4519-bbb5-8a9000e2ab82", + "Name": null + }, + "7701b0d6-8e86-4a06-a93a-8acdc7941c8b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "7701b0d6-8e86-4a06-a93a-8acdc7941c8b", + "Name": "W12x152", + "CellId": 49, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4fa85be3-f0a4-48f6-8852-742df1089b7a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 7.25, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4fa85be3-f0a4-48f6-8852-742df1089b7a", + "Name": null + }, + "1f90d02b-8571-4f67-afe2-24a28461f9dc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -53.333333333333336, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "1f90d02b-8571-4f67-afe2-24a28461f9dc", + "Name": "W12x152", + "CellId": 50, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "87fe4c99-5d96-4e17-bfc0-049056f687e3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -53.333333333333336, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -53.333333333333336, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "87fe4c99-5d96-4e17-bfc0-049056f687e3", + "Name": null + }, + "32ad6738-92e1-4538-a30b-635baf62844e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -51.666666666666664, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "32ad6738-92e1-4538-a30b-635baf62844e", + "Name": "W12x152", + "CellId": 50, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "b2080833-e891-4dd1-9754-20b1fbdaf1f3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -51.666666666666664, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -51.666666666666664, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b2080833-e891-4dd1-9754-20b1fbdaf1f3", + "Name": null + }, + "e8935f23-dd81-4ea7-bf7d-f5e2ad573662": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "e8935f23-dd81-4ea7-bf7d-f5e2ad573662", + "Name": "W12x152", + "CellId": 51, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e8125461-d3f9-4b89-a188-46993d6aa68d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 24.625, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e8125461-d3f9-4b89-a188-46993d6aa68d", + "Name": null + }, + "c7863400-3b54-493a-8faa-38df573f3405": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "c7863400-3b54-493a-8faa-38df573f3405", + "Name": "W12x152", + "CellId": 51, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c77bcd6b-6571-4605-b316-fe4d1f5e2486": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 26.25, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c77bcd6b-6571-4605-b316-fe4d1f5e2486", + "Name": null + }, + "0455ce8d-663f-4318-aad5-0273f391f0de": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "0455ce8d-663f-4318-aad5-0273f391f0de", + "Name": "W12x152", + "CellId": 51, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "36cb2c1d-0483-40d4-8cb0-a5761f913dac": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 27.875, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "36cb2c1d-0483-40d4-8cb0-a5761f913dac", + "Name": null + }, + "7600ab4a-8e78-4509-bb27-31e149b89521": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "7600ab4a-8e78-4509-bb27-31e149b89521", + "Name": "W12x152", + "CellId": 52, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fb4ca93f-0a6e-425d-8c4a-6636016e8459": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 17.75, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fb4ca93f-0a6e-425d-8c4a-6636016e8459", + "Name": null + }, + "00d95ddf-1c46-4185-a929-a31e677bf546": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "00d95ddf-1c46-4185-a929-a31e677bf546", + "Name": "W12x152", + "CellId": 52, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e7e849a6-dac6-478e-a435-adfa132a5cf5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 19.5, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e7e849a6-dac6-478e-a435-adfa132a5cf5", + "Name": null + }, + "690009a1-6505-410a-bc6c-9868cdb0666e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "690009a1-6505-410a-bc6c-9868cdb0666e", + "Name": "W12x152", + "CellId": 52, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b625663c-6efb-4989-80f1-38e0519fab1f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 21.25, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b625663c-6efb-4989-80f1-38e0519fab1f", + "Name": null + }, + "15100931-1975-43c6-991b-5d63b38d6121": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "15100931-1975-43c6-991b-5d63b38d6121", + "Name": "W12x152", + "CellId": 53, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "17961a87-10bc-4933-affc-e5b725a2b2b9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 10.75, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "17961a87-10bc-4933-affc-e5b725a2b2b9", + "Name": null + }, + "d8243927-456e-40f2-8664-99435be45590": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "d8243927-456e-40f2-8664-99435be45590", + "Name": "W12x152", + "CellId": 53, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "70dccfe1-19d9-446c-ba4c-e407b7665f98": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 12.5, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "70dccfe1-19d9-446c-ba4c-e407b7665f98", + "Name": null + }, + "075ba440-62c6-4b8b-a21c-82e3cb321e5f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "075ba440-62c6-4b8b-a21c-82e3cb321e5f", + "Name": "W12x152", + "CellId": 53, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "465388dd-8bb2-49f9-83ee-5e5c40dc351c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 14.25, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "465388dd-8bb2-49f9-83ee-5e5c40dc351c", + "Name": null + }, + "637a75a3-2d39-4442-930e-18f572fcdab2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "637a75a3-2d39-4442-930e-18f572fcdab2", + "Name": "W12x152", + "CellId": 54, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1f1f386b-a948-493b-aaa5-f520eda392de": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 3.75, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1f1f386b-a948-493b-aaa5-f520eda392de", + "Name": null + }, + "0964864d-4de1-4504-a3f3-f1be62322303": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "0964864d-4de1-4504-a3f3-f1be62322303", + "Name": "W12x152", + "CellId": 54, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "788cc98b-c790-4090-a5b3-2cf6d735d915": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 5.5, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "788cc98b-c790-4090-a5b3-2cf6d735d915", + "Name": null + }, + "f0a1ec0a-34d1-4cf0-aeb2-55e6775acdbb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "f0a1ec0a-34d1-4cf0-aeb2-55e6775acdbb", + "Name": "W12x152", + "CellId": 54, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5c2ba50c-d268-407a-b3fa-424a3aff5b4e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 7.25, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5c2ba50c-d268-407a-b3fa-424a3aff5b4e", + "Name": null + }, + "968f45da-4b94-4439-8f65-786a8c2c82bc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -58.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "968f45da-4b94-4439-8f65-786a8c2c82bc", + "Name": "W12x152", + "CellId": 55, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "9a769399-8a56-49d8-9dc7-7a28897dd8eb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -58.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -58.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9a769399-8a56-49d8-9dc7-7a28897dd8eb", + "Name": null + }, + "80d4719d-16d2-4c85-abc7-2c9bf1c9062f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -56.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "80d4719d-16d2-4c85-abc7-2c9bf1c9062f", + "Name": "W12x152", + "CellId": 55, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "e0227426-93d4-4c10-9641-ba01a1b25013": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -56.5, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -56.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e0227426-93d4-4c10-9641-ba01a1b25013", + "Name": null + }, + "6701434d-0f43-4246-8fc0-421add9c4114": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "0a4b6575-3b0a-47a0-834e-6e427af090ca", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -2.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "6701434d-0f43-4246-8fc0-421add9c4114", + "Name": "W12x152", + "CellId": 56, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "fa62210f-3d65-4b42-90bc-d2c9550d00a2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -2.0, + "Z": 4.5 + }, + "End": { + "X": 10.7324, + "Y": -2.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fa62210f-3d65-4b42-90bc-d2c9550d00a2", + "Name": null + }, + "55b9bef1-cc8f-4fc0-8160-e9c175b12363": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c30b6320-d3a9-4244-9b8e-ff895659beb0", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -3.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "55b9bef1-cc8f-4fc0-8160-e9c175b12363", + "Name": "W12x152", + "CellId": 56, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "fa279c34-e83f-48c1-89ad-f82b855a07a3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -3.5, + "Z": 4.5 + }, + "End": { + "X": 11.7324, + "Y": -3.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fa279c34-e83f-48c1-89ad-f82b855a07a3", + "Name": null + }, + "b261ade4-365e-4274-a1b2-bb9f2e4399ea": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "b261ade4-365e-4274-a1b2-bb9f2e4399ea", + "Name": "W12x152", + "CellId": 57, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3c028b52-430a-4892-911a-df5bd0dc4492": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -5.0, + "Z": 4.5 + }, + "End": { + "X": 3.75, + "Y": -0.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3c028b52-430a-4892-911a-df5bd0dc4492", + "Name": null + }, + "2ad7ec5a-6b8f-49bc-a1f4-592ecfe3d430": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "2ad7ec5a-6b8f-49bc-a1f4-592ecfe3d430", + "Name": "W12x152", + "CellId": 57, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ed853a84-b441-4419-9c02-38391678d16c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -5.0, + "Z": 4.5 + }, + "End": { + "X": 5.5, + "Y": -0.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ed853a84-b441-4419-9c02-38391678d16c", + "Name": null + }, + "c5616dd2-01d9-455a-8dae-bf1a3e1df618": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c5616dd2-01d9-455a-8dae-bf1a3e1df618", + "Name": "W12x152", + "CellId": 57, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "dd32bd8f-19ae-46f3-a1d4-69931b5fab33": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -5.0, + "Z": 4.5 + }, + "End": { + "X": 7.25, + "Y": -0.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dd32bd8f-19ae-46f3-a1d4-69931b5fab33", + "Name": null + }, + "ce6c1c76-0402-40ec-a4a6-5739e5bebdb0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -3.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "ce6c1c76-0402-40ec-a4a6-5739e5bebdb0", + "Name": "W12x152", + "CellId": 58, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "0cbe0dc7-9d97-46f9-9aab-85b721d12dea": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -3.5, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -3.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0cbe0dc7-9d97-46f9-9aab-85b721d12dea", + "Name": null + }, + "396986ce-fdd9-4e55-9803-3f40f334b605": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -2.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "396986ce-fdd9-4e55-9803-3f40f334b605", + "Name": "W12x152", + "CellId": 58, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "a5f9b05d-6042-44a6-81dd-fd14baa81b26": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -2.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -2.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a5f9b05d-6042-44a6-81dd-fd14baa81b26", + "Name": null + }, + "b3f3256f-e85a-4c39-8456-7f7db0909cbd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "b3f3256f-e85a-4c39-8456-7f7db0909cbd", + "Name": "W12x152", + "CellId": 60, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a93f0007-a3c0-4bdd-8602-5b81f4ee15b9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 10.75, + "Y": -5.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a93f0007-a3c0-4bdd-8602-5b81f4ee15b9", + "Name": null + }, + "619afdb1-6256-4100-a479-e72b85ddb8d7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "619afdb1-6256-4100-a479-e72b85ddb8d7", + "Name": "W12x152", + "CellId": 60, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "09cb8cd4-ee2b-4010-8d00-fddb0bb2c0dd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 12.5, + "Y": -5.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "09cb8cd4-ee2b-4010-8d00-fddb0bb2c0dd", + "Name": null + }, + "83bc39ab-b84a-4605-b9d1-7bd340157ecb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d463367e-606b-478f-9829-18208e0b592e", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "83bc39ab-b84a-4605-b9d1-7bd340157ecb", + "Name": "W12x152", + "CellId": 60, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7bcc7b5f-a821-4961-842e-1d49d2bd924b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 14.25, + "Y": -7.276400000000001, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7bcc7b5f-a821-4961-842e-1d49d2bd924b", + "Name": null + }, + "fb504016-2527-4dad-b430-898193a2a808": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "fb504016-2527-4dad-b430-898193a2a808", + "Name": "W12x152", + "CellId": 61, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c26c2b26-077b-4fa3-96b3-f8d0772adf48": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 3.75, + "Y": -5.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c26c2b26-077b-4fa3-96b3-f8d0772adf48", + "Name": null + }, + "1dedd239-f930-4799-a4a2-3ec4dc482d0f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "1dedd239-f930-4799-a4a2-3ec4dc482d0f", + "Name": "W12x152", + "CellId": 61, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "68869671-7da9-43c6-ad06-fd254e03bd04": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 5.5, + "Y": -5.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "68869671-7da9-43c6-ad06-fd254e03bd04", + "Name": null + }, + "a507e084-1bbf-40e5-9008-5a244321c8c9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "a507e084-1bbf-40e5-9008-5a244321c8c9", + "Name": "W12x152", + "CellId": 61, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3e7a6f04-3b8d-4752-89b7-2d65a9b8c63d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 7.25, + "Y": -5.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3e7a6f04-3b8d-4752-89b7-2d65a9b8c63d", + "Name": null + }, + "561a7c11-8eb7-414e-93b3-064e99c27024": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -8.333333333333334, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "561a7c11-8eb7-414e-93b3-064e99c27024", + "Name": "W12x152", + "CellId": 62, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "0f07076a-f4c8-46ff-8c75-14c538502b11": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -8.333333333333334, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -8.333333333333334, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0f07076a-f4c8-46ff-8c75-14c538502b11", + "Name": null + }, + "593ac25c-f4cd-4f0c-bc54-1286d139fef4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -6.666666666666667, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "593ac25c-f4cd-4f0c-bc54-1286d139fef4", + "Name": "W12x152", + "CellId": 62, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "3c0330fb-e6fd-4ea6-9a94-72f074c3d0be": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -6.666666666666667, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -6.666666666666667, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3c0330fb-e6fd-4ea6-9a94-72f074c3d0be", + "Name": null + }, + "d5e236ee-8fd5-4394-9ec2-963c2d7d7dc2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e9998d1f-f37e-4ec1-9a37-d6129df9567b", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -11.666666666666666, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "d5e236ee-8fd5-4394-9ec2-963c2d7d7dc2", + "Name": "W12x152", + "CellId": 63, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "1c829662-b34d-48e2-827f-b944f894d46c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -11.666666666666666, + "Z": 4.5 + }, + "End": { + "X": 17.176846666666666, + "Y": -11.666666666666666, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1c829662-b34d-48e2-827f-b944f894d46c", + "Name": null + }, + "0a3921b5-8260-4ec0-9e21-5d23d7706107": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "48a4ab2f-6f28-414c-be2a-e0687d5249cc", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -13.333333333333332, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "0a3921b5-8260-4ec0-9e21-5d23d7706107", + "Name": "W12x152", + "CellId": 63, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "a0dbc267-3a59-44e9-bda6-9a3c40211482": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -13.333333333333332, + "Z": 4.5 + }, + "End": { + "X": 18.287953333333334, + "Y": -13.333333333333332, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a0dbc267-3a59-44e9-bda6-9a3c40211482", + "Name": null + }, + "b44d84ab-0c0c-4ff5-816a-237a24954bf0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "b44d84ab-0c0c-4ff5-816a-237a24954bf0", + "Name": "W12x152", + "CellId": 64, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0c0ac027-58cc-4653-a763-f0a6ad80eab1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 10.75, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0c0ac027-58cc-4653-a763-f0a6ad80eab1", + "Name": null + }, + "f3e2deb1-5266-4012-a2fe-6b3980208a9d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "f3e2deb1-5266-4012-a2fe-6b3980208a9d", + "Name": "W12x152", + "CellId": 64, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "187270af-2998-465d-8803-c94142b6b374": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 12.5, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "187270af-2998-465d-8803-c94142b6b374", + "Name": null + }, + "f4ae489d-2ea4-49ef-89e1-daf21f599be7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "f4ae489d-2ea4-49ef-89e1-daf21f599be7", + "Name": "W12x152", + "CellId": 64, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9b558d81-2d62-45ba-8fa8-ae6848d3cfa9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 14.25, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9b558d81-2d62-45ba-8fa8-ae6848d3cfa9", + "Name": null + }, + "d4cf8946-a98d-4965-b70e-c621562d9bdc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "d4cf8946-a98d-4965-b70e-c621562d9bdc", + "Name": "W12x152", + "CellId": 65, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "384a95c6-4953-46fa-b771-6f672153c731": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 3.75, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "384a95c6-4953-46fa-b771-6f672153c731", + "Name": null + }, + "aa4f7acd-cdd7-4fb9-819e-f790b6c87622": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "aa4f7acd-cdd7-4fb9-819e-f790b6c87622", + "Name": "W12x152", + "CellId": 65, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fd91afa9-d003-4d87-8299-b62124f26285": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 5.5, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fd91afa9-d003-4d87-8299-b62124f26285", + "Name": null + }, + "f13cb1cc-45eb-46d7-a1ad-ca7ac1c0f613": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "f13cb1cc-45eb-46d7-a1ad-ca7ac1c0f613", + "Name": "W12x152", + "CellId": 65, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "97199b05-25d4-4f57-92a1-a5d55f0bde36": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 7.25, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "97199b05-25d4-4f57-92a1-a5d55f0bde36", + "Name": null + }, + "16ad6ad7-fe6d-4074-a6d5-253d3d759b79": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -13.333333333333334, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "16ad6ad7-fe6d-4074-a6d5-253d3d759b79", + "Name": "W12x152", + "CellId": 66, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "dd9cf534-54ef-4b97-af2a-e5dd0d4bb853": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -13.333333333333334, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -13.333333333333334, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dd9cf534-54ef-4b97-af2a-e5dd0d4bb853", + "Name": null + }, + "cf08ea34-f3d6-47dc-9502-1089b294828b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -11.666666666666668, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "cf08ea34-f3d6-47dc-9502-1089b294828b", + "Name": "W12x152", + "CellId": 66, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "b1bb3b10-90d7-48f2-8318-1bfb91b6dfce": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -11.666666666666668, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -11.666666666666668, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b1bb3b10-90d7-48f2-8318-1bfb91b6dfce", + "Name": null + }, + "5387c4d5-641f-4bac-a9c6-6259305d7787": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.6831, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "5387c4d5-641f-4bac-a9c6-6259305d7787", + "Name": "W12x152", + "CellId": 67, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7413e4a7-ed66-467c-a440-73d9e3be0b4a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.6831, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 17.6831, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7413e4a7-ed66-467c-a440-73d9e3be0b4a", + "Name": null + }, + "31670057-d19b-4857-a81f-584a52e80a4c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.3662, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "31670057-d19b-4857-a81f-584a52e80a4c", + "Name": "W12x152", + "CellId": 67, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0e3b7d71-85cb-47c2-9179-bd4fc7d4b2b0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.3662, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 19.3662, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0e3b7d71-85cb-47c2-9179-bd4fc7d4b2b0", + "Name": null + }, + "0c33af87-2d2c-4039-aafe-fd070c760e90": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "a14957ee-e204-468a-8e80-821f5ea2eabc", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.0493, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "0c33af87-2d2c-4039-aafe-fd070c760e90", + "Name": "W12x152", + "CellId": 67, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6c8e64bc-97f7-4e16-a58d-4e930eebfc62": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.0493, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 21.0493, + "Y": -17.475355049289902, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6c8e64bc-97f7-4e16-a58d-4e930eebfc62", + "Name": null + }, + "84b99e41-0bd6-49f2-a31f-345b4c7fe62a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "84b99e41-0bd6-49f2-a31f-345b4c7fe62a", + "Name": "W12x152", + "CellId": 68, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3aec494c-22f6-4806-8e62-dac0f8956738": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 10.75, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3aec494c-22f6-4806-8e62-dac0f8956738", + "Name": null + }, + "5c4364fd-a54d-467e-b4ea-a977a7f455fa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "5c4364fd-a54d-467e-b4ea-a977a7f455fa", + "Name": "W12x152", + "CellId": 68, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "8b4af1e4-d2e0-4f47-ae08-a058ecebfab1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 12.5, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8b4af1e4-d2e0-4f47-ae08-a058ecebfab1", + "Name": null + }, + "584198b5-38c5-4905-b375-cd8c3bb74cd3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "584198b5-38c5-4905-b375-cd8c3bb74cd3", + "Name": "W12x152", + "CellId": 68, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c921e919-9129-413d-8167-6436911aab30": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 14.25, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c921e919-9129-413d-8167-6436911aab30", + "Name": null + }, + "0f977749-1e6a-4b94-8dd5-92cd801508e6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "0f977749-1e6a-4b94-8dd5-92cd801508e6", + "Name": "W12x152", + "CellId": 69, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9fbc3ea3-67b6-4638-a3e8-a0607df86e16": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 3.75, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9fbc3ea3-67b6-4638-a3e8-a0607df86e16", + "Name": null + }, + "c99b9077-2dfb-4357-aeb8-88c50b2e28df": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c99b9077-2dfb-4357-aeb8-88c50b2e28df", + "Name": "W12x152", + "CellId": 69, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "96b4ac7e-0c48-46cb-a449-71956a0b00d3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 5.5, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "96b4ac7e-0c48-46cb-a449-71956a0b00d3", + "Name": null + }, + "6143794a-f527-4389-8969-2288540ddb06": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "6143794a-f527-4389-8969-2288540ddb06", + "Name": "W12x152", + "CellId": 69, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3d5cfaf9-d5f3-493f-9a1f-77de7f77a3d7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 7.25, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3d5cfaf9-d5f3-493f-9a1f-77de7f77a3d7", + "Name": null + }, + "e9a53ced-f7fd-4c27-97df-0659dcec6f5a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -18.333333333333332, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e9a53ced-f7fd-4c27-97df-0659dcec6f5a", + "Name": "W12x152", + "CellId": 70, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "e0ec27ac-bfc3-4d43-bbde-234a262529f9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -18.333333333333332, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -18.333333333333332, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e0ec27ac-bfc3-4d43-bbde-234a262529f9", + "Name": null + }, + "e67e7c2f-4f6c-4888-a0dd-1b5a87c0f1d7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -16.666666666666668, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e67e7c2f-4f6c-4888-a0dd-1b5a87c0f1d7", + "Name": "W12x152", + "CellId": 70, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "16379624-1663-4e12-aee8-04fb723bc2c3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -16.666666666666668, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -16.666666666666668, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "16379624-1663-4e12-aee8-04fb723bc2c3", + "Name": null + }, + "de17ad04-469e-42a8-89a6-68b273095909": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "00428e4f-d368-4fa9-9b91-6b35a98db880", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -21.934266666666666, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "de17ad04-469e-42a8-89a6-68b273095909", + "Name": "W12x152", + "CellId": 71, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "80a77184-39e3-4051-9413-677980823a6d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -21.934266666666666, + "Z": 4.5 + }, + "End": { + "X": 24.021913333333334, + "Y": -21.934266666666666, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "80a77184-39e3-4051-9413-677980823a6d", + "Name": null + }, + "455c663c-ba94-4218-b4f9-f751b931fb58": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2a51b0ec-7a36-4993-b509-32bf4c52b9b4", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -23.467133333333333, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "455c663c-ba94-4218-b4f9-f751b931fb58", + "Name": "W12x152", + "CellId": 71, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "784cd6a2-5278-451e-a627-8b0de0665249": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -23.467133333333333, + "Z": 4.5 + }, + "End": { + "X": 25.043826666666668, + "Y": -23.467133333333333, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "784cd6a2-5278-451e-a627-8b0de0665249", + "Name": null + }, + "a46a60c9-261c-4731-b26f-83039fec692b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "a46a60c9-261c-4731-b26f-83039fec692b", + "Name": "W12x152", + "CellId": 72, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "39e5e052-ac85-4db4-9af2-3dcaa6ec765f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 17.75, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "39e5e052-ac85-4db4-9af2-3dcaa6ec765f", + "Name": null + }, + "1e202d8a-3a21-49e2-bf9d-e4b6c177e437": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "1e202d8a-3a21-49e2-bf9d-e4b6c177e437", + "Name": "W12x152", + "CellId": 72, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "2a1f2e64-9736-4479-9325-f622a3b7c674": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 19.5, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2a1f2e64-9736-4479-9325-f622a3b7c674", + "Name": null + }, + "ee069bf7-c16f-4d4e-91b5-054a7aff4278": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "ee069bf7-c16f-4d4e-91b5-054a7aff4278", + "Name": "W12x152", + "CellId": 72, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "8f04c1d6-b90d-49ee-b10f-63bea865cbcc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 21.25, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8f04c1d6-b90d-49ee-b10f-63bea865cbcc", + "Name": null + }, + "7297ec1a-8930-4e06-a866-31fb8d94d186": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "7297ec1a-8930-4e06-a866-31fb8d94d186", + "Name": "W12x152", + "CellId": 73, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f0cf8f2d-73e9-4b97-b838-24fdcbec3068": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 10.75, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f0cf8f2d-73e9-4b97-b838-24fdcbec3068", + "Name": null + }, + "e26b9d77-9456-4938-94fe-278794ddfae2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e26b9d77-9456-4938-94fe-278794ddfae2", + "Name": "W12x152", + "CellId": 73, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "87873f2a-a7ba-459d-b78c-eb877ee54129": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 12.5, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "87873f2a-a7ba-459d-b78c-eb877ee54129", + "Name": null + }, + "cb2520cf-e040-4f08-91b8-7dea1e8aaa3f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "cb2520cf-e040-4f08-91b8-7dea1e8aaa3f", + "Name": "W12x152", + "CellId": 73, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "bb053993-6d3b-4807-abef-6536a0c9f798": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 14.25, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bb053993-6d3b-4807-abef-6536a0c9f798", + "Name": null + }, + "c2bc8e95-3dac-4fd9-b50d-0fb57ff6ccef": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c2bc8e95-3dac-4fd9-b50d-0fb57ff6ccef", + "Name": "W12x152", + "CellId": 74, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9fddaf8e-3717-4e3b-b29d-7ec212ddf88d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 3.75, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9fddaf8e-3717-4e3b-b29d-7ec212ddf88d", + "Name": null + }, + "1ba5e032-d676-418d-bc69-d1b8f5ea05c3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "1ba5e032-d676-418d-bc69-d1b8f5ea05c3", + "Name": "W12x152", + "CellId": 74, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a43995ae-ab4a-4b6b-9696-8e32bd8d7da7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 5.5, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a43995ae-ab4a-4b6b-9696-8e32bd8d7da7", + "Name": null + }, + "650bbc29-361f-48d5-bb33-3a53b6523c70": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "650bbc29-361f-48d5-bb33-3a53b6523c70", + "Name": "W12x152", + "CellId": 74, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1ad125a4-d6ba-420e-b4d1-ebc91ef566aa": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 7.25, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1ad125a4-d6ba-420e-b4d1-ebc91ef566aa", + "Name": null + }, + "db6462b2-4ec0-4687-82a4-8048e8dee909": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -23.333333333333332, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "db6462b2-4ec0-4687-82a4-8048e8dee909", + "Name": "W12x152", + "CellId": 75, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "e0f35987-516b-402b-9745-8f25b8cad172": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -23.333333333333332, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -23.333333333333332, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e0f35987-516b-402b-9745-8f25b8cad172", + "Name": null + }, + "49307561-c298-4bab-bf15-d6b5b8cb24c1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -21.666666666666668, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "49307561-c298-4bab-bf15-d6b5b8cb24c1", + "Name": "W12x152", + "CellId": 75, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "d80a7e53-a017-4385-a070-826b0c263816": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -21.666666666666668, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -21.666666666666668, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d80a7e53-a017-4385-a070-826b0c263816", + "Name": null + }, + "7ed98e55-424b-4007-95bd-766d79b88516": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.599764999999998, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "7ed98e55-424b-4007-95bd-766d79b88516", + "Name": "W12x152", + "CellId": 76, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d5f29363-2a98-460c-9ff9-4a17d2469386": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.599764999999998, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 24.599764999999998, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d5f29363-2a98-460c-9ff9-4a17d2469386", + "Name": null + }, + "d784f63f-d237-4ecc-9d75-d482131f64af": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c86c7794-702f-43dc-82a1-ccf5f1b5deea", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.19953, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "d784f63f-d237-4ecc-9d75-d482131f64af", + "Name": "W12x152", + "CellId": 76, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b0484559-5740-4c9c-ada2-0b2be1cd57ed": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.19953, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 26.19953, + "Y": -25.20068580274321, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b0484559-5740-4c9c-ada2-0b2be1cd57ed", + "Name": null + }, + "cedf693a-2b2b-4779-acd4-09643f472bb8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d27c8274-35d1-48e6-a623-33a7ddfb778f", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.799295, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "cedf693a-2b2b-4779-acd4-09643f472bb8", + "Name": "W12x152", + "CellId": 76, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "24e17091-89e4-4c6f-9814-563b4ef3b4c7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.799295, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 27.799295, + "Y": -27.600342901371604, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "24e17091-89e4-4c6f-9814-563b4ef3b4c7", + "Name": null + }, + "091fb905-c39f-4a71-ab72-6977e34a1b01": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "091fb905-c39f-4a71-ab72-6977e34a1b01", + "Name": "W12x152", + "CellId": 77, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "da578b44-6d47-47bb-a5cf-a809ea3c76b0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 17.75, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "da578b44-6d47-47bb-a5cf-a809ea3c76b0", + "Name": null + }, + "08ac7b3a-7dcd-4196-a189-9ac2f093982c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "08ac7b3a-7dcd-4196-a189-9ac2f093982c", + "Name": "W12x152", + "CellId": 77, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7fe6c584-2a56-4aa0-8e62-7af19e04bf5a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 19.5, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7fe6c584-2a56-4aa0-8e62-7af19e04bf5a", + "Name": null + }, + "530a41da-cf00-4aed-ad4c-040f592a9739": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "530a41da-cf00-4aed-ad4c-040f592a9739", + "Name": "W12x152", + "CellId": 77, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9506b85e-fbd5-49b8-8582-332db31df0d3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 21.25, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9506b85e-fbd5-49b8-8582-332db31df0d3", + "Name": null + }, + "e96bea8b-8554-452d-b3eb-1254958e5cfc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e96bea8b-8554-452d-b3eb-1254958e5cfc", + "Name": "W12x152", + "CellId": 78, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "97e39633-5e59-4689-8edb-0d00d60a345f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 10.75, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "97e39633-5e59-4689-8edb-0d00d60a345f", + "Name": null + }, + "ac4cf273-fb35-4567-9aaf-935618c9861d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "ac4cf273-fb35-4567-9aaf-935618c9861d", + "Name": "W12x152", + "CellId": 78, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "414482aa-3ada-467e-923b-1e5128b5ae1b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 12.5, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "414482aa-3ada-467e-923b-1e5128b5ae1b", + "Name": null + }, + "7d4edaec-5a71-43a4-b59c-225ff1c9d24b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "7d4edaec-5a71-43a4-b59c-225ff1c9d24b", + "Name": "W12x152", + "CellId": 78, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9ff6e2dc-6e80-4c26-b47a-36ba5fd395d9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 14.25, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9ff6e2dc-6e80-4c26-b47a-36ba5fd395d9", + "Name": null + }, + "e25a8f0b-0e07-4280-9447-23cf0348081c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e25a8f0b-0e07-4280-9447-23cf0348081c", + "Name": "W12x152", + "CellId": 79, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f0e254c4-1ed7-4afd-9601-7baf69ff1d59": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 3.75, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f0e254c4-1ed7-4afd-9601-7baf69ff1d59", + "Name": null + }, + "80552cf6-b8f4-4f21-a3e4-1444243061c1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "80552cf6-b8f4-4f21-a3e4-1444243061c1", + "Name": "W12x152", + "CellId": 79, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1f7734bf-68d8-404b-a87d-d410ef575ff4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 5.5, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1f7734bf-68d8-404b-a87d-d410ef575ff4", + "Name": null + }, + "f189330e-e564-4a61-82e5-0c962217dc42": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "f189330e-e564-4a61-82e5-0c962217dc42", + "Name": "W12x152", + "CellId": 79, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ea8a0107-23da-46a5-9b38-5f482d4d34ab": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 7.25, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ea8a0107-23da-46a5-9b38-5f482d4d34ab", + "Name": null + }, + "a62fbb4f-299f-409b-9b9a-3559f8211089": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -28.333333333333332, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "a62fbb4f-299f-409b-9b9a-3559f8211089", + "Name": "W12x152", + "CellId": 80, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "3753f0c9-bab2-4580-97b7-aad88b9e4c9a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -28.333333333333332, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -28.333333333333332, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3753f0c9-bab2-4580-97b7-aad88b9e4c9a", + "Name": null + }, + "8cd88dc3-de4b-464f-9945-1c99751c5bce": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -26.666666666666668, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "8cd88dc3-de4b-464f-9945-1c99751c5bce", + "Name": "W12x152", + "CellId": 80, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "9bf0167c-0909-4b79-ba21-accb7302dd0e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -26.666666666666668, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -26.666666666666668, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9bf0167c-0909-4b79-ba21-accb7302dd0e", + "Name": null + }, + "8a87f8ff-be8a-45ba-b196-dc0146b1c551": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "8a87f8ff-be8a-45ba-b196-dc0146b1c551", + "Name": "W12x152", + "CellId": 81, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1adbd266-7dda-4d9d-9bf9-90bb07d57701": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 24.625, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1adbd266-7dda-4d9d-9bf9-90bb07d57701", + "Name": null + }, + "472e5628-0755-4f92-8813-b55e66c28c8e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "472e5628-0755-4f92-8813-b55e66c28c8e", + "Name": "W12x152", + "CellId": 81, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "854a4e3b-cefd-4249-b29b-353a925154fe": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 26.25, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "854a4e3b-cefd-4249-b29b-353a925154fe", + "Name": null + }, + "4b004e60-701e-4c19-9fb2-128459ab6123": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "4b004e60-701e-4c19-9fb2-128459ab6123", + "Name": "W12x152", + "CellId": 81, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d9c2cf32-d0c9-43cb-97fe-0c4fd300acd4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 27.875, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d9c2cf32-d0c9-43cb-97fe-0c4fd300acd4", + "Name": null + }, + "ca675512-8c0d-4db3-a211-7136c759c266": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "ca675512-8c0d-4db3-a211-7136c759c266", + "Name": "W12x152", + "CellId": 82, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b62f0523-7bbb-43b5-9f51-e52e45719a9b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 17.75, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b62f0523-7bbb-43b5-9f51-e52e45719a9b", + "Name": null + }, + "57a4d532-95d8-40d8-8a3c-dadb9b91a0da": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "57a4d532-95d8-40d8-8a3c-dadb9b91a0da", + "Name": "W12x152", + "CellId": 82, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "99a9443c-366b-4fe3-a162-03568add5f0a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 19.5, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "99a9443c-366b-4fe3-a162-03568add5f0a", + "Name": null + }, + "72084327-e840-4655-a77f-2871e994016a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "72084327-e840-4655-a77f-2871e994016a", + "Name": "W12x152", + "CellId": 82, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1f7f1f50-1aaa-4ef9-9927-767dda547f45": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 21.25, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1f7f1f50-1aaa-4ef9-9927-767dda547f45", + "Name": null + }, + "985fa069-73da-4cd4-ac80-e591de4cf05c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "985fa069-73da-4cd4-ac80-e591de4cf05c", + "Name": "W12x152", + "CellId": 83, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ec420055-0334-45c8-98f1-6779c70b378a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 10.75, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ec420055-0334-45c8-98f1-6779c70b378a", + "Name": null + }, + "2f9f55e3-94c9-48ce-a437-c01fb86bd48b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "2f9f55e3-94c9-48ce-a437-c01fb86bd48b", + "Name": "W12x152", + "CellId": 83, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9b51973f-d6eb-4581-a6d4-268af1870004": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 12.5, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9b51973f-d6eb-4581-a6d4-268af1870004", + "Name": null + }, + "fb5d3aeb-b06a-4636-a922-83aed27a3387": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "fb5d3aeb-b06a-4636-a922-83aed27a3387", + "Name": "W12x152", + "CellId": 83, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b4ab9755-d182-4c52-adcd-cc613b4a06f2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 14.25, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b4ab9755-d182-4c52-adcd-cc613b4a06f2", + "Name": null + }, + "868f23f3-1290-4469-a2f6-910b831a8d60": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "868f23f3-1290-4469-a2f6-910b831a8d60", + "Name": "W12x152", + "CellId": 84, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "41291649-1152-4e1a-8409-e383dfcbe338": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 3.75, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "41291649-1152-4e1a-8409-e383dfcbe338", + "Name": null + }, + "ebf92b45-666c-4324-b75b-2c14136d32e1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "ebf92b45-666c-4324-b75b-2c14136d32e1", + "Name": "W12x152", + "CellId": 84, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "abe68cd4-6bae-40e9-8abc-6c2abc977f11": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 5.5, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "abe68cd4-6bae-40e9-8abc-6c2abc977f11", + "Name": null + }, + "8f10cee7-dd74-4dd6-aad3-df3c4c03397c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "8f10cee7-dd74-4dd6-aad3-df3c4c03397c", + "Name": "W12x152", + "CellId": 84, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b00d8de5-3502-4844-bcd0-344594843576": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 7.25, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b00d8de5-3502-4844-bcd0-344594843576", + "Name": null + }, + "9445e30c-847e-4c80-97e7-64c8054fe149": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -33.333333333333336, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "9445e30c-847e-4c80-97e7-64c8054fe149", + "Name": "W12x152", + "CellId": 85, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "4d4ba358-61a9-4350-9730-fa258ddfbefe": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -33.333333333333336, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -33.333333333333336, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4d4ba358-61a9-4350-9730-fa258ddfbefe", + "Name": null + }, + "db87897e-ef58-4f5e-b0fd-4c151c2ba0c8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -31.666666666666668, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "db87897e-ef58-4f5e-b0fd-4c151c2ba0c8", + "Name": "W12x152", + "CellId": 85, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "7c93273e-adca-4a6e-a724-7f9675976203": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -31.666666666666668, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -31.666666666666668, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7c93273e-adca-4a6e-a724-7f9675976203", + "Name": null + }, + "7fa620a2-b6dc-45ae-9342-cfd6795811a5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "7fa620a2-b6dc-45ae-9342-cfd6795811a5", + "Name": "W12x152", + "CellId": 86, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4f1a4b96-9ad9-4a15-bee8-89590395f206": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 24.625, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4f1a4b96-9ad9-4a15-bee8-89590395f206", + "Name": null + }, + "ba1080b3-b4df-4de2-9a4a-a6a663b76798": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "ba1080b3-b4df-4de2-9a4a-a6a663b76798", + "Name": "W12x152", + "CellId": 86, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "20559687-8984-4eb1-8f25-a8b3ad56688d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 26.25, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "20559687-8984-4eb1-8f25-a8b3ad56688d", + "Name": null + }, + "b15a372d-354a-475a-b958-e163e1d920e2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "b15a372d-354a-475a-b958-e163e1d920e2", + "Name": "W12x152", + "CellId": 86, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5e4bd655-1f7d-474e-b876-8dc2a249a7d9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 27.875, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5e4bd655-1f7d-474e-b876-8dc2a249a7d9", + "Name": null + }, + "23f16ac2-62c4-48e6-a50c-960b7d2f6751": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "23f16ac2-62c4-48e6-a50c-960b7d2f6751", + "Name": "W12x152", + "CellId": 87, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "bda08893-2a23-4f30-9da6-0a4ffb947f7b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 17.75, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bda08893-2a23-4f30-9da6-0a4ffb947f7b", + "Name": null + }, + "f176bd91-c733-492b-ac66-7bb438e3c090": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "f176bd91-c733-492b-ac66-7bb438e3c090", + "Name": "W12x152", + "CellId": 87, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "cdfc1ab5-6e50-40a0-9c45-e7722fbc3933": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 19.5, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cdfc1ab5-6e50-40a0-9c45-e7722fbc3933", + "Name": null + }, + "09112f5d-ef48-49ba-b91b-04c03d22594f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "09112f5d-ef48-49ba-b91b-04c03d22594f", + "Name": "W12x152", + "CellId": 87, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "89010543-17ad-4758-848d-c8d4877595ac": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 21.25, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "89010543-17ad-4758-848d-c8d4877595ac", + "Name": null + }, + "94363c3e-a4b8-46da-b129-cb0507f73066": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "94363c3e-a4b8-46da-b129-cb0507f73066", + "Name": "W12x152", + "CellId": 88, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "019d2053-f00f-458a-bb0f-8948b7de9a57": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 10.75, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "019d2053-f00f-458a-bb0f-8948b7de9a57", + "Name": null + }, + "b8125327-c8fc-4a48-a65b-a3f7c36e64ed": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "b8125327-c8fc-4a48-a65b-a3f7c36e64ed", + "Name": "W12x152", + "CellId": 88, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5b3cc45b-0ed4-40b4-81c4-1b3234085cc7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 12.5, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5b3cc45b-0ed4-40b4-81c4-1b3234085cc7", + "Name": null + }, + "81f26160-5a66-4a2f-922d-1b6684694155": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "81f26160-5a66-4a2f-922d-1b6684694155", + "Name": "W12x152", + "CellId": 88, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ae112366-a67d-490a-bd3e-55ed10c9f41e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 14.25, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ae112366-a67d-490a-bd3e-55ed10c9f41e", + "Name": null + }, + "d543905f-9bb0-44eb-8362-b7069bdd7f88": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "d543905f-9bb0-44eb-8362-b7069bdd7f88", + "Name": "W12x152", + "CellId": 89, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "26a09e4b-04c5-4ec8-9c67-60854b917bfe": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 3.75, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "26a09e4b-04c5-4ec8-9c67-60854b917bfe", + "Name": null + }, + "d56f7076-a85d-40da-8d05-a52a58172ebf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "d56f7076-a85d-40da-8d05-a52a58172ebf", + "Name": "W12x152", + "CellId": 89, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a774e18b-b2a0-4b07-ab44-6035a8264e3d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 5.5, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a774e18b-b2a0-4b07-ab44-6035a8264e3d", + "Name": null + }, + "eeee4bb5-f8e7-4dc0-ac5d-292f8378964b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "eeee4bb5-f8e7-4dc0-ac5d-292f8378964b", + "Name": "W12x152", + "CellId": 89, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7c118b03-7249-497b-9f90-c6041a4a383d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 7.25, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7c118b03-7249-497b-9f90-c6041a4a383d", + "Name": null + }, + "f68066ec-1877-4e38-b50c-36448a79bc89": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -38.333333333333336, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "f68066ec-1877-4e38-b50c-36448a79bc89", + "Name": "W12x152", + "CellId": 90, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "7caa3bbb-62c5-4a11-83a6-dd57eb0a4bd4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -38.333333333333336, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -38.333333333333336, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7caa3bbb-62c5-4a11-83a6-dd57eb0a4bd4", + "Name": null + }, + "20ac14d8-b8e8-4dd2-b07b-ce446884fee7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -36.666666666666664, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "20ac14d8-b8e8-4dd2-b07b-ce446884fee7", + "Name": "W12x152", + "CellId": 90, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "3a4b5ec0-3a25-4002-b48f-a4be5102b9c6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -36.666666666666664, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -36.666666666666664, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3a4b5ec0-3a25-4002-b48f-a4be5102b9c6", + "Name": null + }, + "38138424-49fb-44e8-9777-235820e76b22": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "38138424-49fb-44e8-9777-235820e76b22", + "Name": "W12x152", + "CellId": 91, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b1c0296f-0f88-47e2-b6ae-a6af15dded0a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 24.625, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b1c0296f-0f88-47e2-b6ae-a6af15dded0a", + "Name": null + }, + "2fad153e-9477-40fd-a125-7e6376368ae2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "2fad153e-9477-40fd-a125-7e6376368ae2", + "Name": "W12x152", + "CellId": 91, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5c6b6dd4-f899-436b-a5b6-a9c46fdce0d2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 26.25, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5c6b6dd4-f899-436b-a5b6-a9c46fdce0d2", + "Name": null + }, + "a8a2c8da-7f0c-41f0-9af6-436eda3f16c1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "a8a2c8da-7f0c-41f0-9af6-436eda3f16c1", + "Name": "W12x152", + "CellId": 91, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c45e9c45-30a2-4a97-9263-3ae640d8372d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 27.875, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c45e9c45-30a2-4a97-9263-3ae640d8372d", + "Name": null + }, + "7cf524c8-fc77-4f27-bca7-473b36d12b1d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "7cf524c8-fc77-4f27-bca7-473b36d12b1d", + "Name": "W12x152", + "CellId": 92, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c0ac59dd-60c0-45a5-9ac3-40ffac5b2917": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 17.75, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c0ac59dd-60c0-45a5-9ac3-40ffac5b2917", + "Name": null + }, + "ff8a7d3d-6f6c-4fe3-98b8-5a50b5e87068": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "ff8a7d3d-6f6c-4fe3-98b8-5a50b5e87068", + "Name": "W12x152", + "CellId": 92, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a83824af-3cc6-488f-84d1-28f7d6216a57": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 19.5, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a83824af-3cc6-488f-84d1-28f7d6216a57", + "Name": null + }, + "6a82be05-61ec-4069-b8a4-de89ae3fda0a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "6a82be05-61ec-4069-b8a4-de89ae3fda0a", + "Name": "W12x152", + "CellId": 92, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4fb0d988-92dd-4e1b-a4f9-03a336a74fd3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 21.25, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4fb0d988-92dd-4e1b-a4f9-03a336a74fd3", + "Name": null + }, + "d7e8efdd-a6ee-4635-9b8c-647d93363dc5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "d7e8efdd-a6ee-4635-9b8c-647d93363dc5", + "Name": "W12x152", + "CellId": 93, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7a959eb8-c56a-4b41-9f28-654a87af8109": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 10.75, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7a959eb8-c56a-4b41-9f28-654a87af8109", + "Name": null + }, + "c17fb3d7-9c48-43cc-94b3-bfd7ba0f27d9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c17fb3d7-9c48-43cc-94b3-bfd7ba0f27d9", + "Name": "W12x152", + "CellId": 93, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f8a5c277-d7da-47e9-b14c-dec597c481c5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 12.5, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f8a5c277-d7da-47e9-b14c-dec597c481c5", + "Name": null + }, + "6dd32a3f-72b4-4bb6-8d13-f3d524d3bd66": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "6dd32a3f-72b4-4bb6-8d13-f3d524d3bd66", + "Name": "W12x152", + "CellId": 93, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "09bffa52-dfc0-4b59-9df7-7d176961036c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 14.25, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "09bffa52-dfc0-4b59-9df7-7d176961036c", + "Name": null + }, + "61a79c6e-e17d-4f13-aedc-72f8b9e015be": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "61a79c6e-e17d-4f13-aedc-72f8b9e015be", + "Name": "W12x152", + "CellId": 94, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "12d365b6-514a-438c-bc3e-8c202b3e99d4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 3.75, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "12d365b6-514a-438c-bc3e-8c202b3e99d4", + "Name": null + }, + "bdd92973-7732-41bb-a80d-a014af1261d7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "bdd92973-7732-41bb-a80d-a014af1261d7", + "Name": "W12x152", + "CellId": 94, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a33203aa-e6f9-4a0b-ad0b-42b98347fba7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 5.5, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a33203aa-e6f9-4a0b-ad0b-42b98347fba7", + "Name": null + }, + "fd0237e9-c517-4181-b5f7-8417a7076732": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "fd0237e9-c517-4181-b5f7-8417a7076732", + "Name": "W12x152", + "CellId": 94, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "11b132e1-f8f5-4ecd-9797-1e651bc3506e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 7.25, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "11b132e1-f8f5-4ecd-9797-1e651bc3506e", + "Name": null + }, + "88c0bce7-14e9-41f8-a83f-e4e0f1094500": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -43.333333333333336, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "88c0bce7-14e9-41f8-a83f-e4e0f1094500", + "Name": "W12x152", + "CellId": 95, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "50ed8ef2-9b42-416e-b21d-47f4ea876549": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -43.333333333333336, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -43.333333333333336, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "50ed8ef2-9b42-416e-b21d-47f4ea876549", + "Name": null + }, + "06e6dcb7-08ef-4fec-8a5d-c6713d48a875": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -41.666666666666664, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "06e6dcb7-08ef-4fec-8a5d-c6713d48a875", + "Name": "W12x152", + "CellId": 95, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "e97f2ad6-2970-41dd-a919-28efba655418": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -41.666666666666664, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -41.666666666666664, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e97f2ad6-2970-41dd-a919-28efba655418", + "Name": null + }, + "dbde0c7d-fced-4a97-af72-7f94e2924fae": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "dbde0c7d-fced-4a97-af72-7f94e2924fae", + "Name": "W12x152", + "CellId": 96, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "301e84bb-be71-41d9-81ea-f571b7394ae3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 24.625, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "301e84bb-be71-41d9-81ea-f571b7394ae3", + "Name": null + }, + "c809277a-ba5f-464a-b7bf-d048b82ab525": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c809277a-ba5f-464a-b7bf-d048b82ab525", + "Name": "W12x152", + "CellId": 96, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3122c236-62ac-4a60-92cb-95e4f4e70970": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 26.25, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3122c236-62ac-4a60-92cb-95e4f4e70970", + "Name": null + }, + "8751bfbc-a4f5-48a4-b6a5-c2ed184cb1a1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "8751bfbc-a4f5-48a4-b6a5-c2ed184cb1a1", + "Name": "W12x152", + "CellId": 96, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "bdd2b692-5881-4c1a-af43-e655599a9f44": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 27.875, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bdd2b692-5881-4c1a-af43-e655599a9f44", + "Name": null + }, + "a74b840c-153b-4020-bdb7-9f759e19c8f3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "a74b840c-153b-4020-bdb7-9f759e19c8f3", + "Name": "W12x152", + "CellId": 97, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "244ad100-5f95-4498-ba8f-333fe0c58bd5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 17.75, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "244ad100-5f95-4498-ba8f-333fe0c58bd5", + "Name": null + }, + "2575bbc0-9b83-4291-ae23-20c037d2ee36": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "2575bbc0-9b83-4291-ae23-20c037d2ee36", + "Name": "W12x152", + "CellId": 97, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "837e1ce8-893c-401a-85d4-889df3853395": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 19.5, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "837e1ce8-893c-401a-85d4-889df3853395", + "Name": null + }, + "587a874e-df36-47f7-8635-7987ac97e02d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "587a874e-df36-47f7-8635-7987ac97e02d", + "Name": "W12x152", + "CellId": 97, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "44b647e6-c7d6-4b75-aaee-59abc10fb6fa": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 21.25, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "44b647e6-c7d6-4b75-aaee-59abc10fb6fa", + "Name": null + }, + "9c084920-181e-41a4-9ad7-c799fa151ad0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "9c084920-181e-41a4-9ad7-c799fa151ad0", + "Name": "W12x152", + "CellId": 98, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "48e1b4c6-e8e1-4372-88b2-40b185215f1e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 10.75, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "48e1b4c6-e8e1-4372-88b2-40b185215f1e", + "Name": null + }, + "94db9086-a9aa-4033-9d5b-169625df35d1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "94db9086-a9aa-4033-9d5b-169625df35d1", + "Name": "W12x152", + "CellId": 98, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1283e5e3-a934-4884-b3aa-b490828f6a71": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 12.5, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1283e5e3-a934-4884-b3aa-b490828f6a71", + "Name": null + }, + "a3b42194-d84a-417e-b15c-fb4bc8b51172": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "a3b42194-d84a-417e-b15c-fb4bc8b51172", + "Name": "W12x152", + "CellId": 98, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d06b1a55-4a6f-43a9-88f1-def7e9245cc1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 14.25, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d06b1a55-4a6f-43a9-88f1-def7e9245cc1", + "Name": null + }, + "12534ec3-e53c-4e63-87ee-c0e95681540e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "12534ec3-e53c-4e63-87ee-c0e95681540e", + "Name": "W12x152", + "CellId": 99, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f1e55747-a38f-454a-a77e-7c275dc8c5a6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 3.75, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f1e55747-a38f-454a-a77e-7c275dc8c5a6", + "Name": null + }, + "7323d451-4b4a-490a-bb76-5095e26e7339": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "7323d451-4b4a-490a-bb76-5095e26e7339", + "Name": "W12x152", + "CellId": 99, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5a07d18e-75d2-4595-a2a7-431a9779534a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 5.5, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5a07d18e-75d2-4595-a2a7-431a9779534a", + "Name": null + }, + "c13167f9-cf5f-4b2b-94cf-fcee1f813e84": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c13167f9-cf5f-4b2b-94cf-fcee1f813e84", + "Name": "W12x152", + "CellId": 99, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "8caca0eb-72e4-4b43-9770-59cb5a5a0eba": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 7.25, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8caca0eb-72e4-4b43-9770-59cb5a5a0eba", + "Name": null + }, + "41497c5d-0a8f-4378-a1ae-1a37cfc72681": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -48.333333333333336, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "41497c5d-0a8f-4378-a1ae-1a37cfc72681", + "Name": "W12x152", + "CellId": 100, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "94298309-a51a-4a9d-b1b8-d8061f7dc00f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -48.333333333333336, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -48.333333333333336, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "94298309-a51a-4a9d-b1b8-d8061f7dc00f", + "Name": null + }, + "837d20c4-4135-4375-a81c-becb22b2a525": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -46.666666666666664, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "837d20c4-4135-4375-a81c-becb22b2a525", + "Name": "W12x152", + "CellId": 100, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "340ced0e-99c1-4c32-ac13-86ff3b8edc1b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -46.666666666666664, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -46.666666666666664, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "340ced0e-99c1-4c32-ac13-86ff3b8edc1b", + "Name": null + }, + "c32f35f1-02c5-435d-aa77-702076dd9f5e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c32f35f1-02c5-435d-aa77-702076dd9f5e", + "Name": "W12x152", + "CellId": 101, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "38358a67-2305-43fd-bdd4-430cc4e7d185": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 24.625, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "38358a67-2305-43fd-bdd4-430cc4e7d185", + "Name": null + }, + "dde3e699-9b9b-4bb6-8fb2-36efc017f185": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "dde3e699-9b9b-4bb6-8fb2-36efc017f185", + "Name": "W12x152", + "CellId": 101, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ffd2a201-49f3-4313-b03a-0d3fcf53f692": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 26.25, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ffd2a201-49f3-4313-b03a-0d3fcf53f692", + "Name": null + }, + "fa768417-3f39-4dd0-9ef7-a5abfd9cad8d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "fa768417-3f39-4dd0-9ef7-a5abfd9cad8d", + "Name": "W12x152", + "CellId": 101, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "715abb32-aa67-4fa5-9a71-3a0e2c9cc34d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 27.875, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "715abb32-aa67-4fa5-9a71-3a0e2c9cc34d", + "Name": null + }, + "fcfc3fdc-cc09-4bb0-9301-3107b2ec09b5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "fcfc3fdc-cc09-4bb0-9301-3107b2ec09b5", + "Name": "W12x152", + "CellId": 102, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b12350f1-93ae-4b4e-aef9-a9d11f1cc70b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 17.75, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b12350f1-93ae-4b4e-aef9-a9d11f1cc70b", + "Name": null + }, + "1c3e85bc-eaf8-4789-917d-ebaacc3e04ed": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "1c3e85bc-eaf8-4789-917d-ebaacc3e04ed", + "Name": "W12x152", + "CellId": 102, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7c3fa944-3bca-4553-bb3d-3540c4ef9c3f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 19.5, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7c3fa944-3bca-4553-bb3d-3540c4ef9c3f", + "Name": null + }, + "c2bb8067-8ce2-4716-b0ea-9e51c0de32bf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c2bb8067-8ce2-4716-b0ea-9e51c0de32bf", + "Name": "W12x152", + "CellId": 102, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f47c0ba6-5258-4b98-9fc9-d55fe50ca776": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 21.25, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f47c0ba6-5258-4b98-9fc9-d55fe50ca776", + "Name": null + }, + "5e1921c2-f48e-46f3-b70a-9f96018cdef6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "5e1921c2-f48e-46f3-b70a-9f96018cdef6", + "Name": "W12x152", + "CellId": 103, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "249e9edd-f462-4649-a02d-c0b800b5fba0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 10.75, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "249e9edd-f462-4649-a02d-c0b800b5fba0", + "Name": null + }, + "907e0a99-3385-4927-9c5c-c8f4c2cc8f99": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "907e0a99-3385-4927-9c5c-c8f4c2cc8f99", + "Name": "W12x152", + "CellId": 103, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "12109cc3-adb8-4d14-9c58-9f277a41a3d6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 12.5, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "12109cc3-adb8-4d14-9c58-9f277a41a3d6", + "Name": null + }, + "66065b78-d1bd-4579-ae78-8fc8846db8b9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "66065b78-d1bd-4579-ae78-8fc8846db8b9", + "Name": "W12x152", + "CellId": 103, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "dd464f5c-3bbc-4f04-8ebb-5662c92e7145": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 14.25, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dd464f5c-3bbc-4f04-8ebb-5662c92e7145", + "Name": null + }, + "e4a57ee6-905f-4152-89f9-0fff0df94503": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e4a57ee6-905f-4152-89f9-0fff0df94503", + "Name": "W12x152", + "CellId": 104, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7a0b6646-0627-438a-a68c-f0a10ec10b23": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 3.75, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7a0b6646-0627-438a-a68c-f0a10ec10b23", + "Name": null + }, + "dd6302d9-223a-4ec1-811b-0f230ed02c6d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "dd6302d9-223a-4ec1-811b-0f230ed02c6d", + "Name": "W12x152", + "CellId": 104, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "8777b188-5cd0-4d77-a99d-173aa1fd47a9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 5.5, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8777b188-5cd0-4d77-a99d-173aa1fd47a9", + "Name": null + }, + "742a562b-b1a4-41ae-89aa-0de5910f5980": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "742a562b-b1a4-41ae-89aa-0de5910f5980", + "Name": "W12x152", + "CellId": 104, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b77f177f-e06c-4639-8871-a97868414849": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 7.25, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b77f177f-e06c-4639-8871-a97868414849", + "Name": null + }, + "b8427b4d-8d2d-420a-bd4d-67a336b332c3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -53.333333333333336, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "b8427b4d-8d2d-420a-bd4d-67a336b332c3", + "Name": "W12x152", + "CellId": 105, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "5c3a9963-457b-4660-a69a-f04b7b11a6c1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -53.333333333333336, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -53.333333333333336, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5c3a9963-457b-4660-a69a-f04b7b11a6c1", + "Name": null + }, + "b0a9d90f-95e7-4ec6-8a95-624982f903ad": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -51.666666666666664, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "b0a9d90f-95e7-4ec6-8a95-624982f903ad", + "Name": "W12x152", + "CellId": 105, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "64f6e482-c578-447d-be9c-dfae36efde83": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -51.666666666666664, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -51.666666666666664, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "64f6e482-c578-447d-be9c-dfae36efde83", + "Name": null + }, + "718c13ae-c1f6-4e2f-8cbb-a846a5c63b64": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "718c13ae-c1f6-4e2f-8cbb-a846a5c63b64", + "Name": "W12x152", + "CellId": 106, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "285a7451-1c3a-4da8-871b-ca1247e01a71": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 24.625, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "285a7451-1c3a-4da8-871b-ca1247e01a71", + "Name": null + }, + "f5f480e6-4e53-4f6b-8960-1e30935b2952": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "f5f480e6-4e53-4f6b-8960-1e30935b2952", + "Name": "W12x152", + "CellId": 106, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "25911c27-fb94-440e-b11c-e9d134dd2812": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 26.25, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "25911c27-fb94-440e-b11c-e9d134dd2812", + "Name": null + }, + "e3302218-aba3-4732-a59c-97854f2f5e90": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e3302218-aba3-4732-a59c-97854f2f5e90", + "Name": "W12x152", + "CellId": 106, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9f9777f8-e27d-454c-8e3a-b836d0bef3f3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 27.875, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9f9777f8-e27d-454c-8e3a-b836d0bef3f3", + "Name": null + }, + "e5704250-dbbd-4aec-b4c1-94fbc6d26a58": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e5704250-dbbd-4aec-b4c1-94fbc6d26a58", + "Name": "W12x152", + "CellId": 107, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "8127a497-ec7e-4bbb-aff7-98b5a59f5ae3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 17.75, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8127a497-ec7e-4bbb-aff7-98b5a59f5ae3", + "Name": null + }, + "98193cfe-efc4-4104-907b-c312a5e30327": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "98193cfe-efc4-4104-907b-c312a5e30327", + "Name": "W12x152", + "CellId": 107, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5b825108-6ce9-46a7-b339-0496bf4a68c4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 19.5, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5b825108-6ce9-46a7-b339-0496bf4a68c4", + "Name": null + }, + "e2ebe55b-e2c2-485b-9bd5-9e0163ccfce0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e2ebe55b-e2c2-485b-9bd5-9e0163ccfce0", + "Name": "W12x152", + "CellId": 107, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "360e5e74-6dc8-439b-9c96-13b80f97ae57": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 21.25, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "360e5e74-6dc8-439b-9c96-13b80f97ae57", + "Name": null + }, + "279ee5d6-8a43-42a0-98d0-70ac7620039d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "279ee5d6-8a43-42a0-98d0-70ac7620039d", + "Name": "W12x152", + "CellId": 108, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1f18dd89-bdeb-4b7f-980f-49827657515a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 10.75, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1f18dd89-bdeb-4b7f-980f-49827657515a", + "Name": null + }, + "015619c5-7b42-48e9-93f5-bd19057da6f3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "015619c5-7b42-48e9-93f5-bd19057da6f3", + "Name": "W12x152", + "CellId": 108, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7e58e126-ccfb-40d1-b0ac-9552db9f183a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 12.5, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7e58e126-ccfb-40d1-b0ac-9552db9f183a", + "Name": null + }, + "1276a214-acd2-414c-aa82-bc21279c3894": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "1276a214-acd2-414c-aa82-bc21279c3894", + "Name": "W12x152", + "CellId": 108, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fbc84c78-b486-4653-85af-48fe69677590": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 14.25, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fbc84c78-b486-4653-85af-48fe69677590", + "Name": null + }, + "946cd615-5389-4aa3-b4f5-2594e713a89b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "946cd615-5389-4aa3-b4f5-2594e713a89b", + "Name": "W12x152", + "CellId": 109, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "46635043-5e75-4a5e-81da-d8ce4b515cfb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 3.75, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "46635043-5e75-4a5e-81da-d8ce4b515cfb", + "Name": null + }, + "27b4d720-f992-4be6-bec2-6bda611f469b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "27b4d720-f992-4be6-bec2-6bda611f469b", + "Name": "W12x152", + "CellId": 109, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "254316b8-8cdf-45ef-83b8-a156764589a2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 5.5, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "254316b8-8cdf-45ef-83b8-a156764589a2", + "Name": null + }, + "1e5253b9-9805-4b4d-903f-e5ed051330eb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "1e5253b9-9805-4b4d-903f-e5ed051330eb", + "Name": "W12x152", + "CellId": 109, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e603e264-3157-4c44-a587-f888c3b9546c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 7.25, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e603e264-3157-4c44-a587-f888c3b9546c", + "Name": null + }, + "1528be08-697e-43ca-984e-1ebb3b76422d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -58.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "1528be08-697e-43ca-984e-1ebb3b76422d", + "Name": "W12x152", + "CellId": 110, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "9ab84336-afb3-4b62-9bf3-8ef5e7bbe326": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -58.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -58.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9ab84336-afb3-4b62-9bf3-8ef5e7bbe326", + "Name": null + }, + "ab875dfb-e8ab-4334-94f3-a5a14abe9807": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -56.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "ab875dfb-e8ab-4334-94f3-a5a14abe9807", + "Name": "W12x152", + "CellId": 110, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "4f30ea0b-dc40-44f6-a292-dc8e1c1a8db3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -56.5, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -56.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4f30ea0b-dc40-44f6-a292-dc8e1c1a8db3", + "Name": null + }, + "a423ed06-99e1-42d6-beae-b17bcf5ea424": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "0a4b6575-3b0a-47a0-834e-6e427af090ca", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -2.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "a423ed06-99e1-42d6-beae-b17bcf5ea424", + "Name": "W12x152", + "CellId": 111, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "bc7f89f0-a791-464a-8d07-4cfa1a1234e4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -2.0, + "Z": 8.35 + }, + "End": { + "X": 10.7324, + "Y": -2.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bc7f89f0-a791-464a-8d07-4cfa1a1234e4", + "Name": null + }, + "56361388-1c04-4e09-80df-543d9114ac7c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c30b6320-d3a9-4244-9b8e-ff895659beb0", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -3.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "56361388-1c04-4e09-80df-543d9114ac7c", + "Name": "W12x152", + "CellId": 111, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "5f18ee85-cf99-4e38-ae9c-b6851302dcb4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -3.5, + "Z": 8.35 + }, + "End": { + "X": 11.7324, + "Y": -3.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5f18ee85-cf99-4e38-ae9c-b6851302dcb4", + "Name": null + }, + "8733f127-cbf9-4a15-ab26-7c5576271c6f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "8733f127-cbf9-4a15-ab26-7c5576271c6f", + "Name": "W12x152", + "CellId": 112, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d37e4e08-4442-48a5-88df-545e985e24eb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -5.0, + "Z": 8.35 + }, + "End": { + "X": 3.75, + "Y": -0.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d37e4e08-4442-48a5-88df-545e985e24eb", + "Name": null + }, + "02ba687d-8d23-4da1-bb0d-be8eb763ef39": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "02ba687d-8d23-4da1-bb0d-be8eb763ef39", + "Name": "W12x152", + "CellId": 112, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1e460d51-baf0-4571-b9d1-13aa2a764cea": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -5.0, + "Z": 8.35 + }, + "End": { + "X": 5.5, + "Y": -0.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1e460d51-baf0-4571-b9d1-13aa2a764cea", + "Name": null + }, + "90b5932e-9f38-4068-8c56-54950b80f167": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "90b5932e-9f38-4068-8c56-54950b80f167", + "Name": "W12x152", + "CellId": 112, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f20d27b7-4f3b-4e4b-929c-24f59f38d9aa": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -5.0, + "Z": 8.35 + }, + "End": { + "X": 7.25, + "Y": -0.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f20d27b7-4f3b-4e4b-929c-24f59f38d9aa", + "Name": null + }, + "857df830-8fdb-4c52-962d-e57805ed1d2a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -3.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "857df830-8fdb-4c52-962d-e57805ed1d2a", + "Name": "W12x152", + "CellId": 113, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "611cb493-a385-40c7-9c17-76298ee9168e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -3.5, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -3.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "611cb493-a385-40c7-9c17-76298ee9168e", + "Name": null + }, + "896a4e50-0e0b-4f5a-9ae3-5bb67c7f1d10": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -2.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "896a4e50-0e0b-4f5a-9ae3-5bb67c7f1d10", + "Name": "W12x152", + "CellId": 113, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "5500c2e2-9089-4836-9f66-1dbb7455e0b5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -2.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -2.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5500c2e2-9089-4836-9f66-1dbb7455e0b5", + "Name": null + }, + "f65580f7-7b51-45ac-ba5b-0323f2f670a9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "f65580f7-7b51-45ac-ba5b-0323f2f670a9", + "Name": "W12x152", + "CellId": 115, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "be3474d4-d8d1-42b5-bc87-8d940f84d0a7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 10.75, + "Y": -5.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "be3474d4-d8d1-42b5-bc87-8d940f84d0a7", + "Name": null + }, + "d0c9953e-29bb-446c-b923-08a4a5ca451c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d0c9953e-29bb-446c-b923-08a4a5ca451c", + "Name": "W12x152", + "CellId": 115, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "32d0097b-7d5f-4ae4-8247-591467691595": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 12.5, + "Y": -5.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "32d0097b-7d5f-4ae4-8247-591467691595", + "Name": null + }, + "2f1f85e0-8f06-417d-bae2-2d0f9eb275fd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d463367e-606b-478f-9829-18208e0b592e", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "2f1f85e0-8f06-417d-bae2-2d0f9eb275fd", + "Name": "W12x152", + "CellId": 115, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "44016be7-320a-45c1-be39-517e8733d20e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 14.25, + "Y": -7.276400000000001, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "44016be7-320a-45c1-be39-517e8733d20e", + "Name": null + }, + "0c593906-6b4d-4f14-a928-bdf550b68c15": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "0c593906-6b4d-4f14-a928-bdf550b68c15", + "Name": "W12x152", + "CellId": 116, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "69bfc7b5-9ce3-4291-bf16-640e28e08e16": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 3.75, + "Y": -5.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "69bfc7b5-9ce3-4291-bf16-640e28e08e16", + "Name": null + }, + "e8f3540b-64ed-495c-bd88-4a61d2ae72ee": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "e8f3540b-64ed-495c-bd88-4a61d2ae72ee", + "Name": "W12x152", + "CellId": 116, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "77edd577-d772-4e3f-8c66-bd827b65b59c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 5.5, + "Y": -5.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "77edd577-d772-4e3f-8c66-bd827b65b59c", + "Name": null + }, + "d82c5d2b-1601-4074-8f11-0e34b3a86249": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d82c5d2b-1601-4074-8f11-0e34b3a86249", + "Name": "W12x152", + "CellId": 116, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f8c8f74a-8be1-46ff-8852-d45af7b79009": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 7.25, + "Y": -5.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f8c8f74a-8be1-46ff-8852-d45af7b79009", + "Name": null + }, + "fce5fbc7-0e51-4781-97ba-841e5675134c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -8.333333333333334, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "fce5fbc7-0e51-4781-97ba-841e5675134c", + "Name": "W12x152", + "CellId": 117, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "518cef14-f36c-48dc-b139-62d5ed69d4dc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -8.333333333333334, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -8.333333333333334, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "518cef14-f36c-48dc-b139-62d5ed69d4dc", + "Name": null + }, + "1d951d35-eac0-4da8-8036-1af34ad0a51b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -6.666666666666667, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "1d951d35-eac0-4da8-8036-1af34ad0a51b", + "Name": "W12x152", + "CellId": 117, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "b643fb07-f8e8-48b2-bf9d-558ef2651f0f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -6.666666666666667, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -6.666666666666667, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b643fb07-f8e8-48b2-bf9d-558ef2651f0f", + "Name": null + }, + "8c26ad90-e73c-4392-ae50-38dddecad8e8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e9998d1f-f37e-4ec1-9a37-d6129df9567b", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -11.666666666666666, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "8c26ad90-e73c-4392-ae50-38dddecad8e8", + "Name": "W12x152", + "CellId": 118, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "6f7c5bf8-783c-47fe-8774-1c748bf4cf8a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -11.666666666666666, + "Z": 8.35 + }, + "End": { + "X": 17.176846666666666, + "Y": -11.666666666666666, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6f7c5bf8-783c-47fe-8774-1c748bf4cf8a", + "Name": null + }, + "28c391f2-cd87-4fe8-b2e9-a03fa237d9d7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "48a4ab2f-6f28-414c-be2a-e0687d5249cc", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -13.333333333333332, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "28c391f2-cd87-4fe8-b2e9-a03fa237d9d7", + "Name": "W12x152", + "CellId": 118, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "6c4ea472-e246-4e45-a818-de1bd5ae8ea7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -13.333333333333332, + "Z": 8.35 + }, + "End": { + "X": 18.287953333333334, + "Y": -13.333333333333332, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6c4ea472-e246-4e45-a818-de1bd5ae8ea7", + "Name": null + }, + "d5df4dff-9864-4d1a-a9d9-091075c341fb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d5df4dff-9864-4d1a-a9d9-091075c341fb", + "Name": "W12x152", + "CellId": 119, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "eee6ec5c-aa20-462d-9060-25b949d8a67d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 10.75, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "eee6ec5c-aa20-462d-9060-25b949d8a67d", + "Name": null + }, + "a82f0c68-8977-4ba1-b4e2-7ff7a9140e13": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "a82f0c68-8977-4ba1-b4e2-7ff7a9140e13", + "Name": "W12x152", + "CellId": 119, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "833ad1f7-130a-44bd-bc9a-8edb55d458f5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 12.5, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "833ad1f7-130a-44bd-bc9a-8edb55d458f5", + "Name": null + }, + "71694e7d-8a93-4ff5-a2de-47f6ad610dc2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "71694e7d-8a93-4ff5-a2de-47f6ad610dc2", + "Name": "W12x152", + "CellId": 119, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "695d93e5-1ab5-41a3-b3f7-7df8dc9c0885": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 14.25, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "695d93e5-1ab5-41a3-b3f7-7df8dc9c0885", + "Name": null + }, + "6237770a-e419-4c62-a951-5665545981bc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "6237770a-e419-4c62-a951-5665545981bc", + "Name": "W12x152", + "CellId": 120, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b3b2a92f-6c75-4da6-b20f-5ec0dab40003": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 3.75, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b3b2a92f-6c75-4da6-b20f-5ec0dab40003", + "Name": null + }, + "191d0038-cfaa-44f4-ba51-4c09f362a85f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "191d0038-cfaa-44f4-ba51-4c09f362a85f", + "Name": "W12x152", + "CellId": 120, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "dea82b25-e735-46cf-afac-123dbc3aef09": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 5.5, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dea82b25-e735-46cf-afac-123dbc3aef09", + "Name": null + }, + "e827cbb4-f386-47d5-88cc-69811d46dffc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "e827cbb4-f386-47d5-88cc-69811d46dffc", + "Name": "W12x152", + "CellId": 120, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "2e3e9650-0b65-44c0-b7fb-f4e7e43078f1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 7.25, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2e3e9650-0b65-44c0-b7fb-f4e7e43078f1", + "Name": null + }, + "fb82c9c8-7ee1-4d1f-b9aa-8b97b0a9ee63": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -13.333333333333334, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "fb82c9c8-7ee1-4d1f-b9aa-8b97b0a9ee63", + "Name": "W12x152", + "CellId": 121, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "5cb3b8e4-0eae-4a4d-8843-c09ec0f6ff66": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -13.333333333333334, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -13.333333333333334, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5cb3b8e4-0eae-4a4d-8843-c09ec0f6ff66", + "Name": null + }, + "0516e687-2a69-4d01-bd53-e363f229b0d8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -11.666666666666668, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "0516e687-2a69-4d01-bd53-e363f229b0d8", + "Name": "W12x152", + "CellId": 121, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "fbc450c9-551e-4bde-b3f5-90f8e8541139": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -11.666666666666668, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -11.666666666666668, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fbc450c9-551e-4bde-b3f5-90f8e8541139", + "Name": null + }, + "9c7c4f27-b4b4-4462-9dc4-e1c2194abb4e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.6831, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "9c7c4f27-b4b4-4462-9dc4-e1c2194abb4e", + "Name": "W12x152", + "CellId": 122, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9a80b62b-e8ef-450d-8d0c-f69949cae202": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.6831, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 17.6831, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9a80b62b-e8ef-450d-8d0c-f69949cae202", + "Name": null + }, + "aa2ddbf3-8985-43cb-8057-8cff39962960": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.3662, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "aa2ddbf3-8985-43cb-8057-8cff39962960", + "Name": "W12x152", + "CellId": 122, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4db49f8a-46fa-4566-99bb-f8723e1459b0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.3662, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 19.3662, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4db49f8a-46fa-4566-99bb-f8723e1459b0", + "Name": null + }, + "b0bb395b-2713-460c-b1ec-0928fc5553fb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "a14957ee-e204-468a-8e80-821f5ea2eabc", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.0493, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "b0bb395b-2713-460c-b1ec-0928fc5553fb", + "Name": "W12x152", + "CellId": 122, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "409a40e0-0936-44bb-b832-f400573122f2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.0493, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 21.0493, + "Y": -17.475355049289902, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "409a40e0-0936-44bb-b832-f400573122f2", + "Name": null + }, + "bf1c6115-21dd-4602-a869-4f7fec9867eb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "bf1c6115-21dd-4602-a869-4f7fec9867eb", + "Name": "W12x152", + "CellId": 123, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ae89ef64-85ab-4085-b80b-ed39a51cb81c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 10.75, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ae89ef64-85ab-4085-b80b-ed39a51cb81c", + "Name": null + }, + "273fa14f-8b08-4881-825e-5c4afef3faf3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "273fa14f-8b08-4881-825e-5c4afef3faf3", + "Name": "W12x152", + "CellId": 123, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "33bc06ed-a28d-4bea-b8c4-fa1a635e8bb1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 12.5, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "33bc06ed-a28d-4bea-b8c4-fa1a635e8bb1", + "Name": null + }, + "5331748d-3b27-4f5e-953f-d6609ec8347c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "5331748d-3b27-4f5e-953f-d6609ec8347c", + "Name": "W12x152", + "CellId": 123, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9de88070-18c3-4b09-a7b1-9a98c800825b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 14.25, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9de88070-18c3-4b09-a7b1-9a98c800825b", + "Name": null + }, + "4d6c5141-cf5d-4474-9637-532c7c5f840c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "4d6c5141-cf5d-4474-9637-532c7c5f840c", + "Name": "W12x152", + "CellId": 124, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b9226a64-566b-46b7-983d-f83b96df4180": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 3.75, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b9226a64-566b-46b7-983d-f83b96df4180", + "Name": null + }, + "b5ced065-40f8-4663-8e94-14db58298dd9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "b5ced065-40f8-4663-8e94-14db58298dd9", + "Name": "W12x152", + "CellId": 124, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "44a4cf96-66c1-41a4-95e1-3e69772bb66f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 5.5, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "44a4cf96-66c1-41a4-95e1-3e69772bb66f", + "Name": null + }, + "97959b76-12a3-45fc-aa7d-d60065afc3a6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "97959b76-12a3-45fc-aa7d-d60065afc3a6", + "Name": "W12x152", + "CellId": 124, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9677c504-046b-4cf0-b4f0-8f2d57af8d27": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 7.25, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9677c504-046b-4cf0-b4f0-8f2d57af8d27", + "Name": null + }, + "48347742-67d1-40b6-b50c-dbd95a6cf6bc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -18.333333333333332, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "48347742-67d1-40b6-b50c-dbd95a6cf6bc", + "Name": "W12x152", + "CellId": 125, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "a8514b31-e653-4814-801b-c53ebfc222be": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -18.333333333333332, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -18.333333333333332, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a8514b31-e653-4814-801b-c53ebfc222be", + "Name": null + }, + "4223af6b-0754-427e-afa4-b5a1305e1c2e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -16.666666666666668, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "4223af6b-0754-427e-afa4-b5a1305e1c2e", + "Name": "W12x152", + "CellId": 125, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "3550462a-652f-4130-a17b-db4ca57be8b1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -16.666666666666668, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -16.666666666666668, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3550462a-652f-4130-a17b-db4ca57be8b1", + "Name": null + }, + "b1aacd16-71ab-4ff3-9b4c-1dbb543b9b40": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "00428e4f-d368-4fa9-9b91-6b35a98db880", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -21.934266666666666, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "b1aacd16-71ab-4ff3-9b4c-1dbb543b9b40", + "Name": "W12x152", + "CellId": 126, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "e6d78656-1e3b-45a3-be8a-9a5ad0418714": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -21.934266666666666, + "Z": 8.35 + }, + "End": { + "X": 24.021913333333334, + "Y": -21.934266666666666, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e6d78656-1e3b-45a3-be8a-9a5ad0418714", + "Name": null + }, + "79beb561-f861-4c6b-99e8-fb9533aed615": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2a51b0ec-7a36-4993-b509-32bf4c52b9b4", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -23.467133333333333, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "79beb561-f861-4c6b-99e8-fb9533aed615", + "Name": "W12x152", + "CellId": 126, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "51a1d733-53b6-4897-a648-e378cf7f42c5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -23.467133333333333, + "Z": 8.35 + }, + "End": { + "X": 25.043826666666668, + "Y": -23.467133333333333, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "51a1d733-53b6-4897-a648-e378cf7f42c5", + "Name": null + }, + "314aa189-d8f3-4d1f-a844-f385f987cd1c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "314aa189-d8f3-4d1f-a844-f385f987cd1c", + "Name": "W12x152", + "CellId": 127, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c00e9684-ec4c-49f7-91c4-fc8af7b5ccb5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 17.75, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c00e9684-ec4c-49f7-91c4-fc8af7b5ccb5", + "Name": null + }, + "deef9925-79d2-4c07-bbe0-0d0646b64498": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "deef9925-79d2-4c07-bbe0-0d0646b64498", + "Name": "W12x152", + "CellId": 127, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e4466be5-257d-456e-94ba-e8a1e58ad314": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 19.5, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e4466be5-257d-456e-94ba-e8a1e58ad314", + "Name": null + }, + "d54c94ea-3cf3-4582-93fa-13f93901f01e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d54c94ea-3cf3-4582-93fa-13f93901f01e", + "Name": "W12x152", + "CellId": 127, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "47ceae02-c01c-4bec-815e-007b3f52912c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 21.25, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "47ceae02-c01c-4bec-815e-007b3f52912c", + "Name": null + }, + "e1e4db56-cb24-443d-afcd-7172365b03c0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "e1e4db56-cb24-443d-afcd-7172365b03c0", + "Name": "W12x152", + "CellId": 128, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "dee1ee2f-07aa-41f9-9bea-33192597af42": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 10.75, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dee1ee2f-07aa-41f9-9bea-33192597af42", + "Name": null + }, + "e6b2d3e7-eb42-43b5-8358-0fbb780ad9d8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "e6b2d3e7-eb42-43b5-8358-0fbb780ad9d8", + "Name": "W12x152", + "CellId": 128, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a40e3de5-84e5-4d16-88ab-f0bbfd7d638c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 12.5, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a40e3de5-84e5-4d16-88ab-f0bbfd7d638c", + "Name": null + }, + "b92465d3-94f9-48b9-86df-cd0e69c5d11c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "b92465d3-94f9-48b9-86df-cd0e69c5d11c", + "Name": "W12x152", + "CellId": 128, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a99b78b9-1a53-4298-a83d-ecdc224d6896": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 14.25, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a99b78b9-1a53-4298-a83d-ecdc224d6896", + "Name": null + }, + "80edf25f-40f1-4da4-842b-ddafbd72ba07": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "80edf25f-40f1-4da4-842b-ddafbd72ba07", + "Name": "W12x152", + "CellId": 129, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "15442d84-5cd2-4573-a4e1-8640a0c7a685": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 3.75, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "15442d84-5cd2-4573-a4e1-8640a0c7a685", + "Name": null + }, + "d0fd8fcc-22e2-46b5-8a2a-bad5dafbfa6f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d0fd8fcc-22e2-46b5-8a2a-bad5dafbfa6f", + "Name": "W12x152", + "CellId": 129, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f1d2e163-4b56-45e0-a2df-4a3b842cbb75": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 5.5, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f1d2e163-4b56-45e0-a2df-4a3b842cbb75", + "Name": null + }, + "dee68dad-8c4b-40b8-8937-3b236cb92879": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "dee68dad-8c4b-40b8-8937-3b236cb92879", + "Name": "W12x152", + "CellId": 129, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3c38fafc-0ba4-46ae-a608-1bbb1118917f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 7.25, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3c38fafc-0ba4-46ae-a608-1bbb1118917f", + "Name": null + }, + "e012fa67-1ed0-4853-a1ed-24d472b3bcc8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -23.333333333333332, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "e012fa67-1ed0-4853-a1ed-24d472b3bcc8", + "Name": "W12x152", + "CellId": 130, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "113811da-2a7c-4a87-91d0-d1716b0832d9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -23.333333333333332, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -23.333333333333332, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "113811da-2a7c-4a87-91d0-d1716b0832d9", + "Name": null + }, + "e2355a3d-bb3b-4f99-807b-d252ae117df9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -21.666666666666668, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "e2355a3d-bb3b-4f99-807b-d252ae117df9", + "Name": "W12x152", + "CellId": 130, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "08462a57-829e-46c2-96d9-d744b9346d2c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -21.666666666666668, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -21.666666666666668, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "08462a57-829e-46c2-96d9-d744b9346d2c", + "Name": null + }, + "f18e6cac-b014-4a2e-8a6b-be7be4625497": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.599764999999998, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "f18e6cac-b014-4a2e-8a6b-be7be4625497", + "Name": "W12x152", + "CellId": 131, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "31820af5-195c-4604-8874-d121d7800c4a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.599764999999998, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 24.599764999999998, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "31820af5-195c-4604-8874-d121d7800c4a", + "Name": null + }, + "9ce09f8c-9cd5-4051-a30a-06e7f696e29b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c86c7794-702f-43dc-82a1-ccf5f1b5deea", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.19953, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "9ce09f8c-9cd5-4051-a30a-06e7f696e29b", + "Name": "W12x152", + "CellId": 131, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "57a9a5ad-f8c2-41eb-bcee-a92268194699": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.19953, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 26.19953, + "Y": -25.20068580274321, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "57a9a5ad-f8c2-41eb-bcee-a92268194699", + "Name": null + }, + "443ebff2-6f6a-49ea-9a47-20679ac56570": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d27c8274-35d1-48e6-a623-33a7ddfb778f", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.799295, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "443ebff2-6f6a-49ea-9a47-20679ac56570", + "Name": "W12x152", + "CellId": 131, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4ce9179d-e337-41f3-8260-5ab28efc75e9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.799295, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 27.799295, + "Y": -27.600342901371604, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4ce9179d-e337-41f3-8260-5ab28efc75e9", + "Name": null + }, + "fd3a4bc1-791b-4368-b0dc-8f1f3e33c805": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "fd3a4bc1-791b-4368-b0dc-8f1f3e33c805", + "Name": "W12x152", + "CellId": 132, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1fab71e0-db8c-4a85-a8ff-e2ade6df39c8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 17.75, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1fab71e0-db8c-4a85-a8ff-e2ade6df39c8", + "Name": null + }, + "6bf0e4ac-daec-4d78-98a2-5af9de6ca547": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "6bf0e4ac-daec-4d78-98a2-5af9de6ca547", + "Name": "W12x152", + "CellId": 132, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "965e6ec5-8f58-4e92-a29f-96525af40a5e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 19.5, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "965e6ec5-8f58-4e92-a29f-96525af40a5e", + "Name": null + }, + "7aab72f0-9bbd-4acd-8e3f-b2a213d91372": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "7aab72f0-9bbd-4acd-8e3f-b2a213d91372", + "Name": "W12x152", + "CellId": 132, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3c200b98-5a8e-4aeb-85c4-ce00089a4fda": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 21.25, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3c200b98-5a8e-4aeb-85c4-ce00089a4fda", + "Name": null + }, + "b189e315-3852-4b8e-8d53-655974713495": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "b189e315-3852-4b8e-8d53-655974713495", + "Name": "W12x152", + "CellId": 133, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f64bc09a-fb38-43a9-8d5c-cf6789e4d70a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 10.75, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f64bc09a-fb38-43a9-8d5c-cf6789e4d70a", + "Name": null + }, + "c653d702-89cb-4da0-8c97-245e855ce740": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "c653d702-89cb-4da0-8c97-245e855ce740", + "Name": "W12x152", + "CellId": 133, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "55f502f9-f8c7-487e-b1f7-365362fa5b89": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 12.5, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "55f502f9-f8c7-487e-b1f7-365362fa5b89", + "Name": null + }, + "f1a71c3c-44f4-4a34-9da7-dea9271fb18b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "f1a71c3c-44f4-4a34-9da7-dea9271fb18b", + "Name": "W12x152", + "CellId": 133, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "14054fed-e391-42a6-89b4-70b58d1198a9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 14.25, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "14054fed-e391-42a6-89b4-70b58d1198a9", + "Name": null + }, + "2db75b9a-e385-4d91-ad5d-718e0928d9ff": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "2db75b9a-e385-4d91-ad5d-718e0928d9ff", + "Name": "W12x152", + "CellId": 134, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ea4498c0-85a0-4acb-992b-c841920caf6f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 3.75, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ea4498c0-85a0-4acb-992b-c841920caf6f", + "Name": null + }, + "4109e616-84cd-437b-90ed-8e0321fc42cd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "4109e616-84cd-437b-90ed-8e0321fc42cd", + "Name": "W12x152", + "CellId": 134, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e8abdc9e-e865-465d-bd76-f24da225b216": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 5.5, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e8abdc9e-e865-465d-bd76-f24da225b216", + "Name": null + }, + "ba9f3b69-ff77-49a3-b6a6-7bcd39f39db4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "ba9f3b69-ff77-49a3-b6a6-7bcd39f39db4", + "Name": "W12x152", + "CellId": 134, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "267b785c-f9b1-4e46-90d8-3d799cfa9f01": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 7.25, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "267b785c-f9b1-4e46-90d8-3d799cfa9f01", + "Name": null + }, + "b15a1f9f-8b18-460b-b5cb-45cd7691b98b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -28.333333333333332, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "b15a1f9f-8b18-460b-b5cb-45cd7691b98b", + "Name": "W12x152", + "CellId": 135, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "c15b9fae-76b9-42eb-91e1-4156b4845187": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -28.333333333333332, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -28.333333333333332, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c15b9fae-76b9-42eb-91e1-4156b4845187", + "Name": null + }, + "65b61764-95e8-430f-af44-9b70989925f1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -26.666666666666668, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "65b61764-95e8-430f-af44-9b70989925f1", + "Name": "W12x152", + "CellId": 135, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "dfcb6340-3553-481b-95bd-c589823ec345": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -26.666666666666668, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -26.666666666666668, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dfcb6340-3553-481b-95bd-c589823ec345", + "Name": null + }, + "44d835f6-abd6-4f56-a3af-61120c80a4e9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "44d835f6-abd6-4f56-a3af-61120c80a4e9", + "Name": "W12x152", + "CellId": 136, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "2ff8c2de-88a9-4ec8-b727-b92d9c8684f1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 24.625, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2ff8c2de-88a9-4ec8-b727-b92d9c8684f1", + "Name": null + }, + "111a317d-c187-433c-bcdf-cf38e0c0919f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "111a317d-c187-433c-bcdf-cf38e0c0919f", + "Name": "W12x152", + "CellId": 136, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7615eab2-f3da-4815-b0c0-b599f22aa45b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 26.25, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7615eab2-f3da-4815-b0c0-b599f22aa45b", + "Name": null + }, + "03daab14-9d3e-4386-99be-6a7fa5766238": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "03daab14-9d3e-4386-99be-6a7fa5766238", + "Name": "W12x152", + "CellId": 136, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3dcd3860-a44d-45eb-8294-8e7e98d07f36": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 27.875, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3dcd3860-a44d-45eb-8294-8e7e98d07f36", + "Name": null + }, + "8a75167e-4761-4ad5-93da-4120eee527d6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "8a75167e-4761-4ad5-93da-4120eee527d6", + "Name": "W12x152", + "CellId": 137, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e706466f-854f-4c22-973c-bdfcbad92e3b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 17.75, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e706466f-854f-4c22-973c-bdfcbad92e3b", + "Name": null + }, + "00b06eba-24c6-44ef-b7c6-8f0321a98f60": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "00b06eba-24c6-44ef-b7c6-8f0321a98f60", + "Name": "W12x152", + "CellId": 137, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1dcbf458-0422-4b0b-b07b-53a18da7dd40": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 19.5, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1dcbf458-0422-4b0b-b07b-53a18da7dd40", + "Name": null + }, + "107a10af-fb72-4b65-be6b-96b2419d20a3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "107a10af-fb72-4b65-be6b-96b2419d20a3", + "Name": "W12x152", + "CellId": 137, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "038a057e-b7ea-421c-84cc-989b494856e3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 21.25, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "038a057e-b7ea-421c-84cc-989b494856e3", + "Name": null + }, + "71190757-c4a9-444c-97e7-d13e4413485a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "71190757-c4a9-444c-97e7-d13e4413485a", + "Name": "W12x152", + "CellId": 138, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e288d513-4e46-412a-8ce0-c1bf7c475cc2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 10.75, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e288d513-4e46-412a-8ce0-c1bf7c475cc2", + "Name": null + }, + "f6c92f22-e259-4aea-954c-87f508dac334": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "f6c92f22-e259-4aea-954c-87f508dac334", + "Name": "W12x152", + "CellId": 138, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9c2d0aea-4464-4f8b-972f-12d28278eed0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 12.5, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9c2d0aea-4464-4f8b-972f-12d28278eed0", + "Name": null + }, + "124446a4-6f2e-407a-95b1-5bb37ef70ce9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "124446a4-6f2e-407a-95b1-5bb37ef70ce9", + "Name": "W12x152", + "CellId": 138, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6c093c49-36b9-4f76-acb5-93b83e9b063d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 14.25, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6c093c49-36b9-4f76-acb5-93b83e9b063d", + "Name": null + }, + "c9d70166-8075-4d93-8c3e-52fdcf30465d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "c9d70166-8075-4d93-8c3e-52fdcf30465d", + "Name": "W12x152", + "CellId": 139, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e0419874-3f7c-4e0b-8dd2-06cf5de9a0bf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 3.75, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e0419874-3f7c-4e0b-8dd2-06cf5de9a0bf", + "Name": null + }, + "11663140-d2a1-4f0d-8d3b-bd1da352d26f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "11663140-d2a1-4f0d-8d3b-bd1da352d26f", + "Name": "W12x152", + "CellId": 139, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "dfc121e2-1189-44b3-b494-ff2adf6ece37": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 5.5, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dfc121e2-1189-44b3-b494-ff2adf6ece37", + "Name": null + }, + "6ef3d237-535d-40c0-a379-b5a9be6c8c4b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "6ef3d237-535d-40c0-a379-b5a9be6c8c4b", + "Name": "W12x152", + "CellId": 139, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a2c49997-8de7-4a17-8472-f4e189334b18": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 7.25, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a2c49997-8de7-4a17-8472-f4e189334b18", + "Name": null + }, + "01cd4ad2-88ea-48c8-96aa-f8aef45d289b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -33.333333333333336, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "01cd4ad2-88ea-48c8-96aa-f8aef45d289b", + "Name": "W12x152", + "CellId": 140, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "955cf3c3-e560-4058-9412-09694f3b711c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -33.333333333333336, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -33.333333333333336, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "955cf3c3-e560-4058-9412-09694f3b711c", + "Name": null + }, + "d8926a33-84d2-46af-9118-87c1f296cf49": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -31.666666666666668, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d8926a33-84d2-46af-9118-87c1f296cf49", + "Name": "W12x152", + "CellId": 140, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "ba47c0e9-b9ff-440a-a811-e514f2a55726": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -31.666666666666668, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -31.666666666666668, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ba47c0e9-b9ff-440a-a811-e514f2a55726", + "Name": null + }, + "0fffbcde-e93e-495f-9e24-cb28148d14fa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "0fffbcde-e93e-495f-9e24-cb28148d14fa", + "Name": "W12x152", + "CellId": 141, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9e055710-192c-4993-aed5-d09db0473a27": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 24.625, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9e055710-192c-4993-aed5-d09db0473a27", + "Name": null + }, + "5feb5b94-fc0d-46b7-878e-1762c3550963": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "5feb5b94-fc0d-46b7-878e-1762c3550963", + "Name": "W12x152", + "CellId": 141, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4bd8fa70-1fea-4106-84ee-abd34049fa0b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 26.25, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4bd8fa70-1fea-4106-84ee-abd34049fa0b", + "Name": null + }, + "68e84e78-a5f3-4ab5-a9de-d1da36ea5e6c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "68e84e78-a5f3-4ab5-a9de-d1da36ea5e6c", + "Name": "W12x152", + "CellId": 141, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "195851ae-ec6d-4908-b29d-fa59b08f00e7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 27.875, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "195851ae-ec6d-4908-b29d-fa59b08f00e7", + "Name": null + }, + "01fdc5db-ba5d-4c4a-9122-9faa4a6856b3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "01fdc5db-ba5d-4c4a-9122-9faa4a6856b3", + "Name": "W12x152", + "CellId": 142, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "115e2243-6a71-47e3-a158-200ed78e0198": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 17.75, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "115e2243-6a71-47e3-a158-200ed78e0198", + "Name": null + }, + "fa722ee5-1016-4c3c-89a8-0556afdaae2f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "fa722ee5-1016-4c3c-89a8-0556afdaae2f", + "Name": "W12x152", + "CellId": 142, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c88aefd7-3824-4879-bd65-f06be40d5121": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 19.5, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c88aefd7-3824-4879-bd65-f06be40d5121", + "Name": null + }, + "904588f5-994f-47ec-b3d4-aa0e6f045819": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "904588f5-994f-47ec-b3d4-aa0e6f045819", + "Name": "W12x152", + "CellId": 142, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "cf2140d0-c668-4c77-9435-ab6b76c4bf9a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 21.25, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cf2140d0-c668-4c77-9435-ab6b76c4bf9a", + "Name": null + }, + "99eaca0d-c7c5-486b-acd6-17cb9339388d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "99eaca0d-c7c5-486b-acd6-17cb9339388d", + "Name": "W12x152", + "CellId": 143, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c35e8989-d6f6-4f63-89c8-750e6e5f689b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 10.75, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c35e8989-d6f6-4f63-89c8-750e6e5f689b", + "Name": null + }, + "a8253de2-3dff-48fa-ab7d-836d03c632ef": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "a8253de2-3dff-48fa-ab7d-836d03c632ef", + "Name": "W12x152", + "CellId": 143, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "980eb774-e2c2-4468-9a59-dc2b64473345": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 12.5, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "980eb774-e2c2-4468-9a59-dc2b64473345", + "Name": null + }, + "8260c836-3a75-4a32-9344-ebb8ddb807f4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "8260c836-3a75-4a32-9344-ebb8ddb807f4", + "Name": "W12x152", + "CellId": 143, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f8e7c515-6f47-44e6-9682-c621514db6a8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 14.25, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f8e7c515-6f47-44e6-9682-c621514db6a8", + "Name": null + }, + "5a4710d8-10e7-4ed8-8da8-0f410a310a0c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "5a4710d8-10e7-4ed8-8da8-0f410a310a0c", + "Name": "W12x152", + "CellId": 144, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e6d0d107-0d88-42b3-a8e3-9363931cfa21": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 3.75, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e6d0d107-0d88-42b3-a8e3-9363931cfa21", + "Name": null + }, + "02c34d52-6494-4258-ab36-e6397f629ea7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "02c34d52-6494-4258-ab36-e6397f629ea7", + "Name": "W12x152", + "CellId": 144, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ebe14b50-a00c-4821-a50c-72f4f310406f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 5.5, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ebe14b50-a00c-4821-a50c-72f4f310406f", + "Name": null + }, + "14e99bf6-b932-4483-b3b9-3e0e61c9d181": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "14e99bf6-b932-4483-b3b9-3e0e61c9d181", + "Name": "W12x152", + "CellId": 144, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5b05b22d-21fb-40e6-a8c4-a078e30e8adc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 7.25, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5b05b22d-21fb-40e6-a8c4-a078e30e8adc", + "Name": null + }, + "ce0d6c02-aa7e-43e6-b3a9-461f7128f2e2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -38.333333333333336, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "ce0d6c02-aa7e-43e6-b3a9-461f7128f2e2", + "Name": "W12x152", + "CellId": 145, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "ed564d3a-0c40-4486-a4ab-51a2d4a93069": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -38.333333333333336, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -38.333333333333336, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ed564d3a-0c40-4486-a4ab-51a2d4a93069", + "Name": null + }, + "c9a74174-9119-4e43-8eec-e97fe5c52b18": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -36.666666666666664, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "c9a74174-9119-4e43-8eec-e97fe5c52b18", + "Name": "W12x152", + "CellId": 145, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "1e1e6558-76fd-40bc-9333-0cfa5204d330": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -36.666666666666664, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -36.666666666666664, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1e1e6558-76fd-40bc-9333-0cfa5204d330", + "Name": null + }, + "2142ebca-3c21-497e-9609-59a25f70cdb4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "2142ebca-3c21-497e-9609-59a25f70cdb4", + "Name": "W12x152", + "CellId": 146, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "2e4e5409-7ab6-4fef-af59-61e3be57f08d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 24.625, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2e4e5409-7ab6-4fef-af59-61e3be57f08d", + "Name": null + }, + "347f0c3b-f24b-4fa3-a426-49d79b9e9bdc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "347f0c3b-f24b-4fa3-a426-49d79b9e9bdc", + "Name": "W12x152", + "CellId": 146, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9821b949-03f9-4d04-aad7-1e9303ec545e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 26.25, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9821b949-03f9-4d04-aad7-1e9303ec545e", + "Name": null + }, + "70f7b738-433f-4df5-96b2-a9131400293f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "70f7b738-433f-4df5-96b2-a9131400293f", + "Name": "W12x152", + "CellId": 146, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "8ff74b24-56f8-4fdc-9bd1-20cb96b41967": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 27.875, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8ff74b24-56f8-4fdc-9bd1-20cb96b41967", + "Name": null + }, + "e4432fa8-92f6-49cc-b1a1-bbf356edcb1b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "e4432fa8-92f6-49cc-b1a1-bbf356edcb1b", + "Name": "W12x152", + "CellId": 147, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a76592f3-8131-40a0-9c5d-1504a70a01c5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 17.75, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a76592f3-8131-40a0-9c5d-1504a70a01c5", + "Name": null + }, + "88e68ac3-1ab5-40da-b29c-ac914b2d96e1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "88e68ac3-1ab5-40da-b29c-ac914b2d96e1", + "Name": "W12x152", + "CellId": 147, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "44a14673-329f-4fdf-a4b0-2221d4dddd5c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 19.5, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "44a14673-329f-4fdf-a4b0-2221d4dddd5c", + "Name": null + }, + "cb03cd3b-2e3d-4c78-9b9a-7cac8298d674": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "cb03cd3b-2e3d-4c78-9b9a-7cac8298d674", + "Name": "W12x152", + "CellId": 147, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "47d964f1-6a70-4406-bbc1-5a3f35bce76d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 21.25, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "47d964f1-6a70-4406-bbc1-5a3f35bce76d", + "Name": null + }, + "ef5acfea-143e-4678-9ebe-aff8993f2aa7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "ef5acfea-143e-4678-9ebe-aff8993f2aa7", + "Name": "W12x152", + "CellId": 148, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ddb5f93b-698e-4b57-874d-4b4e660e0219": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 10.75, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ddb5f93b-698e-4b57-874d-4b4e660e0219", + "Name": null + }, + "ccdaebdb-633a-44f0-aa19-41f747ffddf2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "ccdaebdb-633a-44f0-aa19-41f747ffddf2", + "Name": "W12x152", + "CellId": 148, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "64e1257e-01f3-485a-ae6e-dcf8d535e426": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 12.5, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "64e1257e-01f3-485a-ae6e-dcf8d535e426", + "Name": null + }, + "bc24f565-1a11-4b7f-a7f4-15cdab75cf55": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "bc24f565-1a11-4b7f-a7f4-15cdab75cf55", + "Name": "W12x152", + "CellId": 148, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "cca8c72e-6c97-4790-8998-bae6bacd8343": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 14.25, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cca8c72e-6c97-4790-8998-bae6bacd8343", + "Name": null + }, + "5eee5b7d-e4bd-4092-af64-b3a623e6de4f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "5eee5b7d-e4bd-4092-af64-b3a623e6de4f", + "Name": "W12x152", + "CellId": 149, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "aff7bd80-a1e7-46f8-8af8-a4beae6b71e3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 3.75, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "aff7bd80-a1e7-46f8-8af8-a4beae6b71e3", + "Name": null + }, + "a7e9574a-31e0-4f34-bb5a-137f59929a28": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "a7e9574a-31e0-4f34-bb5a-137f59929a28", + "Name": "W12x152", + "CellId": 149, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e380a03a-4417-49a6-bd4c-8fabd9a71222": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 5.5, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e380a03a-4417-49a6-bd4c-8fabd9a71222", + "Name": null + }, + "df3100f6-94e1-45e6-8359-d528b366ff71": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "df3100f6-94e1-45e6-8359-d528b366ff71", + "Name": "W12x152", + "CellId": 149, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0e4e7eef-56ed-4eac-bc7d-5951164bfa9a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 7.25, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0e4e7eef-56ed-4eac-bc7d-5951164bfa9a", + "Name": null + }, + "9c24d1aa-cbee-4bdc-a33a-7894b0d24bf2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -43.333333333333336, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "9c24d1aa-cbee-4bdc-a33a-7894b0d24bf2", + "Name": "W12x152", + "CellId": 150, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "7c87ee2a-6a23-4cd3-9eac-c6257749faee": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -43.333333333333336, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -43.333333333333336, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7c87ee2a-6a23-4cd3-9eac-c6257749faee", + "Name": null + }, + "a69a2334-feb7-4734-b36d-a7a2908fb10c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -41.666666666666664, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "a69a2334-feb7-4734-b36d-a7a2908fb10c", + "Name": "W12x152", + "CellId": 150, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "cad570f5-d050-49e9-a41a-053830e4d3c9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -41.666666666666664, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -41.666666666666664, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cad570f5-d050-49e9-a41a-053830e4d3c9", + "Name": null + }, + "9ceeec99-a948-41d7-952a-de6b077d7dde": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "9ceeec99-a948-41d7-952a-de6b077d7dde", + "Name": "W12x152", + "CellId": 151, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fa7abb7c-2c84-4980-8e9c-2349ede0d5fb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 24.625, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fa7abb7c-2c84-4980-8e9c-2349ede0d5fb", + "Name": null + }, + "16b9e9c9-27c3-421c-8e23-1673d97291c5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "16b9e9c9-27c3-421c-8e23-1673d97291c5", + "Name": "W12x152", + "CellId": 151, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "07c19924-5df4-4c83-9b31-9a3115e1bd01": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 26.25, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "07c19924-5df4-4c83-9b31-9a3115e1bd01", + "Name": null + }, + "3e1b2f51-25b2-4888-8dd2-ad8249172097": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "3e1b2f51-25b2-4888-8dd2-ad8249172097", + "Name": "W12x152", + "CellId": 151, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d62ef690-9226-4125-b3d6-5f496211c9ac": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 27.875, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d62ef690-9226-4125-b3d6-5f496211c9ac", + "Name": null + }, + "816d26d1-fa60-471e-99f3-573438a17351": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "816d26d1-fa60-471e-99f3-573438a17351", + "Name": "W12x152", + "CellId": 152, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1ddffee6-9e67-471d-881e-01ee8c2a03db": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 17.75, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1ddffee6-9e67-471d-881e-01ee8c2a03db", + "Name": null + }, + "279d8968-2b89-46aa-be33-a115a2cc81ab": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "279d8968-2b89-46aa-be33-a115a2cc81ab", + "Name": "W12x152", + "CellId": 152, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9f1a700c-b32a-447d-b9e0-af9e9da751a5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 19.5, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9f1a700c-b32a-447d-b9e0-af9e9da751a5", + "Name": null + }, + "133d4b7c-1c55-462a-bc1e-2f5477f69037": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "133d4b7c-1c55-462a-bc1e-2f5477f69037", + "Name": "W12x152", + "CellId": 152, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "32ebc887-88e3-44cd-9792-29fca5927025": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 21.25, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "32ebc887-88e3-44cd-9792-29fca5927025", + "Name": null + }, + "540067dc-7a46-4bf1-a270-8e7d033d05b3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "540067dc-7a46-4bf1-a270-8e7d033d05b3", + "Name": "W12x152", + "CellId": 153, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d1c40869-50cf-4f9f-84b7-79a0eeb0d49a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 10.75, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d1c40869-50cf-4f9f-84b7-79a0eeb0d49a", + "Name": null + }, + "d78b8175-a450-4ada-977e-58df17871fb7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d78b8175-a450-4ada-977e-58df17871fb7", + "Name": "W12x152", + "CellId": 153, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "53062684-81b4-4cf9-b521-fc06ffddde3a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 12.5, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "53062684-81b4-4cf9-b521-fc06ffddde3a", + "Name": null + }, + "d01e3d5e-4c36-474f-bc44-713efec62aeb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d01e3d5e-4c36-474f-bc44-713efec62aeb", + "Name": "W12x152", + "CellId": 153, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "10692b6c-4c42-4291-81ff-633ea040ae0b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 14.25, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "10692b6c-4c42-4291-81ff-633ea040ae0b", + "Name": null + }, + "0d756bc5-5678-45aa-bd91-2270099f79e4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "0d756bc5-5678-45aa-bd91-2270099f79e4", + "Name": "W12x152", + "CellId": 154, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "10b9b980-2932-4f68-8e53-633edfe18e32": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 3.75, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "10b9b980-2932-4f68-8e53-633edfe18e32", + "Name": null + }, + "9bcb2a21-a75c-464d-9418-29b9c4219b2f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "9bcb2a21-a75c-464d-9418-29b9c4219b2f", + "Name": "W12x152", + "CellId": 154, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9b5ecc0d-47f7-4d2c-a27c-c64a7871b900": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 5.5, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9b5ecc0d-47f7-4d2c-a27c-c64a7871b900", + "Name": null + }, + "24f0a58b-1e34-47aa-90c9-4f23a76e02f2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "24f0a58b-1e34-47aa-90c9-4f23a76e02f2", + "Name": "W12x152", + "CellId": 154, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "49ebe05d-1c4e-47c5-b079-797917b3e8fc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 7.25, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "49ebe05d-1c4e-47c5-b079-797917b3e8fc", + "Name": null + }, + "51a11f9e-ec12-4f95-87e4-06cdd72b8533": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -48.333333333333336, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "51a11f9e-ec12-4f95-87e4-06cdd72b8533", + "Name": "W12x152", + "CellId": 155, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "f9f400f9-d4ef-45c7-bd99-1cababf36542": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -48.333333333333336, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -48.333333333333336, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f9f400f9-d4ef-45c7-bd99-1cababf36542", + "Name": null + }, + "b6b0ff09-24a8-43d9-8b5c-094a3dd18f6d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -46.666666666666664, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "b6b0ff09-24a8-43d9-8b5c-094a3dd18f6d", + "Name": "W12x152", + "CellId": 155, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "9c9e5ad5-2d9b-41e5-b893-e669fadb81f5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -46.666666666666664, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -46.666666666666664, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9c9e5ad5-2d9b-41e5-b893-e669fadb81f5", + "Name": null + }, + "b27a551d-22de-4219-860e-fcc014915556": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "b27a551d-22de-4219-860e-fcc014915556", + "Name": "W12x152", + "CellId": 156, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fce653f6-5e01-41f4-9d8d-52d54c4332d0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 24.625, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fce653f6-5e01-41f4-9d8d-52d54c4332d0", + "Name": null + }, + "51ae1991-6e92-4d38-8b9f-e15a50ec6281": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "51ae1991-6e92-4d38-8b9f-e15a50ec6281", + "Name": "W12x152", + "CellId": 156, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7bd146c0-867f-4966-834e-ed39c254a4b5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 26.25, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7bd146c0-867f-4966-834e-ed39c254a4b5", + "Name": null + }, + "f46806fa-2238-41a4-8352-06475f834eca": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "f46806fa-2238-41a4-8352-06475f834eca", + "Name": "W12x152", + "CellId": 156, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "486e1191-3f72-4940-a410-6259f864747a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 27.875, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "486e1191-3f72-4940-a410-6259f864747a", + "Name": null + }, + "fa96713a-211a-468f-a330-bdade2343a0f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "fa96713a-211a-468f-a330-bdade2343a0f", + "Name": "W12x152", + "CellId": 157, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "49751d31-477a-4f77-bd5f-7156092f1c49": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 17.75, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "49751d31-477a-4f77-bd5f-7156092f1c49", + "Name": null + }, + "1d25c174-bdc2-4b22-bdcc-1dfedccac0a6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "1d25c174-bdc2-4b22-bdcc-1dfedccac0a6", + "Name": "W12x152", + "CellId": 157, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3fe3e6fe-edb1-4600-8131-6898c47ac457": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 19.5, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3fe3e6fe-edb1-4600-8131-6898c47ac457", + "Name": null + }, + "20b6e150-e315-40ea-9a33-58435bbbf525": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "20b6e150-e315-40ea-9a33-58435bbbf525", + "Name": "W12x152", + "CellId": 157, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9c5cf233-1337-47c3-9c33-4c6b64e6e8ed": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 21.25, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9c5cf233-1337-47c3-9c33-4c6b64e6e8ed", + "Name": null + }, + "ba05ed80-509b-4a21-9334-83b9eab3f5cd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "ba05ed80-509b-4a21-9334-83b9eab3f5cd", + "Name": "W12x152", + "CellId": 158, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "80703c97-7d41-490a-9fb6-641545c18701": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 10.75, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "80703c97-7d41-490a-9fb6-641545c18701", + "Name": null + }, + "a3303247-51d8-4dc6-863c-276ad9c53b10": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "a3303247-51d8-4dc6-863c-276ad9c53b10", + "Name": "W12x152", + "CellId": 158, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7f131c91-5984-4621-a19b-fd41302d8f7a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 12.5, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7f131c91-5984-4621-a19b-fd41302d8f7a", + "Name": null + }, + "ea05ea04-97ec-4ef4-849d-5d25fa89d3e8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "ea05ea04-97ec-4ef4-849d-5d25fa89d3e8", + "Name": "W12x152", + "CellId": 158, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9a9e03bb-d329-4021-aef5-f0c1124ec604": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 14.25, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9a9e03bb-d329-4021-aef5-f0c1124ec604", + "Name": null + }, + "64f66117-2ee5-4d8c-8913-04d3686d8b36": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "64f66117-2ee5-4d8c-8913-04d3686d8b36", + "Name": "W12x152", + "CellId": 159, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f78632e7-7490-471c-9924-e77359eeb9a2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 3.75, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f78632e7-7490-471c-9924-e77359eeb9a2", + "Name": null + }, + "8c3895b5-7536-4b11-aaae-17a904510532": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "8c3895b5-7536-4b11-aaae-17a904510532", + "Name": "W12x152", + "CellId": 159, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "761ad38e-b6c9-4878-b9ee-1c347435c611": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 5.5, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "761ad38e-b6c9-4878-b9ee-1c347435c611", + "Name": null + }, + "95869294-87d4-4e2c-9433-bd5cd525fc71": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "95869294-87d4-4e2c-9433-bd5cd525fc71", + "Name": "W12x152", + "CellId": 159, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0544ced9-d1a9-43d9-9814-2588b1f45274": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 7.25, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0544ced9-d1a9-43d9-9814-2588b1f45274", + "Name": null + }, + "d4754413-96c6-4217-ac64-07ceb86139bb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -53.333333333333336, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d4754413-96c6-4217-ac64-07ceb86139bb", + "Name": "W12x152", + "CellId": 160, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "b8b74c9a-8e0f-4cd9-a9cc-c72193f7c8ed": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -53.333333333333336, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -53.333333333333336, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b8b74c9a-8e0f-4cd9-a9cc-c72193f7c8ed", + "Name": null + }, + "2e9a581a-4ecf-467f-b271-16fe8d38b979": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -51.666666666666664, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "2e9a581a-4ecf-467f-b271-16fe8d38b979", + "Name": "W12x152", + "CellId": 160, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "8389a62a-e511-4483-93c0-dd61dd272d43": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -51.666666666666664, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -51.666666666666664, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8389a62a-e511-4483-93c0-dd61dd272d43", + "Name": null + }, + "91a80d94-3ee7-4457-9587-6903c814a970": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "91a80d94-3ee7-4457-9587-6903c814a970", + "Name": "W12x152", + "CellId": 161, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "134d8208-4aba-4460-b89f-8729c56dff53": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 24.625, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "134d8208-4aba-4460-b89f-8729c56dff53", + "Name": null + }, + "9739d31c-abcc-4e29-b195-7214b7b4553f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "9739d31c-abcc-4e29-b195-7214b7b4553f", + "Name": "W12x152", + "CellId": 161, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "294283d2-9d25-4827-8f42-af3d66f6c056": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 26.25, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "294283d2-9d25-4827-8f42-af3d66f6c056", + "Name": null + }, + "2ff192d8-990d-4020-8008-38dffb686d2a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "2ff192d8-990d-4020-8008-38dffb686d2a", + "Name": "W12x152", + "CellId": 161, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "15c1a361-0a63-4c18-8033-391cf48f11f2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 27.875, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "15c1a361-0a63-4c18-8033-391cf48f11f2", + "Name": null + }, + "3ad2730e-3f76-49ad-be41-dedafbb6cc75": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "3ad2730e-3f76-49ad-be41-dedafbb6cc75", + "Name": "W12x152", + "CellId": 162, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "148790d0-4444-4030-a748-2e9813eb71eb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 17.75, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "148790d0-4444-4030-a748-2e9813eb71eb", + "Name": null + }, + "205a6c33-1c3d-4d33-8c9d-9e921e97dcca": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "205a6c33-1c3d-4d33-8c9d-9e921e97dcca", + "Name": "W12x152", + "CellId": 162, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3d6a606f-e487-4b59-9b45-110c71bc0b86": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 19.5, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3d6a606f-e487-4b59-9b45-110c71bc0b86", + "Name": null + }, + "819c7c12-8ed0-47a7-86fb-7404d9b4adf5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "819c7c12-8ed0-47a7-86fb-7404d9b4adf5", + "Name": "W12x152", + "CellId": 162, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4624841d-7093-4269-b9f7-3dfd217d5ba2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 21.25, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4624841d-7093-4269-b9f7-3dfd217d5ba2", + "Name": null + }, + "abd69d33-fd83-49e2-91f1-0b8fcdc33b26": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "abd69d33-fd83-49e2-91f1-0b8fcdc33b26", + "Name": "W12x152", + "CellId": 163, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f05dc298-d720-4a03-9067-3cb94bf85bef": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 10.75, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f05dc298-d720-4a03-9067-3cb94bf85bef", + "Name": null + }, + "9b9bb570-57dd-4c3e-817b-4b9d03c36c08": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "9b9bb570-57dd-4c3e-817b-4b9d03c36c08", + "Name": "W12x152", + "CellId": 163, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3a0ad797-6c81-488c-887e-16b5f4814c9e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 12.5, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3a0ad797-6c81-488c-887e-16b5f4814c9e", + "Name": null + }, + "b0bdd28c-3e3a-4f05-8ef6-2a6f9839cf22": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "b0bdd28c-3e3a-4f05-8ef6-2a6f9839cf22", + "Name": "W12x152", + "CellId": 163, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "083368c1-07fd-4845-8f85-c66792dea379": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 14.25, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "083368c1-07fd-4845-8f85-c66792dea379", + "Name": null + }, + "c7adc3e0-b641-49c9-867a-22b1913055b7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "c7adc3e0-b641-49c9-867a-22b1913055b7", + "Name": "W12x152", + "CellId": 164, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "bf518c02-83fa-463d-9845-4d0dc3678cf6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 3.75, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bf518c02-83fa-463d-9845-4d0dc3678cf6", + "Name": null + }, + "e4e01a5b-b7ca-4450-a30b-586787147f31": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "e4e01a5b-b7ca-4450-a30b-586787147f31", + "Name": "W12x152", + "CellId": 164, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7cb42a51-3be4-48e2-b853-bd599c11f9ab": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 5.5, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7cb42a51-3be4-48e2-b853-bd599c11f9ab", + "Name": null + }, + "cb34c68d-1ca1-4cd3-b0fd-c55dd6e57bbb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "cb34c68d-1ca1-4cd3-b0fd-c55dd6e57bbb", + "Name": "W12x152", + "CellId": 164, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "2b8c9a87-4a5d-4f78-abc2-732119cb03d1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 7.25, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2b8c9a87-4a5d-4f78-abc2-732119cb03d1", + "Name": null + }, + "a5b85343-2322-41ef-a285-b12fb36a9279": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -58.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "a5b85343-2322-41ef-a285-b12fb36a9279", + "Name": "W12x152", + "CellId": 165, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "bbc7e0ea-0e5a-4320-8374-066799f01ff9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -58.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -58.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bbc7e0ea-0e5a-4320-8374-066799f01ff9", + "Name": null + }, + "f719e3f8-74a3-4620-a7b0-1e7ab2b7603e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -56.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "f719e3f8-74a3-4620-a7b0-1e7ab2b7603e", + "Name": "W12x152", + "CellId": 165, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "4ecb11ff-6f24-496e-a495-f12b929d5cc1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -56.5, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -56.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4ecb11ff-6f24-496e-a495-f12b929d5cc1", + "Name": null + }, + "456a00e5-0976-4cff-a80f-dba13079602a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "0a4b6575-3b0a-47a0-834e-6e427af090ca", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -2.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "456a00e5-0976-4cff-a80f-dba13079602a", + "Name": "W12x152", + "CellId": 166, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "e9bc7c87-f4a0-4520-a7e3-a01caa45ece7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -2.0, + "Z": 12.2 + }, + "End": { + "X": 10.7324, + "Y": -2.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e9bc7c87-f4a0-4520-a7e3-a01caa45ece7", + "Name": null + }, + "478b906b-c233-46a2-bea9-5591a6d37bba": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c30b6320-d3a9-4244-9b8e-ff895659beb0", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -3.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "478b906b-c233-46a2-bea9-5591a6d37bba", + "Name": "W12x152", + "CellId": 166, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "04ece645-f181-4bc3-a06b-ac931f7feef8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -3.5, + "Z": 12.2 + }, + "End": { + "X": 11.7324, + "Y": -3.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "04ece645-f181-4bc3-a06b-ac931f7feef8", + "Name": null + }, + "399465e3-a9e7-425c-bbc4-a02f40696fb8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "0a4b6575-3b0a-47a0-834e-6e427af090ca", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -2.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "399465e3-a9e7-425c-bbc4-a02f40696fb8", + "Name": "W12x152", + "CellId": 167, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "119afa48-4722-4939-aeb7-d1aaa8a4f672": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -2.0, + "Z": 20.0 + }, + "End": { + "X": 10.7324, + "Y": -2.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "119afa48-4722-4939-aeb7-d1aaa8a4f672", + "Name": null + }, + "7910d5f6-9bb4-407e-bf75-6e49457f7a34": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c30b6320-d3a9-4244-9b8e-ff895659beb0", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -3.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "7910d5f6-9bb4-407e-bf75-6e49457f7a34", + "Name": "W12x152", + "CellId": 167, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "9c9b0aaa-0b94-4ed3-b95e-4e24bde94398": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -3.5, + "Z": 20.0 + }, + "End": { + "X": 11.7324, + "Y": -3.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9c9b0aaa-0b94-4ed3-b95e-4e24bde94398", + "Name": null + }, + "62976abb-e91c-4cb9-89e7-55992fb709c6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "62976abb-e91c-4cb9-89e7-55992fb709c6", + "Name": "W12x152", + "CellId": 168, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7a1fc0dc-28fd-46e5-8bdb-4eaf2110b422": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -5.0, + "Z": 12.2 + }, + "End": { + "X": 3.75, + "Y": -0.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7a1fc0dc-28fd-46e5-8bdb-4eaf2110b422", + "Name": null + }, + "7a91d33e-b882-4552-9f14-f0073b7bd896": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "7a91d33e-b882-4552-9f14-f0073b7bd896", + "Name": "W12x152", + "CellId": 168, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "420fdfee-4264-429e-954b-b400aff6dfa8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -5.0, + "Z": 12.2 + }, + "End": { + "X": 5.5, + "Y": -0.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "420fdfee-4264-429e-954b-b400aff6dfa8", + "Name": null + }, + "7328d769-5ee3-47ea-8d0f-5576319940d3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "7328d769-5ee3-47ea-8d0f-5576319940d3", + "Name": "W12x152", + "CellId": 168, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "af0a62a1-5100-4c40-a804-9a63157c004b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -5.0, + "Z": 12.2 + }, + "End": { + "X": 7.25, + "Y": -0.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "af0a62a1-5100-4c40-a804-9a63157c004b", + "Name": null + }, + "2ba2b496-922a-496e-a7b9-31b4803df00f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "2ba2b496-922a-496e-a7b9-31b4803df00f", + "Name": "W12x152", + "CellId": 169, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "72b9f740-af7e-4fa4-a80f-b55d3df028dd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -5.0, + "Z": 20.0 + }, + "End": { + "X": 3.75, + "Y": -0.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "72b9f740-af7e-4fa4-a80f-b55d3df028dd", + "Name": null + }, + "8d2d9125-05de-4bec-be44-a6138b6e46f7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "8d2d9125-05de-4bec-be44-a6138b6e46f7", + "Name": "W12x152", + "CellId": 169, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4de065a2-c3c4-4bb7-bed6-cf4a6145b8a1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -5.0, + "Z": 20.0 + }, + "End": { + "X": 5.5, + "Y": -0.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4de065a2-c3c4-4bb7-bed6-cf4a6145b8a1", + "Name": null + }, + "81a83a1a-c188-4937-b133-74ffbe83e3d1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "81a83a1a-c188-4937-b133-74ffbe83e3d1", + "Name": "W12x152", + "CellId": 169, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "de0f69d3-ae3d-4676-bf9a-ae7c75c4f673": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -5.0, + "Z": 20.0 + }, + "End": { + "X": 7.25, + "Y": -0.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "de0f69d3-ae3d-4676-bf9a-ae7c75c4f673", + "Name": null + }, + "77b92ad6-ff9f-4efa-9089-1ad62eca1232": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -3.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "77b92ad6-ff9f-4efa-9089-1ad62eca1232", + "Name": "W12x152", + "CellId": 170, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "30ea848a-0294-49fa-bcbd-f7d93b21e581": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -3.5, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -3.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "30ea848a-0294-49fa-bcbd-f7d93b21e581", + "Name": null + }, + "06ff9abd-95ac-4a77-ae34-090c45ebde46": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -2.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "06ff9abd-95ac-4a77-ae34-090c45ebde46", + "Name": "W12x152", + "CellId": 170, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "57a8abaa-7900-411a-a85f-b3589c824777": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -2.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -2.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "57a8abaa-7900-411a-a85f-b3589c824777", + "Name": null + }, + "7d708dab-d00b-4fa7-8f87-ddabb39ac0e9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -3.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "7d708dab-d00b-4fa7-8f87-ddabb39ac0e9", + "Name": "W12x152", + "CellId": 171, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "a5d6bffc-2f9c-4269-816b-ab51cdce0df3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -3.5, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -3.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a5d6bffc-2f9c-4269-816b-ab51cdce0df3", + "Name": null + }, + "79996cda-4a35-4db8-9e25-b11da6aa130e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -2.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "79996cda-4a35-4db8-9e25-b11da6aa130e", + "Name": "W12x152", + "CellId": 171, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "5c285561-8617-4345-9d86-6a5f394128d2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -2.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -2.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5c285561-8617-4345-9d86-6a5f394128d2", + "Name": null + }, + "2d7f011c-35bd-42a5-bc69-83762623e85d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "2d7f011c-35bd-42a5-bc69-83762623e85d", + "Name": "W12x152", + "CellId": 174, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "93b37eb9-a9ef-4910-8e0f-f5465225bcff": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 10.75, + "Y": -5.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "93b37eb9-a9ef-4910-8e0f-f5465225bcff", + "Name": null + }, + "40f4c3d8-30cb-47c4-ac28-fef115d569ba": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "40f4c3d8-30cb-47c4-ac28-fef115d569ba", + "Name": "W12x152", + "CellId": 174, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6879c94b-58c8-4011-9bd9-a71a2a4f42bf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 12.5, + "Y": -5.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6879c94b-58c8-4011-9bd9-a71a2a4f42bf", + "Name": null + }, + "21a1607d-4014-4161-8a0e-51df56470c58": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d463367e-606b-478f-9829-18208e0b592e", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "21a1607d-4014-4161-8a0e-51df56470c58", + "Name": "W12x152", + "CellId": 174, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "bd9ec718-38c5-49ac-9902-16a3fbda3e33": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 14.25, + "Y": -7.276400000000001, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bd9ec718-38c5-49ac-9902-16a3fbda3e33", + "Name": null + }, + "47f2ad8c-5585-4716-9f7a-061e73e1c8c3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "47f2ad8c-5585-4716-9f7a-061e73e1c8c3", + "Name": "W12x152", + "CellId": 175, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4179a531-3079-4091-a35e-695079ee2681": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 10.75, + "Y": -5.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4179a531-3079-4091-a35e-695079ee2681", + "Name": null + }, + "23b8d252-b18e-4a18-a9a9-a9c0f0ff91a4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "23b8d252-b18e-4a18-a9a9-a9c0f0ff91a4", + "Name": "W12x152", + "CellId": 175, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "83d1ade6-c290-4cc4-983b-f1bc2010b7f4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 12.5, + "Y": -5.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "83d1ade6-c290-4cc4-983b-f1bc2010b7f4", + "Name": null + }, + "6b7c48d4-ede3-4835-a771-d80a328dee34": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d463367e-606b-478f-9829-18208e0b592e", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "6b7c48d4-ede3-4835-a771-d80a328dee34", + "Name": "W12x152", + "CellId": 175, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e33fffa7-2387-42b6-85cc-665fa1ac6488": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 14.25, + "Y": -7.276400000000001, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e33fffa7-2387-42b6-85cc-665fa1ac6488", + "Name": null + }, + "1693234c-f4e6-4b74-9066-9679c53f91e7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "1693234c-f4e6-4b74-9066-9679c53f91e7", + "Name": "W12x152", + "CellId": 176, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ecfd40b5-e776-488b-b434-32878669781a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 3.75, + "Y": -5.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ecfd40b5-e776-488b-b434-32878669781a", + "Name": null + }, + "5fb9067e-4be9-4cfc-ad91-195c692a7a96": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "5fb9067e-4be9-4cfc-ad91-195c692a7a96", + "Name": "W12x152", + "CellId": 176, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b8a941b6-c188-4e4f-9e7a-227357badaf9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 5.5, + "Y": -5.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b8a941b6-c188-4e4f-9e7a-227357badaf9", + "Name": null + }, + "55555272-46ce-45c1-b859-7cec136715ab": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "55555272-46ce-45c1-b859-7cec136715ab", + "Name": "W12x152", + "CellId": 176, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4a289917-06b0-4e1e-8b52-77d5b3c060e3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 7.25, + "Y": -5.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4a289917-06b0-4e1e-8b52-77d5b3c060e3", + "Name": null + }, + "7eb13d2c-6d9f-49b1-bb1a-6b1a686dfbc8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "7eb13d2c-6d9f-49b1-bb1a-6b1a686dfbc8", + "Name": "W12x152", + "CellId": 177, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "08dacb74-8e09-47a6-b26f-1ef4667b60f3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 3.75, + "Y": -5.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "08dacb74-8e09-47a6-b26f-1ef4667b60f3", + "Name": null + }, + "c4424000-6d32-46df-b2be-46fc77bc3c77": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "c4424000-6d32-46df-b2be-46fc77bc3c77", + "Name": "W12x152", + "CellId": 177, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "da556733-cae6-47fb-b974-9e71a569628a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 5.5, + "Y": -5.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "da556733-cae6-47fb-b974-9e71a569628a", + "Name": null + }, + "45070934-7cc0-40d7-bd4c-f0ee4c154a36": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "45070934-7cc0-40d7-bd4c-f0ee4c154a36", + "Name": "W12x152", + "CellId": 177, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "cc17786a-59d5-426b-ab95-a1b1d4495e61": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 7.25, + "Y": -5.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cc17786a-59d5-426b-ab95-a1b1d4495e61", + "Name": null + }, + "1a8f205c-78a9-44f7-b5b0-3fbf277da1ce": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -8.333333333333334, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "1a8f205c-78a9-44f7-b5b0-3fbf277da1ce", + "Name": "W12x152", + "CellId": 178, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "c8c2b44e-68bd-4ab3-b7e6-12637334bf62": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -8.333333333333334, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -8.333333333333334, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c8c2b44e-68bd-4ab3-b7e6-12637334bf62", + "Name": null + }, + "acfe23ec-1a98-43f6-9a18-6f40f7f0a67f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -6.666666666666667, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "acfe23ec-1a98-43f6-9a18-6f40f7f0a67f", + "Name": "W12x152", + "CellId": 178, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "138580b3-43d0-415c-9ac7-aa856541739b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -6.666666666666667, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -6.666666666666667, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "138580b3-43d0-415c-9ac7-aa856541739b", + "Name": null + }, + "4677d8f0-10b1-482f-9216-438977be98fe": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -8.333333333333334, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "4677d8f0-10b1-482f-9216-438977be98fe", + "Name": "W12x152", + "CellId": 179, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "48f760e8-6bcd-49fa-96bf-bff52eafa2dd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -8.333333333333334, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -8.333333333333334, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "48f760e8-6bcd-49fa-96bf-bff52eafa2dd", + "Name": null + }, + "4509346a-4565-41c8-8216-62e7a9f9d6f5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -6.666666666666667, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "4509346a-4565-41c8-8216-62e7a9f9d6f5", + "Name": "W12x152", + "CellId": 179, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "375765f1-658d-4257-8c8b-4413fa8847ac": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -6.666666666666667, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -6.666666666666667, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "375765f1-658d-4257-8c8b-4413fa8847ac", + "Name": null + }, + "678e7bf6-d340-435b-9325-dff86003541d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e9998d1f-f37e-4ec1-9a37-d6129df9567b", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -11.666666666666666, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "678e7bf6-d340-435b-9325-dff86003541d", + "Name": "W12x152", + "CellId": 180, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "4de736fd-1caa-41ef-b639-22116450ad86": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -11.666666666666666, + "Z": 12.2 + }, + "End": { + "X": 17.176846666666666, + "Y": -11.666666666666666, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4de736fd-1caa-41ef-b639-22116450ad86", + "Name": null + }, + "efc32026-72ac-4dcf-a090-28f1022f2915": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "48a4ab2f-6f28-414c-be2a-e0687d5249cc", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -13.333333333333332, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "efc32026-72ac-4dcf-a090-28f1022f2915", + "Name": "W12x152", + "CellId": 180, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "8a108595-59e9-4078-b917-a5856b804ef7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -13.333333333333332, + "Z": 12.2 + }, + "End": { + "X": 18.287953333333334, + "Y": -13.333333333333332, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8a108595-59e9-4078-b917-a5856b804ef7", + "Name": null + }, + "45fe2d51-5eb7-4801-a5e2-e33c28a1a853": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e9998d1f-f37e-4ec1-9a37-d6129df9567b", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -11.666666666666666, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "45fe2d51-5eb7-4801-a5e2-e33c28a1a853", + "Name": "W12x152", + "CellId": 181, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "0a6bfffb-2ec8-48c0-a31e-e92f20a066b5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -11.666666666666666, + "Z": 20.0 + }, + "End": { + "X": 17.176846666666666, + "Y": -11.666666666666666, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0a6bfffb-2ec8-48c0-a31e-e92f20a066b5", + "Name": null + }, + "8416c996-4b82-434e-9a32-5ef860f1d831": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "48a4ab2f-6f28-414c-be2a-e0687d5249cc", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -13.333333333333332, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "8416c996-4b82-434e-9a32-5ef860f1d831", + "Name": "W12x152", + "CellId": 181, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "4a627c3a-cea9-4c41-a10e-04be43fe5b8b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -13.333333333333332, + "Z": 20.0 + }, + "End": { + "X": 18.287953333333334, + "Y": -13.333333333333332, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4a627c3a-cea9-4c41-a10e-04be43fe5b8b", + "Name": null + }, + "78a00951-be91-4ea4-a0e6-2033075b0a40": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "78a00951-be91-4ea4-a0e6-2033075b0a40", + "Name": "W12x152", + "CellId": 182, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "91dbec9a-ec5c-472d-bd6b-594c8234eba6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 10.75, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "91dbec9a-ec5c-472d-bd6b-594c8234eba6", + "Name": null + }, + "c3bff4e7-f635-4bee-882c-cb66c50a1220": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "c3bff4e7-f635-4bee-882c-cb66c50a1220", + "Name": "W12x152", + "CellId": 182, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9d073786-1864-4a00-95fa-d1aa2b9fd691": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 12.5, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9d073786-1864-4a00-95fa-d1aa2b9fd691", + "Name": null + }, + "e014e074-8376-4cf6-816c-2be7b099fe6b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "e014e074-8376-4cf6-816c-2be7b099fe6b", + "Name": "W12x152", + "CellId": 182, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d89539a7-fd59-4c55-b67c-802085e4688b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 14.25, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d89539a7-fd59-4c55-b67c-802085e4688b", + "Name": null + }, + "6c202453-3870-4e84-ad4b-59cd4364334d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "6c202453-3870-4e84-ad4b-59cd4364334d", + "Name": "W12x152", + "CellId": 183, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1a8fa706-a1bb-4f26-b7af-7db964862c16": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 10.75, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1a8fa706-a1bb-4f26-b7af-7db964862c16", + "Name": null + }, + "84dc1b5c-ca3c-4aa3-ab1d-68514d3400a1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "84dc1b5c-ca3c-4aa3-ab1d-68514d3400a1", + "Name": "W12x152", + "CellId": 183, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b1dd924c-2c03-4a38-97a5-4c5bebaee529": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 12.5, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b1dd924c-2c03-4a38-97a5-4c5bebaee529", + "Name": null + }, + "2315a225-027f-4c02-a69e-964ce5fd0fdf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "2315a225-027f-4c02-a69e-964ce5fd0fdf", + "Name": "W12x152", + "CellId": 183, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "32cc37b7-9233-45a0-b0ac-72e15f7bcaed": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 14.25, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "32cc37b7-9233-45a0-b0ac-72e15f7bcaed", + "Name": null + }, + "ce7736be-1028-4430-8471-743ac284ccb6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "ce7736be-1028-4430-8471-743ac284ccb6", + "Name": "W12x152", + "CellId": 184, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1635a1c4-18a0-494a-ba33-907c1d0c71d0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 3.75, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1635a1c4-18a0-494a-ba33-907c1d0c71d0", + "Name": null + }, + "0436140c-409e-4844-aed9-9329f5218859": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "0436140c-409e-4844-aed9-9329f5218859", + "Name": "W12x152", + "CellId": 184, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4d423244-1fb9-4f61-ab07-754733e6cab3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 5.5, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4d423244-1fb9-4f61-ab07-754733e6cab3", + "Name": null + }, + "7302abfd-c537-4c63-aed5-41da2dae2807": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "7302abfd-c537-4c63-aed5-41da2dae2807", + "Name": "W12x152", + "CellId": 184, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "dd84f3a4-b7e1-4656-88f7-f98f2fc83da5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 7.25, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dd84f3a4-b7e1-4656-88f7-f98f2fc83da5", + "Name": null + }, + "a8c4ff3d-dafe-44a9-9252-a250f9a3d23c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "a8c4ff3d-dafe-44a9-9252-a250f9a3d23c", + "Name": "W12x152", + "CellId": 185, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "2517f473-0911-4989-998f-6bd1af7d15fb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 3.75, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2517f473-0911-4989-998f-6bd1af7d15fb", + "Name": null + }, + "89fb5b8b-220d-4912-9a51-6fc9d38af9db": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "89fb5b8b-220d-4912-9a51-6fc9d38af9db", + "Name": "W12x152", + "CellId": 185, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e871beb2-c8b8-4007-a9f4-11257761e8f3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 5.5, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e871beb2-c8b8-4007-a9f4-11257761e8f3", + "Name": null + }, + "c582815b-73dc-4bf4-b8ff-dfd0bc226bb9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "c582815b-73dc-4bf4-b8ff-dfd0bc226bb9", + "Name": "W12x152", + "CellId": 185, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "352be2b2-3f40-4621-b889-3c0ce0094922": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 7.25, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "352be2b2-3f40-4621-b889-3c0ce0094922", + "Name": null + }, + "9bb7fb56-f02f-4c86-8d3a-077a3e8febbd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -13.333333333333334, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "9bb7fb56-f02f-4c86-8d3a-077a3e8febbd", + "Name": "W12x152", + "CellId": 186, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "a31192a9-673e-453c-8638-03f1630df8bf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -13.333333333333334, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -13.333333333333334, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a31192a9-673e-453c-8638-03f1630df8bf", + "Name": null + }, + "02e0cd86-d09b-45a8-a8b4-b43b55be9f19": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -11.666666666666668, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "02e0cd86-d09b-45a8-a8b4-b43b55be9f19", + "Name": "W12x152", + "CellId": 186, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "8564dc1d-768d-49bb-a8c9-dd19f7e5d4b7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -11.666666666666668, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -11.666666666666668, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8564dc1d-768d-49bb-a8c9-dd19f7e5d4b7", + "Name": null + }, + "175586ad-3d2d-49ee-aeb5-bfaf26ae185d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -13.333333333333334, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "175586ad-3d2d-49ee-aeb5-bfaf26ae185d", + "Name": "W12x152", + "CellId": 187, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "b9881d29-6912-40bb-ab1b-b64f38877d5a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -13.333333333333334, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -13.333333333333334, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b9881d29-6912-40bb-ab1b-b64f38877d5a", + "Name": null + }, + "918e1d1a-2e53-474b-91c7-74fe5fa4c1df": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -11.666666666666668, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "918e1d1a-2e53-474b-91c7-74fe5fa4c1df", + "Name": "W12x152", + "CellId": 187, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "3ca80ce3-22d4-4e14-9b5e-3c62b2373e35": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -11.666666666666668, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -11.666666666666668, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3ca80ce3-22d4-4e14-9b5e-3c62b2373e35", + "Name": null + }, + "5fa5d14c-6910-4d25-a7c2-44b95c9b0861": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.6831, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "5fa5d14c-6910-4d25-a7c2-44b95c9b0861", + "Name": "W12x152", + "CellId": 188, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "8b7d4c7c-c0af-4bd1-860c-9d11e3f004d7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.6831, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 17.6831, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8b7d4c7c-c0af-4bd1-860c-9d11e3f004d7", + "Name": null + }, + "e9062f1b-62a2-4cbf-aa2d-568fe572b438": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.3662, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "e9062f1b-62a2-4cbf-aa2d-568fe572b438", + "Name": "W12x152", + "CellId": 188, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6a55be65-fd71-4675-bb07-2cd35418905b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.3662, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 19.3662, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6a55be65-fd71-4675-bb07-2cd35418905b", + "Name": null + }, + "4a42f77d-9df3-422b-b4c9-d7f315b94213": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "a14957ee-e204-468a-8e80-821f5ea2eabc", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.0493, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "4a42f77d-9df3-422b-b4c9-d7f315b94213", + "Name": "W12x152", + "CellId": 188, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "49381491-2759-4463-9512-3bd29c63d5d0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.0493, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 21.0493, + "Y": -17.475355049289902, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "49381491-2759-4463-9512-3bd29c63d5d0", + "Name": null + }, + "a45341b9-79ed-44b4-818e-3586c236a657": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.6831, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "a45341b9-79ed-44b4-818e-3586c236a657", + "Name": "W12x152", + "CellId": 189, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "04f85841-5018-4b22-8845-115b359254cf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.6831, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 17.6831, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "04f85841-5018-4b22-8845-115b359254cf", + "Name": null + }, + "657315a3-33c4-4894-80c0-a7ce29e98756": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.3662, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "657315a3-33c4-4894-80c0-a7ce29e98756", + "Name": "W12x152", + "CellId": 189, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d9e5b18e-bda2-4c25-a88a-2c779d557839": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.3662, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 19.3662, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d9e5b18e-bda2-4c25-a88a-2c779d557839", + "Name": null + }, + "803350bd-d04d-4acf-b263-c13f7cde8db7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "a14957ee-e204-468a-8e80-821f5ea2eabc", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.0493, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "803350bd-d04d-4acf-b263-c13f7cde8db7", + "Name": "W12x152", + "CellId": 189, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "780b1b40-dfe9-415c-8baf-c2e727a55eba": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.0493, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 21.0493, + "Y": -17.475355049289902, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "780b1b40-dfe9-415c-8baf-c2e727a55eba", + "Name": null + }, + "5208aee4-a370-4b00-b81d-2a8d1208cc64": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "5208aee4-a370-4b00-b81d-2a8d1208cc64", + "Name": "W12x152", + "CellId": 190, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6fa2d040-bdd8-44da-93a2-9259698904b4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 10.75, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6fa2d040-bdd8-44da-93a2-9259698904b4", + "Name": null + }, + "806cf697-e31e-4887-935f-7987920c5433": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "806cf697-e31e-4887-935f-7987920c5433", + "Name": "W12x152", + "CellId": 190, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0a636e3c-8750-4775-8cef-3259815aa117": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 12.5, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0a636e3c-8750-4775-8cef-3259815aa117", + "Name": null + }, + "9feb53d5-7151-447e-a797-a56b43122e6f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "9feb53d5-7151-447e-a797-a56b43122e6f", + "Name": "W12x152", + "CellId": 190, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a38793d8-4d83-456c-a232-95d4562ac063": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 14.25, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a38793d8-4d83-456c-a232-95d4562ac063", + "Name": null + }, + "dcdff75d-e2b8-4965-942f-a8db5356e5b8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "dcdff75d-e2b8-4965-942f-a8db5356e5b8", + "Name": "W12x152", + "CellId": 191, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "00e0e333-9e2d-4413-a9f3-899b413e8d83": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 10.75, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "00e0e333-9e2d-4413-a9f3-899b413e8d83", + "Name": null + }, + "fec41a59-2d7f-40fe-8be6-578364312850": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "fec41a59-2d7f-40fe-8be6-578364312850", + "Name": "W12x152", + "CellId": 191, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7e8e07bf-0499-47d8-b942-3e1e4ea6ebd8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 12.5, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7e8e07bf-0499-47d8-b942-3e1e4ea6ebd8", + "Name": null + }, + "b2c09cf3-987a-4054-845f-ad7d9e5705a9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "b2c09cf3-987a-4054-845f-ad7d9e5705a9", + "Name": "W12x152", + "CellId": 191, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "072d60e9-bcd3-4262-a3c3-009491b6aeb6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 14.25, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "072d60e9-bcd3-4262-a3c3-009491b6aeb6", + "Name": null + }, + "dbd44ba8-c286-4648-9b24-32adf723eb72": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "dbd44ba8-c286-4648-9b24-32adf723eb72", + "Name": "W12x152", + "CellId": 192, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e1bf0b72-8971-44a9-9362-a2b74e24535e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 3.75, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e1bf0b72-8971-44a9-9362-a2b74e24535e", + "Name": null + }, + "869a235e-0bd5-4d79-8580-f1c610b267aa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "869a235e-0bd5-4d79-8580-f1c610b267aa", + "Name": "W12x152", + "CellId": 192, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fb7b6147-28cd-48f2-8008-0e5216590695": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 5.5, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fb7b6147-28cd-48f2-8008-0e5216590695", + "Name": null + }, + "6abd1bc6-caf1-4941-a087-bdd9651a363c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "6abd1bc6-caf1-4941-a087-bdd9651a363c", + "Name": "W12x152", + "CellId": 192, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c0dd109e-dd8d-4ccb-b386-85be046920c6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 7.25, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c0dd109e-dd8d-4ccb-b386-85be046920c6", + "Name": null + }, + "45dcd078-3cd9-48d9-89c4-21e22cdbf8e1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "45dcd078-3cd9-48d9-89c4-21e22cdbf8e1", + "Name": "W12x152", + "CellId": 193, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e1f08dfe-02e2-40d5-81c3-8b023ea4123f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 3.75, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e1f08dfe-02e2-40d5-81c3-8b023ea4123f", + "Name": null + }, + "926659b7-5457-4518-9acb-b3883bec4bed": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "926659b7-5457-4518-9acb-b3883bec4bed", + "Name": "W12x152", + "CellId": 193, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5fe6d622-1c95-4afa-923a-362031a12f94": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 5.5, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5fe6d622-1c95-4afa-923a-362031a12f94", + "Name": null + }, + "babb4564-0b8f-4b9b-ad73-6acbafebe585": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "babb4564-0b8f-4b9b-ad73-6acbafebe585", + "Name": "W12x152", + "CellId": 193, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "8ae6e5a9-acab-42b5-a3ba-b09d0f091919": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 7.25, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8ae6e5a9-acab-42b5-a3ba-b09d0f091919", + "Name": null + }, + "2f9b1433-430f-43e5-bddb-99084832c977": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -18.333333333333332, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "2f9b1433-430f-43e5-bddb-99084832c977", + "Name": "W12x152", + "CellId": 194, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "07ebd760-e8cf-4966-bb33-226ec140ae04": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -18.333333333333332, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -18.333333333333332, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "07ebd760-e8cf-4966-bb33-226ec140ae04", + "Name": null + }, + "455dff05-37ba-4c8e-af56-fd7619fc0d06": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -16.666666666666668, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "455dff05-37ba-4c8e-af56-fd7619fc0d06", + "Name": "W12x152", + "CellId": 194, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "092b1a88-f60e-4241-b8bc-cf3503111eab": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -16.666666666666668, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -16.666666666666668, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "092b1a88-f60e-4241-b8bc-cf3503111eab", + "Name": null + }, + "68abaf05-12ef-4aeb-a598-6ea43759b67f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -18.333333333333332, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "68abaf05-12ef-4aeb-a598-6ea43759b67f", + "Name": "W12x152", + "CellId": 195, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "3d34fba3-24a6-437e-ae07-5c36c6153f22": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -18.333333333333332, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -18.333333333333332, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3d34fba3-24a6-437e-ae07-5c36c6153f22", + "Name": null + }, + "37ff2700-6f59-4206-bff8-7e191867381e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -16.666666666666668, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "37ff2700-6f59-4206-bff8-7e191867381e", + "Name": "W12x152", + "CellId": 195, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "59ee5752-6dfa-4418-bc62-8a0b4bae932e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -16.666666666666668, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -16.666666666666668, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "59ee5752-6dfa-4418-bc62-8a0b4bae932e", + "Name": null + }, + "6b8d7332-dfc3-4156-980d-aaf94f145927": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "00428e4f-d368-4fa9-9b91-6b35a98db880", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -21.934266666666666, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "6b8d7332-dfc3-4156-980d-aaf94f145927", + "Name": "W12x152", + "CellId": 196, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "0821665f-6a7e-411e-9cae-f53615a35b76": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -21.934266666666666, + "Z": 12.2 + }, + "End": { + "X": 24.021913333333334, + "Y": -21.934266666666666, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0821665f-6a7e-411e-9cae-f53615a35b76", + "Name": null + }, + "a1c1fd95-bc25-49b5-a185-f833b95ae324": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2a51b0ec-7a36-4993-b509-32bf4c52b9b4", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -23.467133333333333, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "a1c1fd95-bc25-49b5-a185-f833b95ae324", + "Name": "W12x152", + "CellId": 196, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "c7111c59-5113-4c7c-9d5f-aab2104319f2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -23.467133333333333, + "Z": 12.2 + }, + "End": { + "X": 25.043826666666668, + "Y": -23.467133333333333, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c7111c59-5113-4c7c-9d5f-aab2104319f2", + "Name": null + }, + "3fc54c2f-e338-492f-a4c2-2dab38aba237": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "00428e4f-d368-4fa9-9b91-6b35a98db880", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -21.934266666666666, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "3fc54c2f-e338-492f-a4c2-2dab38aba237", + "Name": "W12x152", + "CellId": 197, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "7d4e0492-ce01-4131-8be4-34204a9103da": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -21.934266666666666, + "Z": 20.0 + }, + "End": { + "X": 24.021913333333334, + "Y": -21.934266666666666, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7d4e0492-ce01-4131-8be4-34204a9103da", + "Name": null + }, + "4f4c0a1c-529d-40ec-b3d0-45ddc0fc55e1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2a51b0ec-7a36-4993-b509-32bf4c52b9b4", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -23.467133333333333, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "4f4c0a1c-529d-40ec-b3d0-45ddc0fc55e1", + "Name": "W12x152", + "CellId": 197, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "9efb49e1-5574-49ef-a9e7-8617888beb1f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -23.467133333333333, + "Z": 20.0 + }, + "End": { + "X": 25.043826666666668, + "Y": -23.467133333333333, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9efb49e1-5574-49ef-a9e7-8617888beb1f", + "Name": null + }, + "f21b6af8-29eb-4a5c-8a13-d452b569abf8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "f21b6af8-29eb-4a5c-8a13-d452b569abf8", + "Name": "W12x152", + "CellId": 198, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "8c80997b-0327-446d-bfa2-569022693147": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 17.75, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8c80997b-0327-446d-bfa2-569022693147", + "Name": null + }, + "d445ba24-0ec4-4f2c-ac03-60a81876ce2e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d445ba24-0ec4-4f2c-ac03-60a81876ce2e", + "Name": "W12x152", + "CellId": 198, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "22e8f68f-b6a3-4d84-bbbe-719868d2e9a8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 19.5, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "22e8f68f-b6a3-4d84-bbbe-719868d2e9a8", + "Name": null + }, + "768a6187-ea5e-48f0-9b3e-bd6b1738760b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "768a6187-ea5e-48f0-9b3e-bd6b1738760b", + "Name": "W12x152", + "CellId": 198, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fbbf3977-ae7f-4d34-8a1d-fae2d128d998": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 21.25, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fbbf3977-ae7f-4d34-8a1d-fae2d128d998", + "Name": null + }, + "08974404-c81a-499e-8100-df78b963755a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "08974404-c81a-499e-8100-df78b963755a", + "Name": "W12x152", + "CellId": 199, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "caa28c24-6f72-42e0-8fc8-95b30a8523ba": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 17.75, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "caa28c24-6f72-42e0-8fc8-95b30a8523ba", + "Name": null + }, + "6bbb3cc0-b123-4deb-ae11-b9b62a62f534": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "6bbb3cc0-b123-4deb-ae11-b9b62a62f534", + "Name": "W12x152", + "CellId": 199, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "85f97a5a-c575-48d0-8a7e-b51a8dae04f1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 19.5, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "85f97a5a-c575-48d0-8a7e-b51a8dae04f1", + "Name": null + }, + "cd45d1dc-11ad-4790-a8a1-f097edc3e41c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "cd45d1dc-11ad-4790-a8a1-f097edc3e41c", + "Name": "W12x152", + "CellId": 199, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b6b09ae8-10cb-4c53-9beb-885b784e3475": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 21.25, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b6b09ae8-10cb-4c53-9beb-885b784e3475", + "Name": null + }, + "069b8c79-6db9-4469-90b1-5ed49999c6cc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "069b8c79-6db9-4469-90b1-5ed49999c6cc", + "Name": "W12x152", + "CellId": 200, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6a5f16db-984e-42a9-9ba0-3f35d63b826e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 10.75, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6a5f16db-984e-42a9-9ba0-3f35d63b826e", + "Name": null + }, + "832beff2-8eba-4891-a099-3fd7e276aa78": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "832beff2-8eba-4891-a099-3fd7e276aa78", + "Name": "W12x152", + "CellId": 200, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ba10ece4-35a6-4c76-9a0d-6be6d16250cc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 12.5, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ba10ece4-35a6-4c76-9a0d-6be6d16250cc", + "Name": null + }, + "c2d66f60-1d4c-4668-8c4e-20d8bef1c9ae": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "c2d66f60-1d4c-4668-8c4e-20d8bef1c9ae", + "Name": "W12x152", + "CellId": 200, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "8f80c72e-a275-4b00-b29c-f085c75ea30f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 14.25, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8f80c72e-a275-4b00-b29c-f085c75ea30f", + "Name": null + }, + "a1ce30db-7058-4874-a2be-09fcad3027a1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "a1ce30db-7058-4874-a2be-09fcad3027a1", + "Name": "W12x152", + "CellId": 201, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "561735c1-a7e7-4782-ac62-19dade6b0a44": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 10.75, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "561735c1-a7e7-4782-ac62-19dade6b0a44", + "Name": null + }, + "277280b3-9009-41a8-9e9a-074f384d7408": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "277280b3-9009-41a8-9e9a-074f384d7408", + "Name": "W12x152", + "CellId": 201, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "167cc197-981b-4be2-9429-2273e5124e68": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 12.5, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "167cc197-981b-4be2-9429-2273e5124e68", + "Name": null + }, + "6563640a-3792-468c-80d1-6def1cb2b385": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "6563640a-3792-468c-80d1-6def1cb2b385", + "Name": "W12x152", + "CellId": 201, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "37ae3b49-0a75-4ec9-9c7d-e6266e74d65b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 14.25, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "37ae3b49-0a75-4ec9-9c7d-e6266e74d65b", + "Name": null + }, + "c743df53-7060-4bb4-b0f0-89438144e9e4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "c743df53-7060-4bb4-b0f0-89438144e9e4", + "Name": "W12x152", + "CellId": 202, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e11612f5-fc25-47eb-a6de-67df8675ec68": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 3.75, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e11612f5-fc25-47eb-a6de-67df8675ec68", + "Name": null + }, + "8b963dd1-70e7-4a73-b210-00e3fd777c0e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "8b963dd1-70e7-4a73-b210-00e3fd777c0e", + "Name": "W12x152", + "CellId": 202, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b67dbff7-7b0f-4bd2-952b-dcdc26f339f9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 5.5, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b67dbff7-7b0f-4bd2-952b-dcdc26f339f9", + "Name": null + }, + "21833bb5-487c-4794-adfb-c3692418eca2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "21833bb5-487c-4794-adfb-c3692418eca2", + "Name": "W12x152", + "CellId": 202, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3df052d5-c394-43f6-b606-319ac6f4dabf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 7.25, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3df052d5-c394-43f6-b606-319ac6f4dabf", + "Name": null + }, + "ed1d9837-e33a-4282-a104-6afe5769b750": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ed1d9837-e33a-4282-a104-6afe5769b750", + "Name": "W12x152", + "CellId": 203, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "cc84f90b-31c6-419f-adf6-3a9fa5ffb2c5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 3.75, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cc84f90b-31c6-419f-adf6-3a9fa5ffb2c5", + "Name": null + }, + "e1b543d4-23ed-4837-b848-15f96ec467a5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "e1b543d4-23ed-4837-b848-15f96ec467a5", + "Name": "W12x152", + "CellId": 203, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "30361e75-1064-461d-8da1-98404f84df45": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 5.5, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "30361e75-1064-461d-8da1-98404f84df45", + "Name": null + }, + "ef396437-d73a-4243-8797-e70e13dc8177": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ef396437-d73a-4243-8797-e70e13dc8177", + "Name": "W12x152", + "CellId": 203, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d626bc41-f934-4974-8d89-3e4abeca81dd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 7.25, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d626bc41-f934-4974-8d89-3e4abeca81dd", + "Name": null + }, + "065ca07d-819a-40be-a3ac-26216a6b5b30": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -23.333333333333332, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "065ca07d-819a-40be-a3ac-26216a6b5b30", + "Name": "W12x152", + "CellId": 204, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "dc5c9c85-d2bc-490a-b9d7-bc32c7bdcb4d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -23.333333333333332, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -23.333333333333332, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dc5c9c85-d2bc-490a-b9d7-bc32c7bdcb4d", + "Name": null + }, + "d6257d6d-c5de-48df-9259-91e139e0b997": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -21.666666666666668, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d6257d6d-c5de-48df-9259-91e139e0b997", + "Name": "W12x152", + "CellId": 204, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "f8eac900-ca0f-4691-8ec0-131f5223c9f4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -21.666666666666668, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -21.666666666666668, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f8eac900-ca0f-4691-8ec0-131f5223c9f4", + "Name": null + }, + "3df9ddfa-45b2-4186-acb0-515a1cd9c5bc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -23.333333333333332, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "3df9ddfa-45b2-4186-acb0-515a1cd9c5bc", + "Name": "W12x152", + "CellId": 205, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "7dc84077-9d1c-46cd-9f14-7544ee900002": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -23.333333333333332, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -23.333333333333332, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7dc84077-9d1c-46cd-9f14-7544ee900002", + "Name": null + }, + "e42711ab-e9e6-41b9-8898-9c50d96da17f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -21.666666666666668, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "e42711ab-e9e6-41b9-8898-9c50d96da17f", + "Name": "W12x152", + "CellId": 205, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "7d053e85-6985-428f-9afb-d113613472d1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -21.666666666666668, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -21.666666666666668, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7d053e85-6985-428f-9afb-d113613472d1", + "Name": null + }, + "d129e60f-a050-4b33-beaf-103857669bac": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.599764999999998, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d129e60f-a050-4b33-beaf-103857669bac", + "Name": "W12x152", + "CellId": 206, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b0e04628-93fa-4358-87f2-69a32d36c205": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.599764999999998, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 24.599764999999998, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b0e04628-93fa-4358-87f2-69a32d36c205", + "Name": null + }, + "34a22241-0baf-464b-af39-75e40cd99124": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c86c7794-702f-43dc-82a1-ccf5f1b5deea", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.19953, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "34a22241-0baf-464b-af39-75e40cd99124", + "Name": "W12x152", + "CellId": 206, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b16f94a2-037b-4a9e-8718-b82dfbaa202f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.19953, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 26.19953, + "Y": -25.20068580274321, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b16f94a2-037b-4a9e-8718-b82dfbaa202f", + "Name": null + }, + "bffa9fab-0948-45ed-bb8b-dde1f079ae7d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d27c8274-35d1-48e6-a623-33a7ddfb778f", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.799295, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "bffa9fab-0948-45ed-bb8b-dde1f079ae7d", + "Name": "W12x152", + "CellId": 206, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "875db678-b544-4a32-9d3c-497b77d66005": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.799295, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 27.799295, + "Y": -27.600342901371604, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "875db678-b544-4a32-9d3c-497b77d66005", + "Name": null + }, + "4eef22d2-8521-4228-95ed-82f4813cd0fa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.599764999999998, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "4eef22d2-8521-4228-95ed-82f4813cd0fa", + "Name": "W12x152", + "CellId": 207, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ec1ea603-4c2a-4bd3-ab34-0bb2feb41252": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.599764999999998, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 24.599764999999998, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ec1ea603-4c2a-4bd3-ab34-0bb2feb41252", + "Name": null + }, + "ed6a939e-bcef-4fc8-96c5-e504dc3177d1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c86c7794-702f-43dc-82a1-ccf5f1b5deea", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.19953, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ed6a939e-bcef-4fc8-96c5-e504dc3177d1", + "Name": "W12x152", + "CellId": 207, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "59eac6cc-d39b-4bea-9b0f-3bdf73f0b3a0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.19953, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 26.19953, + "Y": -25.20068580274321, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "59eac6cc-d39b-4bea-9b0f-3bdf73f0b3a0", + "Name": null + }, + "6c06a6e5-3f77-455d-b216-06f8a721d6b0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d27c8274-35d1-48e6-a623-33a7ddfb778f", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.799295, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "6c06a6e5-3f77-455d-b216-06f8a721d6b0", + "Name": "W12x152", + "CellId": 207, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a4c0fb2c-0fcf-4b7b-b94a-1aeb9d1d19b8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.799295, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 27.799295, + "Y": -27.600342901371604, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a4c0fb2c-0fcf-4b7b-b94a-1aeb9d1d19b8", + "Name": null + }, + "e74b14cb-27a8-4f05-b1de-2f8fde66bdce": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "e74b14cb-27a8-4f05-b1de-2f8fde66bdce", + "Name": "W12x152", + "CellId": 208, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "8cc7a260-5acf-4a27-96f9-14690518d676": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 17.75, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8cc7a260-5acf-4a27-96f9-14690518d676", + "Name": null + }, + "547fec0b-c560-4cca-9b0e-c660adb6b6a8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "547fec0b-c560-4cca-9b0e-c660adb6b6a8", + "Name": "W12x152", + "CellId": 208, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "19bc9928-74eb-491d-aab0-3a4f61d02baf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 19.5, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "19bc9928-74eb-491d-aab0-3a4f61d02baf", + "Name": null + }, + "b260b5e2-ab32-40d8-af3f-b37c3054da93": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "b260b5e2-ab32-40d8-af3f-b37c3054da93", + "Name": "W12x152", + "CellId": 208, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "12c29383-db53-4900-8a0e-34c812913bef": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 21.25, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "12c29383-db53-4900-8a0e-34c812913bef", + "Name": null + }, + "a45d4390-8524-4dfb-b797-64fff3a4974b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "a45d4390-8524-4dfb-b797-64fff3a4974b", + "Name": "W12x152", + "CellId": 209, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a38a44a1-1087-43bb-b25b-79cec82e65d6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 17.75, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a38a44a1-1087-43bb-b25b-79cec82e65d6", + "Name": null + }, + "e4e865e9-8101-4f34-bb0e-54af8a930291": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "e4e865e9-8101-4f34-bb0e-54af8a930291", + "Name": "W12x152", + "CellId": 209, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "244b52bc-43bb-47d9-af1d-c0716206c7d3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 19.5, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "244b52bc-43bb-47d9-af1d-c0716206c7d3", + "Name": null + }, + "6e011abf-1c77-44b9-ba2e-3fdeaeac84be": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "6e011abf-1c77-44b9-ba2e-3fdeaeac84be", + "Name": "W12x152", + "CellId": 209, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b3ab0e4d-9e4d-4225-9ab4-ae3c4dd3dc22": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 21.25, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b3ab0e4d-9e4d-4225-9ab4-ae3c4dd3dc22", + "Name": null + }, + "cb83bf19-5724-4a83-841c-c1f379dce549": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "cb83bf19-5724-4a83-841c-c1f379dce549", + "Name": "W12x152", + "CellId": 210, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "870f733c-7b91-4e8b-b2ab-be1009055ede": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 10.75, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "870f733c-7b91-4e8b-b2ab-be1009055ede", + "Name": null + }, + "36ef32a4-2d6d-4b50-b35c-492d021b9bf6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "36ef32a4-2d6d-4b50-b35c-492d021b9bf6", + "Name": "W12x152", + "CellId": 210, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4daca590-a3f5-404c-84d9-5ca3fd6d8eed": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 12.5, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4daca590-a3f5-404c-84d9-5ca3fd6d8eed", + "Name": null + }, + "9b6a9d7d-304b-40a0-aae5-840d5c0f8dcb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "9b6a9d7d-304b-40a0-aae5-840d5c0f8dcb", + "Name": "W12x152", + "CellId": 210, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fb078d9e-9ab3-4363-ba98-c7a9b31c7667": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 14.25, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fb078d9e-9ab3-4363-ba98-c7a9b31c7667", + "Name": null + }, + "ea472623-c07a-4df3-a711-8c17920c994c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ea472623-c07a-4df3-a711-8c17920c994c", + "Name": "W12x152", + "CellId": 211, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e38ad8ba-e1da-4bfe-8a5a-b56128e139d6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 10.75, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e38ad8ba-e1da-4bfe-8a5a-b56128e139d6", + "Name": null + }, + "026c292b-e07b-4abd-aec3-72ea71b76613": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "026c292b-e07b-4abd-aec3-72ea71b76613", + "Name": "W12x152", + "CellId": 211, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7b925f08-e710-4308-af12-3d871292c787": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 12.5, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7b925f08-e710-4308-af12-3d871292c787", + "Name": null + }, + "8ec4ac2e-bb1e-4d0a-853a-934a4013370b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "8ec4ac2e-bb1e-4d0a-853a-934a4013370b", + "Name": "W12x152", + "CellId": 211, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f76815cf-ba4f-42af-8fad-d6b91514d6c2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 14.25, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f76815cf-ba4f-42af-8fad-d6b91514d6c2", + "Name": null + }, + "18599b4e-e8bd-48a4-87a5-0c94e9c96c36": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "18599b4e-e8bd-48a4-87a5-0c94e9c96c36", + "Name": "W12x152", + "CellId": 212, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f5951f67-16fe-4bd2-87ad-e9a4408af79d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 3.75, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f5951f67-16fe-4bd2-87ad-e9a4408af79d", + "Name": null + }, + "edefbfaf-3f9f-4995-b0a6-7611859e7e01": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "edefbfaf-3f9f-4995-b0a6-7611859e7e01", + "Name": "W12x152", + "CellId": 212, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "73dd04e5-eb26-4bb1-9545-85d959811912": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 5.5, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "73dd04e5-eb26-4bb1-9545-85d959811912", + "Name": null + }, + "2d6a5ca8-367d-4528-a056-f3086fcabfc0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "2d6a5ca8-367d-4528-a056-f3086fcabfc0", + "Name": "W12x152", + "CellId": 212, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e3f9bb45-1bb6-4e94-b397-d0c82c0fef99": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 7.25, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e3f9bb45-1bb6-4e94-b397-d0c82c0fef99", + "Name": null + }, + "0b5d5713-7111-477a-b4c7-4fb752da3716": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "0b5d5713-7111-477a-b4c7-4fb752da3716", + "Name": "W12x152", + "CellId": 213, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e252c25e-026b-4dd8-8266-5cc91c6de4b4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 3.75, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e252c25e-026b-4dd8-8266-5cc91c6de4b4", + "Name": null + }, + "7ed90077-d0d7-4d7d-a816-e3c6781e1473": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "7ed90077-d0d7-4d7d-a816-e3c6781e1473", + "Name": "W12x152", + "CellId": 213, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c29c71a4-e896-461d-80d5-0faa316cfe73": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 5.5, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c29c71a4-e896-461d-80d5-0faa316cfe73", + "Name": null + }, + "2b202578-d3c5-4403-bac5-067335364f50": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "2b202578-d3c5-4403-bac5-067335364f50", + "Name": "W12x152", + "CellId": 213, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "51bc9c1a-836f-440c-a972-ef4009fc1b35": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 7.25, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "51bc9c1a-836f-440c-a972-ef4009fc1b35", + "Name": null + }, + "d52e9cb5-d938-4fcd-a3a8-2a293d32d37c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -28.333333333333332, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d52e9cb5-d938-4fcd-a3a8-2a293d32d37c", + "Name": "W12x152", + "CellId": 214, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "1d05b534-f99f-4d7c-aba7-ae6996a44dc6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -28.333333333333332, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -28.333333333333332, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1d05b534-f99f-4d7c-aba7-ae6996a44dc6", + "Name": null + }, + "b13176bc-d39e-46ba-aa1b-d320b128c007": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -26.666666666666668, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "b13176bc-d39e-46ba-aa1b-d320b128c007", + "Name": "W12x152", + "CellId": 214, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "e226f9ab-8053-4ef6-ac5a-64ca65d473b3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -26.666666666666668, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -26.666666666666668, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e226f9ab-8053-4ef6-ac5a-64ca65d473b3", + "Name": null + }, + "5b031f7c-8880-45f0-b389-b75d37e0dfe7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -28.333333333333332, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5b031f7c-8880-45f0-b389-b75d37e0dfe7", + "Name": "W12x152", + "CellId": 215, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "c5c95476-58ec-40a8-943c-1c0806638e3b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -28.333333333333332, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -28.333333333333332, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c5c95476-58ec-40a8-943c-1c0806638e3b", + "Name": null + }, + "1597e7d0-858a-4987-8f86-6d18a7ae2489": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -26.666666666666668, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "1597e7d0-858a-4987-8f86-6d18a7ae2489", + "Name": "W12x152", + "CellId": 215, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "97667cd1-3413-4b52-b864-5f2daa66e759": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -26.666666666666668, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -26.666666666666668, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "97667cd1-3413-4b52-b864-5f2daa66e759", + "Name": null + }, + "3e197679-628f-4561-91db-f2638adcf0c8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "3e197679-628f-4561-91db-f2638adcf0c8", + "Name": "W12x152", + "CellId": 216, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6c498eec-16da-4e81-8dc7-cbae02ae3bb4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 24.625, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6c498eec-16da-4e81-8dc7-cbae02ae3bb4", + "Name": null + }, + "1f854031-a2a6-475c-95b9-8634046a664f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "1f854031-a2a6-475c-95b9-8634046a664f", + "Name": "W12x152", + "CellId": 216, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a41c3bcf-f57a-44b2-a61c-80aaf6815a93": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 26.25, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a41c3bcf-f57a-44b2-a61c-80aaf6815a93", + "Name": null + }, + "e88d051b-6025-486d-91cf-779763c00756": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "e88d051b-6025-486d-91cf-779763c00756", + "Name": "W12x152", + "CellId": 216, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e6b562cd-08fa-4d40-90f2-c78833520dc5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 27.875, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e6b562cd-08fa-4d40-90f2-c78833520dc5", + "Name": null + }, + "d585d892-5088-4f36-b75d-300228d84fd5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "d585d892-5088-4f36-b75d-300228d84fd5", + "Name": "W12x152", + "CellId": 217, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "76ac7e82-8199-4db7-bbba-23f6672562ed": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 24.625, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "76ac7e82-8199-4db7-bbba-23f6672562ed", + "Name": null + }, + "3c1df616-8ffd-4d51-b489-c51bc5683277": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "3c1df616-8ffd-4d51-b489-c51bc5683277", + "Name": "W12x152", + "CellId": 217, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fc61d93e-3648-4452-9d0d-a49e30e30851": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 26.25, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fc61d93e-3648-4452-9d0d-a49e30e30851", + "Name": null + }, + "255170f6-7cc8-4a84-80a8-7533b861fd3a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "255170f6-7cc8-4a84-80a8-7533b861fd3a", + "Name": "W12x152", + "CellId": 217, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c2dd4093-f942-46e3-ab4c-ce2a29c653dc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 27.875, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c2dd4093-f942-46e3-ab4c-ce2a29c653dc", + "Name": null + }, + "3f74a732-5fbf-4754-a108-6f6c54a3f031": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "3f74a732-5fbf-4754-a108-6f6c54a3f031", + "Name": "W12x152", + "CellId": 218, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f46fe036-92ea-4beb-980e-35bebbcc8c35": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 17.75, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f46fe036-92ea-4beb-980e-35bebbcc8c35", + "Name": null + }, + "bad1438c-07f8-4a5e-97a0-a9d12ed9558b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "bad1438c-07f8-4a5e-97a0-a9d12ed9558b", + "Name": "W12x152", + "CellId": 218, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e62f178e-5c57-4aaa-ab08-db92dd71936c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 19.5, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e62f178e-5c57-4aaa-ab08-db92dd71936c", + "Name": null + }, + "364bb937-c1a8-4c1e-a91e-289943104dc6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "364bb937-c1a8-4c1e-a91e-289943104dc6", + "Name": "W12x152", + "CellId": 218, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fb6277f4-c47f-4ad8-bee6-347016b7880a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 21.25, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fb6277f4-c47f-4ad8-bee6-347016b7880a", + "Name": null + }, + "2fda33e4-86d1-4199-a5e1-d3192ce74f4f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "2fda33e4-86d1-4199-a5e1-d3192ce74f4f", + "Name": "W12x152", + "CellId": 219, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7ac9155a-03cb-4c51-8bdb-a28b5901dce7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 17.75, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7ac9155a-03cb-4c51-8bdb-a28b5901dce7", + "Name": null + }, + "082c37fb-f440-4a9c-a2ac-260ad53e3b48": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "082c37fb-f440-4a9c-a2ac-260ad53e3b48", + "Name": "W12x152", + "CellId": 219, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9beba32b-c21b-464b-a103-76d084d9bb9a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 19.5, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9beba32b-c21b-464b-a103-76d084d9bb9a", + "Name": null + }, + "cc584d7d-c674-42fe-a4ee-23244b9a0766": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "cc584d7d-c674-42fe-a4ee-23244b9a0766", + "Name": "W12x152", + "CellId": 219, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f1307c1d-3908-473b-8e5c-a50a569544db": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 21.25, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f1307c1d-3908-473b-8e5c-a50a569544db", + "Name": null + }, + "84452574-19b9-42af-85f4-3723d2a23438": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "84452574-19b9-42af-85f4-3723d2a23438", + "Name": "W12x152", + "CellId": 220, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9b5a6bd9-bb5b-4e8b-97a8-4eee9d658943": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 10.75, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9b5a6bd9-bb5b-4e8b-97a8-4eee9d658943", + "Name": null + }, + "bcaedb7c-5d5a-4c55-bc76-2361ff7ba401": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "bcaedb7c-5d5a-4c55-bc76-2361ff7ba401", + "Name": "W12x152", + "CellId": 220, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "df542904-bc2a-4b32-b715-1dfa41ff1244": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 12.5, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "df542904-bc2a-4b32-b715-1dfa41ff1244", + "Name": null + }, + "9ecd8a2a-8713-4b45-93ef-6b0b74a70999": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "9ecd8a2a-8713-4b45-93ef-6b0b74a70999", + "Name": "W12x152", + "CellId": 220, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "325f792a-7538-45db-a18a-108a931b2172": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 14.25, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "325f792a-7538-45db-a18a-108a931b2172", + "Name": null + }, + "79660b23-c5ed-4f6f-a309-8704ae4dc902": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "79660b23-c5ed-4f6f-a309-8704ae4dc902", + "Name": "W12x152", + "CellId": 221, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1c413d8e-01e7-4665-b913-cec16aae0062": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 10.75, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1c413d8e-01e7-4665-b913-cec16aae0062", + "Name": null + }, + "ae8dd1a3-79eb-494c-874b-ea593bd987e9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ae8dd1a3-79eb-494c-874b-ea593bd987e9", + "Name": "W12x152", + "CellId": 221, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "8756bf20-af1d-4426-b1ad-37222cfaf216": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 12.5, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8756bf20-af1d-4426-b1ad-37222cfaf216", + "Name": null + }, + "9f4fe35f-f720-43d8-904b-bf71815097a2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "9f4fe35f-f720-43d8-904b-bf71815097a2", + "Name": "W12x152", + "CellId": 221, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "2fca96ea-26d9-4629-8021-d5086fc29c81": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 14.25, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2fca96ea-26d9-4629-8021-d5086fc29c81", + "Name": null + }, + "ddecf78b-9217-4846-8ae3-72cc5510db4f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "ddecf78b-9217-4846-8ae3-72cc5510db4f", + "Name": "W12x152", + "CellId": 222, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "851734ef-8ab4-4fac-b505-4e9002e3e6f5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 3.75, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "851734ef-8ab4-4fac-b505-4e9002e3e6f5", + "Name": null + }, + "811ec478-87f0-4ced-8d8d-8ebb17ca08de": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "811ec478-87f0-4ced-8d8d-8ebb17ca08de", + "Name": "W12x152", + "CellId": 222, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b687f437-1712-4691-8618-27233bcc8520": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 5.5, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b687f437-1712-4691-8618-27233bcc8520", + "Name": null + }, + "def0c310-7f28-4243-89bf-151c062ec409": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "def0c310-7f28-4243-89bf-151c062ec409", + "Name": "W12x152", + "CellId": 222, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ed820986-7a30-47e5-b34c-4c604334d7da": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 7.25, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ed820986-7a30-47e5-b34c-4c604334d7da", + "Name": null + }, + "663e7262-b904-421f-bda0-ae64aa1042c7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "663e7262-b904-421f-bda0-ae64aa1042c7", + "Name": "W12x152", + "CellId": 223, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "56990425-50ea-4919-9159-dddc118f17c1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 3.75, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "56990425-50ea-4919-9159-dddc118f17c1", + "Name": null + }, + "e5cbd9c4-b7c5-4f45-bdce-f016fca8f837": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "e5cbd9c4-b7c5-4f45-bdce-f016fca8f837", + "Name": "W12x152", + "CellId": 223, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d106b2ec-9dcf-4ae9-8b66-1fde9d4fdc7e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 5.5, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d106b2ec-9dcf-4ae9-8b66-1fde9d4fdc7e", + "Name": null + }, + "cad0f28f-d4f3-4f5d-9e9e-2ae84b5b78af": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "cad0f28f-d4f3-4f5d-9e9e-2ae84b5b78af", + "Name": "W12x152", + "CellId": 223, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "885d039c-4a38-4a2f-aeb4-e5e3241a4895": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 7.25, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "885d039c-4a38-4a2f-aeb4-e5e3241a4895", + "Name": null + }, + "45406ae3-095d-436c-9137-b5b9a771ad36": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -33.333333333333336, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "45406ae3-095d-436c-9137-b5b9a771ad36", + "Name": "W12x152", + "CellId": 224, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "21303814-8937-4177-b497-d1eeb1a6512a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -33.333333333333336, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -33.333333333333336, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "21303814-8937-4177-b497-d1eeb1a6512a", + "Name": null + }, + "4c629d37-679b-4782-8361-c4f10d2fe145": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -31.666666666666668, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "4c629d37-679b-4782-8361-c4f10d2fe145", + "Name": "W12x152", + "CellId": 224, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "ef1ad821-8d4c-4edd-9f3b-43a8d04ec84b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -31.666666666666668, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -31.666666666666668, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ef1ad821-8d4c-4edd-9f3b-43a8d04ec84b", + "Name": null + }, + "934b8ffa-4aad-4203-9685-d43d646ff198": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -33.333333333333336, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "934b8ffa-4aad-4203-9685-d43d646ff198", + "Name": "W12x152", + "CellId": 225, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "74c64b2f-5f72-4c9b-8df0-2086d92b795f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -33.333333333333336, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -33.333333333333336, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "74c64b2f-5f72-4c9b-8df0-2086d92b795f", + "Name": null + }, + "6a014b81-fd5e-441b-ad94-b6ccaf769e0e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -31.666666666666668, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "6a014b81-fd5e-441b-ad94-b6ccaf769e0e", + "Name": "W12x152", + "CellId": 225, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "e152f5d9-d4cd-45f7-a779-80666c1b58cd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -31.666666666666668, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -31.666666666666668, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e152f5d9-d4cd-45f7-a779-80666c1b58cd", + "Name": null + }, + "ea155018-d6a8-45ec-be7d-98dc99a346b0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "ea155018-d6a8-45ec-be7d-98dc99a346b0", + "Name": "W12x152", + "CellId": 226, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "87fecbcd-b941-46d4-9c5a-9b5fe8546b04": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 24.625, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "87fecbcd-b941-46d4-9c5a-9b5fe8546b04", + "Name": null + }, + "1da03dd4-c188-46ec-a065-064dd57a45c1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "1da03dd4-c188-46ec-a065-064dd57a45c1", + "Name": "W12x152", + "CellId": 226, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "011a7377-e389-4165-b172-c2325dc74969": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 26.25, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "011a7377-e389-4165-b172-c2325dc74969", + "Name": null + }, + "d970935a-6d6b-446f-ac4b-86ae2d8589e5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d970935a-6d6b-446f-ac4b-86ae2d8589e5", + "Name": "W12x152", + "CellId": 226, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0b695268-b427-4a19-aff5-d1ac3da20af0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 27.875, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0b695268-b427-4a19-aff5-d1ac3da20af0", + "Name": null + }, + "613ec427-10d7-4cd9-9e39-30f03eee66cd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "613ec427-10d7-4cd9-9e39-30f03eee66cd", + "Name": "W12x152", + "CellId": 227, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "acf256ea-1eb1-4946-8f81-eb61e0db97b6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 24.625, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "acf256ea-1eb1-4946-8f81-eb61e0db97b6", + "Name": null + }, + "e8a9d8f8-9b2e-47ba-b1a4-7d4dc07a728e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "e8a9d8f8-9b2e-47ba-b1a4-7d4dc07a728e", + "Name": "W12x152", + "CellId": 227, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "cfec69ce-ba73-4acd-9182-2afa04b1e7e0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 26.25, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cfec69ce-ba73-4acd-9182-2afa04b1e7e0", + "Name": null + }, + "372d2924-99b9-41a9-b505-4a9d25cb9a38": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "372d2924-99b9-41a9-b505-4a9d25cb9a38", + "Name": "W12x152", + "CellId": 227, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b41d3767-2cb4-46d1-a384-4e00cf608371": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 27.875, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b41d3767-2cb4-46d1-a384-4e00cf608371", + "Name": null + }, + "7bdf3a5a-cfeb-43bd-8c80-aba81ecc4de8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "7bdf3a5a-cfeb-43bd-8c80-aba81ecc4de8", + "Name": "W12x152", + "CellId": 228, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b069a2fd-eed8-48c1-aefc-76861ea29ba3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 17.75, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b069a2fd-eed8-48c1-aefc-76861ea29ba3", + "Name": null + }, + "e413a7bc-6737-49b2-859d-b06df4de670d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "e413a7bc-6737-49b2-859d-b06df4de670d", + "Name": "W12x152", + "CellId": 228, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "54855627-0ef1-4df4-add4-db2c0b16b8cd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 19.5, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "54855627-0ef1-4df4-add4-db2c0b16b8cd", + "Name": null + }, + "fc782bda-eef7-4813-a3c9-073fc4f6b698": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "fc782bda-eef7-4813-a3c9-073fc4f6b698", + "Name": "W12x152", + "CellId": 228, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "2428b65d-2a11-4eab-99fb-e02a01f16fc3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 21.25, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2428b65d-2a11-4eab-99fb-e02a01f16fc3", + "Name": null + }, + "db472b91-797c-45b6-aff4-c035dc507a92": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "db472b91-797c-45b6-aff4-c035dc507a92", + "Name": "W12x152", + "CellId": 229, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "8c21e6c3-01c5-4d2b-9d02-0905102d9569": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 17.75, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8c21e6c3-01c5-4d2b-9d02-0905102d9569", + "Name": null + }, + "a9a316a9-6176-47f4-8081-f1ac7a3cddda": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "a9a316a9-6176-47f4-8081-f1ac7a3cddda", + "Name": "W12x152", + "CellId": 229, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4958da19-b711-4c84-8b38-562996913023": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 19.5, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4958da19-b711-4c84-8b38-562996913023", + "Name": null + }, + "587b0c40-151d-4b31-b53f-47607b6f2d73": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "587b0c40-151d-4b31-b53f-47607b6f2d73", + "Name": "W12x152", + "CellId": 229, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "27ddac7f-3e47-4674-b6ed-2d43d1c09d45": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 21.25, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "27ddac7f-3e47-4674-b6ed-2d43d1c09d45", + "Name": null + }, + "4771d0ce-22c0-47f8-baf7-1162039146d9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "4771d0ce-22c0-47f8-baf7-1162039146d9", + "Name": "W12x152", + "CellId": 230, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "17f193a3-0106-4635-bc77-ed06f320579d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 10.75, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "17f193a3-0106-4635-bc77-ed06f320579d", + "Name": null + }, + "ff8cb904-950c-49c0-9d60-1e1386cfa67b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "ff8cb904-950c-49c0-9d60-1e1386cfa67b", + "Name": "W12x152", + "CellId": 230, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d22d672d-beb8-46e3-9438-d1ede2463e2a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 12.5, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d22d672d-beb8-46e3-9438-d1ede2463e2a", + "Name": null + }, + "2280b289-df8e-4ccf-9799-428ab67f6f6a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "2280b289-df8e-4ccf-9799-428ab67f6f6a", + "Name": "W12x152", + "CellId": 230, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c2c48efb-7a6a-4009-a770-b148c479314a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 14.25, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c2c48efb-7a6a-4009-a770-b148c479314a", + "Name": null + }, + "b86371f3-ca46-4df3-b8e1-88430fcd0ac6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "b86371f3-ca46-4df3-b8e1-88430fcd0ac6", + "Name": "W12x152", + "CellId": 231, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f2b758ce-3084-4aef-a9b3-5ab83123b8a1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 10.75, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f2b758ce-3084-4aef-a9b3-5ab83123b8a1", + "Name": null + }, + "55c54232-07e8-4c9e-84d0-28c23b39a20d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "55c54232-07e8-4c9e-84d0-28c23b39a20d", + "Name": "W12x152", + "CellId": 231, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3749d1fd-745c-4076-a29b-f6fe805e204c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 12.5, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3749d1fd-745c-4076-a29b-f6fe805e204c", + "Name": null + }, + "dbb07699-ed96-41eb-87ec-1707c99d11ff": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "dbb07699-ed96-41eb-87ec-1707c99d11ff", + "Name": "W12x152", + "CellId": 231, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9cee85c7-2f30-4406-98c4-344687fefb96": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 14.25, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9cee85c7-2f30-4406-98c4-344687fefb96", + "Name": null + }, + "2c413d70-b89b-4dfe-98dc-4f68ad2f0c32": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "2c413d70-b89b-4dfe-98dc-4f68ad2f0c32", + "Name": "W12x152", + "CellId": 232, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fa67952b-3d21-48d1-b7ca-d631633ab602": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 3.75, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fa67952b-3d21-48d1-b7ca-d631633ab602", + "Name": null + }, + "685cb765-b243-4192-bbb0-3687040b932b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "685cb765-b243-4192-bbb0-3687040b932b", + "Name": "W12x152", + "CellId": 232, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ede7c8b0-d7f8-4947-b672-39426dee7169": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 5.5, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ede7c8b0-d7f8-4947-b672-39426dee7169", + "Name": null + }, + "691dae18-2e52-403e-911b-dc03b5e033ed": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "691dae18-2e52-403e-911b-dc03b5e033ed", + "Name": "W12x152", + "CellId": 232, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "db4df6c6-bba0-493f-833c-a54622efba8c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 7.25, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "db4df6c6-bba0-493f-833c-a54622efba8c", + "Name": null + }, + "b932259d-ee09-49c4-9a15-7afbabeffd0c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "b932259d-ee09-49c4-9a15-7afbabeffd0c", + "Name": "W12x152", + "CellId": 233, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "eb7f9148-b878-431d-a8a0-e5323678a0c2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 3.75, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "eb7f9148-b878-431d-a8a0-e5323678a0c2", + "Name": null + }, + "cebc18fc-4b7b-4303-9bd8-2fa57c46b9b4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "cebc18fc-4b7b-4303-9bd8-2fa57c46b9b4", + "Name": "W12x152", + "CellId": 233, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6fb3887d-632c-41df-9ba7-7976baa6fb21": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 5.5, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6fb3887d-632c-41df-9ba7-7976baa6fb21", + "Name": null + }, + "639cb86d-3294-4b91-ac07-87fe4b0cfa2b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "639cb86d-3294-4b91-ac07-87fe4b0cfa2b", + "Name": "W12x152", + "CellId": 233, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c4d8044b-2c39-407a-a38c-d57a8f61f39d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 7.25, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c4d8044b-2c39-407a-a38c-d57a8f61f39d", + "Name": null + }, + "bf654b89-75c5-4883-b420-c71e5b354d65": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -38.333333333333336, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "bf654b89-75c5-4883-b420-c71e5b354d65", + "Name": "W12x152", + "CellId": 234, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "96d4a7e1-9550-48cf-805d-28924f4f3736": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -38.333333333333336, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -38.333333333333336, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "96d4a7e1-9550-48cf-805d-28924f4f3736", + "Name": null + }, + "b282442c-e08e-4e53-b297-140a4f282653": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -36.666666666666664, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "b282442c-e08e-4e53-b297-140a4f282653", + "Name": "W12x152", + "CellId": 234, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "978425b2-4721-4938-b081-f15f2befa319": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -36.666666666666664, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -36.666666666666664, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "978425b2-4721-4938-b081-f15f2befa319", + "Name": null + }, + "d1570447-e37a-41a4-85ce-77dd9f6864a3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -38.333333333333336, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "d1570447-e37a-41a4-85ce-77dd9f6864a3", + "Name": "W12x152", + "CellId": 235, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "d2812af3-58b9-415f-84ef-8d18cd6c9ae3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -38.333333333333336, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -38.333333333333336, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d2812af3-58b9-415f-84ef-8d18cd6c9ae3", + "Name": null + }, + "05c250b5-23da-401d-bcfe-306283615248": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -36.666666666666664, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "05c250b5-23da-401d-bcfe-306283615248", + "Name": "W12x152", + "CellId": 235, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "bd1dbb83-4009-4f82-8f05-5d84368dd6a4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -36.666666666666664, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -36.666666666666664, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bd1dbb83-4009-4f82-8f05-5d84368dd6a4", + "Name": null + }, + "5965ce61-d619-4720-8e95-aa3d1594a602": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "5965ce61-d619-4720-8e95-aa3d1594a602", + "Name": "W12x152", + "CellId": 236, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1342e22d-2d32-4d0d-8821-311a38a02257": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 24.625, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1342e22d-2d32-4d0d-8821-311a38a02257", + "Name": null + }, + "7a6d1edf-ade7-4fba-b5f2-fdbee070a8dd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "7a6d1edf-ade7-4fba-b5f2-fdbee070a8dd", + "Name": "W12x152", + "CellId": 236, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "298c2da8-ba43-486a-b887-2869517eb333": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 26.25, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "298c2da8-ba43-486a-b887-2869517eb333", + "Name": null + }, + "ad4d422b-b1e0-46fa-8e69-e451f38f52f3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "ad4d422b-b1e0-46fa-8e69-e451f38f52f3", + "Name": "W12x152", + "CellId": 236, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "29533858-6cda-418c-91fa-2c95b7501176": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 27.875, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "29533858-6cda-418c-91fa-2c95b7501176", + "Name": null + }, + "aaed6f50-a4a5-4515-bfc1-728ed9f5be78": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "aaed6f50-a4a5-4515-bfc1-728ed9f5be78", + "Name": "W12x152", + "CellId": 237, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9196f4cd-101f-46e2-97f6-a6b0818ad5a8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 24.625, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9196f4cd-101f-46e2-97f6-a6b0818ad5a8", + "Name": null + }, + "17757663-20f0-4880-882c-33ec87980546": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "17757663-20f0-4880-882c-33ec87980546", + "Name": "W12x152", + "CellId": 237, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "97eb7f8b-1ed2-446f-bd9e-c656243d7e04": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 26.25, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "97eb7f8b-1ed2-446f-bd9e-c656243d7e04", + "Name": null + }, + "6a4fb796-a7e4-427d-b20d-16953a5ba202": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "6a4fb796-a7e4-427d-b20d-16953a5ba202", + "Name": "W12x152", + "CellId": 237, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "10be4eec-8c4c-42f0-8f5d-8faafae0d62c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 27.875, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "10be4eec-8c4c-42f0-8f5d-8faafae0d62c", + "Name": null + }, + "944c69c3-5a99-4aba-9466-3c3d3cda32cd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "944c69c3-5a99-4aba-9466-3c3d3cda32cd", + "Name": "W12x152", + "CellId": 238, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9b57078c-6572-4643-8b51-e66217bb7c16": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 17.75, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9b57078c-6572-4643-8b51-e66217bb7c16", + "Name": null + }, + "8e984be4-72f1-4cd2-b2e0-d337ee61f6a4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "8e984be4-72f1-4cd2-b2e0-d337ee61f6a4", + "Name": "W12x152", + "CellId": 238, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fc2eb208-332f-4546-9b19-c358dd562fc5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 19.5, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fc2eb208-332f-4546-9b19-c358dd562fc5", + "Name": null + }, + "3df84bb7-64dd-4424-bd24-d9fc7c34e3b7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "3df84bb7-64dd-4424-bd24-d9fc7c34e3b7", + "Name": "W12x152", + "CellId": 238, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4c6f224c-9e44-4f16-a6ac-f5d89a046fed": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 21.25, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4c6f224c-9e44-4f16-a6ac-f5d89a046fed", + "Name": null + }, + "ebda2594-e0cd-40d0-8e9e-d73ea638c33b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ebda2594-e0cd-40d0-8e9e-d73ea638c33b", + "Name": "W12x152", + "CellId": 239, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "42b4736e-bc0c-4ec4-8d14-965a27c57235": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 17.75, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "42b4736e-bc0c-4ec4-8d14-965a27c57235", + "Name": null + }, + "512a6c3e-99e7-413e-91d2-3d9d38a5907a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "512a6c3e-99e7-413e-91d2-3d9d38a5907a", + "Name": "W12x152", + "CellId": 239, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0e8c6ee2-e14e-4372-a5a8-e29943437c9e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 19.5, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0e8c6ee2-e14e-4372-a5a8-e29943437c9e", + "Name": null + }, + "ee558dd0-a58c-481f-bc29-b27c5bbe496e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ee558dd0-a58c-481f-bc29-b27c5bbe496e", + "Name": "W12x152", + "CellId": 239, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1873d4e1-ae2c-49e6-b5a1-b9ec68cc8799": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 21.25, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1873d4e1-ae2c-49e6-b5a1-b9ec68cc8799", + "Name": null + }, + "05e9ae11-7756-437a-9576-b97f8ae01d44": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "05e9ae11-7756-437a-9576-b97f8ae01d44", + "Name": "W12x152", + "CellId": 240, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3fda42c8-9224-4a22-8eb2-29927380329b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 10.75, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3fda42c8-9224-4a22-8eb2-29927380329b", + "Name": null + }, + "4dc6a0df-b463-4ea1-acf0-5431a7842eb0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "4dc6a0df-b463-4ea1-acf0-5431a7842eb0", + "Name": "W12x152", + "CellId": 240, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "588587ad-52c5-4323-af56-7ddc53d392ff": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 12.5, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "588587ad-52c5-4323-af56-7ddc53d392ff", + "Name": null + }, + "f36cd6f2-dbf4-4219-ae01-6f8b652ec912": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "f36cd6f2-dbf4-4219-ae01-6f8b652ec912", + "Name": "W12x152", + "CellId": 240, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "bbaedc8d-4f04-4f70-9fe8-5a69c67c42eb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 14.25, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bbaedc8d-4f04-4f70-9fe8-5a69c67c42eb", + "Name": null + }, + "fe65f187-ede0-47ac-a3ea-fd92fa0dde50": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "fe65f187-ede0-47ac-a3ea-fd92fa0dde50", + "Name": "W12x152", + "CellId": 241, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "100aa06a-2c7d-4d79-bfe1-b21c46d771a3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 10.75, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "100aa06a-2c7d-4d79-bfe1-b21c46d771a3", + "Name": null + }, + "1ea5b51c-7bb8-474f-94c5-80a95808c4c9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "1ea5b51c-7bb8-474f-94c5-80a95808c4c9", + "Name": "W12x152", + "CellId": 241, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b7cf7e78-9f91-423d-8f81-62267d1db3f9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 12.5, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b7cf7e78-9f91-423d-8f81-62267d1db3f9", + "Name": null + }, + "4d195ba8-42a3-4553-b5eb-157712a54e0a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "4d195ba8-42a3-4553-b5eb-157712a54e0a", + "Name": "W12x152", + "CellId": 241, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "bdde7b4e-3cba-4e78-aff5-ea7b730286a8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 14.25, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bdde7b4e-3cba-4e78-aff5-ea7b730286a8", + "Name": null + }, + "17100a29-699e-443c-b8cc-81698949477b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "17100a29-699e-443c-b8cc-81698949477b", + "Name": "W12x152", + "CellId": 242, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ba03af26-3c7d-4d57-ac14-eb48dc47413a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 3.75, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ba03af26-3c7d-4d57-ac14-eb48dc47413a", + "Name": null + }, + "ae866f1a-131b-4a93-b3b0-b74715f8f334": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "ae866f1a-131b-4a93-b3b0-b74715f8f334", + "Name": "W12x152", + "CellId": 242, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6d944e73-4ad4-4498-ae86-39dd7b9ea4b3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 5.5, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6d944e73-4ad4-4498-ae86-39dd7b9ea4b3", + "Name": null + }, + "313b23d6-1351-45eb-bc81-5efba9356a04": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "313b23d6-1351-45eb-bc81-5efba9356a04", + "Name": "W12x152", + "CellId": 242, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "25b26d36-deef-4921-916a-bb8a253ae307": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 7.25, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "25b26d36-deef-4921-916a-bb8a253ae307", + "Name": null + }, + "b7662883-3457-4d5b-afff-27f3a918e868": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "b7662883-3457-4d5b-afff-27f3a918e868", + "Name": "W12x152", + "CellId": 243, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "444e3b25-6388-4f01-8d69-2633f937666d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 3.75, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "444e3b25-6388-4f01-8d69-2633f937666d", + "Name": null + }, + "ea15ef06-b78f-47f0-9967-d08070e32a44": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ea15ef06-b78f-47f0-9967-d08070e32a44", + "Name": "W12x152", + "CellId": 243, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5b311da2-51f7-4311-80f8-b25a85944f22": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 5.5, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5b311da2-51f7-4311-80f8-b25a85944f22", + "Name": null + }, + "73110a40-8766-46d0-8ee1-1311c76754fd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "73110a40-8766-46d0-8ee1-1311c76754fd", + "Name": "W12x152", + "CellId": 243, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "22456005-3290-4f0b-846a-77d71dc9f364": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 7.25, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "22456005-3290-4f0b-846a-77d71dc9f364", + "Name": null + }, + "240f2f16-20c3-42f6-9926-a53dcd47f3e8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -43.333333333333336, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "240f2f16-20c3-42f6-9926-a53dcd47f3e8", + "Name": "W12x152", + "CellId": 244, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "0827e9d2-9420-4b2b-962c-58123c21e458": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -43.333333333333336, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -43.333333333333336, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0827e9d2-9420-4b2b-962c-58123c21e458", + "Name": null + }, + "f8d6f24e-c068-4b20-bb0f-bd978800fb77": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -41.666666666666664, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "f8d6f24e-c068-4b20-bb0f-bd978800fb77", + "Name": "W12x152", + "CellId": 244, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "7d5ebb43-399c-4e4a-b987-cafa280ddd2b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -41.666666666666664, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -41.666666666666664, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7d5ebb43-399c-4e4a-b987-cafa280ddd2b", + "Name": null + }, + "02825d5e-c867-413d-8add-c8a19dcff584": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -43.333333333333336, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "02825d5e-c867-413d-8add-c8a19dcff584", + "Name": "W12x152", + "CellId": 245, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "106d56b2-500e-42eb-9807-3992857463f3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -43.333333333333336, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -43.333333333333336, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "106d56b2-500e-42eb-9807-3992857463f3", + "Name": null + }, + "b0af0b92-9b6a-43b4-b37b-195eec7088d6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -41.666666666666664, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "b0af0b92-9b6a-43b4-b37b-195eec7088d6", + "Name": "W12x152", + "CellId": 245, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "ba16b5b2-2eee-419a-8478-119857f64e81": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -41.666666666666664, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -41.666666666666664, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ba16b5b2-2eee-419a-8478-119857f64e81", + "Name": null + }, + "048a5dd2-740e-46ec-a302-db658c75bb08": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "048a5dd2-740e-46ec-a302-db658c75bb08", + "Name": "W12x152", + "CellId": 246, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4a4e51b9-5d85-4a0d-a619-f2aae9c7e8e4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 24.625, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4a4e51b9-5d85-4a0d-a619-f2aae9c7e8e4", + "Name": null + }, + "ffc00d8d-a179-4b3e-88e6-7e4cc92714ed": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "ffc00d8d-a179-4b3e-88e6-7e4cc92714ed", + "Name": "W12x152", + "CellId": 246, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "df82553e-92f6-476e-beed-2220e7adfba2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 26.25, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "df82553e-92f6-476e-beed-2220e7adfba2", + "Name": null + }, + "45872959-839a-4717-87d2-292282b53f12": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "45872959-839a-4717-87d2-292282b53f12", + "Name": "W12x152", + "CellId": 246, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a6320dcb-1279-4e9f-989c-d56b8785e225": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 27.875, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a6320dcb-1279-4e9f-989c-d56b8785e225", + "Name": null + }, + "62fa5673-e833-4b4c-8a9e-cd9fa8612e7c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "62fa5673-e833-4b4c-8a9e-cd9fa8612e7c", + "Name": "W12x152", + "CellId": 247, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "533c5a09-08ea-4458-a9c6-53aea20dc0af": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 24.625, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "533c5a09-08ea-4458-a9c6-53aea20dc0af", + "Name": null + }, + "cbc2a5af-27d4-4660-92f6-8fee42305709": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "cbc2a5af-27d4-4660-92f6-8fee42305709", + "Name": "W12x152", + "CellId": 247, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "82e81bef-8321-4799-85a8-13db922bc32b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 26.25, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "82e81bef-8321-4799-85a8-13db922bc32b", + "Name": null + }, + "3c59eba8-4d49-456c-ad78-1f49864b24e0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "3c59eba8-4d49-456c-ad78-1f49864b24e0", + "Name": "W12x152", + "CellId": 247, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "dc8e4b3a-7c3b-42e9-aeb7-8fd1d16e3367": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 27.875, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dc8e4b3a-7c3b-42e9-aeb7-8fd1d16e3367", + "Name": null + }, + "4ccecdfc-a628-4f7b-bf2f-8d600a2006a6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "4ccecdfc-a628-4f7b-bf2f-8d600a2006a6", + "Name": "W12x152", + "CellId": 248, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e6b2edff-701d-4928-a207-afbdcb4cce94": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 17.75, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e6b2edff-701d-4928-a207-afbdcb4cce94", + "Name": null + }, + "c1544570-e92e-49c1-9018-c9386a121a28": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "c1544570-e92e-49c1-9018-c9386a121a28", + "Name": "W12x152", + "CellId": 248, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "31e11c25-0974-4866-9ecc-90bf4211f2fe": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 19.5, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "31e11c25-0974-4866-9ecc-90bf4211f2fe", + "Name": null + }, + "8ab12a94-61cd-4465-9743-7a2ffb54b876": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "8ab12a94-61cd-4465-9743-7a2ffb54b876", + "Name": "W12x152", + "CellId": 248, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "bc67482b-41a3-4417-902e-478b36a9636b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 21.25, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bc67482b-41a3-4417-902e-478b36a9636b", + "Name": null + }, + "7878b4da-f5db-458d-93e8-689522e338c4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "7878b4da-f5db-458d-93e8-689522e338c4", + "Name": "W12x152", + "CellId": 249, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fd70ea10-84f9-4cde-9b3a-0cd10cc1cff8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 17.75, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fd70ea10-84f9-4cde-9b3a-0cd10cc1cff8", + "Name": null + }, + "1f2f6ac5-c9e3-4533-9c65-e96fcfe7a3a9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "1f2f6ac5-c9e3-4533-9c65-e96fcfe7a3a9", + "Name": "W12x152", + "CellId": 249, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fc739526-aac6-481b-8b32-486370c71055": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 19.5, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fc739526-aac6-481b-8b32-486370c71055", + "Name": null + }, + "5814510a-a2c2-40e6-ac04-e74f3b07d58c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5814510a-a2c2-40e6-ac04-e74f3b07d58c", + "Name": "W12x152", + "CellId": 249, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "cf463490-a6f5-4054-b9a8-aa2560ec9864": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 21.25, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cf463490-a6f5-4054-b9a8-aa2560ec9864", + "Name": null + }, + "df2cb33c-030f-4c8d-9bcb-a859decfa455": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "df2cb33c-030f-4c8d-9bcb-a859decfa455", + "Name": "W12x152", + "CellId": 250, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a9effb7a-af8e-4219-a14d-b1fd51719f34": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 10.75, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a9effb7a-af8e-4219-a14d-b1fd51719f34", + "Name": null + }, + "7473238f-88ec-43bc-ad2a-0c73fd07e393": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "7473238f-88ec-43bc-ad2a-0c73fd07e393", + "Name": "W12x152", + "CellId": 250, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9de1bd77-70f7-4d49-b601-67079cb94294": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 12.5, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9de1bd77-70f7-4d49-b601-67079cb94294", + "Name": null + }, + "16820ee6-9dc4-4324-9ad9-aa79becf0601": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "16820ee6-9dc4-4324-9ad9-aa79becf0601", + "Name": "W12x152", + "CellId": 250, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "98aed35a-480a-433f-a928-3fc6959e5d1b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 14.25, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "98aed35a-480a-433f-a928-3fc6959e5d1b", + "Name": null + }, + "443754f2-27ca-4e63-bf19-8cb8d5d4904a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "443754f2-27ca-4e63-bf19-8cb8d5d4904a", + "Name": "W12x152", + "CellId": 251, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "41d16b7d-f2ea-43e8-88ef-b3092ca281c8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 10.75, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "41d16b7d-f2ea-43e8-88ef-b3092ca281c8", + "Name": null + }, + "f419123f-0b3d-4f1c-8ccb-8f2b4899187e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "f419123f-0b3d-4f1c-8ccb-8f2b4899187e", + "Name": "W12x152", + "CellId": 251, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0ba689d3-f39e-4730-971d-8e91c1cb7eb0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 12.5, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0ba689d3-f39e-4730-971d-8e91c1cb7eb0", + "Name": null + }, + "5f3a62be-74a9-44df-952e-155390397ac1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5f3a62be-74a9-44df-952e-155390397ac1", + "Name": "W12x152", + "CellId": 251, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "86327474-4649-4060-a0b2-c5ce9814ff95": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 14.25, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "86327474-4649-4060-a0b2-c5ce9814ff95", + "Name": null + }, + "a4577dba-fca3-4d3f-9ad9-bc7066cd86b8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "a4577dba-fca3-4d3f-9ad9-bc7066cd86b8", + "Name": "W12x152", + "CellId": 252, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "cad17d14-1b7e-4416-add4-a3a5481e684a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 3.75, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cad17d14-1b7e-4416-add4-a3a5481e684a", + "Name": null + }, + "6c33a11b-c08b-4217-8e60-17b3e339d48f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "6c33a11b-c08b-4217-8e60-17b3e339d48f", + "Name": "W12x152", + "CellId": 252, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "566b174f-383b-4657-ab0a-10c8e42e1257": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 5.5, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "566b174f-383b-4657-ab0a-10c8e42e1257", + "Name": null + }, + "d76e5f68-d384-41ba-9338-acf5e565b26c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d76e5f68-d384-41ba-9338-acf5e565b26c", + "Name": "W12x152", + "CellId": 252, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4527cc90-6e18-437e-bf44-429dc97f1689": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 7.25, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4527cc90-6e18-437e-bf44-429dc97f1689", + "Name": null + }, + "873f52f7-4d94-42c5-bef1-9e5724c0df8e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "873f52f7-4d94-42c5-bef1-9e5724c0df8e", + "Name": "W12x152", + "CellId": 253, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5253dbca-0546-4d16-81b1-7253886db9ee": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 3.75, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5253dbca-0546-4d16-81b1-7253886db9ee", + "Name": null + }, + "ae10f866-38ed-4026-a627-23218bada770": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ae10f866-38ed-4026-a627-23218bada770", + "Name": "W12x152", + "CellId": 253, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "72224995-fe0e-49f1-b734-437661ae909d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 5.5, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "72224995-fe0e-49f1-b734-437661ae909d", + "Name": null + }, + "9150b0a7-b2c0-42c8-8340-4675dee03140": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "9150b0a7-b2c0-42c8-8340-4675dee03140", + "Name": "W12x152", + "CellId": 253, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ee78cbd5-0c32-4f68-b68f-0ada1d5e7169": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 7.25, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ee78cbd5-0c32-4f68-b68f-0ada1d5e7169", + "Name": null + }, + "2f4d8014-07ff-4c8d-a693-95aa68237191": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -48.333333333333336, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "2f4d8014-07ff-4c8d-a693-95aa68237191", + "Name": "W12x152", + "CellId": 254, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "411ef4f3-d050-4274-8ee6-69403f44208b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -48.333333333333336, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -48.333333333333336, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "411ef4f3-d050-4274-8ee6-69403f44208b", + "Name": null + }, + "d65f119f-2ba9-4532-82f4-1bb2e9859fea": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -46.666666666666664, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d65f119f-2ba9-4532-82f4-1bb2e9859fea", + "Name": "W12x152", + "CellId": 254, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "60af6a0d-44af-4395-96a7-c826f119faf9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -46.666666666666664, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -46.666666666666664, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "60af6a0d-44af-4395-96a7-c826f119faf9", + "Name": null + }, + "ca5a7a69-0a2a-4ae9-9401-492b61a74f4b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -48.333333333333336, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ca5a7a69-0a2a-4ae9-9401-492b61a74f4b", + "Name": "W12x152", + "CellId": 255, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "c4dbab9c-9eb3-4bdb-9e57-8b95f971d8f0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -48.333333333333336, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -48.333333333333336, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c4dbab9c-9eb3-4bdb-9e57-8b95f971d8f0", + "Name": null + }, + "149036c1-d7f1-4cec-973f-615b557f18e5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -46.666666666666664, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "149036c1-d7f1-4cec-973f-615b557f18e5", + "Name": "W12x152", + "CellId": 255, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "2d44e3b4-b048-473d-a459-7b683b3b9bcc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -46.666666666666664, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -46.666666666666664, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2d44e3b4-b048-473d-a459-7b683b3b9bcc", + "Name": null + }, + "a7017c19-bc35-45c7-867e-7f6043c6e936": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "a7017c19-bc35-45c7-867e-7f6043c6e936", + "Name": "W12x152", + "CellId": 256, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "41525725-aa89-4235-9ce5-c490b094ea9c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 24.625, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "41525725-aa89-4235-9ce5-c490b094ea9c", + "Name": null + }, + "3538d801-2160-48c7-bfbd-13a025c01ccd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "3538d801-2160-48c7-bfbd-13a025c01ccd", + "Name": "W12x152", + "CellId": 256, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d1a72875-efe4-48c0-80e8-5e1589400419": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 26.25, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d1a72875-efe4-48c0-80e8-5e1589400419", + "Name": null + }, + "246e9b6d-c577-4de7-ba7d-2c67e09f0c0e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "246e9b6d-c577-4de7-ba7d-2c67e09f0c0e", + "Name": "W12x152", + "CellId": 256, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1be20819-dc87-4828-93d3-3b64ff7edf52": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 27.875, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1be20819-dc87-4828-93d3-3b64ff7edf52", + "Name": null + }, + "5e7f2f0b-ef5e-47fe-b656-e066d75351cc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5e7f2f0b-ef5e-47fe-b656-e066d75351cc", + "Name": "W12x152", + "CellId": 257, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5e57cd56-af58-4928-8f7d-95877cb417a6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 24.625, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5e57cd56-af58-4928-8f7d-95877cb417a6", + "Name": null + }, + "16f4c555-b3a4-433f-bae0-9a2606d44bc5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "16f4c555-b3a4-433f-bae0-9a2606d44bc5", + "Name": "W12x152", + "CellId": 257, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "413a0db5-cf3e-469e-aab7-57ec80fc6367": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 26.25, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "413a0db5-cf3e-469e-aab7-57ec80fc6367", + "Name": null + }, + "c313180a-d7d8-4886-abc8-ba83456a767d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "c313180a-d7d8-4886-abc8-ba83456a767d", + "Name": "W12x152", + "CellId": 257, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "97976d78-2b8f-42b2-8021-7fd11c9d442a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 27.875, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "97976d78-2b8f-42b2-8021-7fd11c9d442a", + "Name": null + }, + "d87f3bea-564d-4371-bdc6-3bd6eebd30c7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d87f3bea-564d-4371-bdc6-3bd6eebd30c7", + "Name": "W12x152", + "CellId": 258, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3813856e-47a5-4ec3-86e8-60bb9098a640": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 17.75, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3813856e-47a5-4ec3-86e8-60bb9098a640", + "Name": null + }, + "1670dc25-da98-481b-ad39-2d88c2790003": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "1670dc25-da98-481b-ad39-2d88c2790003", + "Name": "W12x152", + "CellId": 258, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c8afeb62-331d-45f3-af3c-7054ec969ef0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 19.5, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c8afeb62-331d-45f3-af3c-7054ec969ef0", + "Name": null + }, + "156a8484-51bc-4d59-86b5-8e10ca0485fc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "156a8484-51bc-4d59-86b5-8e10ca0485fc", + "Name": "W12x152", + "CellId": 258, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "911bc420-2b57-4e6f-8288-ad88fb2780be": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 21.25, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "911bc420-2b57-4e6f-8288-ad88fb2780be", + "Name": null + }, + "6a1e5b5a-09cc-468b-95db-f1f020bdea60": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "6a1e5b5a-09cc-468b-95db-f1f020bdea60", + "Name": "W12x152", + "CellId": 259, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "bee6abd3-b6d1-4925-8545-b6d18874df51": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 17.75, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bee6abd3-b6d1-4925-8545-b6d18874df51", + "Name": null + }, + "5c8c79b0-1335-49d7-b6bf-6a9e16da3efc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5c8c79b0-1335-49d7-b6bf-6a9e16da3efc", + "Name": "W12x152", + "CellId": 259, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ed8c49cc-c239-4679-85c7-78529eac0874": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 19.5, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ed8c49cc-c239-4679-85c7-78529eac0874", + "Name": null + }, + "be7bf444-9662-4021-86bd-79de80328ec4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "be7bf444-9662-4021-86bd-79de80328ec4", + "Name": "W12x152", + "CellId": 259, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0c94689a-4c67-4aa5-a603-bff5c59fe504": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 21.25, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0c94689a-4c67-4aa5-a603-bff5c59fe504", + "Name": null + }, + "1bc744f5-79f3-4d6f-82af-f078d0e7f0ee": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "1bc744f5-79f3-4d6f-82af-f078d0e7f0ee", + "Name": "W12x152", + "CellId": 260, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "42bbaf5c-4116-4570-a43a-cf8e8883d965": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 10.75, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "42bbaf5c-4116-4570-a43a-cf8e8883d965", + "Name": null + }, + "048943f4-a51c-4616-9e13-7bdffac362fe": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "048943f4-a51c-4616-9e13-7bdffac362fe", + "Name": "W12x152", + "CellId": 260, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6b696faa-20c2-4947-a1b2-9ec79df578db": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 12.5, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6b696faa-20c2-4947-a1b2-9ec79df578db", + "Name": null + }, + "f972a672-4859-4bec-b0ef-b80822ee2b0e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "f972a672-4859-4bec-b0ef-b80822ee2b0e", + "Name": "W12x152", + "CellId": 260, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e79f37b5-a7c0-47ca-aa18-b02b781a7dba": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 14.25, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e79f37b5-a7c0-47ca-aa18-b02b781a7dba", + "Name": null + }, + "2cefb9a0-5285-4584-9dde-4f3162116893": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "2cefb9a0-5285-4584-9dde-4f3162116893", + "Name": "W12x152", + "CellId": 261, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6eff5319-96fc-4c64-8271-e75f566631a2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 10.75, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6eff5319-96fc-4c64-8271-e75f566631a2", + "Name": null + }, + "f8f4967a-5420-4e7d-af42-82e5bfa9dc89": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "f8f4967a-5420-4e7d-af42-82e5bfa9dc89", + "Name": "W12x152", + "CellId": 261, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "412fe3ef-5827-43c6-b24f-683966d143bc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 12.5, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "412fe3ef-5827-43c6-b24f-683966d143bc", + "Name": null + }, + "5e357f0a-5698-4516-9ca6-b20637f8ecde": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5e357f0a-5698-4516-9ca6-b20637f8ecde", + "Name": "W12x152", + "CellId": 261, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "55da54ec-2cdf-4ce7-856c-1653bb4a193b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 14.25, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "55da54ec-2cdf-4ce7-856c-1653bb4a193b", + "Name": null + }, + "e76ca618-0f58-4388-94cc-757cefd6a01c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "e76ca618-0f58-4388-94cc-757cefd6a01c", + "Name": "W12x152", + "CellId": 262, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4efb47d9-897a-48d7-9b8e-04b2d914e397": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 3.75, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4efb47d9-897a-48d7-9b8e-04b2d914e397", + "Name": null + }, + "4c6ad451-6f4c-482a-a810-c820d4931e91": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "4c6ad451-6f4c-482a-a810-c820d4931e91", + "Name": "W12x152", + "CellId": 262, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b68fba6a-0c19-40b2-a997-9e1a3d7cfe58": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 5.5, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b68fba6a-0c19-40b2-a997-9e1a3d7cfe58", + "Name": null + }, + "09d91bb1-e826-47c4-a20e-2f3799b3913f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "09d91bb1-e826-47c4-a20e-2f3799b3913f", + "Name": "W12x152", + "CellId": 262, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "462f7acf-6443-480f-b047-4f1d18497669": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 7.25, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "462f7acf-6443-480f-b047-4f1d18497669", + "Name": null + }, + "8fdfef3a-2092-431d-b3bc-3198971c5b3e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "8fdfef3a-2092-431d-b3bc-3198971c5b3e", + "Name": "W12x152", + "CellId": 263, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d17dab8a-14c6-4ed8-a3b7-9a0eef759859": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 3.75, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d17dab8a-14c6-4ed8-a3b7-9a0eef759859", + "Name": null + }, + "f033586d-b5cf-4305-bb33-2a90fdb2a009": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "f033586d-b5cf-4305-bb33-2a90fdb2a009", + "Name": "W12x152", + "CellId": 263, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5d57755c-039e-4eb7-a9d1-924b2f5db8a0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 5.5, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5d57755c-039e-4eb7-a9d1-924b2f5db8a0", + "Name": null + }, + "f379c24e-e809-4141-9bc7-99a3eb08c692": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "f379c24e-e809-4141-9bc7-99a3eb08c692", + "Name": "W12x152", + "CellId": 263, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "878a8c32-7829-48fb-baf5-3b72e91d0f2b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 7.25, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "878a8c32-7829-48fb-baf5-3b72e91d0f2b", + "Name": null + }, + "a9317422-7903-4d44-8b83-a69138a19246": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -53.333333333333336, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "a9317422-7903-4d44-8b83-a69138a19246", + "Name": "W12x152", + "CellId": 264, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "388f554e-f1db-487c-beed-eeaf1cdb91a6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -53.333333333333336, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -53.333333333333336, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "388f554e-f1db-487c-beed-eeaf1cdb91a6", + "Name": null + }, + "444e31a9-b442-4a6a-a1a0-0675734fd896": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -51.666666666666664, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "444e31a9-b442-4a6a-a1a0-0675734fd896", + "Name": "W12x152", + "CellId": 264, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "e36f8b53-d537-4d45-9d83-59c60c9948de": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -51.666666666666664, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -51.666666666666664, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e36f8b53-d537-4d45-9d83-59c60c9948de", + "Name": null + }, + "5229ba1f-76f0-4c56-a9b4-677e5f14fb7e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -53.333333333333336, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5229ba1f-76f0-4c56-a9b4-677e5f14fb7e", + "Name": "W12x152", + "CellId": 265, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "9b9bfc3c-69c5-47aa-becf-e3f44ecc38c3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -53.333333333333336, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -53.333333333333336, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9b9bfc3c-69c5-47aa-becf-e3f44ecc38c3", + "Name": null + }, + "280ca4c5-fdab-41a3-96b2-5cfd62c3b52e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -51.666666666666664, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "280ca4c5-fdab-41a3-96b2-5cfd62c3b52e", + "Name": "W12x152", + "CellId": 265, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "b14eb587-28c2-4c27-a824-4f1cb8ecff44": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -51.666666666666664, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -51.666666666666664, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b14eb587-28c2-4c27-a824-4f1cb8ecff44", + "Name": null + }, + "bc5f6760-d8e3-457e-b263-3f27315c8bef": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "bc5f6760-d8e3-457e-b263-3f27315c8bef", + "Name": "W12x152", + "CellId": 266, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "2d76032c-5167-4eaf-b533-15a5d0a0e1d6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 24.625, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2d76032c-5167-4eaf-b533-15a5d0a0e1d6", + "Name": null + }, + "9ff6d3a4-4e1b-40a8-939e-ba9372e6b653": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "9ff6d3a4-4e1b-40a8-939e-ba9372e6b653", + "Name": "W12x152", + "CellId": 266, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e4dff7bc-5d64-4d24-b65f-0bf31fa180a5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 26.25, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e4dff7bc-5d64-4d24-b65f-0bf31fa180a5", + "Name": null + }, + "32e04c9f-57cd-4e0c-8d6b-bd931556ab1e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "32e04c9f-57cd-4e0c-8d6b-bd931556ab1e", + "Name": "W12x152", + "CellId": 266, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "43a886f3-3a6c-4277-9d1b-b8631fc69730": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 27.875, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "43a886f3-3a6c-4277-9d1b-b8631fc69730", + "Name": null + }, + "d999c815-d4e7-41cd-a54a-97f0c6599679": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "d999c815-d4e7-41cd-a54a-97f0c6599679", + "Name": "W12x152", + "CellId": 267, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "14fac723-342d-4afe-9317-f567a2a76bab": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 24.625, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "14fac723-342d-4afe-9317-f567a2a76bab", + "Name": null + }, + "9883b48f-2ac0-4a0e-9798-c5367a0cb6ba": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "9883b48f-2ac0-4a0e-9798-c5367a0cb6ba", + "Name": "W12x152", + "CellId": 267, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5f064f21-d776-4257-9c80-7fc752be4d20": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 26.25, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5f064f21-d776-4257-9c80-7fc752be4d20", + "Name": null + }, + "c3b789ee-6fbf-453c-8532-e907bd9c4c38": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "c3b789ee-6fbf-453c-8532-e907bd9c4c38", + "Name": "W12x152", + "CellId": 267, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "74dda031-834c-4a01-b4eb-89665cb5f69d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 27.875, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "74dda031-834c-4a01-b4eb-89665cb5f69d", + "Name": null + }, + "d59f2f4a-6f65-49af-8114-98769cbffcd0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d59f2f4a-6f65-49af-8114-98769cbffcd0", + "Name": "W12x152", + "CellId": 268, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1396e7b8-80d2-4c3b-9934-d3d9cce40d8d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 17.75, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1396e7b8-80d2-4c3b-9934-d3d9cce40d8d", + "Name": null + }, + "a97f33cd-19b1-492d-95c9-ff0b87f383f4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "a97f33cd-19b1-492d-95c9-ff0b87f383f4", + "Name": "W12x152", + "CellId": 268, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "745ea2ae-e26b-4d69-b9c1-afaac1ea181c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 19.5, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "745ea2ae-e26b-4d69-b9c1-afaac1ea181c", + "Name": null + }, + "13a39e14-51fe-4535-a4ea-7ed181947930": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "13a39e14-51fe-4535-a4ea-7ed181947930", + "Name": "W12x152", + "CellId": 268, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "41027711-0a10-4e07-9646-77d1fd896100": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 21.25, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "41027711-0a10-4e07-9646-77d1fd896100", + "Name": null + }, + "0f78be49-af48-461e-89e5-df2a556d406b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "0f78be49-af48-461e-89e5-df2a556d406b", + "Name": "W12x152", + "CellId": 269, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1b1bf6d5-6bf3-4990-9bf5-712d4f1e771c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 17.75, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1b1bf6d5-6bf3-4990-9bf5-712d4f1e771c", + "Name": null + }, + "13a2150b-ed26-4c73-98e3-11bbf1594b96": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "13a2150b-ed26-4c73-98e3-11bbf1594b96", + "Name": "W12x152", + "CellId": 269, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f2dd9e84-9745-4f50-8484-4243385f01b4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 19.5, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f2dd9e84-9745-4f50-8484-4243385f01b4", + "Name": null + }, + "a42d84c3-ce88-4459-aa43-1714ce5285c5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "a42d84c3-ce88-4459-aa43-1714ce5285c5", + "Name": "W12x152", + "CellId": 269, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c9a59aa1-f9e8-447f-bbc4-526ed65e1567": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 21.25, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c9a59aa1-f9e8-447f-bbc4-526ed65e1567", + "Name": null + }, + "71500eb7-44b5-410a-ac2e-821c46f2b0d5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "71500eb7-44b5-410a-ac2e-821c46f2b0d5", + "Name": "W12x152", + "CellId": 270, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "cefdf73a-a9eb-4207-820f-6c684f1ebaf5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 10.75, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cefdf73a-a9eb-4207-820f-6c684f1ebaf5", + "Name": null + }, + "748b51f4-b37d-41ab-a7f1-fb4c95f6b87b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "748b51f4-b37d-41ab-a7f1-fb4c95f6b87b", + "Name": "W12x152", + "CellId": 270, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "97ea8fc6-866d-431f-80a3-9fb7874b6331": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 12.5, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "97ea8fc6-866d-431f-80a3-9fb7874b6331", + "Name": null + }, + "ba71dab4-412d-42c3-9da3-a3a2cf1c5d74": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "ba71dab4-412d-42c3-9da3-a3a2cf1c5d74", + "Name": "W12x152", + "CellId": 270, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "390e1daa-5313-48c4-90cc-85262a0adc2c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 14.25, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "390e1daa-5313-48c4-90cc-85262a0adc2c", + "Name": null + }, + "eefcb350-7559-40bc-bd6b-03f49138a1e5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "eefcb350-7559-40bc-bd6b-03f49138a1e5", + "Name": "W12x152", + "CellId": 271, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fe9b5fe2-9171-4350-85fe-f165fe2e5b34": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 10.75, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fe9b5fe2-9171-4350-85fe-f165fe2e5b34", + "Name": null + }, + "bee869ce-3cba-44af-9b05-a52f1edd012c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "bee869ce-3cba-44af-9b05-a52f1edd012c", + "Name": "W12x152", + "CellId": 271, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "50f20255-5701-45d2-b9d4-d04a2972d03a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 12.5, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "50f20255-5701-45d2-b9d4-d04a2972d03a", + "Name": null + }, + "8fb765da-b3f0-4794-afb5-bba89e4e5fb0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "8fb765da-b3f0-4794-afb5-bba89e4e5fb0", + "Name": "W12x152", + "CellId": 271, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6c4afac9-cb8d-4d1c-8129-c23fbb5ecbc7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 14.25, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6c4afac9-cb8d-4d1c-8129-c23fbb5ecbc7", + "Name": null + }, + "7d9f43ce-53b5-45f0-93d7-b79a14756407": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "7d9f43ce-53b5-45f0-93d7-b79a14756407", + "Name": "W12x152", + "CellId": 272, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6131b992-e1c1-483a-9a64-c33ebbc90dd0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 3.75, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6131b992-e1c1-483a-9a64-c33ebbc90dd0", + "Name": null + }, + "45ec6bd2-d8e0-427b-b22d-a2b4d4e87816": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "45ec6bd2-d8e0-427b-b22d-a2b4d4e87816", + "Name": "W12x152", + "CellId": 272, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fcecb8b9-633f-4c1d-a66c-5333076ece4f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 5.5, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fcecb8b9-633f-4c1d-a66c-5333076ece4f", + "Name": null + }, + "d15e65f4-7369-4487-870d-5cea884dde8d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d15e65f4-7369-4487-870d-5cea884dde8d", + "Name": "W12x152", + "CellId": 272, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1b6200e3-049b-40fa-a04c-c3aa421122b2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 7.25, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1b6200e3-049b-40fa-a04c-c3aa421122b2", + "Name": null + }, + "57cccd3c-36f6-43f4-aa93-b2a3c4ce3e8c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "57cccd3c-36f6-43f4-aa93-b2a3c4ce3e8c", + "Name": "W12x152", + "CellId": 273, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "22e47cff-164b-4caf-9bdf-4fc5fd166054": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 3.75, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "22e47cff-164b-4caf-9bdf-4fc5fd166054", + "Name": null + }, + "66bedf0a-43ef-48b3-933f-d94499bd09a5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "66bedf0a-43ef-48b3-933f-d94499bd09a5", + "Name": "W12x152", + "CellId": 273, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1b4389c9-9d7f-431b-9174-360210e8aed1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 5.5, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1b4389c9-9d7f-431b-9174-360210e8aed1", + "Name": null + }, + "cf1fca3d-49e2-493f-8a0e-1acd16f9e469": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "cf1fca3d-49e2-493f-8a0e-1acd16f9e469", + "Name": "W12x152", + "CellId": 273, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6feed7bc-0c30-4474-9390-68c7b3162f4d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 7.25, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6feed7bc-0c30-4474-9390-68c7b3162f4d", + "Name": null + }, + "a01530e4-6aae-4644-b01c-73e9643425af": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -58.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "a01530e4-6aae-4644-b01c-73e9643425af", + "Name": "W12x152", + "CellId": 274, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "682f5afe-b727-495e-ad4e-0f1aee3d1b90": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -58.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -58.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "682f5afe-b727-495e-ad4e-0f1aee3d1b90", + "Name": null + }, + "82d7a3b5-934c-4816-9fa5-f232cbd03614": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -56.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "82d7a3b5-934c-4816-9fa5-f232cbd03614", + "Name": "W12x152", + "CellId": 274, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "9a51c66f-00b9-4e36-bf68-270d72af299f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -56.5, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -56.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9a51c66f-00b9-4e36-bf68-270d72af299f", + "Name": null + }, + "cfe5a9d8-68e0-4c21-a9a1-6cf29eea4779": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -58.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "cfe5a9d8-68e0-4c21-a9a1-6cf29eea4779", + "Name": "W12x152", + "CellId": 275, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "b065c194-aae9-49f6-897b-0b818b83edba": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -58.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -58.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b065c194-aae9-49f6-897b-0b818b83edba", + "Name": null + }, + "5e49c96a-87d6-440e-8b30-f005b23fe570": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -56.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5e49c96a-87d6-440e-8b30-f005b23fe570", + "Name": "W12x152", + "CellId": 275, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "5251f782-70ab-48e9-b27f-16ff7f4e05d0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -56.5, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -56.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5251f782-70ab-48e9-b27f-16ff7f4e05d0", + "Name": null + }, + "8ee6a4e1-c16e-4107-9d52-d829cd99f9d4": { + "discriminator": "Elements.ViewScope", + "Bounding Box": { + "discriminator": "Elements.Geometry.BBox3", + "Min": { + "X": 0.5, + "Y": -59.5, + "Z": -1.0 + }, + "Max": { + "X": 29.5, + "Y": -0.5, + "Z": 1.0 + } + }, + "Camera": { + "discriminator": "Elements.Camera", + "angle": { + "X": 0.0, + "Y": 0.0, + "Z": -1.0 + }, + "projection": "orthographic" + }, + "Inclusive": false, + "Id": "8ee6a4e1-c16e-4107-9d52-d829cd99f9d4", + "Name": "Structure elevation 0" + }, + "28c13cc4-c6a9-4c09-a188-6393d21c8567": { + "discriminator": "Elements.ViewScope", + "Bounding Box": { + "discriminator": "Elements.Geometry.BBox3", + "Min": { + "X": 0.5, + "Y": -59.5, + "Z": 3.5 + }, + "Max": { + "X": 29.5, + "Y": -0.5, + "Z": 5.5 + } + }, + "Camera": { + "discriminator": "Elements.Camera", + "angle": { + "X": 0.0, + "Y": 0.0, + "Z": -1.0 + }, + "projection": "orthographic" + }, + "Inclusive": false, + "Id": "28c13cc4-c6a9-4c09-a188-6393d21c8567", + "Name": "Structure elevation 4.5" + }, + "00ee9017-7840-4190-89fc-13099697449d": { + "discriminator": "Elements.ViewScope", + "Bounding Box": { + "discriminator": "Elements.Geometry.BBox3", + "Min": { + "X": 0.5, + "Y": -59.5, + "Z": 7.35 + }, + "Max": { + "X": 29.5, + "Y": -0.5, + "Z": 9.35 + } + }, + "Camera": { + "discriminator": "Elements.Camera", + "angle": { + "X": 0.0, + "Y": 0.0, + "Z": -1.0 + }, + "projection": "orthographic" + }, + "Inclusive": false, + "Id": "00ee9017-7840-4190-89fc-13099697449d", + "Name": "Structure elevation 8.35" + }, + "47a069c2-7e15-4f66-a4d0-9b09e74492fc": { + "discriminator": "Elements.ViewScope", + "Bounding Box": { + "discriminator": "Elements.Geometry.BBox3", + "Min": { + "X": 0.5, + "Y": -59.5, + "Z": 11.2 + }, + "Max": { + "X": 29.5, + "Y": -0.5, + "Z": 13.2 + } + }, + "Camera": { + "discriminator": "Elements.Camera", + "angle": { + "X": 0.0, + "Y": 0.0, + "Z": -1.0 + }, + "projection": "orthographic" + }, + "Inclusive": false, + "Id": "47a069c2-7e15-4f66-a4d0-9b09e74492fc", + "Name": "Structure elevation 12.2" + }, + "8f602a08-fa4f-4c4b-a208-728c0c39ba41": { + "discriminator": "Elements.ViewScope", + "Bounding Box": { + "discriminator": "Elements.Geometry.BBox3", + "Min": { + "X": 0.5, + "Y": -59.5, + "Z": 19.0 + }, + "Max": { + "X": 29.5, + "Y": -0.5, + "Z": 21.0 + } + }, + "Camera": { + "discriminator": "Elements.Camera", + "angle": { + "X": 0.0, + "Y": 0.0, + "Z": -1.0 + }, + "projection": "orthographic" + }, + "Inclusive": false, + "Id": "8f602a08-fa4f-4c4b-a208-728c0c39ba41", + "Name": "Structure elevation 20" + } + } +} \ No newline at end of file diff --git a/Elements/src/Model.cs b/Elements/src/Model.cs index 90b2dd985..f91e38273 100644 --- a/Elements/src/Model.cs +++ b/Elements/src/Model.cs @@ -264,28 +264,145 @@ internal Model CreateExportModel(bool gatherSubElements) public static Model GeometricElementModelFromJson(string json) { - var options = new JsonSerializerOptions(); + var resolver = new ElementReferenceResolver(null, default); - // Our custom reference handler will cache elements by id as - // they are deserialized, supporting reading elements by id - // from JSON. - var refHandler = new ElementReferenceHandler(null, default); - options.ReferenceHandler = refHandler; + var sw = new Stopwatch(); + sw.Start(); - // Use the model converter here so that we have a chance to - // intercept the creation of elements when things go wrong. - // Using the model converter adds 100ms because it has to - // call deserialize for each element and trap if the element - // is null and report an error. - options.Converters.Add(new ModelToGeometricElementsConverter()); + // Read materials, profiles, geometric elements + var elements = new Dictionary(); - var model = JsonSerializer.Deserialize(json, options); + using (var doc = JsonDocument.Parse(json)) + { + var root = doc.RootElement; + var elementsElement = root.GetProperty("Elements"); + var transform = JsonSerializer.Deserialize(root.GetProperty("Transform")); - // Resetting the reference handler, empties the internal - // elements cache. - refHandler.Reset(null, default); + Console.WriteLine($"{sw.ElapsedMilliseconds}ms for parsing json"); + sw.Restart(); - return model; + foreach (var element in elementsElement.EnumerateObject()) + { + Element e = null; + var discriminator = element.Value.GetProperty("discriminator").GetString(); + var id = element.Value.GetProperty("Id").GetGuid(); + element.Value.TryGetProperty("Name", out var nameProp); + string name; + { + name = nameProp.GetString(); + } + + switch (discriminator) + { + // TODO: Big assumption here - that things are in the right order. + case "Elements.Material": + var colorProp = element.Value.GetProperty("Color"); + var color = new Color( + colorProp.GetProperty("Red").GetDouble(), + colorProp.GetProperty("Green").GetDouble(), + colorProp.GetProperty("Blue").GetDouble(), + colorProp.GetProperty("Alpha").GetDouble() + ); + var spec = element.Value.GetProperty("SpecularFactor").GetDouble(); + var gloss = element.Value.GetProperty("GlossinessFactor").GetDouble(); + + // TODO: Handle all the other color properties + + e = new Material(name, color, spec, gloss, id: id); + break; + case "Elements.Geometry.Profile": + var perimeter = JsonSerializer.Deserialize(element.Value.GetProperty("Perimeter")); + var voids = JsonSerializer.Deserialize>(element.Value.GetProperty("Voids")); + e = new Profile(perimeter, voids, id, name); + break; + case "Elements.ElementInstance": + var baseDefinition = (GeometricElement)resolver.ResolveReference(element.Value.GetProperty("BaseDefinition").GetString()); + var elementTransform = JsonSerializer.Deserialize(element.Value.GetProperty("Transform")); + e = new ElementInstance(baseDefinition, elementTransform, name, id); + break; + case "Elements.ModelCurve": + continue; + case "Elements.GridLine": + continue; + default: + + if (element.Value.TryGetProperty("Perimeter", out _) && element.Value.TryGetProperty("Voids", out _)) + { + // TODO: We're handling profile-like things in this way. + perimeter = JsonSerializer.Deserialize(element.Value.GetProperty("Perimeter")); + voids = JsonSerializer.Deserialize>(element.Value.GetProperty("Voids")); + e = new Profile(perimeter, voids, id, name); + break; + } + + // Qualify element as a geometric element by seeing + // whether it has a representation. + if (element.Value.TryGetProperty("Representation", out var repProperty)) + { + var solidOps = new List(); + foreach (var solidOp in repProperty.GetProperty("SolidOperations").EnumerateArray()) + { + SolidOperation op = null; + var isVoid = false; + if (solidOp.TryGetProperty("IsVoid", out var isVoidElement)) + { + isVoid = isVoidElement.GetBoolean(); + } + + switch (solidOp.GetProperty("discriminator").GetString()) + { + case "Elements.Geometry.Solids.Extrude": + var profile = (Profile)resolver.ResolveReference(solidOp.GetProperty("Profile").GetString()); + var height = solidOp.GetProperty("Height").GetDouble(); + var direction = JsonSerializer.Deserialize(solidOp.GetProperty("Direction")); + op = new Extrude(profile, height, direction, isVoid); + break; + case "Elements.Geometry.Solids.Sweep": + profile = (Profile)resolver.ResolveReference(solidOp.GetProperty("Profile").GetString()); + var curve = DeserializeCurve(solidOp.GetProperty("Curve")); + var startSetback = solidOp.GetProperty("StartSetback").GetDouble(); + var endSetback = solidOp.GetProperty("EndSetback").GetDouble(); + var profileRotation = 0.0; + if (solidOp.TryGetProperty("ProfileRotation", out var rotation)) + { + profileRotation = rotation.GetDouble(); + } + op = new Sweep(profile, curve, startSetback, endSetback, profileRotation, isVoid); + break; + case "Elements.Geometry.Solids.Lamina": + perimeter = JsonSerializer.Deserialize(solidOp.GetProperty("Perimeter")); + op = new Lamina(perimeter, isVoid); + break; + } + solidOps.Add(op); + } + var rep = new Representation(solidOps); + elementTransform = JsonSerializer.Deserialize(element.Value.GetProperty("Transform")); + var material = (Material)resolver.ResolveReference(element.Value.GetProperty("Material").GetString()); + var elementId = element.Value.GetProperty("Id").GetGuid(); + var isElementDefinition = element.Value.GetProperty("IsElementDefinition").GetBoolean(); + e = new GeometricElement(elementTransform, material, rep, isElementDefinition, elementId, name); + + if (solidOps.Count == 1) + { + rep.SkipCSGUnion = true; + } + } + break; + } + if (e != null) + { + elements.Add(id, e); + resolver.AddReference(id.ToString(), e); + } + + // Console.WriteLine($"{sw.ElapsedMilliseconds}ms for deserializing {id}:{discriminator}"); + // sw.Restart(); + } + + var model = new Model(transform, elements); + return model; + } } /// @@ -488,6 +605,24 @@ private static bool IsValidListType(Type t) return typeof(Element).IsAssignableFrom(t) || typeof(SolidOperation).IsAssignableFrom(t); } + + private static Curve DeserializeCurve(JsonElement jsonCurve) + { + var discriminator = jsonCurve.GetProperty("discriminator").GetString(); + switch (discriminator) + { + case "Elements.Geometry.Line": + return JsonSerializer.Deserialize(jsonCurve); + case "Elements.Geometry.Polygon": + return JsonSerializer.Deserialize(jsonCurve); + case "Elements.Geometry.Polyline": + return JsonSerializer.Deserialize(jsonCurve); + case "Elements.Geometry.Arc": + return JsonSerializer.Deserialize(jsonCurve); + default: + throw new JsonException($"The curve type, {discriminator}, could not be deserialized."); + } + } } public static class ModelExtensions diff --git a/Elements/src/Serialization/JSON/ModelToGeometricElementsConverter.cs b/Elements/src/Serialization/JSON/ModelToGeometricElementsConverter.cs deleted file mode 100644 index aa408f60f..000000000 --- a/Elements/src/Serialization/JSON/ModelToGeometricElementsConverter.cs +++ /dev/null @@ -1,157 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text.Json; -using System.Text.Json.Serialization; -using Elements.Geometry; -using Elements.Geometry.Solids; - -namespace Elements.Serialization.JSON -{ - /// - /// Convert a model to a collection of geometric elements. - /// - public class ModelToGeometricElementsConverter : JsonConverter - { - public override Model Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - var resolver = options.ReferenceHandler.CreateResolver() as ElementReferenceResolver; - - // Read materials, profiles, geometric elements - var elements = new Dictionary(); - using (var doc = JsonDocument.ParseValue(ref reader)) - { - var root = doc.RootElement; - var elementsElement = root.GetProperty("Elements"); - var transform = JsonSerializer.Deserialize(root.GetProperty("Transform")); - - foreach (var element in elementsElement.EnumerateObject()) - { - Element e = null; - var discriminator = element.Value.GetProperty("discriminator").GetString(); - var id = element.Value.GetProperty("Id").GetGuid(); - element.Value.TryGetProperty("Name", out var nameProp); - string name; - { - name = nameProp.GetString(); - } - - switch (discriminator) - { - // TODO: Big assumption here - that things are in the right order. - case "Elements.Material": - e = JsonSerializer.Deserialize(element.Value); - break; - case "Elements.Geometry.Profile": - e = JsonSerializer.Deserialize(element.Value); - break; - case "Elements.ElementInstance": - var baseDefinition = (GeometricElement)resolver.ResolveReference(element.Value.GetProperty("BaseDefinition").GetString()); - var elementTransform = JsonSerializer.Deserialize(element.Value.GetProperty("Transform")); - e = new ElementInstance(baseDefinition, elementTransform, name, id); - break; - default: - - if (element.Value.TryGetProperty("Perimeter", out _) && element.Value.TryGetProperty("Voids", out _)) - { - // TODO: We're handling profile-like things in this way. - e = JsonSerializer.Deserialize(element.Value); - break; - } - - // Qualify element as a geometric element by seeing - // whether it has a representation. - if (element.Value.TryGetProperty("Representation", out var repProperty)) - { - if (discriminator == "Elements.ModelCurve") - { - // TODO: Handle model curves. - continue; - } - else if (discriminator == "Elements.GridLine") - { - // TODO: Handle grid lines. - continue; - } - - var solidOps = new List(); - foreach (var solidOp in repProperty.GetProperty("SolidOperations").EnumerateArray()) - { - SolidOperation op = null; - var isVoid = false; - if (solidOp.TryGetProperty("IsVoid", out var isVoidElement)) - { - isVoid = isVoidElement.GetBoolean(); - } - - switch (solidOp.GetProperty("discriminator").GetString()) - { - case "Elements.Geometry.Solids.Extrude": - var profile = (Profile)resolver.ResolveReference(solidOp.GetProperty("Profile").GetString()); - var height = solidOp.GetProperty("Height").GetDouble(); - var direction = JsonSerializer.Deserialize(solidOp.GetProperty("Direction")); - op = new Extrude(profile, height, direction, isVoid); - break; - case "Elements.Geometry.Solids.Sweep": - profile = (Profile)resolver.ResolveReference(solidOp.GetProperty("Profile").GetString()); - var curve = DeserializeCurve(solidOp.GetProperty("Curve")); - var startSetback = solidOp.GetProperty("StartSetback").GetDouble(); - var endSetback = solidOp.GetProperty("EndSetback").GetDouble(); - var profileRotation = 0.0; - if (solidOp.TryGetProperty("ProfileRotation", out var rotation)) - { - profileRotation = rotation.GetDouble(); - } - op = new Sweep(profile, curve, startSetback, endSetback, profileRotation, isVoid); - break; - case "Elements.Geometry.Solids.Lamina": - var perimeter = JsonSerializer.Deserialize(solidOp.GetProperty("Perimeter")); - op = new Lamina(perimeter, isVoid); - break; - } - solidOps.Add(op); - } - var rep = new Representation(solidOps); - elementTransform = JsonSerializer.Deserialize(element.Value.GetProperty("Transform")); - var material = (Material)resolver.ResolveReference(element.Value.GetProperty("Material").GetString()); - var elementId = element.Value.GetProperty("Id").GetGuid(); - var isElementDefinition = element.Value.GetProperty("IsElementDefinition").GetBoolean(); - e = new GeometricElement(elementTransform, material, rep, isElementDefinition, elementId, name); - } - break; - } - if (e != null) - { - elements.Add(id, e); - resolver.AddReference(id.ToString(), e); - } - } - - var model = new Model(transform, elements); - return model; - } - } - - internal static Curve DeserializeCurve(JsonElement jsonCurve) - { - var discriminator = jsonCurve.GetProperty("discriminator").GetString(); - switch (discriminator) - { - case "Elements.Geometry.Line": - return JsonSerializer.Deserialize(jsonCurve); - case "Elements.Geometry.Polygon": - return JsonSerializer.Deserialize(jsonCurve); - case "Elements.Geometry.Polyline": - return JsonSerializer.Deserialize(jsonCurve); - case "Elements.Geometry.Arc": - return JsonSerializer.Deserialize(jsonCurve); - default: - throw new JsonException($"The curve type, {discriminator}, could not be deserialized."); - } - } - - public override void Write(Utf8JsonWriter writer, Model value, JsonSerializerOptions options) - { - throw new NotImplementedException(); - } - } -} \ No newline at end of file From 7684f68322c63ad23e9fecc133a15e2d0caa206e Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Tue, 12 Jul 2022 18:01:07 -0700 Subject: [PATCH 116/150] Don't log for render data. --- .../src/Serialization/glTF/GltfExtensions.cs | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/Elements/src/Serialization/glTF/GltfExtensions.cs b/Elements/src/Serialization/glTF/GltfExtensions.cs index 60311b42f..a72c2af4b 100644 --- a/Elements/src/Serialization/glTF/GltfExtensions.cs +++ b/Elements/src/Serialization/glTF/GltfExtensions.cs @@ -16,6 +16,7 @@ using SixLabors.ImageSharp.Formats.Png; using SixLabors.ImageSharp; using Image = glTFLoader.Schema.Image; +using System.Diagnostics; [assembly: InternalsVisibleTo("Hypar.Elements.Tests")] [assembly: InternalsVisibleTo("Elements.Benchmarks")] @@ -125,20 +126,27 @@ public static void ToGlTF(this Model model, string path, bool useBinarySerializa /// A byte array representing the model. public static byte[] ToGlTF(this Model model, bool drawEdges = false, bool mergeVertices = false) { + var sw = new Stopwatch(); var gltf = InitializeGlTF(model, out var buffers, out _, drawEdges, mergeVertices); + Console.WriteLine($"{sw.ElapsedMilliseconds}ms for initializing the glTF"); + sw.Restart(); + if (gltf == null) { return null; } var mergedBuffer = gltf.CombineBufferAndFixRefs(buffers.ToArray(buffers.Count)); + Console.WriteLine($"{sw.ElapsedMilliseconds}ms for merging the buffers"); + sw.Restart(); byte[] bytes; using (var ms = new MemoryStream()) - using (var writer = new BinaryWriter(ms)) { - gltf.SaveBinaryModel(mergedBuffer, writer); + gltf.SaveBinaryModel(mergedBuffer, ms); bytes = ms.ToArray(); } + Console.WriteLine($"{sw.ElapsedMilliseconds}ms for saving the binary model"); + sw.Restart(); return bytes; } @@ -843,6 +851,7 @@ internal static void ToGlb(this Solid solid, string path) private static bool SaveGlb(Model model, string path, out List errors, bool drawEdges = false, bool mergeVertices = false) { var gltf = InitializeGlTF(model, out var buffers, out errors, drawEdges, mergeVertices); + if (gltf == null) { return false; @@ -850,7 +859,9 @@ private static bool SaveGlb(Model model, string path, out List errors //TODO handle initializing multiple gltf buffers at once. var mergedBuffer = gltf.CombineBufferAndFixRefs(buffers.ToArray(buffers.Count)); + gltf.SaveBinaryModel(mergedBuffer, path); + return true; } @@ -858,6 +869,7 @@ private static bool SaveGlb(Model model, string path, out List errors private static bool SaveGltf(Model model, string path, out List errors, bool drawEdges = false, bool mergeVertices = false) { var gltf = InitializeGlTF(model, out List buffers, out errors, drawEdges, mergeVertices); + if (gltf == null) { return false; @@ -865,7 +877,9 @@ private static bool SaveGltf(Model model, string path, out List error // Buffers must be saved first, URIs may be set or modified inside this method. gltf.SaveBuffersAndAddUris(path, buffers); + gltf.SaveModel(path); + return true; } @@ -875,6 +889,8 @@ internal static Gltf InitializeGlTF(Model model, bool drawEdges = false, bool mergeVertices = false) { + var sw = new Stopwatch(); + errors = new List(); var schemaBuffer = new glTFLoader.Schema.Buffer(); var schemaBuffers = new List { schemaBuffer }; @@ -965,6 +981,10 @@ internal static Gltf InitializeGlTF(Model model, var meshElementMap = new Dictionary>(); var nodeElementMap = new Dictionary(); var meshTransformMap = new Dictionary(); + + Console.WriteLine($"{sw.ElapsedMilliseconds}ms for initializing the glTF"); + sw.Restart(); + foreach (var e in elements) { // Check if we'll overrun the index size @@ -1058,6 +1078,9 @@ internal static Gltf InitializeGlTF(Model model, allBuffers[0] = buffer.ToArray(buffer.Count); + Console.WriteLine($"{sw.ElapsedMilliseconds}ms for finalizing the glTF"); + sw.Restart(); + return gltf; } From a335be8ae9687973f4fccbfc5f73ba7ec307b7cf Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Wed, 13 Jul 2022 14:16:52 -0700 Subject: [PATCH 117/150] Don't AOT compile. --- Elements.Wasm/Elements.Wasm.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Elements.Wasm/Elements.Wasm.csproj b/Elements.Wasm/Elements.Wasm.csproj index 2c7565b3b..466a4e541 100644 --- a/Elements.Wasm/Elements.Wasm.csproj +++ b/Elements.Wasm/Elements.Wasm.csproj @@ -5,7 +5,7 @@ enable enable en - true + false From ba877846d7babc9c0b2f432ee68704e9891e09bf Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Wed, 13 Jul 2022 14:19:05 -0700 Subject: [PATCH 118/150] Add the tower model. --- Elements/test/models/Geometry/tower.json | 144757 ++++++++++++++++++++ 1 file changed, 144757 insertions(+) create mode 100644 Elements/test/models/Geometry/tower.json diff --git a/Elements/test/models/Geometry/tower.json b/Elements/test/models/Geometry/tower.json new file mode 100644 index 000000000..a8ad0ba51 --- /dev/null +++ b/Elements/test/models/Geometry/tower.json @@ -0,0 +1,144757 @@ +{ + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Elements": { + "77a9f129-0920-40f0-9e77-044b189f100b": { + "discriminator": "Elements.Geometry.Profiles.WideFlangeProfile", + "d": 0.40386, + "tw": 0.038862, + "bf": 0.33274, + "tf": 0.062738, + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.16637, + "Y": 0.20193, + "Z": 0.0 + }, + { + "X": -0.16637, + "Y": 0.13919199999999998, + "Z": 0.0 + }, + { + "X": -0.019431, + "Y": 0.13919199999999998, + "Z": 0.0 + }, + { + "X": -0.019431, + "Y": -0.13919199999999998, + "Z": 0.0 + }, + { + "X": -0.16637, + "Y": -0.13919199999999998, + "Z": 0.0 + }, + { + "X": -0.16637, + "Y": -0.20193, + "Z": 0.0 + }, + { + "X": 0.16637, + "Y": -0.20193, + "Z": 0.0 + }, + { + "X": 0.16637, + "Y": -0.13919199999999998, + "Z": 0.0 + }, + { + "X": 0.019431, + "Y": -0.13919199999999998, + "Z": 0.0 + }, + { + "X": 0.019431, + "Y": 0.13919199999999998, + "Z": 0.0 + }, + { + "X": 0.16637, + "Y": 0.13919199999999998, + "Z": 0.0 + }, + { + "X": 0.16637, + "Y": 0.20193, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "77a9f129-0920-40f0-9e77-044b189f100b", + "Name": "W12x279" + }, + "f4f88090-a34c-42af-9cb8-30bca38ef11e": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7342488177745831, + "Green": 0.9899171818932133, + "Blue": 0.30313707110618104, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "f4f88090-a34c-42af-9cb8-30bca38ef11e", + "Name": "ffa6b3b5-5a87-49ff-ba32-c2f50515b46c" + }, + "cf453dad-ab5e-49ba-ba24-d5df93119866": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -59.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "f4f88090-a34c-42af-9cb8-30bca38ef11e", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -59.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "cf453dad-ab5e-49ba-ba24-d5df93119866", + "Name": null + }, + "d26b17d3-f6bf-4eab-a625-1dfe416433f0": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.3389443128085436, + "Green": 0.16118375545422722, + "Blue": 0.5312237681500724, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "d26b17d3-f6bf-4eab-a625-1dfe416433f0", + "Name": "05bf2e90-0caf-4496-bc90-2bdb95dce4a5" + }, + "529c8a8a-0469-4ee0-90a7-5c701dd83ece": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -58.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -58.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d26b17d3-f6bf-4eab-a625-1dfe416433f0", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -58.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -58.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "529c8a8a-0469-4ee0-90a7-5c701dd83ece", + "Name": null + }, + "8775cab2-6e13-45f7-a802-8bf045e026c0": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.4009919471112042, + "Green": 0.3825796574273052, + "Blue": 0.6625239162996989, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "8775cab2-6e13-45f7-a802-8bf045e026c0", + "Name": "4c4f4337-f8f9-48e8-8cd3-5abd01bba1b2" + }, + "ce4db56d-928e-4b33-941d-16a502388a3f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -57.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -57.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "8775cab2-6e13-45f7-a802-8bf045e026c0", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -57.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -57.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "ce4db56d-928e-4b33-941d-16a502388a3f", + "Name": null + }, + "125305b1-37a0-484c-b268-a7d5bdefa462": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.3616121049791631, + "Green": 0.2888516594138237, + "Blue": 0.9483488793244347, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "125305b1-37a0-484c-b268-a7d5bdefa462", + "Name": "636007ae-9fdf-46bb-87dc-8d9974634d71" + }, + "fad93883-fb0c-4a1e-aa9b-4f18f0f2490b": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -56.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -56.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "125305b1-37a0-484c-b268-a7d5bdefa462", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -56.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -56.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "fad93883-fb0c-4a1e-aa9b-4f18f0f2490b", + "Name": null + }, + "f42d89f9-6cd5-4c9e-9096-f555195bbb83": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.6455493022899839, + "Green": 0.9451100206678315, + "Blue": 0.15982116719699518, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "f42d89f9-6cd5-4c9e-9096-f555195bbb83", + "Name": "9b65595c-0140-4de4-b31f-79c2ea739c09" + }, + "2b1da427-1f95-49ad-9976-7810953a0078": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -55.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "f42d89f9-6cd5-4c9e-9096-f555195bbb83", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -55.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "2b1da427-1f95-49ad-9976-7810953a0078", + "Name": null + }, + "94edc645-3811-42f8-8f9b-4ce0d023a11c": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.4890142308962598, + "Green": 0.3518197295962925, + "Blue": 0.754810053275344, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "94edc645-3811-42f8-8f9b-4ce0d023a11c", + "Name": "1938be4a-74d5-4ff0-b23b-a284fca72434" + }, + "a1cfd414-66fd-465a-a1a5-e91aae80e679": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -54.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -54.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "94edc645-3811-42f8-8f9b-4ce0d023a11c", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -54.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -54.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a1cfd414-66fd-465a-a1a5-e91aae80e679", + "Name": null + }, + "d3c758e4-76b6-4b56-b1c3-fa28678a1e7d": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.1313233841822126, + "Green": 0.45660366604877806, + "Blue": 0.9943902534406587, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "d3c758e4-76b6-4b56-b1c3-fa28678a1e7d", + "Name": "783b809a-3b2a-4fe3-9c83-d30389e4eef1" + }, + "89c9038b-5fe8-4db1-8c83-e04561e74381": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -53.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -53.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d3c758e4-76b6-4b56-b1c3-fa28678a1e7d", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -53.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -53.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "89c9038b-5fe8-4db1-8c83-e04561e74381", + "Name": null + }, + "733e117a-34b8-4a96-a130-50b5b4706580": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.3620129126878515, + "Green": 0.7918260003402019, + "Blue": 0.3609958916720915, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "733e117a-34b8-4a96-a130-50b5b4706580", + "Name": "af53bdbd-5a5d-4874-9929-5478635750e7" + }, + "21a8a705-3f72-4385-a38d-2e0196bb3de5": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -52.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -52.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "733e117a-34b8-4a96-a130-50b5b4706580", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -52.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -52.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "21a8a705-3f72-4385-a38d-2e0196bb3de5", + "Name": null + }, + "4c644c8d-91d2-42cb-a8c4-f869fd6a5a96": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.5061224747943331, + "Green": 0.04256310083091403, + "Blue": 0.3818656687540308, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "4c644c8d-91d2-42cb-a8c4-f869fd6a5a96", + "Name": "95218879-b39b-4a1a-8089-b64cfd2e4dff" + }, + "046fe772-7b5e-4b89-9622-cf61225cd16c": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -51.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -51.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "4c644c8d-91d2-42cb-a8c4-f869fd6a5a96", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -51.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -51.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "046fe772-7b5e-4b89-9622-cf61225cd16c", + "Name": null + }, + "b4fdc2d6-2eff-483f-a71b-c8323c0d8fc7": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.8426658156526582, + "Green": 0.8365632890893907, + "Blue": 0.999187590088317, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "b4fdc2d6-2eff-483f-a71b-c8323c0d8fc7", + "Name": "af8eb32a-e47c-4ff2-a721-023e0207269e" + }, + "6c3196ce-f88a-45dc-80dc-29797713af71": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -50.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "b4fdc2d6-2eff-483f-a71b-c8323c0d8fc7", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -50.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "6c3196ce-f88a-45dc-80dc-29797713af71", + "Name": null + }, + "dde49fcb-8475-4d45-9f55-1080444c621b": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.3230489633619082, + "Green": 0.8098286394075624, + "Blue": 0.5818022957918245, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "dde49fcb-8475-4d45-9f55-1080444c621b", + "Name": "6dc7d6d2-1876-4dce-aeac-06199796ede2" + }, + "c4e07335-e765-490f-a0a5-b16cb7c79f20": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -49.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -49.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "dde49fcb-8475-4d45-9f55-1080444c621b", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -49.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -49.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "c4e07335-e765-490f-a0a5-b16cb7c79f20", + "Name": null + }, + "11095bdd-4cad-41b6-8ecd-9f0b7264d534": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7935420371561973, + "Green": 0.022198746456857186, + "Blue": 0.004480384292304695, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "11095bdd-4cad-41b6-8ecd-9f0b7264d534", + "Name": "0786410e-9477-4633-9000-f2d22b96fdd9" + }, + "a9546e8a-4667-44a5-8b08-e3779f922690": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -48.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -48.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "11095bdd-4cad-41b6-8ecd-9f0b7264d534", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -48.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -48.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a9546e8a-4667-44a5-8b08-e3779f922690", + "Name": null + }, + "39c035bf-b688-4e13-b0e8-27c51b2dddac": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7903348802543874, + "Green": 0.2377481247474198, + "Blue": 0.0072555774856617565, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "39c035bf-b688-4e13-b0e8-27c51b2dddac", + "Name": "45492b8a-16ad-40e7-88b7-df1cd267c5bf" + }, + "9c3ef253-b875-474c-805b-eca60e21715d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -47.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -47.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "39c035bf-b688-4e13-b0e8-27c51b2dddac", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -47.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -47.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "9c3ef253-b875-474c-805b-eca60e21715d", + "Name": null + }, + "21171db6-335b-409e-ab8c-19336bfeaecd": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.301360693434887, + "Green": 0.7345765799910652, + "Blue": 0.7678452305346006, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "21171db6-335b-409e-ab8c-19336bfeaecd", + "Name": "52e95c52-17df-4cea-8fd0-45678e100b26" + }, + "b13a171c-5b99-4221-8217-6c092388fc12": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -46.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -46.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "21171db6-335b-409e-ab8c-19336bfeaecd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -46.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -46.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "b13a171c-5b99-4221-8217-6c092388fc12", + "Name": null + }, + "2e86b192-a48d-4cde-8392-9fdb7f7c2ffe": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9827697598295145, + "Green": 0.45292934843009774, + "Blue": 0.5118342812693838, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "2e86b192-a48d-4cde-8392-9fdb7f7c2ffe", + "Name": "3a79a722-f099-4076-928c-11404901553f" + }, + "6ad75ac3-0ede-49ef-a566-aa73d457e0c7": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -45.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "2e86b192-a48d-4cde-8392-9fdb7f7c2ffe", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -45.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "6ad75ac3-0ede-49ef-a566-aa73d457e0c7", + "Name": null + }, + "235804f0-5f9a-4e1a-a65f-42b79747f970": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.16395173834820825, + "Green": 0.44937136697087965, + "Blue": 0.19522022790984261, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "235804f0-5f9a-4e1a-a65f-42b79747f970", + "Name": "deeba801-92f1-4b88-9beb-ec4f3c869a40" + }, + "95fbf2e9-fe52-495c-b47f-442abf111052": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -44.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -44.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "235804f0-5f9a-4e1a-a65f-42b79747f970", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -44.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -44.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "95fbf2e9-fe52-495c-b47f-442abf111052", + "Name": null + }, + "a069db18-5c94-439a-ad9d-6bbc2c515c34": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.8532355375835837, + "Green": 0.769455196228556, + "Blue": 0.38285632169938477, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "a069db18-5c94-439a-ad9d-6bbc2c515c34", + "Name": "49134053-f6cc-4632-918b-39421f0be78c" + }, + "1163c3c8-7c18-493d-a842-2cf31819712e": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -43.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -43.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "a069db18-5c94-439a-ad9d-6bbc2c515c34", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -43.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -43.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "1163c3c8-7c18-493d-a842-2cf31819712e", + "Name": null + }, + "0f819e0c-4246-4f91-ab50-4df4d1f1ce09": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.13382077921825497, + "Green": 0.15563801310753358, + "Blue": 0.22468407788532044, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "0f819e0c-4246-4f91-ab50-4df4d1f1ce09", + "Name": "bf2f2422-8f72-4e5c-afe0-0141c59e50f2" + }, + "9be52ad0-ddef-408a-ba38-3e55af1f2adf": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -42.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -42.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0f819e0c-4246-4f91-ab50-4df4d1f1ce09", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -42.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -42.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "9be52ad0-ddef-408a-ba38-3e55af1f2adf", + "Name": null + }, + "66d292b4-eefa-4c6e-b8e8-04093be617c1": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.24671803193479686, + "Green": 0.3722359050867315, + "Blue": 0.1980911815530114, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "66d292b4-eefa-4c6e-b8e8-04093be617c1", + "Name": "1c76290f-aa7e-4617-b983-4e9c150140ed" + }, + "1efaa668-8516-4d41-a2d1-8074be669c3c": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -41.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -41.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "66d292b4-eefa-4c6e-b8e8-04093be617c1", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -41.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -41.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "1efaa668-8516-4d41-a2d1-8074be669c3c", + "Name": null + }, + "9a493f31-1ff1-412d-b77b-566efdd6fd10": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9421411794340896, + "Green": 0.8328218380142105, + "Blue": 0.11862065462331318, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "9a493f31-1ff1-412d-b77b-566efdd6fd10", + "Name": "4ffa978a-704f-456e-bdb0-14505e43d604" + }, + "056c00c3-53b2-4ec9-8d4e-24d24da9f177": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -40.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "9a493f31-1ff1-412d-b77b-566efdd6fd10", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -40.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "056c00c3-53b2-4ec9-8d4e-24d24da9f177", + "Name": null + }, + "fc7a74b2-0547-43c1-9d8d-5e54ae11424d": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.14935809939604164, + "Green": 0.5583261314585461, + "Blue": 0.5460163683379146, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "fc7a74b2-0547-43c1-9d8d-5e54ae11424d", + "Name": "3da90910-7bae-439d-88d7-5a29b6abcd19" + }, + "9517688e-ae7d-497e-821d-99f5800c1a1b": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -39.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -39.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "fc7a74b2-0547-43c1-9d8d-5e54ae11424d", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -39.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -39.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "9517688e-ae7d-497e-821d-99f5800c1a1b", + "Name": null + }, + "e6906102-9fed-4e2f-aa7b-0eca8c305efb": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.6633363262113818, + "Green": 0.03856314161725489, + "Blue": 0.4790230200062613, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "e6906102-9fed-4e2f-aa7b-0eca8c305efb", + "Name": "854ead50-1242-4079-bb1f-9792f7ef5890" + }, + "aed56aa8-7ce4-4a99-b6e0-2ee6f2260ac0": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -38.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -38.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "e6906102-9fed-4e2f-aa7b-0eca8c305efb", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -38.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -38.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "aed56aa8-7ce4-4a99-b6e0-2ee6f2260ac0", + "Name": null + }, + "ab35ab9e-8100-4193-8488-95199c55a824": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.36654658353261027, + "Green": 0.8520072651337866, + "Blue": 0.9229112742109742, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "ab35ab9e-8100-4193-8488-95199c55a824", + "Name": "4055f767-338c-43eb-860f-4c0ac280dd46" + }, + "bb971ae8-8924-4c2c-b046-3fc9c5b809da": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -37.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -37.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "ab35ab9e-8100-4193-8488-95199c55a824", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -37.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -37.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "bb971ae8-8924-4c2c-b046-3fc9c5b809da", + "Name": null + }, + "daebde06-4fd0-4873-8cb8-b3ca66ef3285": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.1553407829046905, + "Green": 0.6986793506418725, + "Blue": 0.11407160484887269, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "daebde06-4fd0-4873-8cb8-b3ca66ef3285", + "Name": "cb8f6a27-90bd-4a59-bc01-5a1df2b7d0cd" + }, + "22100274-f86e-4887-b862-7b203a7db98f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -36.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -36.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "daebde06-4fd0-4873-8cb8-b3ca66ef3285", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -36.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -36.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "22100274-f86e-4887-b862-7b203a7db98f", + "Name": null + }, + "88d444ff-b038-4017-b7b7-0dce82f9708f": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7475544757896823, + "Green": 0.8299626907473256, + "Blue": 0.7220270860577128, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "88d444ff-b038-4017-b7b7-0dce82f9708f", + "Name": "b783228c-3662-492b-99be-bd865d0692d7" + }, + "ad2bbd86-6366-4a62-a4e8-e908fe78b2c4": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -35.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "88d444ff-b038-4017-b7b7-0dce82f9708f", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -35.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "ad2bbd86-6366-4a62-a4e8-e908fe78b2c4", + "Name": null + }, + "145a132a-2f51-43f2-9420-e8cd05b095c1": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.22654502290605802, + "Green": 0.379243152858337, + "Blue": 0.33889665191010415, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "145a132a-2f51-43f2-9420-e8cd05b095c1", + "Name": "06c21f14-6cab-41cc-9165-08751fda3d50" + }, + "350c9007-b575-42b8-8832-524aaf946b53": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -34.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -34.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "145a132a-2f51-43f2-9420-e8cd05b095c1", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -34.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -34.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "350c9007-b575-42b8-8832-524aaf946b53", + "Name": null + }, + "6cfcbd4d-bd29-4cdf-a304-72dbc7e17ddb": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.8491616104027078, + "Green": 0.34217073644612483, + "Blue": 0.5931917338600343, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "6cfcbd4d-bd29-4cdf-a304-72dbc7e17ddb", + "Name": "e938d136-969c-455c-bfa4-77726ad504a5" + }, + "1132b8ff-3573-438d-8240-eff3c406bb20": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -33.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -33.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "6cfcbd4d-bd29-4cdf-a304-72dbc7e17ddb", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -33.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -33.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "1132b8ff-3573-438d-8240-eff3c406bb20", + "Name": null + }, + "f8ab2a5b-9b8b-4dbd-b351-0002ea07c44f": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.1866454408441882, + "Green": 0.9894302780690744, + "Blue": 0.06710809286083472, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "f8ab2a5b-9b8b-4dbd-b351-0002ea07c44f", + "Name": "cdca6984-7321-4755-ad4a-4b472203722d" + }, + "f3974a04-0e0b-4f67-97e2-92bb433ef385": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -32.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -32.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "f8ab2a5b-9b8b-4dbd-b351-0002ea07c44f", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -32.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -32.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f3974a04-0e0b-4f67-97e2-92bb433ef385", + "Name": null + }, + "2b96409b-fd3b-4e48-a511-f56b66cc7fac": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.6163312683889323, + "Green": 0.18922818414365322, + "Blue": 0.6541906263000288, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "2b96409b-fd3b-4e48-a511-f56b66cc7fac", + "Name": "e020aac6-0f39-47ef-80dc-881664974b16" + }, + "65927932-a3d1-4f17-b6b4-8912e0a1d315": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -31.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -31.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "2b96409b-fd3b-4e48-a511-f56b66cc7fac", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -31.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -31.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "65927932-a3d1-4f17-b6b4-8912e0a1d315", + "Name": null + }, + "a89ecf43-8c21-4d30-a3f2-9d1434fc0b1d": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.35711821790650405, + "Green": 0.5468240052214004, + "Blue": 0.6499628413701257, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "a89ecf43-8c21-4d30-a3f2-9d1434fc0b1d", + "Name": "958622a6-3e65-43ec-b4b0-6e5dc28681c8" + }, + "57058731-42d2-43f7-905d-214373b4771a": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -30.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "a89ecf43-8c21-4d30-a3f2-9d1434fc0b1d", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 29.99999999999999, + "Y": -30.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "57058731-42d2-43f7-905d-214373b4771a", + "Name": null + }, + "971c51b6-9f77-463b-990d-905f4f004b53": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.8063892027392933, + "Green": 0.8481937008202978, + "Blue": 0.4049262867332093, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "971c51b6-9f77-463b-990d-905f4f004b53", + "Name": "7bd38e5a-baf0-4d04-bb3c-bc3d075548d8" + }, + "d12bb07a-04fb-419a-8042-8561d10597d9": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -29.000000000000004, + "Z": 0.0 + }, + "End": { + "X": 29.333333333333318, + "Y": -29.000000000000004, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "971c51b6-9f77-463b-990d-905f4f004b53", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -29.000000000000004, + "Z": 0.0 + }, + "End": { + "X": 29.333333333333318, + "Y": -29.000000000000004, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "d12bb07a-04fb-419a-8042-8561d10597d9", + "Name": null + }, + "bc4edeb3-d32e-4153-a133-1f17f2eb46aa": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.8886349228623486, + "Green": 0.1520025940388453, + "Blue": 0.17625044853251914, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "bc4edeb3-d32e-4153-a133-1f17f2eb46aa", + "Name": "ec0979db-ca2e-489e-83ba-a18b9403c8b3" + }, + "e5d63e93-6643-45e9-8e97-7df44a758f5e": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -28.0, + "Z": 0.0 + }, + "End": { + "X": 28.66666666666665, + "Y": -28.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "bc4edeb3-d32e-4153-a133-1f17f2eb46aa", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -28.0, + "Z": 0.0 + }, + "End": { + "X": 28.66666666666665, + "Y": -28.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "e5d63e93-6643-45e9-8e97-7df44a758f5e", + "Name": null + }, + "92691036-da98-483a-8563-116e2e1ded83": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.22182886219668616, + "Green": 0.3194334336181327, + "Blue": 0.41436620681284286, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "92691036-da98-483a-8563-116e2e1ded83", + "Name": "06ffe01b-46ff-42c2-ba03-c3841a36193f" + }, + "b7d55a3a-0353-4797-b276-8ee7e7b49b77": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -27.0, + "Z": 0.0 + }, + "End": { + "X": 27.999999999999986, + "Y": -27.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "92691036-da98-483a-8563-116e2e1ded83", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -27.0, + "Z": 0.0 + }, + "End": { + "X": 27.999999999999986, + "Y": -27.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "b7d55a3a-0353-4797-b276-8ee7e7b49b77", + "Name": null + }, + "0e340513-944a-451e-852f-ddcac60d24e0": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.032811261263122435, + "Green": 0.797405154815598, + "Blue": 0.5973641018370931, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "0e340513-944a-451e-852f-ddcac60d24e0", + "Name": "8b388c46-d90b-47d4-8e11-9709c8c92d84" + }, + "f019ef88-850e-4f59-a316-8151bb8dcc83": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -26.0, + "Z": 0.0 + }, + "End": { + "X": 27.33333333333332, + "Y": -26.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0e340513-944a-451e-852f-ddcac60d24e0", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -26.0, + "Z": 0.0 + }, + "End": { + "X": 27.33333333333332, + "Y": -26.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f019ef88-850e-4f59-a316-8151bb8dcc83", + "Name": null + }, + "33095e5c-f750-413f-8ac5-44ca51ad2d86": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.2723089536988684, + "Green": 0.6978947546788933, + "Blue": 0.07077584558668353, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "33095e5c-f750-413f-8ac5-44ca51ad2d86", + "Name": "fb23625c-00c6-413b-be33-fb5b3ee4f1d5" + }, + "431275ce-a236-4cf5-a2b9-eaf94d70f84d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 26.66666666666665, + "Y": -25.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "33095e5c-f750-413f-8ac5-44ca51ad2d86", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 26.66666666666665, + "Y": -25.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "431275ce-a236-4cf5-a2b9-eaf94d70f84d", + "Name": null + }, + "1380b979-ea90-4690-b739-98cfc7f82536": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.2687847168505121, + "Green": 0.38626630342857277, + "Blue": 0.32567532236020796, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "1380b979-ea90-4690-b739-98cfc7f82536", + "Name": "d1006620-0ca7-45cf-8f43-40e320c2b0eb" + }, + "67eeccac-1fc2-4018-b599-6c3b1bb89c23": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -24.0, + "Z": 0.0 + }, + "End": { + "X": 25.999999999999986, + "Y": -24.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "1380b979-ea90-4690-b739-98cfc7f82536", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -24.0, + "Z": 0.0 + }, + "End": { + "X": 25.999999999999986, + "Y": -24.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "67eeccac-1fc2-4018-b599-6c3b1bb89c23", + "Name": null + }, + "de00664a-26bc-4f35-b0c6-1b27a183144d": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.5026569918276076, + "Green": 0.020173009028738833, + "Blue": 0.9929927522283944, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "de00664a-26bc-4f35-b0c6-1b27a183144d", + "Name": "22517a79-6832-4591-b173-5b05a0f46964" + }, + "8c1c2ec8-5b44-4e3b-b727-557f426e6fe5": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -23.0, + "Z": 0.0 + }, + "End": { + "X": 25.33333333333332, + "Y": -23.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "de00664a-26bc-4f35-b0c6-1b27a183144d", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -23.0, + "Z": 0.0 + }, + "End": { + "X": 25.33333333333332, + "Y": -23.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "8c1c2ec8-5b44-4e3b-b727-557f426e6fe5", + "Name": null + }, + "afe0ecb2-2660-46f4-b2b4-b771f46ef137": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.8591945296429072, + "Green": 0.09297956903138178, + "Blue": 0.49065110156808567, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "afe0ecb2-2660-46f4-b2b4-b771f46ef137", + "Name": "1ec9ce16-4440-462d-9c3d-99ae50ca8863" + }, + "7908c0ce-6323-4544-9792-c2a4114065a0": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -22.0, + "Z": 0.0 + }, + "End": { + "X": 24.66666666666665, + "Y": -22.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "afe0ecb2-2660-46f4-b2b4-b771f46ef137", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -22.0, + "Z": 0.0 + }, + "End": { + "X": 24.66666666666665, + "Y": -22.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "7908c0ce-6323-4544-9792-c2a4114065a0", + "Name": null + }, + "6d6b91ac-8938-4ac9-88da-57b8e6b01b27": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.5254289207632789, + "Green": 0.9627126585518535, + "Blue": 0.5688958533894717, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "6d6b91ac-8938-4ac9-88da-57b8e6b01b27", + "Name": "96db76c0-b6b1-4f1d-b62d-ef23764ad6d7" + }, + "dbecafea-c585-44df-a9bf-3c8c1f1506e4": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -21.0, + "Z": 0.0 + }, + "End": { + "X": 23.999999999999986, + "Y": -21.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "6d6b91ac-8938-4ac9-88da-57b8e6b01b27", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -21.0, + "Z": 0.0 + }, + "End": { + "X": 23.999999999999986, + "Y": -21.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "dbecafea-c585-44df-a9bf-3c8c1f1506e4", + "Name": null + }, + "70ea38c7-9eda-43f2-9594-3a46e77d67bf": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.4789082754770798, + "Green": 0.047005057822449625, + "Blue": 0.8493349574736017, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "70ea38c7-9eda-43f2-9594-3a46e77d67bf", + "Name": "4a7ea393-5650-4dde-aa94-a25472bb81eb" + }, + "5018d157-88f6-4c9c-9440-2aacc2425fa2": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 23.33333333333332, + "Y": -20.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "70ea38c7-9eda-43f2-9594-3a46e77d67bf", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 23.33333333333332, + "Y": -20.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "5018d157-88f6-4c9c-9440-2aacc2425fa2", + "Name": null + }, + "4d6b1665-e46d-46f4-893f-cd1060160a57": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.8248323937062325, + "Green": 0.00942836562610621, + "Blue": 0.3051832599123862, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "4d6b1665-e46d-46f4-893f-cd1060160a57", + "Name": "2b9b71cf-a244-494f-9454-ff0293a97563" + }, + "87c7925a-04f6-40d1-9e3c-9bfdf1ebf280": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -19.0, + "Z": 0.0 + }, + "End": { + "X": 22.66666666666665, + "Y": -19.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "4d6b1665-e46d-46f4-893f-cd1060160a57", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -19.0, + "Z": 0.0 + }, + "End": { + "X": 22.66666666666665, + "Y": -19.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "87c7925a-04f6-40d1-9e3c-9bfdf1ebf280", + "Name": null + }, + "ca4283c7-6b1b-4463-85b6-2ca28bc9e175": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.2729484328408485, + "Green": 0.3489515801653972, + "Blue": 0.8504856498215746, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "ca4283c7-6b1b-4463-85b6-2ca28bc9e175", + "Name": "96ec1f02-bb5a-419e-9582-e144ef59be63" + }, + "c6a69b54-9c45-44f6-be39-cedc23c4a908": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -18.0, + "Z": 0.0 + }, + "End": { + "X": 21.999999999999986, + "Y": -18.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "ca4283c7-6b1b-4463-85b6-2ca28bc9e175", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -18.0, + "Z": 0.0 + }, + "End": { + "X": 21.999999999999986, + "Y": -18.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "c6a69b54-9c45-44f6-be39-cedc23c4a908", + "Name": null + }, + "07867ac8-ff61-4e55-a7d1-e3ba791bb908": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7091453181156634, + "Green": 0.8589195529273337, + "Blue": 0.6779600967084803, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "07867ac8-ff61-4e55-a7d1-e3ba791bb908", + "Name": "9373e904-3e5a-4d43-a1d1-48daf9399036" + }, + "47b3b010-ec6c-47ec-b648-c92f41226e96": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -17.0, + "Z": 0.0 + }, + "End": { + "X": 21.333333333333318, + "Y": -17.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "07867ac8-ff61-4e55-a7d1-e3ba791bb908", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -17.0, + "Z": 0.0 + }, + "End": { + "X": 21.333333333333318, + "Y": -17.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "47b3b010-ec6c-47ec-b648-c92f41226e96", + "Name": null + }, + "d6dacac0-3106-4d82-beba-1b5c57303448": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.5457766375251937, + "Green": 0.0047161607093718656, + "Blue": 0.0598097192402043, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "d6dacac0-3106-4d82-beba-1b5c57303448", + "Name": "b61672d4-8e61-47d5-bc22-672bae403515" + }, + "210b7e79-60b8-4ff8-a1b0-ff8dbfe9035f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -16.0, + "Z": 0.0 + }, + "End": { + "X": 20.66666666666665, + "Y": -16.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d6dacac0-3106-4d82-beba-1b5c57303448", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -16.0, + "Z": 0.0 + }, + "End": { + "X": 20.66666666666665, + "Y": -16.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "210b7e79-60b8-4ff8-a1b0-ff8dbfe9035f", + "Name": null + }, + "9167572b-9d78-4a3e-8515-dd5af3c3b2d2": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9245304450972613, + "Green": 0.8163503491395854, + "Blue": 0.5447655816305268, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "9167572b-9d78-4a3e-8515-dd5af3c3b2d2", + "Name": "ebdb9c57-7374-40bb-a12b-11717523c5af" + }, + "3a861718-d2a2-4b53-b14b-a3887f80ee5d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 19.999999999999986, + "Y": -15.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "9167572b-9d78-4a3e-8515-dd5af3c3b2d2", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 19.999999999999986, + "Y": -15.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "3a861718-d2a2-4b53-b14b-a3887f80ee5d", + "Name": null + }, + "739142be-8b07-44ac-a239-a995eab87cb8": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9958276320229413, + "Green": 0.9143364871453198, + "Blue": 0.29153552339018113, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "739142be-8b07-44ac-a239-a995eab87cb8", + "Name": "b7b63860-b903-40bd-bd77-8226f1a7bf95" + }, + "d36fb6cc-21f1-4b01-ad1d-559ff7fecf90": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -14.0, + "Z": 0.0 + }, + "End": { + "X": 19.333333333333318, + "Y": -14.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "739142be-8b07-44ac-a239-a995eab87cb8", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -14.0, + "Z": 0.0 + }, + "End": { + "X": 19.333333333333318, + "Y": -14.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "d36fb6cc-21f1-4b01-ad1d-559ff7fecf90", + "Name": null + }, + "b0455c9d-3133-419c-a0d0-59fabe9004b0": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9963322472741512, + "Green": 0.3475465515384202, + "Blue": 0.8029618807150805, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "b0455c9d-3133-419c-a0d0-59fabe9004b0", + "Name": "d84a7df3-37a8-4696-b3a3-542c1aae806f" + }, + "9a502a09-a39b-421c-8688-f51bf5d82c19": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -13.0, + "Z": 0.0 + }, + "End": { + "X": 18.666666666666654, + "Y": -13.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "b0455c9d-3133-419c-a0d0-59fabe9004b0", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -13.0, + "Z": 0.0 + }, + "End": { + "X": 18.666666666666654, + "Y": -13.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "9a502a09-a39b-421c-8688-f51bf5d82c19", + "Name": null + }, + "0cd2f606-71f6-4e12-8c6c-f0cfe9fa7054": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.32851530393982087, + "Green": 0.8544612260788964, + "Blue": 0.5266509961926615, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "0cd2f606-71f6-4e12-8c6c-f0cfe9fa7054", + "Name": "17eee549-7d94-4cd8-9905-efcb11ea6509" + }, + "4a586f18-c72b-411d-b2c5-e06adcd0a24c": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -12.0, + "Z": 0.0 + }, + "End": { + "X": 17.999999999999986, + "Y": -12.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0cd2f606-71f6-4e12-8c6c-f0cfe9fa7054", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -12.0, + "Z": 0.0 + }, + "End": { + "X": 17.999999999999986, + "Y": -12.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "4a586f18-c72b-411d-b2c5-e06adcd0a24c", + "Name": null + }, + "c96f3bff-f0e4-46e7-8ec5-e3d7f7f5b58b": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.6569700891417312, + "Green": 0.947194673096386, + "Blue": 0.755214131788916, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "c96f3bff-f0e4-46e7-8ec5-e3d7f7f5b58b", + "Name": "9b14a531-621c-4309-9f73-8509450479d3" + }, + "42842dee-7da9-4b4a-a13a-6fde648376c7": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -11.0, + "Z": 0.0 + }, + "End": { + "X": 17.333333333333318, + "Y": -11.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "c96f3bff-f0e4-46e7-8ec5-e3d7f7f5b58b", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -11.0, + "Z": 0.0 + }, + "End": { + "X": 17.333333333333318, + "Y": -11.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "42842dee-7da9-4b4a-a13a-6fde648376c7", + "Name": null + }, + "431845e6-0cf4-458a-a2e5-c21a2e51ff0e": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9142751851651236, + "Green": 0.3632060020990698, + "Blue": 0.18928993548699186, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "431845e6-0cf4-458a-a2e5-c21a2e51ff0e", + "Name": "1dd3c2ff-e511-487d-b28c-80a2ae19f407" + }, + "997d40fb-59b5-4c48-b406-4b11d4321fda": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 16.666666666666654, + "Y": -10.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "431845e6-0cf4-458a-a2e5-c21a2e51ff0e", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 16.666666666666654, + "Y": -10.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "997d40fb-59b5-4c48-b406-4b11d4321fda", + "Name": null + }, + "4a06bd48-39c1-4a52-be5e-56dbe8d9d6ca": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.6073545951430475, + "Green": 0.7429205867196064, + "Blue": 0.2724283757956831, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "4a06bd48-39c1-4a52-be5e-56dbe8d9d6ca", + "Name": "df21974e-dc53-400e-b91b-ee3f417ee5b4" + }, + "59bf0a65-c0c3-4d0c-9c75-a87d802da88c": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -9.0, + "Z": 0.0 + }, + "End": { + "X": 15.999999999999988, + "Y": -9.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "4a06bd48-39c1-4a52-be5e-56dbe8d9d6ca", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -9.0, + "Z": 0.0 + }, + "End": { + "X": 15.999999999999988, + "Y": -9.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "59bf0a65-c0c3-4d0c-9c75-a87d802da88c", + "Name": null + }, + "58af0d17-76be-4c82-aed3-6a7d6f500f89": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.5650312493392412, + "Green": 0.20797886755688993, + "Blue": 0.7879767891894918, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "58af0d17-76be-4c82-aed3-6a7d6f500f89", + "Name": "9973c52d-2f95-4c3a-a5ba-3248845bc54d" + }, + "81efc71c-edfa-4aea-b1ae-986854505e59": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -8.0, + "Z": 0.0 + }, + "End": { + "X": 15.33333333333332, + "Y": -8.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "58af0d17-76be-4c82-aed3-6a7d6f500f89", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -8.0, + "Z": 0.0 + }, + "End": { + "X": 15.33333333333332, + "Y": -8.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "81efc71c-edfa-4aea-b1ae-986854505e59", + "Name": null + }, + "c99abc11-14fd-4412-b291-65467353184b": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.2921808419247069, + "Green": 0.9993605208580199, + "Blue": 0.3489431745134961, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "c99abc11-14fd-4412-b291-65467353184b", + "Name": "ba362f1d-6924-429b-aa20-02dbadb3f8d3" + }, + "f98036df-bba0-4e05-86c4-8cba815bf22f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -7.0, + "Z": 0.0 + }, + "End": { + "X": 14.666666666666652, + "Y": -7.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "c99abc11-14fd-4412-b291-65467353184b", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -7.0, + "Z": 0.0 + }, + "End": { + "X": 14.666666666666652, + "Y": -7.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f98036df-bba0-4e05-86c4-8cba815bf22f", + "Name": null + }, + "53ebcdb5-becf-4109-b587-2dc95b52b6fd": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.2202901957651089, + "Green": 0.5596393987348487, + "Blue": 0.5273467505012391, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "53ebcdb5-becf-4109-b587-2dc95b52b6fd", + "Name": "df5f78e7-301c-4fbf-ae68-192a54b98571" + }, + "cabff896-a3cc-4175-992a-ba1e9b0706d9": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -6.0, + "Z": 0.0 + }, + "End": { + "X": 13.999999999999986, + "Y": -6.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "53ebcdb5-becf-4109-b587-2dc95b52b6fd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -6.0, + "Z": 0.0 + }, + "End": { + "X": 13.999999999999986, + "Y": -6.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "cabff896-a3cc-4175-992a-ba1e9b0706d9", + "Name": null + }, + "72e0d1c6-bd45-4c9d-a869-3a587b71d014": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.6477152256517277, + "Green": 0.9568803543024139, + "Blue": 0.015456848319366969, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "72e0d1c6-bd45-4c9d-a869-3a587b71d014", + "Name": "fb4ea495-82e7-4f8c-b9f8-0026a6cdce33" + }, + "9455dad4-dc28-4f0e-a330-df77f6e7939d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -5.0, + "Z": 0.0 + }, + "End": { + "X": 13.33333333333332, + "Y": -5.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "72e0d1c6-bd45-4c9d-a869-3a587b71d014", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -5.0, + "Z": 0.0 + }, + "End": { + "X": 13.33333333333332, + "Y": -5.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "9455dad4-dc28-4f0e-a330-df77f6e7939d", + "Name": null + }, + "0268cf3a-749a-4d60-9f18-d60abcecd135": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9331830329881902, + "Green": 0.9346640845456459, + "Blue": 0.27662921989179645, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "0268cf3a-749a-4d60-9f18-d60abcecd135", + "Name": "1158bd6d-1a85-4fdb-a888-f54e1898cb7b" + }, + "75b8570d-8c1c-49dc-8dfe-4395515e63df": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -4.0, + "Z": 0.0 + }, + "End": { + "X": 12.666666666666652, + "Y": -4.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0268cf3a-749a-4d60-9f18-d60abcecd135", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -4.0, + "Z": 0.0 + }, + "End": { + "X": 12.666666666666652, + "Y": -4.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "75b8570d-8c1c-49dc-8dfe-4395515e63df", + "Name": null + }, + "06ee2c9e-f174-4867-8809-e68b9d66cd6c": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9458855199375588, + "Green": 0.5296012887403375, + "Blue": 0.04837617140653365, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "06ee2c9e-f174-4867-8809-e68b9d66cd6c", + "Name": "f807b2a9-5192-4951-8b02-c9bcef67b6f4" + }, + "a43d39a4-4613-48ad-abfa-a5b40ce48090": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -3.0, + "Z": 0.0 + }, + "End": { + "X": 11.999999999999986, + "Y": -3.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "06ee2c9e-f174-4867-8809-e68b9d66cd6c", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -3.0, + "Z": 0.0 + }, + "End": { + "X": 11.999999999999986, + "Y": -3.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a43d39a4-4613-48ad-abfa-a5b40ce48090", + "Name": null + }, + "e45b7e4c-4940-4eda-a148-27bc694dd710": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.27736032999929056, + "Green": 0.4825760282029286, + "Blue": 0.6994585062840295, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "e45b7e4c-4940-4eda-a148-27bc694dd710", + "Name": "bf11894c-7879-4d9a-949a-cedbec3ddfc5" + }, + "be79e411-70bb-4bdc-9381-f616c34616e8": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -2.0, + "Z": 0.0 + }, + "End": { + "X": 11.33333333333332, + "Y": -2.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "e45b7e4c-4940-4eda-a148-27bc694dd710", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -2.0, + "Z": 0.0 + }, + "End": { + "X": 11.33333333333332, + "Y": -2.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "be79e411-70bb-4bdc-9381-f616c34616e8", + "Name": null + }, + "e75e77ba-7225-46f3-b47d-44378c149492": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.046373076758521176, + "Green": 0.49631708976641165, + "Blue": 0.15496713954720978, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "e75e77ba-7225-46f3-b47d-44378c149492", + "Name": "99d7a7b2-c2e7-4ff3-8498-7f94647f3643" + }, + "cd4080dc-4840-4c3d-83a7-eec05f9a921d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 10.666666666666652, + "Y": -1.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "e75e77ba-7225-46f3-b47d-44378c149492", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 10.666666666666652, + "Y": -1.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "cd4080dc-4840-4c3d-83a7-eec05f9a921d", + "Name": null + }, + "87654b68-576e-401a-99f0-d780d7a15c60": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7785322637197246, + "Green": 0.6159783436991173, + "Blue": 0.40175690706901107, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "87654b68-576e-401a-99f0-d780d7a15c60", + "Name": "42c20bb0-fb64-4385-98fd-c120698c1733" + }, + "c6502787-f3e9-48b2-8742-cc888b559bd8": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.3749999999999895, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 0.3749999999999895, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "87654b68-576e-401a-99f0-d780d7a15c60", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.3749999999999895, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 0.3749999999999895, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "c6502787-f3e9-48b2-8742-cc888b559bd8", + "Name": null + }, + "a571ee12-9969-4f79-832e-347b8531b7a6": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.09527151803265863, + "Green": 0.7948701329505398, + "Blue": 0.4957135508282639, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "a571ee12-9969-4f79-832e-347b8531b7a6", + "Name": "b4c40dee-f7bd-411d-bce3-ee518887730e" + }, + "eb77c9f2-3025-4a26-9e5a-44b30640d2eb": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.7499999999999897, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 0.7499999999999897, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "a571ee12-9969-4f79-832e-347b8531b7a6", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.7499999999999897, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 0.7499999999999897, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "eb77c9f2-3025-4a26-9e5a-44b30640d2eb", + "Name": null + }, + "1f9d5724-1896-4a57-9875-0f26072a7fbe": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.48867016122148843, + "Green": 0.9384220423821462, + "Blue": 0.2617955739897655, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "1f9d5724-1896-4a57-9875-0f26072a7fbe", + "Name": "3faa5502-4973-451e-9f44-bd76bdab9d0f" + }, + "e3213149-d18c-48f7-8fa0-5e44f2c1bfd3": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.12499999999999, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 1.12499999999999, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "1f9d5724-1896-4a57-9875-0f26072a7fbe", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.12499999999999, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 1.12499999999999, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "e3213149-d18c-48f7-8fa0-5e44f2c1bfd3", + "Name": null + }, + "3eda7eed-22cd-4bb0-9110-e6e434602937": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7873813434445213, + "Green": 0.35949919575802014, + "Blue": 0.6083714815826954, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "3eda7eed-22cd-4bb0-9110-e6e434602937", + "Name": "def2ff78-c7d5-4085-90bc-28e4f2cf8d07" + }, + "1e6142c9-4bc0-4dbd-9550-5d3faa59aa7d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.49999999999999, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 1.49999999999999, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "3eda7eed-22cd-4bb0-9110-e6e434602937", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.49999999999999, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 1.49999999999999, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "1e6142c9-4bc0-4dbd-9550-5d3faa59aa7d", + "Name": null + }, + "c3389c7d-bf0b-48e7-b422-2a1a3afdca22": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.756788792441035, + "Green": 0.7036467900982345, + "Blue": 0.9149759662872999, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "c3389c7d-bf0b-48e7-b422-2a1a3afdca22", + "Name": "e06c2c49-785d-4451-ac4f-7e3effaeba8c" + }, + "faa4de2c-ba4e-469f-8449-518b29acc4c0": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.87499999999999, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 1.87499999999999, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "c3389c7d-bf0b-48e7-b422-2a1a3afdca22", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.87499999999999, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 1.87499999999999, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "faa4de2c-ba4e-469f-8449-518b29acc4c0", + "Name": null + }, + "5fb89498-64a8-43e5-9247-35d708ceaab6": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9425923488766851, + "Green": 0.7760420515090423, + "Blue": 0.7879071528035715, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "5fb89498-64a8-43e5-9247-35d708ceaab6", + "Name": "d0b5b99e-f82e-4868-b809-d2212f766ad6" + }, + "880bd249-918c-40f8-aa7a-5d8de97570f0": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.2499999999999907, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 2.2499999999999907, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "5fb89498-64a8-43e5-9247-35d708ceaab6", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.2499999999999907, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 2.2499999999999907, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "880bd249-918c-40f8-aa7a-5d8de97570f0", + "Name": null + }, + "60c645a8-87c6-4ba4-8b80-1e38a7b0efe7": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.2756151302138414, + "Green": 0.6808000782880932, + "Blue": 0.8975808717764825, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "60c645a8-87c6-4ba4-8b80-1e38a7b0efe7", + "Name": "75aa10a0-02b9-4e0c-9ce0-d81d1dd82ba6" + }, + "76c09ccc-045b-40a3-a11c-c6af00220080": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.6249999999999907, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 2.6249999999999907, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "60c645a8-87c6-4ba4-8b80-1e38a7b0efe7", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.6249999999999907, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 2.6249999999999907, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "76c09ccc-045b-40a3-a11c-c6af00220080", + "Name": null + }, + "e39af83f-9a76-49e7-b929-55ded469c8d7": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.5111941478732946, + "Green": 0.723787056153541, + "Blue": 0.012530588550740195, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "e39af83f-9a76-49e7-b929-55ded469c8d7", + "Name": "a221eba3-8105-40ab-b24a-046c14ec3892" + }, + "2d245aa6-3656-4767-910b-e6f5d953c0c3": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.9999999999999907, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 2.9999999999999907, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "e39af83f-9a76-49e7-b929-55ded469c8d7", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.9999999999999907, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 2.9999999999999907, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "2d245aa6-3656-4767-910b-e6f5d953c0c3", + "Name": null + }, + "2043ccca-defe-4c81-a62b-c48c14d4be34": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.47858491189711955, + "Green": 0.9683896652275649, + "Blue": 0.8336047133587323, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "2043ccca-defe-4c81-a62b-c48c14d4be34", + "Name": "62b50e78-ff55-41ee-bc49-d7a445183b50" + }, + "38387b62-b231-4326-8ae6-65e4127118a4": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.3749999999999907, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 3.3749999999999907, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "2043ccca-defe-4c81-a62b-c48c14d4be34", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.3749999999999907, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 3.3749999999999907, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "38387b62-b231-4326-8ae6-65e4127118a4", + "Name": null + }, + "c71d8ebd-bd68-46a8-a9c0-240b006a0117": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.14091376408045822, + "Green": 0.3299942651437569, + "Blue": 0.2603445585166777, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "c71d8ebd-bd68-46a8-a9c0-240b006a0117", + "Name": "81626520-7e4b-49bb-9ada-beb9872bccfc" + }, + "e1f7244b-dc79-4111-927a-d231c91c53b4": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.7499999999999907, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 3.7499999999999907, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "c71d8ebd-bd68-46a8-a9c0-240b006a0117", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.7499999999999907, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 3.7499999999999907, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "e1f7244b-dc79-4111-927a-d231c91c53b4", + "Name": null + }, + "8af2e579-ea2f-4760-bcfe-c4a0d67f5962": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.5729698695116536, + "Green": 0.51865817258072, + "Blue": 0.7116617777904783, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "8af2e579-ea2f-4760-bcfe-c4a0d67f5962", + "Name": "5a4a0b8b-b86b-41ce-9ff1-9df34b6798db" + }, + "f196b90b-458e-450e-9bb4-c51e123d9092": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 4.124999999999991, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 4.124999999999991, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "8af2e579-ea2f-4760-bcfe-c4a0d67f5962", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 4.124999999999991, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 4.124999999999991, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f196b90b-458e-450e-9bb4-c51e123d9092", + "Name": null + }, + "57055c8e-62e6-440d-991e-790364cb15a1": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.633009649642282, + "Green": 0.5136485782049822, + "Blue": 0.3833821771589025, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "57055c8e-62e6-440d-991e-790364cb15a1", + "Name": "a38ccc7f-8c63-47e7-b688-30307d3d2ee0" + }, + "f2a648c9-9440-4354-9615-4f737fc77104": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 4.499999999999992, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 4.499999999999992, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "57055c8e-62e6-440d-991e-790364cb15a1", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 4.499999999999992, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 4.499999999999992, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f2a648c9-9440-4354-9615-4f737fc77104", + "Name": null + }, + "1520af39-6173-48dc-8e2c-fe5ee269dc35": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.947186267444485, + "Green": 0.12501867773245026, + "Blue": 0.7647692657843089, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "1520af39-6173-48dc-8e2c-fe5ee269dc35", + "Name": "b764fa7e-ac32-4afe-a8e6-2c995770566c" + }, + "3d1e51c9-6f58-4cbd-a52f-0bf214568c4a": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 4.874999999999991, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 4.874999999999991, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "1520af39-6173-48dc-8e2c-fe5ee269dc35", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 4.874999999999991, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 4.874999999999991, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "3d1e51c9-6f58-4cbd-a52f-0bf214568c4a", + "Name": null + }, + "ecb315ab-445e-4d1f-bad1-3ab69e0b9eb4": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.031633199672975204, + "Green": 0.15904506443023916, + "Blue": 0.018458311920267676, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "ecb315ab-445e-4d1f-bad1-3ab69e0b9eb4", + "Name": "81595673-badb-4e6e-b762-fbe283940ef9" + }, + "bd333cd8-66bb-4d92-aa54-231a748c8fb7": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.249999999999992, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 5.249999999999992, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "ecb315ab-445e-4d1f-bad1-3ab69e0b9eb4", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.249999999999992, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 5.249999999999992, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "bd333cd8-66bb-4d92-aa54-231a748c8fb7", + "Name": null + }, + "80515097-fc80-47f6-8851-266f1cdb4a95": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7536612743296014, + "Green": 0.14580168954366896, + "Blue": 0.5751648887876257, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "80515097-fc80-47f6-8851-266f1cdb4a95", + "Name": "3a96bc49-cff0-4278-9b45-71d1bd55723b" + }, + "d6dc068d-4d2b-49e6-a478-e88390b1fbd4": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.624999999999991, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 5.624999999999991, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "80515097-fc80-47f6-8851-266f1cdb4a95", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.624999999999991, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 5.624999999999991, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "d6dc068d-4d2b-49e6-a478-e88390b1fbd4", + "Name": null + }, + "6cc0f3f4-3e16-44d8-800b-546f78a60e69": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.6682577383091011, + "Green": 0.18909672749652376, + "Blue": 0.825954498642103, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "6cc0f3f4-3e16-44d8-800b-546f78a60e69", + "Name": "a278ed2f-0fbd-4ef6-a98c-7cbf9a83b451" + }, + "c308c90d-a29a-414d-a8bb-252d9d7ec8ca": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.999999999999992, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 5.999999999999992, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "6cc0f3f4-3e16-44d8-800b-546f78a60e69", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.999999999999992, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 5.999999999999992, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "c308c90d-a29a-414d-a8bb-252d9d7ec8ca", + "Name": null + }, + "4452a299-6051-4b2b-8639-00ad060cb206": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.13340020511923367, + "Green": 0.3347679811226055, + "Blue": 0.7065339766938863, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "4452a299-6051-4b2b-8639-00ad060cb206", + "Name": "8ebac075-0e29-4733-9249-3e9577923a56" + }, + "3be27845-de4c-425c-bc34-06db244a217b": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 6.374999999999992, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 6.374999999999992, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "4452a299-6051-4b2b-8639-00ad060cb206", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 6.374999999999992, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 6.374999999999992, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "3be27845-de4c-425c-bc34-06db244a217b", + "Name": null + }, + "96c4ca62-159d-4153-9473-bab8633df548": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9115513534804579, + "Green": 0.7707579465446798, + "Blue": 0.8155170114783183, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "96c4ca62-159d-4153-9473-bab8633df548", + "Name": "cad1a4df-23a9-4b4f-a479-d13322bc80a2" + }, + "6e7d3a6f-52cd-4baf-bc61-c937cfbb9cee": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 6.749999999999992, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 6.749999999999992, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "96c4ca62-159d-4153-9473-bab8633df548", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 6.749999999999992, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 6.749999999999992, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "6e7d3a6f-52cd-4baf-bc61-c937cfbb9cee", + "Name": null + }, + "2f58ff7f-3855-4581-8cbe-82fff3f0cb0e": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.2573862677707273, + "Green": 0.26733811584643, + "Blue": 0.8921912875455763, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "2f58ff7f-3855-4581-8cbe-82fff3f0cb0e", + "Name": "cebc75a7-6b29-4196-ad85-578d6b7a7105" + }, + "528c931a-334c-424d-bf07-caf1c1ebcd88": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.124999999999992, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 7.124999999999992, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "2f58ff7f-3855-4581-8cbe-82fff3f0cb0e", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.124999999999992, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 7.124999999999992, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "528c931a-334c-424d-bf07-caf1c1ebcd88", + "Name": null + }, + "0a5183db-17da-4e06-9b55-b7863fa8d5be": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.3892263185182709, + "Green": 0.616686606135539, + "Blue": 0.8264804677229749, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "0a5183db-17da-4e06-9b55-b7863fa8d5be", + "Name": "5b76d706-67a7-47c5-9860-1048746bbb16" + }, + "6d5faea2-73c1-449a-9c56-c6926f4882b6": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.499999999999992, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 7.499999999999992, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0a5183db-17da-4e06-9b55-b7863fa8d5be", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.499999999999992, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 7.499999999999992, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "6d5faea2-73c1-449a-9c56-c6926f4882b6", + "Name": null + }, + "a3750d05-d607-4d21-8e4b-cb60e9a85fc7": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.6621088374695316, + "Green": 0.34775639714103024, + "Blue": 0.6084277772383894, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "a3750d05-d607-4d21-8e4b-cb60e9a85fc7", + "Name": "7f05f04c-0efe-4ed2-83ea-fffe567987bd" + }, + "e0b50b6e-69ab-4dae-8d71-e52de8dc130a": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.874999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 7.874999999999993, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "a3750d05-d607-4d21-8e4b-cb60e9a85fc7", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.874999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 7.874999999999993, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "e0b50b6e-69ab-4dae-8d71-e52de8dc130a", + "Name": null + }, + "fbb3ba70-c82c-48fc-a847-29e47735d312": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.001451015473087791, + "Green": 0.21441147393286764, + "Blue": 0.8408410231773001, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "fbb3ba70-c82c-48fc-a847-29e47735d312", + "Name": "2b96aa89-81f4-43bb-8d1c-8a724b3b26fd" + }, + "11f06034-aa6c-4e96-8bd9-c89ee0204db7": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 8.249999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 8.249999999999993, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "fbb3ba70-c82c-48fc-a847-29e47735d312", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 8.249999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 8.249999999999993, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "11f06034-aa6c-4e96-8bd9-c89ee0204db7", + "Name": null + }, + "42af8713-ef19-459c-9642-65a9904edb95": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.896709703792217, + "Green": 0.12377914279875306, + "Blue": 0.1899982118932522, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "42af8713-ef19-459c-9642-65a9904edb95", + "Name": "49f9c8f5-82e6-4344-ba8c-6102fbc676cb" + }, + "7589e644-75a7-4ce2-adf0-ef7b58354425": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 8.624999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 8.624999999999993, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "42af8713-ef19-459c-9642-65a9904edb95", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 8.624999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 8.624999999999993, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "7589e644-75a7-4ce2-adf0-ef7b58354425", + "Name": null + }, + "45ea4ef7-30ff-4502-93c4-2d60aca43740": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.5315937891283975, + "Green": 0.9954060814322001, + "Blue": 0.651023373776592, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "45ea4ef7-30ff-4502-93c4-2d60aca43740", + "Name": "9401e664-8359-448f-b55e-0b1f0f26eb13" + }, + "8d67e19a-ef51-40b5-9ed8-3b23071e0754": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 8.999999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 8.999999999999995, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "45ea4ef7-30ff-4502-93c4-2d60aca43740", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 8.999999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 8.999999999999995, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "8d67e19a-ef51-40b5-9ed8-3b23071e0754", + "Name": null + }, + "9f894599-b05f-45b7-9107-6f851355ade2": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.023137887019262598, + "Green": 0.2439819305408662, + "Blue": 0.521755013857854, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "9f894599-b05f-45b7-9107-6f851355ade2", + "Name": "5d3f2c92-8f0d-456d-b1ad-bab4005f06a1" + }, + "a7af29c8-93b7-4c33-8c23-730fd8805ab9": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.374999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 9.374999999999993, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "9f894599-b05f-45b7-9107-6f851355ade2", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.374999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 9.374999999999993, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a7af29c8-93b7-4c33-8c23-730fd8805ab9", + "Name": null + }, + "ae14042c-0696-4031-94ec-70b12cfdb00a": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.8791225598562148, + "Green": 0.7575328735436931, + "Blue": 0.577985366609872, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "ae14042c-0696-4031-94ec-70b12cfdb00a", + "Name": "20c2f18b-5e31-49e6-bcd5-d41066411c3e" + }, + "cb5b9af2-f5ac-47df-b86a-409ea72c5d60": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.749999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 9.749999999999993, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "ae14042c-0696-4031-94ec-70b12cfdb00a", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.749999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 9.749999999999993, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "cb5b9af2-f5ac-47df-b86a-409ea72c5d60", + "Name": null + }, + "cb48ea37-61f5-49b3-bb5b-24fc73d9f513": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.4373656997631144, + "Green": 0.8103271735880185, + "Blue": 0.779292937731041, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "cb48ea37-61f5-49b3-bb5b-24fc73d9f513", + "Name": "b7883e6e-a796-4f9b-8ba2-6c853050fe33" + }, + "3030f0f6-5a45-4407-9a01-07a0e9498e42": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.124999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 10.124999999999993, + "Y": -0.1875, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "cb48ea37-61f5-49b3-bb5b-24fc73d9f513", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.124999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 10.124999999999993, + "Y": -0.1875, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "3030f0f6-5a45-4407-9a01-07a0e9498e42", + "Name": null + }, + "21cec7a0-d53b-41e3-867e-2d0c483cfcdf": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.007650214716629225, + "Green": 0.007513558961224537, + "Blue": 0.9952262840211514, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "21cec7a0-d53b-41e3-867e-2d0c483cfcdf", + "Name": "a3f02fa3-138e-4cd1-838f-ce5aabd9c4bd" + }, + "636f517c-1005-46b9-bd4c-47c7f411bf77": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.499999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 10.499999999999995, + "Y": -0.7500000000000142, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "21cec7a0-d53b-41e3-867e-2d0c483cfcdf", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.499999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 10.499999999999995, + "Y": -0.7500000000000142, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "636f517c-1005-46b9-bd4c-47c7f411bf77", + "Name": null + }, + "807ab9c3-0a11-43ae-b929-e6887979bfa3": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.5538105818227914, + "Green": 0.6614185160311956, + "Blue": 0.7479002260360402, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "807ab9c3-0a11-43ae-b929-e6887979bfa3", + "Name": "e7cfc30b-1c8b-4a2f-927c-65de3a2ac5e4" + }, + "ea8b8b10-1213-4983-a19b-69bebaf402e7": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.874999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 10.874999999999995, + "Y": -1.312500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "807ab9c3-0a11-43ae-b929-e6887979bfa3", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.874999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 10.874999999999995, + "Y": -1.312500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "ea8b8b10-1213-4983-a19b-69bebaf402e7", + "Name": null + }, + "1e400e61-5f50-4cff-910d-e7aab9b32a91": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.89614476631216, + "Green": 0.3756233818715547, + "Blue": 0.24631046235855225, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "1e400e61-5f50-4cff-910d-e7aab9b32a91", + "Name": "40a665fb-2a00-4450-a47b-424160b4e58f" + }, + "4a146f05-e355-49e5-8504-3c9432f384e8": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 11.249999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 11.249999999999993, + "Y": -1.875, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "1e400e61-5f50-4cff-910d-e7aab9b32a91", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 11.249999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 11.249999999999993, + "Y": -1.875, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "4a146f05-e355-49e5-8504-3c9432f384e8", + "Name": null + }, + "19be73f9-a03d-4b22-b75a-98935d086695": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.49119088961332613, + "Green": 0.5579599489262141, + "Blue": 0.5083320715969112, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "19be73f9-a03d-4b22-b75a-98935d086695", + "Name": "49c380a2-d709-43b5-9dae-9d265aed51d9" + }, + "a2f1e7ed-b8c1-47cd-83dd-e60dc0818bc2": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 11.624999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 11.624999999999995, + "Y": -2.437500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "19be73f9-a03d-4b22-b75a-98935d086695", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 11.624999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 11.624999999999995, + "Y": -2.437500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a2f1e7ed-b8c1-47cd-83dd-e60dc0818bc2", + "Name": null + }, + "85429e92-7c32-46a5-a911-cc275ba4105d": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9382887980613339, + "Green": 0.3695243622034436, + "Blue": 0.8112886672892089, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "85429e92-7c32-46a5-a911-cc275ba4105d", + "Name": "c83f997e-244a-4000-b047-434ba7caf0d7" + }, + "bdd0f0e8-7300-48b0-913f-8776c3d2231f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 11.999999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 11.999999999999995, + "Y": -3.000000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "85429e92-7c32-46a5-a911-cc275ba4105d", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 11.999999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 11.999999999999995, + "Y": -3.000000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "bdd0f0e8-7300-48b0-913f-8776c3d2231f", + "Name": null + }, + "2704992d-ce4b-41d9-b031-1e678198ab86": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.4100305346818783, + "Green": 0.7522102588565136, + "Blue": 0.9313902156108014, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "2704992d-ce4b-41d9-b031-1e678198ab86", + "Name": "e98e6ee7-2ed1-4a69-90e1-cd015ed8328c" + }, + "045c499f-ec79-41d1-ac1e-ddfb32d9f7fb": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.374999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 12.374999999999995, + "Y": -3.562500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "2704992d-ce4b-41d9-b031-1e678198ab86", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.374999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 12.374999999999995, + "Y": -3.562500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "045c499f-ec79-41d1-ac1e-ddfb32d9f7fb", + "Name": null + }, + "559100ba-db6b-40e0-bbad-57905da942f9": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7343238656103257, + "Green": 0.771548034516884, + "Blue": 0.06531758469777069, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "559100ba-db6b-40e0-bbad-57905da942f9", + "Name": "311b9158-d32f-4a52-94df-7c1e4d540fb6" + }, + "42dcefb8-17f0-42f4-938a-a243ae74a51f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.749999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 12.749999999999995, + "Y": -4.125000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "559100ba-db6b-40e0-bbad-57905da942f9", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.749999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 12.749999999999995, + "Y": -4.125000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "42dcefb8-17f0-42f4-938a-a243ae74a51f", + "Name": null + }, + "7c0f85b4-4931-4568-8419-f0c122d679e2": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.6359562867488509, + "Green": 0.6018064159908362, + "Blue": 0.3393618996904054, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "7c0f85b4-4931-4568-8419-f0c122d679e2", + "Name": "aca0ed1b-05b9-4fca-b84d-1ffd0515da6d" + }, + "de733d84-a479-4217-9a99-274d0a3c3648": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 13.124999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 13.124999999999995, + "Y": -4.687500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7c0f85b4-4931-4568-8419-f0c122d679e2", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 13.124999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 13.124999999999995, + "Y": -4.687500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "de733d84-a479-4217-9a99-274d0a3c3648", + "Name": null + }, + "265cff73-df79-4154-b767-c3f49df1bab4": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.0555106029172943, + "Green": 0.8884134664611953, + "Blue": 0.5267760160038136, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "265cff73-df79-4154-b767-c3f49df1bab4", + "Name": "bdd0d164-5940-4db0-9b34-1a74c7956584" + }, + "012427a7-a81a-420f-a503-ca9d9b357ca3": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 13.499999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 13.499999999999995, + "Y": -5.250000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "265cff73-df79-4154-b767-c3f49df1bab4", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 13.499999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 13.499999999999995, + "Y": -5.250000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "012427a7-a81a-420f-a503-ca9d9b357ca3", + "Name": null + }, + "0b291d87-6385-4cc7-93b2-ebe4d990d6dc": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.2937619976204643, + "Green": 0.37826370791451247, + "Blue": 0.5098052423027368, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "0b291d87-6385-4cc7-93b2-ebe4d990d6dc", + "Name": "8ba6f06c-6f26-46eb-bc28-b95c102b99d1" + }, + "9011c0c0-0aa1-478a-82aa-74b3b5b2fc42": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 13.874999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 13.874999999999995, + "Y": -5.812500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0b291d87-6385-4cc7-93b2-ebe4d990d6dc", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 13.874999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 13.874999999999995, + "Y": -5.812500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "9011c0c0-0aa1-478a-82aa-74b3b5b2fc42", + "Name": null + }, + "b276aaf4-0ede-44d6-bbe1-6e567ed2a0f4": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.3142059209357043, + "Green": 0.9518606187551565, + "Blue": 0.8063594325475206, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "b276aaf4-0ede-44d6-bbe1-6e567ed2a0f4", + "Name": "2e16c8cb-798e-4786-89b6-4ac8f740c9d2" + }, + "8b41402b-cd71-4185-8283-b9cd1669ee4f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.249999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 14.249999999999995, + "Y": -6.375000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "b276aaf4-0ede-44d6-bbe1-6e567ed2a0f4", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.249999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 14.249999999999995, + "Y": -6.375000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "8b41402b-cd71-4185-8283-b9cd1669ee4f", + "Name": null + }, + "9476008f-1ebd-4d67-99f8-74f9f3f72fb2": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.04718752999193386, + "Green": 0.6544586227529023, + "Blue": 0.3402428381798057, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "9476008f-1ebd-4d67-99f8-74f9f3f72fb2", + "Name": "88e5f0d4-7108-437a-a073-be479a260e45" + }, + "fc3646e4-8513-4027-ae55-5c5a115b69fb": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.624999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 14.624999999999996, + "Y": -6.937500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "9476008f-1ebd-4d67-99f8-74f9f3f72fb2", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.624999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 14.624999999999996, + "Y": -6.937500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "fc3646e4-8513-4027-ae55-5c5a115b69fb", + "Name": null + }, + "9f528bf7-0989-49b0-a2f0-6fe665d49d98": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.6132014932172379, + "Green": 0.4476404336502964, + "Blue": 0.552992957901672, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "9f528bf7-0989-49b0-a2f0-6fe665d49d98", + "Name": "eae60340-2dbf-4443-bb73-1c974668d969" + }, + "fc442e8c-979c-4b9f-852c-d88cdece239d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.999999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 14.999999999999995, + "Y": -7.500000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "9f528bf7-0989-49b0-a2f0-6fe665d49d98", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.999999999999995, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 14.999999999999995, + "Y": -7.500000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "fc442e8c-979c-4b9f-852c-d88cdece239d", + "Name": null + }, + "05b6961f-c9e9-4ebf-81a8-abe880220eb6": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.09294079714125991, + "Green": 0.0005649374800570949, + "Blue": 0.7481557609271984, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "05b6961f-c9e9-4ebf-81a8-abe880220eb6", + "Name": "b210b242-bbde-44c5-9c57-941a0666c546" + }, + "7c563816-e3be-4c1e-81f5-071317eb5ce5": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 15.374999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 15.374999999999996, + "Y": -8.062500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "05b6961f-c9e9-4ebf-81a8-abe880220eb6", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 15.374999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 15.374999999999996, + "Y": -8.062500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "7c563816-e3be-4c1e-81f5-071317eb5ce5", + "Name": null + }, + "9f26c661-7913-42ca-8841-464d949c6b6d": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9436877495346999, + "Green": 0.040402899515071374, + "Blue": 0.43744613250598596, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "9f26c661-7913-42ca-8841-464d949c6b6d", + "Name": "e539aba3-da44-4e33-a44d-b3b3048ea37e" + }, + "711cd2c5-2814-4d8c-b29d-8937221d7404": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 15.749999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 15.749999999999996, + "Y": -8.625000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "9f26c661-7913-42ca-8841-464d949c6b6d", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 15.749999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 15.749999999999996, + "Y": -8.625000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "711cd2c5-2814-4d8c-b29d-8937221d7404", + "Name": null + }, + "34b88b15-ef83-4e84-a460-ad9a4616e84e": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.14269130217968082, + "Green": 0.08484908895792863, + "Blue": 0.8744575683374226, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "34b88b15-ef83-4e84-a460-ad9a4616e84e", + "Name": "2665a998-520a-4fa2-8808-ce2aeec742c7" + }, + "dd9eb05d-3574-4e6e-8c56-7b52901e2cee": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.124999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 16.124999999999993, + "Y": -9.187500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "34b88b15-ef83-4e84-a460-ad9a4616e84e", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.124999999999993, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 16.124999999999993, + "Y": -9.187500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "dd9eb05d-3574-4e6e-8c56-7b52901e2cee", + "Name": null + }, + "5d78cf49-dfb7-42ab-b348-6920fe51fe5a": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7104663465686452, + "Green": 0.4690920251743365, + "Blue": 0.0053226146871795015, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "5d78cf49-dfb7-42ab-b348-6920fe51fe5a", + "Name": "54212f33-3e44-4811-8b36-664f51351661" + }, + "8bcb2928-16ce-4a8a-acca-4c5b2a1e7594": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.499999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 16.499999999999996, + "Y": -9.750000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "5d78cf49-dfb7-42ab-b348-6920fe51fe5a", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.499999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 16.499999999999996, + "Y": -9.750000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "8bcb2928-16ce-4a8a-acca-4c5b2a1e7594", + "Name": null + }, + "d188b4ef-ba6b-4edb-a10c-49e9818370cd": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.6465951509990707, + "Green": 0.7030418341527888, + "Blue": 0.03877913907113445, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "d188b4ef-ba6b-4edb-a10c-49e9818370cd", + "Name": "516ba3f6-ae9c-4620-bb1a-ab7e4cc3bcee" + }, + "5291d7a1-215d-4c81-90bd-c8eb30b58d3d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.874999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 16.874999999999996, + "Y": -10.312500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d188b4ef-ba6b-4edb-a10c-49e9818370cd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.874999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 16.874999999999996, + "Y": -10.312500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "5291d7a1-215d-4c81-90bd-c8eb30b58d3d", + "Name": null + }, + "2b15283e-a2b7-4656-8f9b-dfecafa7e09d": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7139753530332704, + "Green": 0.3716939279677784, + "Blue": 0.40570714297038835, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "2b15283e-a2b7-4656-8f9b-dfecafa7e09d", + "Name": "ab928c62-6e1a-408c-a9bc-3693e14d8043" + }, + "c13c2537-6a2d-4fb4-b380-2b71ad509517": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.249999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 17.249999999999996, + "Y": -10.875000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "2b15283e-a2b7-4656-8f9b-dfecafa7e09d", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.249999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 17.249999999999996, + "Y": -10.875000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "c13c2537-6a2d-4fb4-b380-2b71ad509517", + "Name": null + }, + "2985d601-2264-4bad-9063-302295449666": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.655864384330746, + "Green": 0.4982999789054971, + "Blue": 0.7730050495700003, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "2985d601-2264-4bad-9063-302295449666", + "Name": "4a77a171-bb70-4a77-92b2-3fe116ecb12a" + }, + "0d8a9e32-1c00-43ec-a16f-2fa023240af0": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.624999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 17.624999999999996, + "Y": -11.437500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "2985d601-2264-4bad-9063-302295449666", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.624999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 17.624999999999996, + "Y": -11.437500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "0d8a9e32-1c00-43ec-a16f-2fa023240af0", + "Name": null + }, + "b9bb0cb5-22ac-4319-ad4c-93a794143015": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.22112421003222663, + "Green": 0.6023827686916956, + "Blue": 0.9973596739570423, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "b9bb0cb5-22ac-4319-ad4c-93a794143015", + "Name": "5d0157bc-e003-4ad3-b686-5180727e248c" + }, + "b2aeae12-142c-4bd9-ae20-1ed762bc0f65": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 18.0, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 18.0, + "Y": -12.000000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "b9bb0cb5-22ac-4319-ad4c-93a794143015", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 18.0, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 18.0, + "Y": -12.000000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "b2aeae12-142c-4bd9-ae20-1ed762bc0f65", + "Name": null + }, + "d0c525ab-3389-48dc-a192-cda401a643ee": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7365052200558154, + "Green": 0.17698496867762178, + "Blue": 0.6060993301710577, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "d0c525ab-3389-48dc-a192-cda401a643ee", + "Name": "df6bfa97-d5a1-4fa8-bda7-62a6bb761d38" + }, + "fc02934b-ee43-4cb6-ab52-fe293b80dacd": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 18.374999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 18.374999999999996, + "Y": -12.562500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0c525ab-3389-48dc-a192-cda401a643ee", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 18.374999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 18.374999999999996, + "Y": -12.562500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "fc02934b-ee43-4cb6-ab52-fe293b80dacd", + "Name": null + }, + "3f2418b9-2a10-4b35-b20c-20a3ffafbcfb": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7019726390493907, + "Green": 0.8911012680694002, + "Blue": 0.7150657394505412, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "3f2418b9-2a10-4b35-b20c-20a3ffafbcfb", + "Name": "4a65b495-8e2e-4dee-9c1e-84ac5f3f37ee" + }, + "d47f702a-2a25-4edb-8bed-40acbed45d10": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 18.749999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 18.749999999999996, + "Y": -13.125000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "3f2418b9-2a10-4b35-b20c-20a3ffafbcfb", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 18.749999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 18.749999999999996, + "Y": -13.125000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "d47f702a-2a25-4edb-8bed-40acbed45d10", + "Name": null + }, + "452e8f4a-6733-4700-b32f-6be8328f9098": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.47104582910940324, + "Green": 0.7968290414646403, + "Blue": 0.3045698252062173, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "452e8f4a-6733-4700-b32f-6be8328f9098", + "Name": "70a8e5a5-b593-437d-8cfd-a8e438b3c746" + }, + "755bdb74-1881-4135-9565-004229bb014e": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.124999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 19.124999999999996, + "Y": -13.687500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "452e8f4a-6733-4700-b32f-6be8328f9098", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.124999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 19.124999999999996, + "Y": -13.687500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "755bdb74-1881-4135-9565-004229bb014e", + "Name": null + }, + "773133b8-f888-4f10-8fbf-72d40811c381": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.37839725770912935, + "Green": 0.6413830684690658, + "Blue": 0.7709830970368269, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "773133b8-f888-4f10-8fbf-72d40811c381", + "Name": "3aa68e82-b776-402f-b6a9-ecfbe64028dc" + }, + "6dfec819-533f-4a86-964d-e9a6e08d1d56": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.499999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 19.499999999999996, + "Y": -14.250000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "773133b8-f888-4f10-8fbf-72d40811c381", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.499999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 19.499999999999996, + "Y": -14.250000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "6dfec819-533f-4a86-964d-e9a6e08d1d56", + "Name": null + }, + "8eb76bd9-7bfd-47ef-80cf-28db59597e0c": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.31716182377057234, + "Green": 0.6922685372141509, + "Blue": 0.5614035164757648, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "8eb76bd9-7bfd-47ef-80cf-28db59597e0c", + "Name": "7e8a7840-8d81-432d-8839-25b3a4280007" + }, + "fdc35cd7-18ce-428e-9731-4adf21c85ec4": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.875, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 19.875, + "Y": -14.812500000000021, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "8eb76bd9-7bfd-47ef-80cf-28db59597e0c", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.875, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 19.875, + "Y": -14.812500000000021, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "fdc35cd7-18ce-428e-9731-4adf21c85ec4", + "Name": null + }, + "53745bbf-2b3c-4642-91b9-c8484fc3a31f": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9019157671844195, + "Green": 0.9128193007376135, + "Blue": 0.8035643775032667, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "53745bbf-2b3c-4642-91b9-c8484fc3a31f", + "Name": "9d1c58b5-060f-4c8c-9787-b426f59d955c" + }, + "e620b4c2-5268-4471-bb70-bbcbd8720a60": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 20.249999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 20.249999999999996, + "Y": -15.375000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "53745bbf-2b3c-4642-91b9-c8484fc3a31f", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 20.249999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 20.249999999999996, + "Y": -15.375000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "e620b4c2-5268-4471-bb70-bbcbd8720a60", + "Name": null + }, + "dc716264-1054-48dc-afa7-2f127cb50b5f": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.652318447666391, + "Green": 0.5832956510518191, + "Blue": 0.9091716827401759, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "dc716264-1054-48dc-afa7-2f127cb50b5f", + "Name": "93063016-2dc5-43f2-a1d6-ad0d12fbb5fa" + }, + "fe3ccc56-6898-449f-8a7e-96a4e6e56fdd": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 20.624999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 20.624999999999996, + "Y": -15.937500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "dc716264-1054-48dc-afa7-2f127cb50b5f", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 20.624999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 20.624999999999996, + "Y": -15.937500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "fe3ccc56-6898-449f-8a7e-96a4e6e56fdd", + "Name": null + }, + "8eac0740-19c8-4e59-883a-5ffcf14ec771": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.5044826276155574, + "Green": 0.6676107699366337, + "Blue": 0.24881878460236767, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "8eac0740-19c8-4e59-883a-5ffcf14ec771", + "Name": "ac2afff7-0e08-4e6c-8b81-fbd753bb6508" + }, + "3bc23751-c7ef-4148-8bd1-1b271ab9357c": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.0, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 21.0, + "Y": -16.50000000000002, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "8eac0740-19c8-4e59-883a-5ffcf14ec771", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.0, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 21.0, + "Y": -16.50000000000002, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "3bc23751-c7ef-4148-8bd1-1b271ab9357c", + "Name": null + }, + "b24987ef-03cd-4b03-9f64-666db63820e1": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7675802934763861, + "Green": 0.33321217695866345, + "Blue": 0.282764694785124, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "b24987ef-03cd-4b03-9f64-666db63820e1", + "Name": "3d9cc55a-05f1-45d1-bf5f-87ce47017817" + }, + "92452fa8-e370-44e5-89a9-73882543c5f6": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.374999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 21.374999999999996, + "Y": -17.062500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "b24987ef-03cd-4b03-9f64-666db63820e1", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.374999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 21.374999999999996, + "Y": -17.062500000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "92452fa8-e370-44e5-89a9-73882543c5f6", + "Name": null + }, + "6cf7876e-301f-420c-9fb9-1a9ad1910f76": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9345356952094174, + "Green": 0.957337108886492, + "Blue": 0.9493404547447992, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "6cf7876e-301f-420c-9fb9-1a9ad1910f76", + "Name": "c4da3a0c-f181-494a-bbf1-f8b29ab73fb4" + }, + "d6c5bca5-0771-4392-99b2-9bc88ac5ed94": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.75, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 21.75, + "Y": -17.625000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "6cf7876e-301f-420c-9fb9-1a9ad1910f76", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.75, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 21.75, + "Y": -17.625000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "d6c5bca5-0771-4392-99b2-9bc88ac5ed94", + "Name": null + }, + "d5da68ba-6358-47a0-921d-ac5960a24d83": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7799879083316716, + "Green": 0.8718165871090333, + "Blue": 0.39818216878836143, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "d5da68ba-6358-47a0-921d-ac5960a24d83", + "Name": "bd9ebe23-9442-429d-8373-ea084e85c5b4" + }, + "285df4ab-4bf9-41eb-886d-a29481294ad8": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.125, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 22.125, + "Y": -18.18750000000002, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d5da68ba-6358-47a0-921d-ac5960a24d83", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.125, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 22.125, + "Y": -18.18750000000002, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "285df4ab-4bf9-41eb-886d-a29481294ad8", + "Name": null + }, + "3094ff7d-09e2-42d2-afdd-5ec9d57f3a64": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7507960869701561, + "Green": 0.20718252947888455, + "Blue": 0.8634179308374496, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "3094ff7d-09e2-42d2-afdd-5ec9d57f3a64", + "Name": "93ea84e7-6501-4e58-aba6-bae4937eb6e6" + }, + "51757840-e557-45cc-8cc9-74e624021fb2": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.499999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 22.499999999999996, + "Y": -18.750000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "3094ff7d-09e2-42d2-afdd-5ec9d57f3a64", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.499999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 22.499999999999996, + "Y": -18.750000000000007, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "51757840-e557-45cc-8cc9-74e624021fb2", + "Name": null + }, + "4005d950-981a-4915-9ab2-1f762b1c489f": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.8313468023349283, + "Green": 0.4407186631302902, + "Blue": 0.19374782088852852, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "4005d950-981a-4915-9ab2-1f762b1c489f", + "Name": "d213125a-74ca-47d8-9d36-28c7741fcc87" + }, + "301e6b51-cdbf-4f3c-9d68-f3cf46d912ce": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.875, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 22.875, + "Y": -19.312500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "4005d950-981a-4915-9ab2-1f762b1c489f", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.875, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 22.875, + "Y": -19.312500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "301e6b51-cdbf-4f3c-9d68-f3cf46d912ce", + "Name": null + }, + "c24bf2d8-5ea6-442d-b7fd-232f40a73745": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.1593918288868814, + "Green": 0.23942051745924192, + "Blue": 0.6722629837096962, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "c24bf2d8-5ea6-442d-b7fd-232f40a73745", + "Name": "61b697ed-ed8d-4c77-88fd-6cce6ee9f742" + }, + "9baabc76-fa06-4ed8-9bba-48c5b3e11a98": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.25, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 23.25, + "Y": -19.875000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "c24bf2d8-5ea6-442d-b7fd-232f40a73745", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.25, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 23.25, + "Y": -19.875000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "9baabc76-fa06-4ed8-9bba-48c5b3e11a98", + "Name": null + }, + "dc2550e3-88b9-4e44-a464-b71b020e5618": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.7007527894809622, + "Green": 0.2681978932899413, + "Blue": 0.06165876568372304, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "dc2550e3-88b9-4e44-a464-b71b020e5618", + "Name": "78b7a7d0-3cff-4129-a558-bd85eb377571" + }, + "5ef78095-dff6-45d4-8e83-e97ff9ba7693": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.625, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 23.625, + "Y": -20.437500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "dc2550e3-88b9-4e44-a464-b71b020e5618", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.625, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 23.625, + "Y": -20.437500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "5ef78095-dff6-45d4-8e83-e97ff9ba7693", + "Name": null + }, + "6308b3c4-0afa-4938-9c84-4ad9636594aa": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.2677960420343075, + "Green": 0.39681352926269803, + "Blue": 0.6794253907536275, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "6308b3c4-0afa-4938-9c84-4ad9636594aa", + "Name": "a0047c19-6ce2-4bcf-a142-d1ae8ccabf58" + }, + "b9bad69b-c553-4b23-a6d6-2e785b74ca42": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.0, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 24.0, + "Y": -21.00000000000002, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "6308b3c4-0afa-4938-9c84-4ad9636594aa", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.0, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 24.0, + "Y": -21.00000000000002, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "b9bad69b-c553-4b23-a6d6-2e785b74ca42", + "Name": null + }, + "f28ef0de-2bbc-471a-b22e-648807061650": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.8443036264946235, + "Green": 0.7539486171463265, + "Blue": 0.5854806781678836, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "f28ef0de-2bbc-471a-b22e-648807061650", + "Name": "bb6052be-8999-4240-9e1a-42b7a8cab552" + }, + "69fc9919-4a94-4e7b-a51c-d227dae4cc5f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.374999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 24.374999999999996, + "Y": -21.562500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "f28ef0de-2bbc-471a-b22e-648807061650", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.374999999999996, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 24.374999999999996, + "Y": -21.562500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "69fc9919-4a94-4e7b-a51c-d227dae4cc5f", + "Name": null + }, + "172876e2-4f28-48ae-8b97-92ab5ad56170": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.9694406720667336, + "Green": 0.5688057623658356, + "Blue": 0.019087117639876493, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "172876e2-4f28-48ae-8b97-92ab5ad56170", + "Name": "12a2393e-02ee-48b8-8b7f-3d786e9f78ab" + }, + "2c2f7637-4b9b-40c1-8da9-a822fd54357f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.75, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 24.75, + "Y": -22.125000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "172876e2-4f28-48ae-8b97-92ab5ad56170", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.75, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 24.75, + "Y": -22.125000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "2c2f7637-4b9b-40c1-8da9-a822fd54357f", + "Name": null + }, + "52c5be44-3065-490c-af22-b8bbc9d96a07": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.0881879912168663, + "Green": 0.23202259244025805, + "Blue": 0.5093741987409881, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "52c5be44-3065-490c-af22-b8bbc9d96a07", + "Name": "768b355b-f7e8-4a82-a573-1e7e1a1365f8" + }, + "aaef37cb-6692-426b-869b-d3fbcac206fc": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 25.125, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 25.125, + "Y": -22.68750000000002, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "52c5be44-3065-490c-af22-b8bbc9d96a07", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 25.125, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 25.125, + "Y": -22.68750000000002, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "aaef37cb-6692-426b-869b-d3fbcac206fc", + "Name": null + }, + "f64124a6-8dfd-406e-b31c-dbd7f231a946": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.35728054556868993, + "Green": 0.9343923455730045, + "Blue": 0.5578890911107366, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "f64124a6-8dfd-406e-b31c-dbd7f231a946", + "Name": "b0607171-326f-401c-9552-9ed0143cbbfe" + }, + "b054c9a1-5185-49ef-9b8e-a4570d566043": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 25.5, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 25.5, + "Y": -23.250000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "f64124a6-8dfd-406e-b31c-dbd7f231a946", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 25.5, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 25.5, + "Y": -23.250000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "b054c9a1-5185-49ef-9b8e-a4570d566043", + "Name": null + }, + "a01e049d-4638-46ea-80fa-6173ba18599b": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.4323010446654172, + "Green": 0.5365101338999859, + "Blue": 0.8394919325781482, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "a01e049d-4638-46ea-80fa-6173ba18599b", + "Name": "f3ff5240-d47c-49a7-8053-d181c7f3c669" + }, + "11049a6b-52cf-4bd2-8a19-a3b818858dcf": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 25.875, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 25.875, + "Y": -23.812500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "a01e049d-4638-46ea-80fa-6173ba18599b", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 25.875, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 25.875, + "Y": -23.812500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "11049a6b-52cf-4bd2-8a19-a3b818858dcf", + "Name": null + }, + "1081bcc5-6645-44aa-9362-d684b01b0dc5": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.355229370461418, + "Green": 0.5984093493774577, + "Blue": 0.7695664813600325, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "1081bcc5-6645-44aa-9362-d684b01b0dc5", + "Name": "26360937-8080-4969-beba-d5b47cb48e62" + }, + "429a545c-65cc-4130-a4a5-58a9b4d58485": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 26.25, + "Y": -24.37500000000002, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "1081bcc5-6645-44aa-9362-d684b01b0dc5", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 26.25, + "Y": -24.37500000000002, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "429a545c-65cc-4130-a4a5-58a9b4d58485", + "Name": null + }, + "f96d820d-7a61-4b54-92d8-df1690812724": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.3728009282484655, + "Green": 0.5663657368004162, + "Blue": 0.48508600773526633, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "f96d820d-7a61-4b54-92d8-df1690812724", + "Name": "0bf04fbb-0526-49d3-a5c5-a701cffcd290" + }, + "d131d435-af87-43b1-9328-d6f9c1cff155": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.625, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 26.625, + "Y": -24.937500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "f96d820d-7a61-4b54-92d8-df1690812724", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.625, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 26.625, + "Y": -24.937500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "d131d435-af87-43b1-9328-d6f9c1cff155", + "Name": null + }, + "e17d5611-255f-495b-b3f2-b8bebe6d7b36": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.6979855856383153, + "Green": 0.07056896484949113, + "Blue": 0.4721006376073233, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "e17d5611-255f-495b-b3f2-b8bebe6d7b36", + "Name": "a2adcdd6-92f7-48f4-b2d1-a017d223752d" + }, + "3d9c75f1-e889-4c3e-80c7-5a2a0c701fc7": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.0, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 27.0, + "Y": -25.500000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "e17d5611-255f-495b-b3f2-b8bebe6d7b36", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.0, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 27.0, + "Y": -25.500000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "3d9c75f1-e889-4c3e-80c7-5a2a0c701fc7", + "Name": null + }, + "acb89ff4-9d64-4181-a6d2-a7a10a0fd378": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.6098165566147382, + "Green": 0.4929266187795096, + "Blue": 0.34387513359257726, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "acb89ff4-9d64-4181-a6d2-a7a10a0fd378", + "Name": "4df5e013-4f76-4650-a94a-90d207205eac" + }, + "5a6b106e-cdbb-44ec-ba07-ed9e9619995f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.375, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 27.375, + "Y": -26.062500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "acb89ff4-9d64-4181-a6d2-a7a10a0fd378", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.375, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 27.375, + "Y": -26.062500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "5a6b106e-cdbb-44ec-ba07-ed9e9619995f", + "Name": null + }, + "09af1ca6-9047-4bca-8f4a-b6d08f07f789": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.23690869903047973, + "Green": 0.8037298381345951, + "Blue": 0.39941287664669234, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "09af1ca6-9047-4bca-8f4a-b6d08f07f789", + "Name": "e5cecadd-ee24-4428-afbc-997a797bab10" + }, + "1bcce726-d246-4bf6-bfdb-40bf36423cd0": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.75, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 27.75, + "Y": -26.625000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "09af1ca6-9047-4bca-8f4a-b6d08f07f789", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.75, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 27.75, + "Y": -26.625000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "1bcce726-d246-4bf6-bfdb-40bf36423cd0", + "Name": null + }, + "110566da-81d7-4108-84b4-387cc18755c7": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.18716001891864464, + "Green": 0.4997842514420786, + "Blue": 0.9363986476959655, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "110566da-81d7-4108-84b4-387cc18755c7", + "Name": "6677a12b-2d2d-458c-bb1e-0fa929e8a7ba" + }, + "86dbdf19-8365-46bb-8fd0-6568d2c6968e": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 28.125, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 28.125, + "Y": -27.18750000000002, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "110566da-81d7-4108-84b4-387cc18755c7", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 28.125, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 28.125, + "Y": -27.18750000000002, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "86dbdf19-8365-46bb-8fd0-6568d2c6968e", + "Name": null + }, + "08c954c2-4ec5-4a8b-a0c8-06def73d9967": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.6033393040314965, + "Green": 0.0902320687147938, + "Blue": 0.20338849174016552, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "08c954c2-4ec5-4a8b-a0c8-06def73d9967", + "Name": "95435046-c6c8-4078-bc2b-14de46831e6a" + }, + "5ba89eac-deb6-4b30-8c63-aa3aeb6f10a7": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 28.5, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 28.5, + "Y": -27.750000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "08c954c2-4ec5-4a8b-a0c8-06def73d9967", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 28.5, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 28.5, + "Y": -27.750000000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "5ba89eac-deb6-4b30-8c63-aa3aeb6f10a7", + "Name": null + }, + "d0ed7748-dc01-4694-bd74-6acf90319d22": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.36385977657691565, + "Green": 0.8105472362649382, + "Blue": 0.3030108247431977, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "d0ed7748-dc01-4694-bd74-6acf90319d22", + "Name": "c330e729-d81a-40f4-a459-0bc6c8fedc77" + }, + "48512fbb-070d-4ac3-b46c-db024f96764e": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 28.875, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 28.875, + "Y": -28.312500000000018, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0ed7748-dc01-4694-bd74-6acf90319d22", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 28.875, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 28.875, + "Y": -28.312500000000018, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "48512fbb-070d-4ac3-b46c-db024f96764e", + "Name": null + }, + "4256a72d-67f8-4cfd-b623-cda1a95ad2ed": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.37909505114848496, + "Green": 0.6626080957532898, + "Blue": 0.9751599370386265, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "4256a72d-67f8-4cfd-b623-cda1a95ad2ed", + "Name": "50e596eb-41ad-4818-8d30-722eaf2a8e55" + }, + "067e6e50-b9a4-4051-9a88-ef70134865cb": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.250000000000004, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 29.250000000000004, + "Y": -28.875000000000018, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "4256a72d-67f8-4cfd-b623-cda1a95ad2ed", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.250000000000004, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 29.250000000000004, + "Y": -28.875000000000018, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "067e6e50-b9a4-4051-9a88-ef70134865cb", + "Name": null + }, + "ff71ce93-3577-4b7b-9629-95a57668371f": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.35404373209646145, + "Green": 0.47406625676623837, + "Blue": 0.5063263175572856, + "Alpha": 1.0 + }, + "SpecularFactor": 0.1, + "GlossinessFactor": 0.9, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "Id": "ff71ce93-3577-4b7b-9629-95a57668371f", + "Name": "bfdb74a7-13f0-4b5d-9a97-526e181ddeef" + }, + "2a219401-cd11-4b33-887c-8405e8aff89d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.625, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 29.625, + "Y": -29.437500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "ff71ce93-3577-4b7b-9629-95a57668371f", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "77a9f129-0920-40f0-9e77-044b189f100b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.625, + "Y": -60.0, + "Z": 0.0 + }, + "End": { + "X": 29.625, + "Y": -29.437500000000014, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "2a219401-cd11-4b33-887c-8405e8aff89d", + "Name": null + }, + "ca45ed23-9590-4a54-9033-1d0e5bcfab99": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ca45ed23-9590-4a54-9033-1d0e5bcfab99", + "Name": null + }, + "a685c334-87cc-4819-a510-1a407ba0e9c6": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.3, + "Green": 0.7, + "Blue": 0.7, + "Alpha": 0.6 + }, + "SpecularFactor": 0.0, + "GlossinessFactor": 0.0, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "Id": "a685c334-87cc-4819-a510-1a407ba0e9c6", + "Name": "envelope" + }, + "43388ca2-4262-4ba5-8965-60d8ffeb25ec": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "43388ca2-4262-4ba5-8965-60d8ffeb25ec", + "Name": null + }, + "681f0379-5e88-4951-97bb-99cbd307f175": { + "discriminator": "Elements.Envelope", + "Profile": "ca45ed23-9590-4a54-9033-1d0e5bcfab99", + "Elevation": -10.0, + "Height": 10.0, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + -10.0 + ] + } + }, + "Material": "a685c334-87cc-4819-a510-1a407ba0e9c6", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "43388ca2-4262-4ba5-8965-60d8ffeb25ec", + "Height": 10.0, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "681f0379-5e88-4951-97bb-99cbd307f175", + "Name": "" + }, + "b1d94f62-fd8b-4883-9f3a-51a61abc7874": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "b1d94f62-fd8b-4883-9f3a-51a61abc7874", + "Name": null + }, + "90bc8c6e-c055-4b39-9118-4bdb488e400a": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "90bc8c6e-c055-4b39-9118-4bdb488e400a", + "Name": null + }, + "a870fe10-a1af-4d71-8ef4-18d2befc1ae0": { + "discriminator": "Elements.Envelope", + "Profile": "b1d94f62-fd8b-4883-9f3a-51a61abc7874", + "Elevation": 0.0, + "Height": 20.0, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "a685c334-87cc-4819-a510-1a407ba0e9c6", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "90bc8c6e-c055-4b39-9118-4bdb488e400a", + "Height": 20.0, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a870fe10-a1af-4d71-8ef4-18d2befc1ae0", + "Name": "" + }, + "d1e0443c-b18f-44a5-b81d-07d70a9aac43": { + "discriminator": "Elements.Primitive", + "Id": "d1e0443c-b18f-44a5-b81d-07d70a9aac43", + "Name": "Basement" + }, + "17934ee8-895e-4fa6-b581-f327412eea4f": { + "discriminator": "Elements.Primitive", + "Id": "17934ee8-895e-4fa6-b581-f327412eea4f", + "Name": "Ground Floor" + }, + "96c1166f-e649-4dcc-aa4e-926454480d73": { + "discriminator": "Elements.Primitive", + "Id": "96c1166f-e649-4dcc-aa4e-926454480d73", + "Name": "Typical Floor" + }, + "605b5379-10c6-4efc-83f2-9c3546c9af53": { + "discriminator": "Elements.Primitive", + "Id": "605b5379-10c6-4efc-83f2-9c3546c9af53", + "Name": "Penthouse" + }, + "aa8ce056-c0eb-4204-9399-0ffad6e3ac55": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.945, + "Green": 0.3607, + "Blue": 0.419, + "Alpha": 0.5 + }, + "SpecularFactor": 0.0, + "GlossinessFactor": 0.0, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "Id": "aa8ce056-c0eb-4204-9399-0ffad6e3ac55", + "Name": "Basement_material" + }, + "5a566959-580b-488e-b559-7b48143d91e0": { + "discriminator": "Elements.Level", + "Elevation": -10.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + -10.0 + ] + } + }, + "Material": "aa8ce056-c0eb-4204-9399-0ffad6e3ac55", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "5a566959-580b-488e-b559-7b48143d91e0", + "Name": "Basement" + }, + "3e4e7b6e-3392-4ed8-8611-839662f931d7": { + "discriminator": "Elements.LevelPerimeter", + "Area": 1500.0000000000005, + "Elevation": -10.0, + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Id": "3e4e7b6e-3392-4ed8-8611-839662f931d7", + "Name": "Basement" + }, + "e0b52343-c271-41bf-b812-ed6657043d1a": { + "discriminator": "Elements.ViewScope", + "Bounding Box": { + "discriminator": "Elements.Geometry.BBox3", + "Min": { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": -10.0 + }, + "Max": { + "X": 30.0, + "Y": 0.0, + "Z": -1.0000999999999998 + } + }, + "Camera": { + "discriminator": "Elements.Camera", + "angle": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "named_position": "top", + "projection": "orthographic" + }, + "Inclusive": true, + "Id": "e0b52343-c271-41bf-b812-ed6657043d1a", + "Name": "Basement" + }, + "c1e5299d-3f7f-407b-be18-d042cc7948b1": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "c1e5299d-3f7f-407b-be18-d042cc7948b1", + "Name": null + }, + "0a56d396-bd81-44c6-9ec0-34fa2fb7ee25": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "0a56d396-bd81-44c6-9ec0-34fa2fb7ee25", + "Name": null + }, + "f44f6d0d-44b2-4349-b9c0-268c0fec42fa": { + "discriminator": "Elements.LevelVolume", + "Profile": "c1e5299d-3f7f-407b-be18-d042cc7948b1", + "Height": 10.0, + "Area": 1500.0000000000005, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + -10.0 + ] + } + }, + "Material": "aa8ce056-c0eb-4204-9399-0ffad6e3ac55", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "0a56d396-bd81-44c6-9ec0-34fa2fb7ee25", + "Height": 9.9999, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f44f6d0d-44b2-4349-b9c0-268c0fec42fa", + "Name": "Basement", + "Plan View": "e0b52343-c271-41bf-b812-ed6657043d1a" + }, + "c0c81819-9cb1-416b-acbd-4e8daccdc4cd": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.945, + "Green": 0.3607, + "Blue": 0.419, + "Alpha": 0.5 + }, + "SpecularFactor": 0.0, + "GlossinessFactor": 0.0, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "Id": "c0c81819-9cb1-416b-acbd-4e8daccdc4cd", + "Name": "Ground Floor_material" + }, + "4498ac7b-7175-4918-b3bf-8abb95bb6935": { + "discriminator": "Elements.Level", + "Elevation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "c0c81819-9cb1-416b-acbd-4e8daccdc4cd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "4498ac7b-7175-4918-b3bf-8abb95bb6935", + "Name": "Ground Floor" + }, + "386cc57a-efe7-4362-ab41-4a3305ef6c15": { + "discriminator": "Elements.LevelPerimeter", + "Area": 1500.0000000000005, + "Elevation": 0.0, + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Id": "386cc57a-efe7-4362-ab41-4a3305ef6c15", + "Name": "Ground Floor" + }, + "0b098943-0ee6-4ef6-8a43-7f22a3b09e3b": { + "discriminator": "Elements.ViewScope", + "Bounding Box": { + "discriminator": "Elements.Geometry.BBox3", + "Min": { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + "Max": { + "X": 30.0, + "Y": 0.0, + "Z": 3.4999000000000002 + } + }, + "Camera": { + "discriminator": "Elements.Camera", + "angle": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "named_position": "top", + "projection": "orthographic" + }, + "Inclusive": true, + "Id": "0b098943-0ee6-4ef6-8a43-7f22a3b09e3b", + "Name": "Ground Floor" + }, + "211117af-28a9-4b74-8996-fa36c30cd3d1": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "211117af-28a9-4b74-8996-fa36c30cd3d1", + "Name": null + }, + "0b06d229-214a-4a96-b1ee-67de9c0e1d14": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "0b06d229-214a-4a96-b1ee-67de9c0e1d14", + "Name": null + }, + "6928cefc-d742-40c6-9761-8e5cfb3b2436": { + "discriminator": "Elements.LevelVolume", + "Profile": "211117af-28a9-4b74-8996-fa36c30cd3d1", + "Height": 4.5, + "Area": 1500.0000000000005, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "c0c81819-9cb1-416b-acbd-4e8daccdc4cd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "0b06d229-214a-4a96-b1ee-67de9c0e1d14", + "Height": 4.4999, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "6928cefc-d742-40c6-9761-8e5cfb3b2436", + "Name": "Ground Floor", + "Plan View": "0b098943-0ee6-4ef6-8a43-7f22a3b09e3b" + }, + "2b20b8ba-bbdb-48d3-bd0b-18d62b465cf9": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.945, + "Green": 0.3607, + "Blue": 0.419, + "Alpha": 0.5 + }, + "SpecularFactor": 0.0, + "GlossinessFactor": 0.0, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "Id": "2b20b8ba-bbdb-48d3-bd0b-18d62b465cf9", + "Name": "Typical Floor_material" + }, + "ee8911ad-eea2-48ba-b2a8-5467bd6e08b8": { + "discriminator": "Elements.Level", + "Elevation": 4.5, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Material": "2b20b8ba-bbdb-48d3-bd0b-18d62b465cf9", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "ee8911ad-eea2-48ba-b2a8-5467bd6e08b8", + "Name": "Typical Floor (1)" + }, + "d4b46f9d-cf38-4fc6-a2cd-077dc468327a": { + "discriminator": "Elements.LevelPerimeter", + "Area": 1500.0000000000005, + "Elevation": 4.5, + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Id": "d4b46f9d-cf38-4fc6-a2cd-077dc468327a", + "Name": "Typical Floor (1)" + }, + "406be19c-8218-4a08-a2c0-b340f6047806": { + "discriminator": "Elements.ViewScope", + "Bounding Box": { + "discriminator": "Elements.Geometry.BBox3", + "Min": { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 4.5 + }, + "Max": { + "X": 30.0, + "Y": 0.0, + "Z": 7.3499 + } + }, + "Camera": { + "discriminator": "Elements.Camera", + "angle": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "named_position": "top", + "projection": "orthographic" + }, + "Inclusive": true, + "Id": "406be19c-8218-4a08-a2c0-b340f6047806", + "Name": "Typical Floor (1)" + }, + "18ea53e1-ba0a-42ae-b5b8-e314368872ac": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "18ea53e1-ba0a-42ae-b5b8-e314368872ac", + "Name": null + }, + "859b2a87-f398-4bbe-88b4-ab7d6b98a9da": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "859b2a87-f398-4bbe-88b4-ab7d6b98a9da", + "Name": null + }, + "8b3714c5-ffb8-44dc-95a2-fb007b339fc2": { + "discriminator": "Elements.LevelVolume", + "Profile": "18ea53e1-ba0a-42ae-b5b8-e314368872ac", + "Height": 3.8499999999999996, + "Area": 1500.0000000000005, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Material": "2b20b8ba-bbdb-48d3-bd0b-18d62b465cf9", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "859b2a87-f398-4bbe-88b4-ab7d6b98a9da", + "Height": 3.8498999999999994, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "8b3714c5-ffb8-44dc-95a2-fb007b339fc2", + "Name": "Typical Floor (1)", + "Plan View": "406be19c-8218-4a08-a2c0-b340f6047806" + }, + "4e013d4b-edd5-4efe-a968-e60dcd5e89c0": { + "discriminator": "Elements.Level", + "Elevation": 8.35, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Material": "2b20b8ba-bbdb-48d3-bd0b-18d62b465cf9", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "4e013d4b-edd5-4efe-a968-e60dcd5e89c0", + "Name": "Typical Floor (2)" + }, + "ee43fa61-b3cc-420f-ae54-e2857401c23a": { + "discriminator": "Elements.LevelPerimeter", + "Area": 1500.0000000000005, + "Elevation": 8.35, + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Id": "ee43fa61-b3cc-420f-ae54-e2857401c23a", + "Name": "Typical Floor (2)" + }, + "d6c96d5d-55d4-4e41-855b-c12762ad9aa0": { + "discriminator": "Elements.ViewScope", + "Bounding Box": { + "discriminator": "Elements.Geometry.BBox3", + "Min": { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 8.35 + }, + "Max": { + "X": 30.0, + "Y": 0.0, + "Z": 11.1999 + } + }, + "Camera": { + "discriminator": "Elements.Camera", + "angle": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "named_position": "top", + "projection": "orthographic" + }, + "Inclusive": true, + "Id": "d6c96d5d-55d4-4e41-855b-c12762ad9aa0", + "Name": "Typical Floor (2)" + }, + "d94b7e64-109f-4713-af2a-d32af437ebb3": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "d94b7e64-109f-4713-af2a-d32af437ebb3", + "Name": null + }, + "fcb66a3d-a9c5-4c36-a2d2-8c1153063296": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "fcb66a3d-a9c5-4c36-a2d2-8c1153063296", + "Name": null + }, + "da2199d3-e0aa-41f2-a120-ceb40688e0d5": { + "discriminator": "Elements.LevelVolume", + "Profile": "d94b7e64-109f-4713-af2a-d32af437ebb3", + "Height": 3.8499999999999996, + "Area": 1500.0000000000005, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Material": "2b20b8ba-bbdb-48d3-bd0b-18d62b465cf9", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "fcb66a3d-a9c5-4c36-a2d2-8c1153063296", + "Height": 3.8498999999999994, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "da2199d3-e0aa-41f2-a120-ceb40688e0d5", + "Name": "Typical Floor (2)", + "Plan View": "d6c96d5d-55d4-4e41-855b-c12762ad9aa0" + }, + "3a088b37-46ad-4e14-bd29-720a75330a59": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.945, + "Green": 0.3607, + "Blue": 0.419, + "Alpha": 0.5 + }, + "SpecularFactor": 0.0, + "GlossinessFactor": 0.0, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "Id": "3a088b37-46ad-4e14-bd29-720a75330a59", + "Name": "Penthouse_material" + }, + "bed58e8b-1609-4703-a051-d7a9fc24d2a6": { + "discriminator": "Elements.Level", + "Elevation": 12.2, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Material": "3a088b37-46ad-4e14-bd29-720a75330a59", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "bed58e8b-1609-4703-a051-d7a9fc24d2a6", + "Name": "Penthouse" + }, + "215e327f-2581-4292-8c2b-ac4a8f431bc0": { + "discriminator": "Elements.LevelPerimeter", + "Area": 1500.0000000000005, + "Elevation": 12.2, + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Id": "215e327f-2581-4292-8c2b-ac4a8f431bc0", + "Name": "Penthouse" + }, + "1861a342-f735-4fbc-bec6-0c38f7e18a0d": { + "discriminator": "Elements.ViewScope", + "Bounding Box": { + "discriminator": "Elements.Geometry.BBox3", + "Min": { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 12.2 + }, + "Max": { + "X": 30.0, + "Y": 0.0, + "Z": 18.9999 + } + }, + "Camera": { + "discriminator": "Elements.Camera", + "angle": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "named_position": "top", + "projection": "orthographic" + }, + "Inclusive": true, + "Id": "1861a342-f735-4fbc-bec6-0c38f7e18a0d", + "Name": "Penthouse" + }, + "fc68d63c-e9a5-44f6-b410-af2b42eb9e74": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "fc68d63c-e9a5-44f6-b410-af2b42eb9e74", + "Name": null + }, + "e56268a9-d57e-41e2-87c0-367b202bd720": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -60.0, + "Z": 0.0 + }, + { + "X": 30.0, + "Y": -30.0, + "Z": 0.0 + }, + { + "X": 10.0, + "Y": 0.0, + "Z": 0.0 + }, + { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "e56268a9-d57e-41e2-87c0-367b202bd720", + "Name": null + }, + "5382e5c8-a0fc-46f0-aaae-15586fa677fd": { + "discriminator": "Elements.LevelVolume", + "Profile": "fc68d63c-e9a5-44f6-b410-af2b42eb9e74", + "Height": 7.800000000000001, + "Area": 1500.0000000000005, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Material": "3a088b37-46ad-4e14-bd29-720a75330a59", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "e56268a9-d57e-41e2-87c0-367b202bd720", + "Height": 7.799900000000001, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "5382e5c8-a0fc-46f0-aaae-15586fa677fd", + "Name": "Penthouse", + "Plan View": "1861a342-f735-4fbc-bec6-0c38f7e18a0d" + }, + "6771e26c-6d64-4c0e-962c-018166d01dfd": { + "discriminator": "Elements.Material", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 1.0 + }, + "SpecularFactor": 0.800000011920929, + "GlossinessFactor": 0.5, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "EdgeDisplaySettings": null, + "Id": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Name": "panel" + }, + "c47b651a-0ac0-4b76-a847-bdde1a073d17": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.0014142135623731059, + "Y": 0.009899494936611663, + "Z": 0.0 + }, + { + "X": 0.5485857864376311, + "Y": 0.009899494936611663, + "Z": 0.0 + }, + { + "X": 0.5485857864376311, + "Y": 3.840100505063388, + "Z": 0.0 + }, + { + "X": 0.0014142135623731059, + "Y": 3.840100505063388, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "c47b651a-0ac0-4b76-a847-bdde1a073d17", + "Name": null + }, + "f8950a85-67a1-4d0e-b71a-3dad11a889fc": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + -1.0658141036401503E-14, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "c47b651a-0ac0-4b76-a847-bdde1a073d17", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f8950a85-67a1-4d0e-b71a-3dad11a889fc", + "Name": "FP_1_0" + }, + "906e8bc7-2847-4c8c-82df-4f4ed1d33090": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.004039326788379083, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 3.8408521128616115, + "Z": 0.0 + }, + { + "X": 0.004039326788379083, + "Y": 3.8408521128616115, + "Z": 0.0 + } + ] + }, + "Voids": [ + { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + } + ], + "Id": "906e8bc7-2847-4c8c-82df-4f4ed1d33090", + "Name": null + }, + "06319917-282e-4212-9488-b7a24f5360ab": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.5499999999999936, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "906e8bc7-2847-4c8c-82df-4f4ed1d33090", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "06319917-282e-4212-9488-b7a24f5360ab", + "Name": "FP_1" + }, + "6d255750-badf-48df-940f-c20cf683aedd": { + "discriminator": "Elements.Material", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.7 + }, + "SpecularFactor": 0.800000011920929, + "GlossinessFactor": 1.0, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "EdgeDisplaySettings": null, + "Id": "6d255750-badf-48df-940f-c20cf683aedd", + "Name": "Glazing" + }, + "931b54f2-081d-46ff-926e-ad9f8a0ed196": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.5499999999999936, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6d255750-badf-48df-940f-c20cf683aedd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Name": null + }, + "cb0a9a3d-8cdb-4dd2-9562-ae567db59400": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.5499999999999936, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "cb0a9a3d-8cdb-4dd2-9562-ae567db59400", + "Name": "FP_1_1" + }, + "93053083-85d5-43d5-8061-86e596552218": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.5499999999999936, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "93053083-85d5-43d5-8061-86e596552218", + "Name": "FG_1_1" + }, + "fe7162e6-39e4-45a4-81e6-bfe02e642a1b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 2.249999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "fe7162e6-39e4-45a4-81e6-bfe02e642a1b", + "Name": "FP_1_2" + }, + "78043bf8-3424-4251-9add-61a2ecffdb90": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 2.249999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "78043bf8-3424-4251-9add-61a2ecffdb90", + "Name": "FG_1_2" + }, + "7cc63ff2-ae64-461e-8821-f63175ff7377": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 3.949999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "7cc63ff2-ae64-461e-8821-f63175ff7377", + "Name": "FP_1_3" + }, + "56a43179-0a6d-46be-bbd9-ec90544edae6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 3.949999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "56a43179-0a6d-46be-bbd9-ec90544edae6", + "Name": "FG_1_3" + }, + "e388f552-f508-4404-9438-a7789f6c1b25": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 5.649999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "e388f552-f508-4404-9438-a7789f6c1b25", + "Name": "FP_1_4" + }, + "fd1bca60-3527-4184-9793-546750104775": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 5.649999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "fd1bca60-3527-4184-9793-546750104775", + "Name": "FG_1_4" + }, + "f0d21d9d-ae74-4b31-9f22-2b9d75b4984d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 7.349999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "f0d21d9d-ae74-4b31-9f22-2b9d75b4984d", + "Name": "FP_1_5" + }, + "b1912f25-1479-4d03-b1d7-d25533f6d465": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 7.349999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "b1912f25-1479-4d03-b1d7-d25533f6d465", + "Name": "FG_1_5" + }, + "9f593865-f103-49e6-b728-f78a18f12ec3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.049999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "9f593865-f103-49e6-b728-f78a18f12ec3", + "Name": "FP_1_6" + }, + "75b6be77-0504-4953-a0bd-8aee73d7d941": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.049999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "75b6be77-0504-4953-a0bd-8aee73d7d941", + "Name": "FG_1_6" + }, + "28eec4d3-1e62-43ef-a522-29bb4c2e5120": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 10.749999999999995, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "28eec4d3-1e62-43ef-a522-29bb4c2e5120", + "Name": "FP_1_7" + }, + "a54c6903-3673-4c37-a645-21309e3c85d1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 10.749999999999995, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "a54c6903-3673-4c37-a645-21309e3c85d1", + "Name": "FG_1_7" + }, + "82ae069a-e5ac-4281-8af1-5187f7364c95": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 12.449999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "82ae069a-e5ac-4281-8af1-5187f7364c95", + "Name": "FP_1_8" + }, + "7ed89d00-2529-4008-8662-1b63cbe5fd15": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 12.449999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "7ed89d00-2529-4008-8662-1b63cbe5fd15", + "Name": "FG_1_8" + }, + "678abb40-0927-4521-a3bd-3ded535a5fd9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 14.149999999999995, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "678abb40-0927-4521-a3bd-3ded535a5fd9", + "Name": "FP_1_9" + }, + "046fdc20-8d49-482e-8e47-ad672909c354": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 14.149999999999995, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "046fdc20-8d49-482e-8e47-ad672909c354", + "Name": "FG_1_9" + }, + "a4f1b793-0e65-4849-b091-26d5286ce4d2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 15.849999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "a4f1b793-0e65-4849-b091-26d5286ce4d2", + "Name": "FP_1_10" + }, + "e8191292-a465-45ad-a6ce-278271695ab6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 15.849999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "e8191292-a465-45ad-a6ce-278271695ab6", + "Name": "FG_1_10" + }, + "900639ea-fef3-4824-ba3e-1e3b23b826d7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 17.549999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "900639ea-fef3-4824-ba3e-1e3b23b826d7", + "Name": "FP_1_11" + }, + "e7de7303-5ab9-450b-bc7b-6d19bc8f9bc9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 17.549999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "e7de7303-5ab9-450b-bc7b-6d19bc8f9bc9", + "Name": "FG_1_11" + }, + "ec3ac7ca-58d0-4efc-b70d-51d4925748f4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 19.249999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "ec3ac7ca-58d0-4efc-b70d-51d4925748f4", + "Name": "FP_1_12" + }, + "9ce3b453-218c-4e6c-9165-3190abc77f9a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 19.249999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "9ce3b453-218c-4e6c-9165-3190abc77f9a", + "Name": "FG_1_12" + }, + "d4574e56-f4d7-4134-bfd1-4521b31d2b49": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 20.949999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "d4574e56-f4d7-4134-bfd1-4521b31d2b49", + "Name": "FP_1_13" + }, + "cae32929-d8f9-46f1-9830-0455d3f2ce9f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 20.949999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "cae32929-d8f9-46f1-9830-0455d3f2ce9f", + "Name": "FG_1_13" + }, + "2805a18f-9023-46cc-9e8b-5662b18aba45": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 22.649999999999995, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "2805a18f-9023-46cc-9e8b-5662b18aba45", + "Name": "FP_1_14" + }, + "1d10978e-841c-4592-8e35-1986f279276f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 22.649999999999995, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "1d10978e-841c-4592-8e35-1986f279276f", + "Name": "FG_1_14" + }, + "ed9d9f3d-2c28-463e-827a-ea2ce81b6047": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 24.349999999999998, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "ed9d9f3d-2c28-463e-827a-ea2ce81b6047", + "Name": "FP_1_15" + }, + "6c81f118-9b00-40d7-affd-25c04e6f0fe9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 24.349999999999998, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "6c81f118-9b00-40d7-affd-25c04e6f0fe9", + "Name": "FG_1_15" + }, + "63ae5fe7-266d-4027-99ca-69f493f7387a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 26.049999999999997, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "63ae5fe7-266d-4027-99ca-69f493f7387a", + "Name": "FP_1_16" + }, + "dcd438d0-34ee-4deb-99d6-83bfe1305410": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 26.049999999999997, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "dcd438d0-34ee-4deb-99d6-83bfe1305410", + "Name": "FG_1_16" + }, + "743f4f34-c559-4260-a8a6-2d2b56173645": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "06319917-282e-4212-9488-b7a24f5360ab", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 27.749999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "743f4f34-c559-4260-a8a6-2d2b56173645", + "Name": "FP_1_17" + }, + "e27313d9-a024-4d02-a5c9-e83477d0db3f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "931b54f2-081d-46ff-926e-ad9f8a0ed196", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 27.749999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "e27313d9-a024-4d02-a5c9-e83477d0db3f", + "Name": "FG_1_17" + }, + "ede1f5a4-1af2-4dbe-a3d1-aea74a0b01cc": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.0014142135623731059, + "Y": 0.009899494936611663, + "Z": 0.0 + }, + { + "X": 0.5485857864376311, + "Y": 0.009899494936611663, + "Z": 0.0 + }, + { + "X": 0.5485857864376311, + "Y": 3.840100505063388, + "Z": 0.0 + }, + { + "X": 0.0014142135623731059, + "Y": 3.840100505063388, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ede1f5a4-1af2-4dbe-a3d1-aea74a0b01cc", + "Name": null + }, + "839093fa-79a1-4bb2-b47e-80b31e669032": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 29.449999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "ede1f5a4-1af2-4dbe-a3d1-aea74a0b01cc", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "839093fa-79a1-4bb2-b47e-80b31e669032", + "Name": "FP_1_18" + }, + "be847250-9c1a-4719-a377-a33f8ab5d42b": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.0014142135623730879, + "Y": 0.009899494936611667, + "Z": 0.0 + }, + { + "X": 0.5485857864376241, + "Y": 0.009899494936611667, + "Z": 0.0 + }, + { + "X": 0.5485857864376241, + "Y": 3.840100505063388, + "Z": 0.0 + }, + { + "X": 0.0014142135623730879, + "Y": 3.840100505063388, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "be847250-9c1a-4719-a377-a33f8ab5d42b", + "Name": null + }, + "42eb2824-6fb3-4328-9cfa-8d1610e2a3a4": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -60.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "be847250-9c1a-4719-a377-a33f8ab5d42b", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "42eb2824-6fb3-4328-9cfa-8d1610e2a3a4", + "Name": "FP_1_0" + }, + "4a183951-1962-478d-869b-60bbf6ecd5a0": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.004039326788379083, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 3.8408521128616115, + "Z": 0.0 + }, + { + "X": 0.004039326788379083, + "Y": 3.8408521128616115, + "Z": 0.0 + } + ] + }, + "Voids": [ + { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + } + ], + "Id": "4a183951-1962-478d-869b-60bbf6ecd5a0", + "Name": null + }, + "3d4426ba-b64e-45cf-aec7-1176c3c98719": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -59.45, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "4a183951-1962-478d-869b-60bbf6ecd5a0", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Name": "FP_1" + }, + "3ef6d442-9d82-4633-a4a5-1036eacb1c59": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -59.45, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6d255750-badf-48df-940f-c20cf683aedd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Name": null + }, + "e98862d8-9444-4af2-b75f-ffd8a4661abe": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -59.45, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "e98862d8-9444-4af2-b75f-ffd8a4661abe", + "Name": "FP_1_1" + }, + "74f8d08d-3812-4d50-b0b9-4d1860ed7f9f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -59.45, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "74f8d08d-3812-4d50-b0b9-4d1860ed7f9f", + "Name": "FG_1_1" + }, + "268c9ed9-5798-4e55-b6fd-36f4fd41aff2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -57.75, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "268c9ed9-5798-4e55-b6fd-36f4fd41aff2", + "Name": "FP_1_2" + }, + "dec24cb8-ce3c-49ab-9b79-0a178a77ad00": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -57.75, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "dec24cb8-ce3c-49ab-9b79-0a178a77ad00", + "Name": "FG_1_2" + }, + "1e778c9b-3670-4fa8-b603-d98cc9fa1699": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -56.050000000000004, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "1e778c9b-3670-4fa8-b603-d98cc9fa1699", + "Name": "FP_1_3" + }, + "f055eff3-d0a4-4ce7-90ac-5133712bd288": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -56.050000000000004, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "f055eff3-d0a4-4ce7-90ac-5133712bd288", + "Name": "FG_1_3" + }, + "3fe77381-f738-45a2-8954-b5bb25dee64e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -54.35, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "3fe77381-f738-45a2-8954-b5bb25dee64e", + "Name": "FP_1_4" + }, + "092af80a-0134-495d-870e-b9ccf99b84b1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -54.35, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "092af80a-0134-495d-870e-b9ccf99b84b1", + "Name": "FG_1_4" + }, + "e1a7c69e-cb72-4a0e-a543-a8f4617adfd1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -52.650000000000006, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "e1a7c69e-cb72-4a0e-a543-a8f4617adfd1", + "Name": "FP_1_5" + }, + "f3ddc507-f3f2-4d51-996c-ba170ca9bc68": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -52.650000000000006, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "f3ddc507-f3f2-4d51-996c-ba170ca9bc68", + "Name": "FG_1_5" + }, + "f39905ef-3722-46b8-bc48-3364b5238df6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -50.95, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "f39905ef-3722-46b8-bc48-3364b5238df6", + "Name": "FP_1_6" + }, + "03690d8a-aa6b-494c-9724-697e335d3633": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -50.95, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "03690d8a-aa6b-494c-9724-697e335d3633", + "Name": "FG_1_6" + }, + "095161c4-af60-4037-886f-d524c88cd3ac": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -49.25, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "095161c4-af60-4037-886f-d524c88cd3ac", + "Name": "FP_1_7" + }, + "aa006dc7-5af9-4e8e-92e7-fc0485426c83": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -49.25, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "aa006dc7-5af9-4e8e-92e7-fc0485426c83", + "Name": "FG_1_7" + }, + "c65253c8-7e15-470c-8fe5-4546b68d97c5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -47.55, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "c65253c8-7e15-470c-8fe5-4546b68d97c5", + "Name": "FP_1_8" + }, + "a35e3f90-89d5-4e8f-ba7c-d1278b3c9d4a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -47.55, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "a35e3f90-89d5-4e8f-ba7c-d1278b3c9d4a", + "Name": "FG_1_8" + }, + "9c554f8e-83d5-4e68-97d3-28e1dac678f0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -45.85, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "9c554f8e-83d5-4e68-97d3-28e1dac678f0", + "Name": "FP_1_9" + }, + "f3fd129f-a763-49b6-ab3f-c8a8ad5a74bb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -45.85, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "f3fd129f-a763-49b6-ab3f-c8a8ad5a74bb", + "Name": "FG_1_9" + }, + "b30088c5-18c2-4f31-893f-62096f57f4d9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -44.150000000000006, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "b30088c5-18c2-4f31-893f-62096f57f4d9", + "Name": "FP_1_10" + }, + "30ff4c33-14a0-4cac-a4ba-6264ccab4090": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -44.150000000000006, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "30ff4c33-14a0-4cac-a4ba-6264ccab4090", + "Name": "FG_1_10" + }, + "90e07bf5-4d42-4f82-bbcf-8962234f0367": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -42.45, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "90e07bf5-4d42-4f82-bbcf-8962234f0367", + "Name": "FP_1_11" + }, + "3f9c5ea8-0eef-42b5-8051-ac606d0374aa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -42.45, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "3f9c5ea8-0eef-42b5-8051-ac606d0374aa", + "Name": "FG_1_11" + }, + "107d58a9-3a5b-4fa4-b8c5-ce4270a1e739": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -40.75, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "107d58a9-3a5b-4fa4-b8c5-ce4270a1e739", + "Name": "FP_1_12" + }, + "52f5f081-f188-4fc6-986f-8352469fe346": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -40.75, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "52f5f081-f188-4fc6-986f-8352469fe346", + "Name": "FG_1_12" + }, + "99f2f5e1-3e9a-49e0-a61b-5a777b3294c3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -39.05, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "99f2f5e1-3e9a-49e0-a61b-5a777b3294c3", + "Name": "FP_1_13" + }, + "1f10033d-8be2-415d-9ca8-98b92dafd859": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -39.05, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "1f10033d-8be2-415d-9ca8-98b92dafd859", + "Name": "FG_1_13" + }, + "336cc1f8-a0ab-44a8-8968-8195d844c396": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -37.35, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "336cc1f8-a0ab-44a8-8968-8195d844c396", + "Name": "FP_1_14" + }, + "40d5641f-0600-4ad8-8b7f-65cc12db4d2c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -37.35, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "40d5641f-0600-4ad8-8b7f-65cc12db4d2c", + "Name": "FG_1_14" + }, + "4f861061-cd6b-4957-8726-4e038c6e663a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -35.65, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "4f861061-cd6b-4957-8726-4e038c6e663a", + "Name": "FP_1_15" + }, + "83f465f9-9ff5-4607-bee8-9f7c57f78ee6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -35.65, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "83f465f9-9ff5-4607-bee8-9f7c57f78ee6", + "Name": "FG_1_15" + }, + "30bf048f-80f3-4a45-8055-49176397188a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -33.95, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "30bf048f-80f3-4a45-8055-49176397188a", + "Name": "FP_1_16" + }, + "8ac79010-6df0-4212-b174-9a5928651ee2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -33.95, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "8ac79010-6df0-4212-b174-9a5928651ee2", + "Name": "FG_1_16" + }, + "87e78028-232e-4839-8c8a-d09b0f30bc81": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3d4426ba-b64e-45cf-aec7-1176c3c98719", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -32.25, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "87e78028-232e-4839-8c8a-d09b0f30bc81", + "Name": "FP_1_17" + }, + "233cbfe1-540c-41bb-b948-bf823e73f636": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3ef6d442-9d82-4633-a4a5-1036eacb1c59", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -32.25, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "233cbfe1-540c-41bb-b948-bf823e73f636", + "Name": "FG_1_17" + }, + "5342297d-7ade-4b3a-b780-3f53cbea1e5b": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.0014142135623730879, + "Y": 0.009899494936611667, + "Z": 0.0 + }, + { + "X": 0.5485857864376241, + "Y": 0.009899494936611667, + "Z": 0.0 + }, + { + "X": 0.5485857864376241, + "Y": 3.840100505063388, + "Z": 0.0 + }, + { + "X": 0.0014142135623730879, + "Y": 3.840100505063388, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "5342297d-7ade-4b3a-b780-3f53cbea1e5b", + "Name": null + }, + "076a535e-d209-4cb0-b3f1-162cb08aab66": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -30.549999999999997, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "5342297d-7ade-4b3a-b780-3f53cbea1e5b", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "076a535e-d209-4cb0-b3f1-162cb08aab66", + "Name": "FP_1_18" + }, + "4e8b2071-9d49-47c8-832b-48df23a28b1d": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.00046121355018386746, + "Y": 0.009989358440917353, + "Z": 0.0 + }, + { + "X": 0.17729516376976184, + "Y": 0.009989358440917353, + "Z": 0.0 + }, + { + "X": 0.17729516376976184, + "Y": 3.8400106415590822, + "Z": 0.0 + }, + { + "X": 0.00046121355018386746, + "Y": 3.8400106415590822, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "4e8b2071-9d49-47c8-832b-48df23a28b1d", + "Name": null + }, + "b456aeb6-7a4e-4fa9-8f18-1e7913ce8f7d": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 30.0, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -30.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "4e8b2071-9d49-47c8-832b-48df23a28b1d", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "b456aeb6-7a4e-4fa9-8f18-1e7913ce8f7d", + "Name": "FP_1_0" + }, + "5c514df7-2877-4f81-8898-f429342f589c": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.004039326788379083, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 3.8408521128616115, + "Z": 0.0 + }, + { + "X": 0.004039326788379083, + "Y": 3.8408521128616115, + "Z": 0.0 + } + ] + }, + "Voids": [ + { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + } + ], + "Id": "5c514df7-2877-4f81-8898-f429342f589c", + "Name": null + }, + "39012c42-5bc1-4f70-8625-fbcb6ded8b43": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 29.90139850262034, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -29.85209775393051, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "5c514df7-2877-4f81-8898-f429342f589c", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Name": "FP_1" + }, + "4532e939-5a9b-45a7-962e-faee9617610a": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 29.90139850262034, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -29.85209775393051, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6d255750-badf-48df-940f-c20cf683aedd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "4532e939-5a9b-45a7-962e-faee9617610a", + "Name": null + }, + "497ccd33-e3ec-471c-a0a1-aa5405183cdf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 29.90139850262034, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -29.85209775393051, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "497ccd33-e3ec-471c-a0a1-aa5405183cdf", + "Name": "FP_1_1" + }, + "6be12d68-5c5f-4582-b0a2-ccc388149ab0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 29.90139850262034, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -29.85209775393051, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "6be12d68-5c5f-4582-b0a2-ccc388149ab0", + "Name": "FG_1_1" + }, + "4b66d4e4-c76c-4a45-be6e-4a3ec435ecc0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 28.958408169037448, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -28.43761225355618, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "4b66d4e4-c76c-4a45-be6e-4a3ec435ecc0", + "Name": "FP_1_2" + }, + "548bc86b-6132-4298-bf9f-e159d1e9a226": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 28.958408169037448, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -28.43761225355618, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "548bc86b-6132-4298-bf9f-e159d1e9a226", + "Name": "FG_1_2" + }, + "24286e57-95dc-4fea-8d12-b68b15a67d53": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 28.01541783545456, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -27.02312675318184, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "24286e57-95dc-4fea-8d12-b68b15a67d53", + "Name": "FP_1_3" + }, + "9de1ff26-46ab-44cf-b7ab-b6816257f357": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 28.01541783545456, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -27.02312675318184, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "9de1ff26-46ab-44cf-b7ab-b6816257f357", + "Name": "FG_1_3" + }, + "a7ae8722-317e-460a-a4fd-6025acc2f39b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 27.07242750187167, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -25.60864125280751, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "a7ae8722-317e-460a-a4fd-6025acc2f39b", + "Name": "FP_1_4" + }, + "975397a0-a0d6-4e6e-bcb9-c237b55f0e5a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 27.07242750187167, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -25.60864125280751, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "975397a0-a0d6-4e6e-bcb9-c237b55f0e5a", + "Name": "FG_1_4" + }, + "11227235-5570-4fd0-ad43-418dcb5d4e13": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 26.12943716828878, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -24.194155752433176, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "11227235-5570-4fd0-ad43-418dcb5d4e13", + "Name": "FP_1_5" + }, + "e6cd6743-d143-450c-b24c-a8fa110173cb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 26.12943716828878, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -24.194155752433176, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "e6cd6743-d143-450c-b24c-a8fa110173cb", + "Name": "FG_1_5" + }, + "b866d391-759a-4107-bce1-6690074ec0f8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 25.18644683470589, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -22.77967025205884, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "b866d391-759a-4107-bce1-6690074ec0f8", + "Name": "FP_1_6" + }, + "300ce9a2-bf2c-480d-bf8c-8a77e252e186": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 25.18644683470589, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -22.77967025205884, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "300ce9a2-bf2c-480d-bf8c-8a77e252e186", + "Name": "FG_1_6" + }, + "73298113-cc50-4969-b10d-f4c5152e4699": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 24.243456501123, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -21.365184751684502, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "73298113-cc50-4969-b10d-f4c5152e4699", + "Name": "FP_1_7" + }, + "2834b881-cd36-4f9d-b13e-6fc91fb85f9e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 24.243456501123, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -21.365184751684502, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "2834b881-cd36-4f9d-b13e-6fc91fb85f9e", + "Name": "FG_1_7" + }, + "8dee3b31-1721-4446-86e9-3c41e340e591": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 23.30046616754011, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -19.95069925131017, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "8dee3b31-1721-4446-86e9-3c41e340e591", + "Name": "FP_1_8" + }, + "e58885fa-0c0d-42ff-8b37-6e342b6c6fb9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 23.30046616754011, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -19.95069925131017, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "e58885fa-0c0d-42ff-8b37-6e342b6c6fb9", + "Name": "FG_1_8" + }, + "7b1d5343-c925-4d18-a17a-e80c23a866d7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 22.35747583395722, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -18.536213750935836, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "7b1d5343-c925-4d18-a17a-e80c23a866d7", + "Name": "FP_1_9" + }, + "50a33b6c-ce11-472c-97ce-a5af939dbda2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 22.35747583395722, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -18.536213750935836, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "50a33b6c-ce11-472c-97ce-a5af939dbda2", + "Name": "FG_1_9" + }, + "baebb40e-2c09-47e6-ba1e-8ac32c73af3c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 21.414485500374333, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -17.121728250561503, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "baebb40e-2c09-47e6-ba1e-8ac32c73af3c", + "Name": "FP_1_10" + }, + "b0371fad-0ea4-4217-8ec7-dd3b6e0b7e38": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 21.414485500374333, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -17.121728250561503, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "b0371fad-0ea4-4217-8ec7-dd3b6e0b7e38", + "Name": "FG_1_10" + }, + "803446b8-ae2e-4a09-aa30-5bfd1ea08be3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 20.471495166791442, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -15.707242750187168, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "803446b8-ae2e-4a09-aa30-5bfd1ea08be3", + "Name": "FP_1_11" + }, + "aadd6695-e3db-462e-92ed-888e1679eebe": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 20.471495166791442, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -15.707242750187168, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "aadd6695-e3db-462e-92ed-888e1679eebe", + "Name": "FG_1_11" + }, + "20d8c796-b95a-41ae-a5db-9fd43cb65f6c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 19.52850483320855, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -14.292757249812832, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "20d8c796-b95a-41ae-a5db-9fd43cb65f6c", + "Name": "FP_1_12" + }, + "ba4be1b4-d4ae-405d-bbb1-3bdc7f6dc3fc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 19.52850483320855, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -14.292757249812832, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "ba4be1b4-d4ae-405d-bbb1-3bdc7f6dc3fc", + "Name": "FG_1_12" + }, + "90abec15-2def-41f0-989e-a242b9690ad7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 18.585514499625663, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -12.878271749438497, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "90abec15-2def-41f0-989e-a242b9690ad7", + "Name": "FP_1_13" + }, + "6702c390-470f-47bb-9a8b-b47baefdb2a2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 18.585514499625663, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -12.878271749438497, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "6702c390-470f-47bb-9a8b-b47baefdb2a2", + "Name": "FG_1_13" + }, + "26401f21-9651-4cc3-bba2-7c5c689fb2ce": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 17.642524166042776, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -11.463786249064164, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "26401f21-9651-4cc3-bba2-7c5c689fb2ce", + "Name": "FP_1_14" + }, + "a83f44d3-feee-4170-9871-6f83b6a4ca81": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 17.642524166042776, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -11.463786249064164, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "a83f44d3-feee-4170-9871-6f83b6a4ca81", + "Name": "FG_1_14" + }, + "e7b6ab3d-78f4-420e-a870-cb4b197cdc90": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 16.699533832459885, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -10.049300748689827, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "e7b6ab3d-78f4-420e-a870-cb4b197cdc90", + "Name": "FP_1_15" + }, + "5f8b02c4-8a49-40dc-a51e-b24ca53a814d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 16.699533832459885, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -10.049300748689827, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "5f8b02c4-8a49-40dc-a51e-b24ca53a814d", + "Name": "FG_1_15" + }, + "402d5f7d-e526-40ad-9db8-bab722d27269": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 15.756543498876994, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -8.634815248315494, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "402d5f7d-e526-40ad-9db8-bab722d27269", + "Name": "FP_1_16" + }, + "c6c2be81-0564-4fd6-80ff-0ff5d0e8da91": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 15.756543498876994, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -8.634815248315494, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "c6c2be81-0564-4fd6-80ff-0ff5d0e8da91", + "Name": "FG_1_16" + }, + "7e24dfad-68af-4ef0-a804-3181c109eb3f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 14.813553165294104, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -7.220329747941161, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "7e24dfad-68af-4ef0-a804-3181c109eb3f", + "Name": "FP_1_17" + }, + "b6f98dda-d0e0-4afa-a7ba-d514be6f591d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 14.813553165294104, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -7.220329747941161, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "b6f98dda-d0e0-4afa-a7ba-d514be6f591d", + "Name": "FG_1_17" + }, + "b68539ce-86ce-40c8-9d01-480a870a8e7a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 13.870562831711215, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -5.805844247566824, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "b68539ce-86ce-40c8-9d01-480a870a8e7a", + "Name": "FP_1_18" + }, + "f8b1b3a7-880f-47ad-b602-3a32d7178469": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 13.870562831711215, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -5.805844247566824, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "f8b1b3a7-880f-47ad-b602-3a32d7178469", + "Name": "FG_1_18" + }, + "f10be33a-e74d-4d2e-931d-d85415d20d27": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 12.927572498128328, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -4.391358747192491, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "f10be33a-e74d-4d2e-931d-d85415d20d27", + "Name": "FP_1_19" + }, + "889b9025-5338-416b-8072-b48ab0efe083": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 12.927572498128328, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -4.391358747192491, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "889b9025-5338-416b-8072-b48ab0efe083", + "Name": "FG_1_19" + }, + "acb36dfe-8e4c-4431-97fb-2eb4419550f4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 11.984582164545436, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -2.9768732468181547, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "acb36dfe-8e4c-4431-97fb-2eb4419550f4", + "Name": "FP_1_20" + }, + "40179770-f1d5-4869-834b-2e3095300f60": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 11.984582164545436, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -2.9768732468181547, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "40179770-f1d5-4869-834b-2e3095300f60", + "Name": "FG_1_20" + }, + "4a2933c0-d3c3-4544-b6dd-f2ff54491dbc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39012c42-5bc1-4f70-8625-fbcb6ded8b43", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 11.041591830962549, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -1.5623877464438252, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "4a2933c0-d3c3-4544-b6dd-f2ff54491dbc", + "Name": "FP_1_21" + }, + "a77a4234-be74-4d21-a884-284dc8e782a4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4532e939-5a9b-45a7-962e-faee9617610a", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 11.041591830962549, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -1.5623877464438252, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "a77a4234-be74-4d21-a884-284dc8e782a4", + "Name": "FG_1_21" + }, + "3e2bed90-fa20-4fa2-ad1e-78da208fb6da": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.00046121355018386497, + "Y": 0.009989358440917353, + "Z": 0.0 + }, + { + "X": 0.17729516376976087, + "Y": 0.009989358440917353, + "Z": 0.0 + }, + { + "X": 0.17729516376976087, + "Y": 3.8400106415590822, + "Z": 0.0 + }, + { + "X": 0.00046121355018386497, + "Y": 3.8400106415590822, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "3e2bed90-fa20-4fa2-ad1e-78da208fb6da", + "Name": null + }, + "57d67d71-82c8-4069-99a4-5af2a2a6e5aa": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 10.09860149737966, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -0.14790224606948854, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "3e2bed90-fa20-4fa2-ad1e-78da208fb6da", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "57d67d71-82c8-4069-99a4-5af2a2a6e5aa", + "Name": "FP_1_22" + }, + "7f55ecce-2d3c-43c1-8008-81bd5c2e98e7": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.0019121084163914713, + "Y": 0.009815489870809551, + "Z": 0.0 + }, + { + "X": 0.7480878915836086, + "Y": 0.009815489870809551, + "Z": 0.0 + }, + { + "X": 0.7480878915836086, + "Y": 3.8401845101291903, + "Z": 0.0 + }, + { + "X": 0.0019121084163914713, + "Y": 3.8401845101291903, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "7f55ecce-2d3c-43c1-8008-81bd5c2e98e7", + "Name": null + }, + "be6e4ebf-ff7d-4543-8feb-4d2b990338c3": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 10.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "7f55ecce-2d3c-43c1-8008-81bd5c2e98e7", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "be6e4ebf-ff7d-4543-8feb-4d2b990338c3", + "Name": "FP_1_0" + }, + "60d4c307-dd35-4b33-b1e2-f4dba17a6ce7": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.004039326788379083, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 3.8408521128616115, + "Z": 0.0 + }, + { + "X": 0.004039326788379083, + "Y": 3.8408521128616115, + "Z": 0.0 + } + ] + }, + "Voids": [ + { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + } + ], + "Id": "60d4c307-dd35-4b33-b1e2-f4dba17a6ce7", + "Name": null + }, + "f9f98ec1-f9db-43e9-98a9-614f21463575": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.25, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "60d4c307-dd35-4b33-b1e2-f4dba17a6ce7", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "f9f98ec1-f9db-43e9-98a9-614f21463575", + "Name": "FP_1" + }, + "3c6a7973-c49e-4a15-8609-ea146c9713a4": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.25, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6d255750-badf-48df-940f-c20cf683aedd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "3c6a7973-c49e-4a15-8609-ea146c9713a4", + "Name": null + }, + "a94c5fe3-a7a8-43d3-89b1-9c409a290aa3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "f9f98ec1-f9db-43e9-98a9-614f21463575", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.25, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "a94c5fe3-a7a8-43d3-89b1-9c409a290aa3", + "Name": "FP_1_1" + }, + "55745c7a-5a9f-47fd-9d5f-75967d1f448a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3c6a7973-c49e-4a15-8609-ea146c9713a4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.25, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "55745c7a-5a9f-47fd-9d5f-75967d1f448a", + "Name": "FG_1_1" + }, + "688f4a12-e8d6-45a2-935c-cfafb2759437": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "f9f98ec1-f9db-43e9-98a9-614f21463575", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 7.55, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "688f4a12-e8d6-45a2-935c-cfafb2759437", + "Name": "FP_1_2" + }, + "6506feaf-cf93-4f3a-a562-d09002760e59": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3c6a7973-c49e-4a15-8609-ea146c9713a4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 7.55, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "6506feaf-cf93-4f3a-a562-d09002760e59", + "Name": "FG_1_2" + }, + "1d4122bb-1e07-46e3-beaa-fdb079e59c61": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "f9f98ec1-f9db-43e9-98a9-614f21463575", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 5.85, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "1d4122bb-1e07-46e3-beaa-fdb079e59c61", + "Name": "FP_1_3" + }, + "13181a29-3837-45b4-94ed-10a42deb744f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3c6a7973-c49e-4a15-8609-ea146c9713a4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 5.85, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "13181a29-3837-45b4-94ed-10a42deb744f", + "Name": "FG_1_3" + }, + "c4648627-428d-4c43-8d69-4b2b23a05d3e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "f9f98ec1-f9db-43e9-98a9-614f21463575", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 4.1499999999999995, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "c4648627-428d-4c43-8d69-4b2b23a05d3e", + "Name": "FP_1_4" + }, + "464a5ddf-7f2e-4293-ba7d-680f50359ec6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3c6a7973-c49e-4a15-8609-ea146c9713a4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 4.1499999999999995, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "464a5ddf-7f2e-4293-ba7d-680f50359ec6", + "Name": "FG_1_4" + }, + "2fd955b9-6626-4474-93fe-3addd165fc57": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "f9f98ec1-f9db-43e9-98a9-614f21463575", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.4499999999999993, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "2fd955b9-6626-4474-93fe-3addd165fc57", + "Name": "FP_1_5" + }, + "d6336dfc-5372-4f96-824a-86ec24d0967d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3c6a7973-c49e-4a15-8609-ea146c9713a4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.4499999999999993, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "d6336dfc-5372-4f96-824a-86ec24d0967d", + "Name": "FG_1_5" + }, + "d85420a1-1ef7-40e3-8965-e57e41550732": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.0019121084163914713, + "Y": 0.009815489870809551, + "Z": 0.0 + }, + { + "X": 0.7480878915836086, + "Y": 0.009815489870809551, + "Z": 0.0 + }, + { + "X": 0.7480878915836086, + "Y": 3.8401845101291903, + "Z": 0.0 + }, + { + "X": 0.0019121084163914713, + "Y": 3.8401845101291903, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "d85420a1-1ef7-40e3-8965-e57e41550732", + "Name": null + }, + "43f4ee8d-6071-4b78-8060-c9de6b4837a5": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 0.75, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "d85420a1-1ef7-40e3-8965-e57e41550732", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "43f4ee8d-6071-4b78-8060-c9de6b4837a5", + "Name": "FP_1_6" + }, + "6b1acc50-fad0-4260-998a-c204920346cc": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.000647985949743371, + "Y": 0.009978983626048056, + "Z": 0.0 + }, + { + "X": 0.2493520140502531, + "Y": 0.009978983626048056, + "Z": 0.0 + }, + { + "X": 0.2493520140502531, + "Y": 3.8400210163739517, + "Z": 0.0 + }, + { + "X": 0.000647985949743371, + "Y": 3.8400210163739517, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "6b1acc50-fad0-4260-998a-c204920346cc", + "Name": null + }, + "69f0488a-1062-429c-9240-dd95b9f4b143": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + 0.0, + -1.0, + 0.0, + 1.7763568394002506E-16, + 0.0, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "6b1acc50-fad0-4260-998a-c204920346cc", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "69f0488a-1062-429c-9240-dd95b9f4b143", + "Name": "FP_1_0" + }, + "731d5a08-a7cc-48ab-a189-b62fff7f4372": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.004039326788379083, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 3.8408521128616115, + "Z": 0.0 + }, + { + "X": 0.004039326788379083, + "Y": 3.8408521128616115, + "Z": 0.0 + } + ] + }, + "Voids": [ + { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + } + ], + "Id": "731d5a08-a7cc-48ab-a189-b62fff7f4372", + "Name": null + }, + "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.4408920985005315E-17, + -1.0, + 0.0, + 1.7763568394002506E-16, + -0.24999999999999645, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "731d5a08-a7cc-48ab-a189-b62fff7f4372", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Name": "FP_1" + }, + "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.4408920985005315E-17, + -1.0, + 0.0, + 1.7763568394002506E-16, + -0.24999999999999645, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6d255750-badf-48df-940f-c20cf683aedd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Name": null + }, + "4a4224ce-e3c3-485c-bc47-472c195332f1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.4408920985005315E-17, + -1.0, + 0.0, + 1.7763568394002506E-16, + -0.24999999999999645, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "4a4224ce-e3c3-485c-bc47-472c195332f1", + "Name": "FP_1_1" + }, + "69c627fd-2df9-4f8c-af8e-386f12c1c187": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.4408920985005315E-17, + -1.0, + 0.0, + 1.7763568394002506E-16, + -0.24999999999999645, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "69c627fd-2df9-4f8c-af8e-386f12c1c187", + "Name": "FG_1_1" + }, + "069f51b4-96ae-498e-9e52-cffdca9b91ab": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.4638958368304796E-16, + -1.0, + 0.0, + 1.7763568394002506E-16, + -1.9499999999999966, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "069f51b4-96ae-498e-9e52-cffdca9b91ab", + "Name": "FP_1_2" + }, + "94231bed-f7b8-48ff-9185-fd27cd846f0d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.4638958368304796E-16, + -1.0, + 0.0, + 1.7763568394002506E-16, + -1.9499999999999966, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "94231bed-f7b8-48ff-9185-fd27cd846f0d", + "Name": "FG_1_2" + }, + "93f7bf84-8de6-4718-84c3-ab59740b84f7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.483702463810906E-16, + -1.0, + 0.0, + 1.7763568394002506E-16, + -3.649999999999997, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "93f7bf84-8de6-4718-84c3-ab59740b84f7", + "Name": "FP_1_3" + }, + "4750fb32-269e-4e01-a823-d93393776ddb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.483702463810906E-16, + -1.0, + 0.0, + 1.7763568394002506E-16, + -3.649999999999997, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "4750fb32-269e-4e01-a823-d93393776ddb", + "Name": "FG_1_3" + }, + "fcca5bb5-5296-4c1b-bbd7-6c441738f0dd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.503509090791333E-16, + -1.0, + 0.0, + 1.7763568394002506E-16, + -5.349999999999997, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "fcca5bb5-5296-4c1b-bbd7-6c441738f0dd", + "Name": "FP_1_4" + }, + "e538a2c1-9c02-4645-8230-0561ce16a5d8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.503509090791333E-16, + -1.0, + 0.0, + 1.7763568394002506E-16, + -5.349999999999997, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "e538a2c1-9c02-4645-8230-0561ce16a5d8", + "Name": "FG_1_4" + }, + "23e9f34f-b764-4443-a37b-66f787d5073b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.252331571777176E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -7.049999999999997, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "23e9f34f-b764-4443-a37b-66f787d5073b", + "Name": "FP_1_5" + }, + "c018f5ce-0bb2-421e-b4dd-e1f08b582780": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.252331571777176E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -7.049999999999997, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "c018f5ce-0bb2-421e-b4dd-e1f08b582780", + "Name": "FG_1_5" + }, + "0cc6f802-51cb-4a76-aec1-5fd4d96d2a23": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.5543122344752184E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -8.749999999999996, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "0cc6f802-51cb-4a76-aec1-5fd4d96d2a23", + "Name": "FP_1_6" + }, + "354104cd-9ef9-4288-a0eb-8df53fabcc22": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.5543122344752184E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -8.749999999999996, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "354104cd-9ef9-4288-a0eb-8df53fabcc22", + "Name": "FG_1_6" + }, + "edb2576d-f19d-464f-89f6-317101ca6bd8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.8562928971732612E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -10.449999999999998, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "edb2576d-f19d-464f-89f6-317101ca6bd8", + "Name": "FP_1_7" + }, + "b322d77b-6437-40cd-8fea-50de582db7a5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.8562928971732612E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -10.449999999999998, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "b322d77b-6437-40cd-8fea-50de582db7a5", + "Name": "FG_1_7" + }, + "2317ff04-c481-4c72-8771-4decbaeb5c34": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -2.1582735598713037E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -12.149999999999999, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "2317ff04-c481-4c72-8771-4decbaeb5c34", + "Name": "FP_1_8" + }, + "26204908-e1c3-4aab-8b05-6b9739dfd833": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -2.1582735598713037E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -12.149999999999999, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "26204908-e1c3-4aab-8b05-6b9739dfd833", + "Name": "FG_1_8" + }, + "f1aceed9-a325-44a1-b534-c8836e3caddb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -2.4602542225693465E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -13.849999999999998, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "f1aceed9-a325-44a1-b534-c8836e3caddb", + "Name": "FP_1_9" + }, + "3bf5bd9c-ea84-4709-af7a-04499b2cba89": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -2.4602542225693465E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -13.849999999999998, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "3bf5bd9c-ea84-4709-af7a-04499b2cba89", + "Name": "FG_1_9" + }, + "7921389d-debe-481e-95bc-772f177510e2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -2.762234885267389E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -15.549999999999997, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "7921389d-debe-481e-95bc-772f177510e2", + "Name": "FP_1_10" + }, + "c4e66a6c-3450-4fa3-a8da-f45dd8288ba3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -2.762234885267389E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -15.549999999999997, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "c4e66a6c-3450-4fa3-a8da-f45dd8288ba3", + "Name": "FG_1_10" + }, + "6e1f8143-a865-4c5b-a359-6385f55f5eb0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.0642155479654314E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -17.249999999999996, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "6e1f8143-a865-4c5b-a359-6385f55f5eb0", + "Name": "FP_1_11" + }, + "0977783f-83ee-4c7e-9003-09af57c10d3c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.0642155479654314E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -17.249999999999996, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "0977783f-83ee-4c7e-9003-09af57c10d3c", + "Name": "FG_1_11" + }, + "6df3b335-1bfb-4471-be77-bbc2357be886": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.3661962106634743E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -18.95, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "6df3b335-1bfb-4471-be77-bbc2357be886", + "Name": "FP_1_12" + }, + "04701e0e-fd12-40cf-bdcd-208be22cb649": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.3661962106634743E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -18.95, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "04701e0e-fd12-40cf-bdcd-208be22cb649", + "Name": "FG_1_12" + }, + "a5bc91d9-f060-4381-912e-52fe44202fbd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.668176873361517E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -20.65, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "a5bc91d9-f060-4381-912e-52fe44202fbd", + "Name": "FP_1_13" + }, + "6f200b4f-3651-4634-beb4-a13b88c7c4d0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.668176873361517E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -20.65, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "6f200b4f-3651-4634-beb4-a13b88c7c4d0", + "Name": "FG_1_13" + }, + "6d084be9-2569-4742-b05f-5305e65578be": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.9701575360595596E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -22.349999999999998, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "6d084be9-2569-4742-b05f-5305e65578be", + "Name": "FP_1_14" + }, + "4256e695-b27a-437e-8554-d73975983775": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.9701575360595596E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -22.349999999999998, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "4256e695-b27a-437e-8554-d73975983775", + "Name": "FG_1_14" + }, + "013b4532-cc0f-40dc-97be-12ff2b42ca7d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.272138198757602E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -24.05, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "013b4532-cc0f-40dc-97be-12ff2b42ca7d", + "Name": "FP_1_15" + }, + "7758587e-29a1-4790-a4cf-d7e7143fec43": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.272138198757602E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -24.05, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "7758587e-29a1-4790-a4cf-d7e7143fec43", + "Name": "FG_1_15" + }, + "2fbdf74f-8352-4b2b-965a-4669860e8fd4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.574118861455645E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -25.75, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "2fbdf74f-8352-4b2b-965a-4669860e8fd4", + "Name": "FP_1_16" + }, + "5641bb5b-054c-48d4-9251-332e4bc13ff1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.574118861455645E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -25.75, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "5641bb5b-054c-48d4-9251-332e4bc13ff1", + "Name": "FG_1_16" + }, + "37827eb9-d3a5-42f9-9b01-6c456ceac0a8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.876099524153688E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -27.45, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "37827eb9-d3a5-42f9-9b01-6c456ceac0a8", + "Name": "FP_1_17" + }, + "680a933d-18d7-4939-bb02-dfab07636bc6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.876099524153688E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -27.45, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "680a933d-18d7-4939-bb02-dfab07636bc6", + "Name": "FG_1_17" + }, + "6e90f972-a86d-485c-b633-d67cba3c902e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -5.17808018685173E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -29.15, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "6e90f972-a86d-485c-b633-d67cba3c902e", + "Name": "FP_1_18" + }, + "8170b21c-9b2c-48a7-ac01-796c7a6a6a85": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -5.17808018685173E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -29.15, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "8170b21c-9b2c-48a7-ac01-796c7a6a6a85", + "Name": "FG_1_18" + }, + "2a8adb55-5ea5-4007-b41f-1164a7bf00ee": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -5.480060849549773E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -30.849999999999998, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "2a8adb55-5ea5-4007-b41f-1164a7bf00ee", + "Name": "FP_1_19" + }, + "3109882c-9b5e-41a7-8efb-0d53bf4d8c55": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -5.480060849549773E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -30.849999999999998, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "3109882c-9b5e-41a7-8efb-0d53bf4d8c55", + "Name": "FG_1_19" + }, + "bc7e7f71-7e5c-4ce6-9f81-830c88ce1daf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -5.782041512247815E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -32.55, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "bc7e7f71-7e5c-4ce6-9f81-830c88ce1daf", + "Name": "FP_1_20" + }, + "f35b7ffc-6523-423f-8ee1-dc28157ed920": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -5.782041512247815E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -32.55, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "f35b7ffc-6523-423f-8ee1-dc28157ed920", + "Name": "FG_1_20" + }, + "5034ee3f-7667-4e95-87cf-c82b0b3dcbd1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.0840221749458575E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -34.25, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "5034ee3f-7667-4e95-87cf-c82b0b3dcbd1", + "Name": "FP_1_21" + }, + "729b19e6-f632-4307-9889-0e8861ae4245": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.0840221749458575E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -34.25, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "729b19e6-f632-4307-9889-0e8861ae4245", + "Name": "FG_1_21" + }, + "9de58134-021d-41ae-83c3-2932bd0c9c70": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.3860028376439E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -35.95, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "9de58134-021d-41ae-83c3-2932bd0c9c70", + "Name": "FP_1_22" + }, + "383abfbf-5804-4747-b3c9-0b2cf607d1ab": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.3860028376439E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -35.95, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "383abfbf-5804-4747-b3c9-0b2cf607d1ab", + "Name": "FG_1_22" + }, + "214fc868-aa87-4669-886b-269c99d0e8cc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.687983500341943E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -37.650000000000006, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "214fc868-aa87-4669-886b-269c99d0e8cc", + "Name": "FP_1_23" + }, + "d1be2a16-4365-48a3-b66f-89de07231523": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.687983500341943E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -37.650000000000006, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "d1be2a16-4365-48a3-b66f-89de07231523", + "Name": "FG_1_23" + }, + "4de5e4d5-5abc-496d-8aea-881d4535732d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.989964163039985E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -39.349999999999994, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "4de5e4d5-5abc-496d-8aea-881d4535732d", + "Name": "FP_1_24" + }, + "bf8736f4-b823-4d3e-9f0d-05bc5815c6cf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.989964163039985E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -39.349999999999994, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "bf8736f4-b823-4d3e-9f0d-05bc5815c6cf", + "Name": "FG_1_24" + }, + "de70f610-4de2-4a6e-bc68-b00d4f0a339f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -7.291944825738029E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -41.05, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "de70f610-4de2-4a6e-bc68-b00d4f0a339f", + "Name": "FP_1_25" + }, + "5004f665-3a87-4c17-812e-b53f9b95600a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -7.291944825738029E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -41.05, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "5004f665-3a87-4c17-812e-b53f9b95600a", + "Name": "FG_1_25" + }, + "49dbeddd-bfd7-4a08-96fe-a51cf14366e3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -7.593925488436071E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -42.75, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "49dbeddd-bfd7-4a08-96fe-a51cf14366e3", + "Name": "FP_1_26" + }, + "27815117-c9e2-4324-bfdb-ec0fbc01f7d2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -7.593925488436071E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -42.75, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "27815117-c9e2-4324-bfdb-ec0fbc01f7d2", + "Name": "FG_1_26" + }, + "7e776a37-50cb-4329-a3bf-2532950c6a62": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -7.895906151134114E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -44.45, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "7e776a37-50cb-4329-a3bf-2532950c6a62", + "Name": "FP_1_27" + }, + "6027f344-9795-44db-b9fd-8fe31ca29e78": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -7.895906151134114E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -44.45, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "6027f344-9795-44db-b9fd-8fe31ca29e78", + "Name": "FG_1_27" + }, + "3717e181-d4f1-4eee-9860-3d8826c330a1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -8.197886813832156E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -46.150000000000006, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "3717e181-d4f1-4eee-9860-3d8826c330a1", + "Name": "FP_1_28" + }, + "8162bec4-9f61-4831-ab32-a9eb64e75c02": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -8.197886813832156E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -46.150000000000006, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "8162bec4-9f61-4831-ab32-a9eb64e75c02", + "Name": "FG_1_28" + }, + "3f2276e1-4fef-4911-afcb-d62c13ab9b21": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -8.499867476530199E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -47.85000000000001, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "3f2276e1-4fef-4911-afcb-d62c13ab9b21", + "Name": "FP_1_29" + }, + "b5754ed8-be3a-4d36-ba3a-b42c9790776b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -8.499867476530199E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -47.85000000000001, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "b5754ed8-be3a-4d36-ba3a-b42c9790776b", + "Name": "FG_1_29" + }, + "6b28d318-cb14-4732-95db-5c19bd07d936": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -8.801848139228241E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -49.55, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "6b28d318-cb14-4732-95db-5c19bd07d936", + "Name": "FP_1_30" + }, + "ff081706-e3dc-404a-8137-7a56bef8792c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -8.801848139228241E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -49.55, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "ff081706-e3dc-404a-8137-7a56bef8792c", + "Name": "FG_1_30" + }, + "039b7970-dd29-43c3-aa21-eaae8590f0ee": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.103828801926285E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -51.25, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "039b7970-dd29-43c3-aa21-eaae8590f0ee", + "Name": "FP_1_31" + }, + "5950dd14-34e9-415e-8b96-79ced873e472": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.103828801926285E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -51.25, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "5950dd14-34e9-415e-8b96-79ced873e472", + "Name": "FG_1_31" + }, + "77f1110f-d74e-4445-bb01-e96950f9f8f5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.405809464624326E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -52.95, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "77f1110f-d74e-4445-bb01-e96950f9f8f5", + "Name": "FP_1_32" + }, + "297e1d6e-8f26-475b-82ad-fdddc041bdc3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.405809464624326E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -52.95, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "297e1d6e-8f26-475b-82ad-fdddc041bdc3", + "Name": "FG_1_32" + }, + "8f6db0b5-4d68-4fb8-ad13-a9e4215fe554": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.70779012732237E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -54.650000000000006, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "8f6db0b5-4d68-4fb8-ad13-a9e4215fe554", + "Name": "FP_1_33" + }, + "9cd1297b-287a-4b45-bc79-251432ad3965": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.70779012732237E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -54.650000000000006, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "9cd1297b-287a-4b45-bc79-251432ad3965", + "Name": "FG_1_33" + }, + "834cf25b-30a9-4376-addb-5ea2abf19f01": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.0009770790020413E-14, + -1.0, + 0.0, + 1.7763568394002506E-16, + -56.35000000000001, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "834cf25b-30a9-4376-addb-5ea2abf19f01", + "Name": "FP_1_34" + }, + "5974d0d4-64bb-4337-ad1a-3f98b88ae660": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.0009770790020413E-14, + -1.0, + 0.0, + 1.7763568394002506E-16, + -56.35000000000001, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "5974d0d4-64bb-4337-ad1a-3f98b88ae660", + "Name": "FG_1_34" + }, + "09c04ffc-3894-4027-af41-ed05e3e3c19e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ef334a1a-9e12-4e9f-9d78-1bc45dfaf37a", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.0311751452718455E-14, + -1.0, + 0.0, + 1.7763568394002506E-16, + -58.05, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "09c04ffc-3894-4027-af41-ed05e3e3c19e", + "Name": "FP_1_35" + }, + "38781ef3-4380-438c-a868-7fd2cda93b6f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7d5e90c1-a0dc-4d8b-8020-fac48acc86b2", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.0311751452718455E-14, + -1.0, + 0.0, + 1.7763568394002506E-16, + -58.05, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Id": "38781ef3-4380-438c-a868-7fd2cda93b6f", + "Name": "FG_1_35" + }, + "81224588-6db2-46bd-8ba2-a323c2236198": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.0006479859497433802, + "Y": 0.009978983626048054, + "Z": 0.0 + }, + { + "X": 0.24935201405025662, + "Y": 0.009978983626048054, + "Z": 0.0 + }, + { + "X": 0.24935201405025662, + "Y": 3.8400210163739517, + "Z": 0.0 + }, + { + "X": 0.0006479859497433802, + "Y": 3.8400210163739517, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "81224588-6db2-46bd-8ba2-a323c2236198", + "Name": null + }, + "720aa67e-992c-4d3e-8980-d21ea9ba2dba": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.0613732115416497E-14, + -1.0, + 0.0, + 1.7763568394002506E-16, + -59.75, + 0.0, + 1.0, + 0.0, + 4.5 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "81224588-6db2-46bd-8ba2-a323c2236198", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "720aa67e-992c-4d3e-8980-d21ea9ba2dba", + "Name": "FP_1_36" + }, + "984168ae-2a16-4813-aec6-d18680900f44": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.0014142135623731059, + "Y": 0.009899494936611663, + "Z": 0.0 + }, + { + "X": 0.5485857864376311, + "Y": 0.009899494936611663, + "Z": 0.0 + }, + { + "X": 0.5485857864376311, + "Y": 3.840100505063388, + "Z": 0.0 + }, + { + "X": 0.0014142135623731059, + "Y": 3.840100505063388, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "984168ae-2a16-4813-aec6-d18680900f44", + "Name": null + }, + "6c9978d1-610d-4c32-b5c0-d3934dd162e4": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + -1.0658141036401503E-14, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "984168ae-2a16-4813-aec6-d18680900f44", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "6c9978d1-610d-4c32-b5c0-d3934dd162e4", + "Name": "FP_2_0" + }, + "dad3af59-05ad-4f14-8ea2-5bf09ebf5ee2": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.004039326788379083, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 3.8408521128616115, + "Z": 0.0 + }, + { + "X": 0.004039326788379083, + "Y": 3.8408521128616115, + "Z": 0.0 + } + ] + }, + "Voids": [ + { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + } + ], + "Id": "dad3af59-05ad-4f14-8ea2-5bf09ebf5ee2", + "Name": null + }, + "2493d071-c375-4e4d-9ea8-77ad3550bbbb": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.5499999999999936, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "dad3af59-05ad-4f14-8ea2-5bf09ebf5ee2", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Name": "FP_2" + }, + "b4380182-1d7c-44f4-b89d-5fd698316796": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.5499999999999936, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6d255750-badf-48df-940f-c20cf683aedd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Name": null + }, + "24d9dc86-b0ef-417a-89af-043689d334ec": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.5499999999999936, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "24d9dc86-b0ef-417a-89af-043689d334ec", + "Name": "FP_2_1" + }, + "63ebb288-bd7d-4ad2-bd85-81d250a666c4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.5499999999999936, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "63ebb288-bd7d-4ad2-bd85-81d250a666c4", + "Name": "FG_2_1" + }, + "e207dd3d-5582-4304-86cf-4553b95c6aaf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 2.249999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "e207dd3d-5582-4304-86cf-4553b95c6aaf", + "Name": "FP_2_2" + }, + "e3cfb816-3867-45d4-91ff-c9495040bcf8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 2.249999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "e3cfb816-3867-45d4-91ff-c9495040bcf8", + "Name": "FG_2_2" + }, + "a67de6fc-a798-4e39-bcc3-f3e490066be1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 3.949999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "a67de6fc-a798-4e39-bcc3-f3e490066be1", + "Name": "FP_2_3" + }, + "71d27370-4245-4698-8d4c-b93d1e232ee8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 3.949999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "71d27370-4245-4698-8d4c-b93d1e232ee8", + "Name": "FG_2_3" + }, + "50636ece-1934-418d-b302-775c3ef0751b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 5.649999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "50636ece-1934-418d-b302-775c3ef0751b", + "Name": "FP_2_4" + }, + "1f0a637b-5537-4370-a972-501f43e75901": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 5.649999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "1f0a637b-5537-4370-a972-501f43e75901", + "Name": "FG_2_4" + }, + "e78b02fa-56f0-4cb7-8480-04d433dfe506": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 7.349999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "e78b02fa-56f0-4cb7-8480-04d433dfe506", + "Name": "FP_2_5" + }, + "8a2ddc78-fbe4-47a6-a5b6-db21b624a779": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 7.349999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "8a2ddc78-fbe4-47a6-a5b6-db21b624a779", + "Name": "FG_2_5" + }, + "983e6fd0-3a82-416a-93c3-5e5695ffafe5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.049999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "983e6fd0-3a82-416a-93c3-5e5695ffafe5", + "Name": "FP_2_6" + }, + "fcd49822-892c-41d8-9b93-ccc9ca42969a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.049999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "fcd49822-892c-41d8-9b93-ccc9ca42969a", + "Name": "FG_2_6" + }, + "23c9635e-4117-4924-8884-fa07e0306867": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 10.749999999999995, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "23c9635e-4117-4924-8884-fa07e0306867", + "Name": "FP_2_7" + }, + "aa6132e2-72ab-4446-ac5f-2109c12ac750": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 10.749999999999995, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "aa6132e2-72ab-4446-ac5f-2109c12ac750", + "Name": "FG_2_7" + }, + "5a4bae09-a5e0-4db4-960b-892e164bed33": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 12.449999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "5a4bae09-a5e0-4db4-960b-892e164bed33", + "Name": "FP_2_8" + }, + "17559d8f-7d0f-4834-bbc0-08b43ea97476": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 12.449999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "17559d8f-7d0f-4834-bbc0-08b43ea97476", + "Name": "FG_2_8" + }, + "d6f54884-cc69-42b5-87cc-02a1a92eb04f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 14.149999999999995, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "d6f54884-cc69-42b5-87cc-02a1a92eb04f", + "Name": "FP_2_9" + }, + "6f8be229-4d67-4115-a182-859333bf3df8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 14.149999999999995, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "6f8be229-4d67-4115-a182-859333bf3df8", + "Name": "FG_2_9" + }, + "71647c92-e787-4f2a-a4a3-1e48f8df6421": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 15.849999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "71647c92-e787-4f2a-a4a3-1e48f8df6421", + "Name": "FP_2_10" + }, + "d056e80e-ef92-478a-9799-266984ffb6b8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 15.849999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "d056e80e-ef92-478a-9799-266984ffb6b8", + "Name": "FG_2_10" + }, + "8a2c8a26-1626-4201-a413-3c2f32eaa9e2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 17.549999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "8a2c8a26-1626-4201-a413-3c2f32eaa9e2", + "Name": "FP_2_11" + }, + "af5d7d80-c435-490f-8ead-b860e8ad50de": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 17.549999999999994, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "af5d7d80-c435-490f-8ead-b860e8ad50de", + "Name": "FG_2_11" + }, + "e6558569-0d9f-4733-a633-568b9dde6557": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 19.249999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "e6558569-0d9f-4733-a633-568b9dde6557", + "Name": "FP_2_12" + }, + "7270a52b-74f5-4e2d-ae21-8d2c2fd0c056": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 19.249999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "7270a52b-74f5-4e2d-ae21-8d2c2fd0c056", + "Name": "FG_2_12" + }, + "696ebb3b-227b-439a-af4d-9e5b76689a69": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 20.949999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "696ebb3b-227b-439a-af4d-9e5b76689a69", + "Name": "FP_2_13" + }, + "e1dcee5a-bcf9-442e-bfe1-a7d0fbe5654c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 20.949999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "e1dcee5a-bcf9-442e-bfe1-a7d0fbe5654c", + "Name": "FG_2_13" + }, + "6ba65946-a17c-4ca1-a42f-bd6920636cfa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 22.649999999999995, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "6ba65946-a17c-4ca1-a42f-bd6920636cfa", + "Name": "FP_2_14" + }, + "8f587de0-85da-43cf-a65a-d4d40dd042cf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 22.649999999999995, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "8f587de0-85da-43cf-a65a-d4d40dd042cf", + "Name": "FG_2_14" + }, + "9768961a-6d97-4afd-b23f-578d3fb93d47": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 24.349999999999998, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "9768961a-6d97-4afd-b23f-578d3fb93d47", + "Name": "FP_2_15" + }, + "626686be-f363-45f7-8c47-cbb6b352b108": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 24.349999999999998, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "626686be-f363-45f7-8c47-cbb6b352b108", + "Name": "FG_2_15" + }, + "dd3c7179-0c6b-40a5-af75-2c59999f4b4d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 26.049999999999997, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "dd3c7179-0c6b-40a5-af75-2c59999f4b4d", + "Name": "FP_2_16" + }, + "fc311eca-e7ed-4964-aa6e-1f7eef27552f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 26.049999999999997, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "fc311eca-e7ed-4964-aa6e-1f7eef27552f", + "Name": "FG_2_16" + }, + "0f518d98-7c04-496a-8eaf-1de295641453": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2493d071-c375-4e4d-9ea8-77ad3550bbbb", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 27.749999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "0f518d98-7c04-496a-8eaf-1de295641453", + "Name": "FP_2_17" + }, + "424194cb-3634-44b7-bdef-6a79a45bd689": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b4380182-1d7c-44f4-b89d-5fd698316796", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 27.749999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "424194cb-3634-44b7-bdef-6a79a45bd689", + "Name": "FG_2_17" + }, + "3e1e9c47-1bea-442d-976b-32e3b6a88c96": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.0014142135623731059, + "Y": 0.009899494936611663, + "Z": 0.0 + }, + { + "X": 0.5485857864376311, + "Y": 0.009899494936611663, + "Z": 0.0 + }, + { + "X": 0.5485857864376311, + "Y": 3.840100505063388, + "Z": 0.0 + }, + { + "X": 0.0014142135623731059, + "Y": 3.840100505063388, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "3e1e9c47-1bea-442d-976b-32e3b6a88c96", + "Name": null + }, + "ec67f9f7-1899-4de7-a829-56c99ee0857b": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 29.449999999999996, + 0.0, + 0.0, + -1.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "3e1e9c47-1bea-442d-976b-32e3b6a88c96", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "ec67f9f7-1899-4de7-a829-56c99ee0857b", + "Name": "FP_2_18" + }, + "8cc12d50-19b6-4fa0-af3c-0f0c77c9a608": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.05, + "Z": 12.2 + }, + { + "X": 30.0, + "Y": -60.05, + "Z": 12.2 + }, + { + "X": 30.0, + "Y": -59.95, + "Z": 12.2 + }, + { + "X": -1.0658141036401503E-14, + "Y": -59.95, + "Z": 12.2 + } + ] + }, + "Voids": [], + "Id": "8cc12d50-19b6-4fa0-af3c-0f0c77c9a608", + "Name": null + }, + "61dd814b-b856-4871-bac2-2014abd5e3b4": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -1.0658141036401503E-14, + "Y": -60.05, + "Z": 12.2 + }, + { + "X": 30.0, + "Y": -60.05, + "Z": 12.2 + }, + { + "X": 30.0, + "Y": -59.95, + "Z": 12.2 + }, + { + "X": -1.0658141036401503E-14, + "Y": -59.95, + "Z": 12.2 + } + ] + }, + "Voids": [], + "Id": "61dd814b-b856-4871-bac2-2014abd5e3b4", + "Name": null + }, + "a9567ea5-6518-4346-8b7d-f9558e64d746": { + "discriminator": "Elements.StandardWall", + "CenterLine": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 12.2 + }, + "End": { + "X": 30.0, + "Y": -60.0, + "Z": 12.2 + } + }, + "Thickness": 0.1, + "Height": 0.9, + "Profile": null, + "Openings": [], + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "61dd814b-b856-4871-bac2-2014abd5e3b4", + "Height": 0.9, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a9567ea5-6518-4346-8b7d-f9558e64d746", + "Name": null + }, + "f82c1060-dc9b-40ab-90fb-ab5b792b7a83": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.0014142135623730879, + "Y": 0.009899494936611667, + "Z": 0.0 + }, + { + "X": 0.5485857864376241, + "Y": 0.009899494936611667, + "Z": 0.0 + }, + { + "X": 0.5485857864376241, + "Y": 3.840100505063388, + "Z": 0.0 + }, + { + "X": 0.0014142135623730879, + "Y": 3.840100505063388, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "f82c1060-dc9b-40ab-90fb-ab5b792b7a83", + "Name": null + }, + "bd78e3ac-914a-427b-adac-754dc2eddb23": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -60.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "f82c1060-dc9b-40ab-90fb-ab5b792b7a83", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "bd78e3ac-914a-427b-adac-754dc2eddb23", + "Name": "FP_2_0" + }, + "b9a96faf-5fe1-453f-96aa-cbb8fa7d0659": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.004039326788379083, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 3.8408521128616115, + "Z": 0.0 + }, + { + "X": 0.004039326788379083, + "Y": 3.8408521128616115, + "Z": 0.0 + } + ] + }, + "Voids": [ + { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + } + ], + "Id": "b9a96faf-5fe1-453f-96aa-cbb8fa7d0659", + "Name": null + }, + "ce3bcb7d-a802-47bf-8004-2bb5276f74d3": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -59.45, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "b9a96faf-5fe1-453f-96aa-cbb8fa7d0659", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Name": "FP_2" + }, + "7c0b8a64-4eef-4fdc-be45-d88750a35552": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -59.45, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6d255750-badf-48df-940f-c20cf683aedd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Name": null + }, + "08c9224c-03bf-4d53-8f98-48b717f3d0c8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -59.45, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "08c9224c-03bf-4d53-8f98-48b717f3d0c8", + "Name": "FP_2_1" + }, + "0fc6e093-9903-4e3b-8f2e-714b2facb575": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -59.45, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "0fc6e093-9903-4e3b-8f2e-714b2facb575", + "Name": "FG_2_1" + }, + "bacce559-1bfd-4989-91c1-1dff75bc1059": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -57.75, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "bacce559-1bfd-4989-91c1-1dff75bc1059", + "Name": "FP_2_2" + }, + "f6dca839-0326-4b10-934b-924c394a4335": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -57.75, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "f6dca839-0326-4b10-934b-924c394a4335", + "Name": "FG_2_2" + }, + "53cb62b6-2513-434b-b32d-c241839fc198": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -56.050000000000004, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "53cb62b6-2513-434b-b32d-c241839fc198", + "Name": "FP_2_3" + }, + "c31c1457-b472-4a51-a968-06447fdffc3c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -56.050000000000004, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "c31c1457-b472-4a51-a968-06447fdffc3c", + "Name": "FG_2_3" + }, + "dc5087e6-3585-4471-a17c-21888d84f0c0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -54.35, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "dc5087e6-3585-4471-a17c-21888d84f0c0", + "Name": "FP_2_4" + }, + "cc08637e-1e2b-4615-859e-9774cd957621": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -54.35, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "cc08637e-1e2b-4615-859e-9774cd957621", + "Name": "FG_2_4" + }, + "a4d44235-914f-4400-9cd3-563a2047e77e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -52.650000000000006, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "a4d44235-914f-4400-9cd3-563a2047e77e", + "Name": "FP_2_5" + }, + "372fb6a3-3e67-4e16-8ee8-04267847564e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -52.650000000000006, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "372fb6a3-3e67-4e16-8ee8-04267847564e", + "Name": "FG_2_5" + }, + "2e11a285-40e4-4987-8bd5-a54643d6568d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -50.95, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "2e11a285-40e4-4987-8bd5-a54643d6568d", + "Name": "FP_2_6" + }, + "74265940-6770-470c-89d5-59b4a5234baa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -50.95, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "74265940-6770-470c-89d5-59b4a5234baa", + "Name": "FG_2_6" + }, + "bd755f45-5d65-4183-81ef-9c4460ad1d37": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -49.25, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "bd755f45-5d65-4183-81ef-9c4460ad1d37", + "Name": "FP_2_7" + }, + "1ae4cccd-35f5-49ab-8c71-d2ac4472edae": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -49.25, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "1ae4cccd-35f5-49ab-8c71-d2ac4472edae", + "Name": "FG_2_7" + }, + "7878710c-c70c-4923-9763-6dd0a4a8a815": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -47.55, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "7878710c-c70c-4923-9763-6dd0a4a8a815", + "Name": "FP_2_8" + }, + "3219160c-7f8c-4705-b147-ef349380fc68": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -47.55, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "3219160c-7f8c-4705-b147-ef349380fc68", + "Name": "FG_2_8" + }, + "09d2a3b6-0615-4c26-bceb-90a90bf0f898": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -45.85, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "09d2a3b6-0615-4c26-bceb-90a90bf0f898", + "Name": "FP_2_9" + }, + "bd8dcd5d-6671-4484-b55c-cef354f132fd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -45.85, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "bd8dcd5d-6671-4484-b55c-cef354f132fd", + "Name": "FG_2_9" + }, + "bcc77e77-d1a8-4cf6-8d04-82566af71367": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -44.150000000000006, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "bcc77e77-d1a8-4cf6-8d04-82566af71367", + "Name": "FP_2_10" + }, + "68a48efd-5a73-4fd0-984b-c9d725824c5f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -44.150000000000006, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "68a48efd-5a73-4fd0-984b-c9d725824c5f", + "Name": "FG_2_10" + }, + "85549c70-c73a-4f09-80d2-9052c94fb7cb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -42.45, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "85549c70-c73a-4f09-80d2-9052c94fb7cb", + "Name": "FP_2_11" + }, + "6dab55d1-6144-480c-a3cd-77be5725fe2e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -42.45, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "6dab55d1-6144-480c-a3cd-77be5725fe2e", + "Name": "FG_2_11" + }, + "2ef20f2f-3b43-49cd-92f3-dbbf084ba9a8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -40.75, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "2ef20f2f-3b43-49cd-92f3-dbbf084ba9a8", + "Name": "FP_2_12" + }, + "97df1c8d-8a9c-430d-a686-bf44b770f7d6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -40.75, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "97df1c8d-8a9c-430d-a686-bf44b770f7d6", + "Name": "FG_2_12" + }, + "b721d1d5-9d0d-4148-a7ef-f783d72748f2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -39.05, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "b721d1d5-9d0d-4148-a7ef-f783d72748f2", + "Name": "FP_2_13" + }, + "be841601-f457-4974-b567-623c67061bbb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -39.05, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "be841601-f457-4974-b567-623c67061bbb", + "Name": "FG_2_13" + }, + "757f0655-33d6-415f-ab11-ce3fc35a1194": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -37.35, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "757f0655-33d6-415f-ab11-ce3fc35a1194", + "Name": "FP_2_14" + }, + "07c6a54d-350b-432e-9d3d-bc01b5c8cbd9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -37.35, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "07c6a54d-350b-432e-9d3d-bc01b5c8cbd9", + "Name": "FG_2_14" + }, + "f7bab826-c495-4130-a607-f7722520cc3b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -35.65, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "f7bab826-c495-4130-a607-f7722520cc3b", + "Name": "FP_2_15" + }, + "3527489f-e874-4a03-8769-e5be9dc04116": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -35.65, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "3527489f-e874-4a03-8769-e5be9dc04116", + "Name": "FG_2_15" + }, + "6441f1d9-4887-4f63-a4c6-4598acee694b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -33.95, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "6441f1d9-4887-4f63-a4c6-4598acee694b", + "Name": "FP_2_16" + }, + "76fada82-d143-426e-ba73-21ccb4f8d576": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -33.95, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "76fada82-d143-426e-ba73-21ccb4f8d576", + "Name": "FG_2_16" + }, + "754c9a76-1092-43c5-82f8-932eba2e1ec0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "ce3bcb7d-a802-47bf-8004-2bb5276f74d3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -32.25, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "754c9a76-1092-43c5-82f8-932eba2e1ec0", + "Name": "FP_2_17" + }, + "d5af1663-e369-4415-9f04-958055fd61e3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7c0b8a64-4eef-4fdc-be45-d88750a35552", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -32.25, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "d5af1663-e369-4415-9f04-958055fd61e3", + "Name": "FG_2_17" + }, + "45e2bdbd-9e73-4727-b955-2fa1931a4fc9": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.0014142135623730879, + "Y": 0.009899494936611667, + "Z": 0.0 + }, + { + "X": 0.5485857864376241, + "Y": 0.009899494936611667, + "Z": 0.0 + }, + { + "X": 0.5485857864376241, + "Y": 3.840100505063388, + "Z": 0.0 + }, + { + "X": 0.0014142135623730879, + "Y": 3.840100505063388, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "45e2bdbd-9e73-4727-b955-2fa1931a4fc9", + "Name": null + }, + "829cf2e3-ba38-4586-ad86-9eb9074aa6e6": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 0.0, + 1.0, + 30.0, + 1.0, + 0.0, + 0.0, + -30.549999999999997, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "45e2bdbd-9e73-4727-b955-2fa1931a4fc9", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "829cf2e3-ba38-4586-ad86-9eb9074aa6e6", + "Name": "FP_2_18" + }, + "127ac052-562e-4426-ab9e-5355d52ac176": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 30.05, + "Y": -60.0, + "Z": 12.2 + }, + { + "X": 30.05, + "Y": -30.0, + "Z": 12.2 + }, + { + "X": 29.95, + "Y": -30.0, + "Z": 12.2 + }, + { + "X": 29.95, + "Y": -60.0, + "Z": 12.2 + } + ] + }, + "Voids": [], + "Id": "127ac052-562e-4426-ab9e-5355d52ac176", + "Name": null + }, + "dcdd633f-7026-44fb-b22a-cc91a5a669c5": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 30.05, + "Y": -60.0, + "Z": 12.2 + }, + { + "X": 30.05, + "Y": -30.0, + "Z": 12.2 + }, + { + "X": 29.95, + "Y": -30.0, + "Z": 12.2 + }, + { + "X": 29.95, + "Y": -60.0, + "Z": 12.2 + } + ] + }, + "Voids": [], + "Id": "dcdd633f-7026-44fb-b22a-cc91a5a669c5", + "Name": null + }, + "a30e4b38-8d72-4c90-91fd-ad7c5537c1a5": { + "discriminator": "Elements.StandardWall", + "CenterLine": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 30.0, + "Y": -60.0, + "Z": 12.2 + }, + "End": { + "X": 30.0, + "Y": -30.0, + "Z": 12.2 + } + }, + "Thickness": 0.1, + "Height": 0.9, + "Profile": null, + "Openings": [], + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "dcdd633f-7026-44fb-b22a-cc91a5a669c5", + "Height": 0.9, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a30e4b38-8d72-4c90-91fd-ad7c5537c1a5", + "Name": null + }, + "2706767b-9a50-4dce-a27b-bfd6eeab47c5": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.00046121355018386746, + "Y": 0.009989358440917353, + "Z": 0.0 + }, + { + "X": 0.17729516376976184, + "Y": 0.009989358440917353, + "Z": 0.0 + }, + { + "X": 0.17729516376976184, + "Y": 3.8400106415590822, + "Z": 0.0 + }, + { + "X": 0.00046121355018386746, + "Y": 3.8400106415590822, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "2706767b-9a50-4dce-a27b-bfd6eeab47c5", + "Name": null + }, + "74838041-141c-495c-9314-34087448a901": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 30.0, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -30.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "2706767b-9a50-4dce-a27b-bfd6eeab47c5", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "74838041-141c-495c-9314-34087448a901", + "Name": "FP_2_0" + }, + "da2ff72e-69bb-4ab9-ae79-eaac9e9cd09b": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.004039326788379083, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 3.8408521128616115, + "Z": 0.0 + }, + { + "X": 0.004039326788379083, + "Y": 3.8408521128616115, + "Z": 0.0 + } + ] + }, + "Voids": [ + { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + } + ], + "Id": "da2ff72e-69bb-4ab9-ae79-eaac9e9cd09b", + "Name": null + }, + "591e087f-51cd-4fd2-aed2-d98ad5cf8c76": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 29.90139850262034, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -29.85209775393051, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "da2ff72e-69bb-4ab9-ae79-eaac9e9cd09b", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Name": "FP_2" + }, + "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 29.90139850262034, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -29.85209775393051, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6d255750-badf-48df-940f-c20cf683aedd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Name": null + }, + "f65f491c-403f-4b7e-93b2-c808f8183afa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 29.90139850262034, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -29.85209775393051, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "f65f491c-403f-4b7e-93b2-c808f8183afa", + "Name": "FP_2_1" + }, + "7664b42f-fca3-462d-acb7-527acc2f3355": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 29.90139850262034, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -29.85209775393051, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "7664b42f-fca3-462d-acb7-527acc2f3355", + "Name": "FG_2_1" + }, + "c86bcb8b-bfe2-4711-91e4-d154fef3048f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 28.958408169037448, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -28.43761225355618, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "c86bcb8b-bfe2-4711-91e4-d154fef3048f", + "Name": "FP_2_2" + }, + "ac1a1ff4-d732-412f-ad36-90b78c1c2e84": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 28.958408169037448, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -28.43761225355618, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "ac1a1ff4-d732-412f-ad36-90b78c1c2e84", + "Name": "FG_2_2" + }, + "e47d00ca-3ce1-4b3c-9967-16872d3a984a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 28.01541783545456, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -27.02312675318184, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "e47d00ca-3ce1-4b3c-9967-16872d3a984a", + "Name": "FP_2_3" + }, + "483d504c-175c-450d-8ec2-7a91e72800f1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 28.01541783545456, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -27.02312675318184, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "483d504c-175c-450d-8ec2-7a91e72800f1", + "Name": "FG_2_3" + }, + "6b59070c-a6d3-43a5-9e22-3efbe0755593": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 27.07242750187167, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -25.60864125280751, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "6b59070c-a6d3-43a5-9e22-3efbe0755593", + "Name": "FP_2_4" + }, + "d8d165d9-bd17-4846-924f-18549835fc88": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 27.07242750187167, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -25.60864125280751, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "d8d165d9-bd17-4846-924f-18549835fc88", + "Name": "FG_2_4" + }, + "eee3c451-53f1-430f-a958-bbf9cd5eca8e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 26.12943716828878, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -24.194155752433176, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "eee3c451-53f1-430f-a958-bbf9cd5eca8e", + "Name": "FP_2_5" + }, + "871b5c80-5ec3-409f-8ec2-c2afa0aa4c70": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 26.12943716828878, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -24.194155752433176, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "871b5c80-5ec3-409f-8ec2-c2afa0aa4c70", + "Name": "FG_2_5" + }, + "d06e878f-4cea-48d7-86ee-391efb375de2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 25.18644683470589, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -22.77967025205884, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "d06e878f-4cea-48d7-86ee-391efb375de2", + "Name": "FP_2_6" + }, + "67982918-1f3f-40d6-bacc-fda03a441d2f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 25.18644683470589, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -22.77967025205884, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "67982918-1f3f-40d6-bacc-fda03a441d2f", + "Name": "FG_2_6" + }, + "c122838d-3c79-4ce3-af56-012ce85d277f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 24.243456501123, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -21.365184751684502, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "c122838d-3c79-4ce3-af56-012ce85d277f", + "Name": "FP_2_7" + }, + "e8432b0d-2f96-41c7-8a50-3022a2ebcab6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 24.243456501123, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -21.365184751684502, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "e8432b0d-2f96-41c7-8a50-3022a2ebcab6", + "Name": "FG_2_7" + }, + "066cae10-2836-45b8-ae20-2bf6723d0d5d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 23.30046616754011, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -19.95069925131017, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "066cae10-2836-45b8-ae20-2bf6723d0d5d", + "Name": "FP_2_8" + }, + "a86e7979-75dc-441a-a0ac-51bcbf9a1f2f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 23.30046616754011, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -19.95069925131017, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "a86e7979-75dc-441a-a0ac-51bcbf9a1f2f", + "Name": "FG_2_8" + }, + "822e3915-4227-4909-8b80-8477f50c0aaf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 22.35747583395722, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -18.536213750935836, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "822e3915-4227-4909-8b80-8477f50c0aaf", + "Name": "FP_2_9" + }, + "ec488917-56b6-4950-964b-7a366702f7be": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 22.35747583395722, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -18.536213750935836, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "ec488917-56b6-4950-964b-7a366702f7be", + "Name": "FG_2_9" + }, + "3c377fab-3ee1-40cb-a757-677fb1b59472": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 21.414485500374333, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -17.121728250561503, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "3c377fab-3ee1-40cb-a757-677fb1b59472", + "Name": "FP_2_10" + }, + "5d47bbab-8081-43f4-a68f-940876a8dae5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 21.414485500374333, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -17.121728250561503, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "5d47bbab-8081-43f4-a68f-940876a8dae5", + "Name": "FG_2_10" + }, + "696c0a48-cf9b-460a-99e2-fee0431cc0ba": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 20.471495166791442, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -15.707242750187168, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "696c0a48-cf9b-460a-99e2-fee0431cc0ba", + "Name": "FP_2_11" + }, + "5cb72309-281d-463d-bcd7-004ce8dfdccd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 20.471495166791442, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -15.707242750187168, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "5cb72309-281d-463d-bcd7-004ce8dfdccd", + "Name": "FG_2_11" + }, + "101fdfc7-99bc-46c9-8658-f1a234eb5952": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 19.52850483320855, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -14.292757249812832, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "101fdfc7-99bc-46c9-8658-f1a234eb5952", + "Name": "FP_2_12" + }, + "e9cc85eb-dda6-4d70-bc02-7af4ec32c945": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 19.52850483320855, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -14.292757249812832, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "e9cc85eb-dda6-4d70-bc02-7af4ec32c945", + "Name": "FG_2_12" + }, + "d40beb6c-c563-4b25-889d-8619416087eb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 18.585514499625663, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -12.878271749438497, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "d40beb6c-c563-4b25-889d-8619416087eb", + "Name": "FP_2_13" + }, + "0a182e4b-e87d-481d-92d5-a4415ec70c9f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 18.585514499625663, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -12.878271749438497, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "0a182e4b-e87d-481d-92d5-a4415ec70c9f", + "Name": "FG_2_13" + }, + "1b30039a-80f0-415a-8c7a-ffc39edd24cd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 17.642524166042776, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -11.463786249064164, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "1b30039a-80f0-415a-8c7a-ffc39edd24cd", + "Name": "FP_2_14" + }, + "fa46b300-c42b-40e9-ab57-b1728ace6b1e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 17.642524166042776, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -11.463786249064164, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "fa46b300-c42b-40e9-ab57-b1728ace6b1e", + "Name": "FG_2_14" + }, + "91fed87a-7af0-43ab-a85c-cb2236fe9f6a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 16.699533832459885, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -10.049300748689827, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "91fed87a-7af0-43ab-a85c-cb2236fe9f6a", + "Name": "FP_2_15" + }, + "8808b4ad-abe9-42a3-9ad4-f11a560dd0c7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 16.699533832459885, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -10.049300748689827, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "8808b4ad-abe9-42a3-9ad4-f11a560dd0c7", + "Name": "FG_2_15" + }, + "9d3f234a-9cc0-4009-a216-0358fa0b6984": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 15.756543498876994, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -8.634815248315494, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "9d3f234a-9cc0-4009-a216-0358fa0b6984", + "Name": "FP_2_16" + }, + "576803ee-1140-4f06-b918-ef27f5e3eb9c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 15.756543498876994, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -8.634815248315494, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "576803ee-1140-4f06-b918-ef27f5e3eb9c", + "Name": "FG_2_16" + }, + "92f13d74-2f6f-4132-ac5b-f6416b8b3192": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 14.813553165294104, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -7.220329747941161, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "92f13d74-2f6f-4132-ac5b-f6416b8b3192", + "Name": "FP_2_17" + }, + "cf937e18-444b-45a2-a2d9-d749f44dd798": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 14.813553165294104, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -7.220329747941161, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "cf937e18-444b-45a2-a2d9-d749f44dd798", + "Name": "FG_2_17" + }, + "31f2e7f4-9f0b-4247-86af-7989ecf94b33": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 13.870562831711215, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -5.805844247566824, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "31f2e7f4-9f0b-4247-86af-7989ecf94b33", + "Name": "FP_2_18" + }, + "8dd7d0ac-6fc7-4600-b999-d0ca13abe64c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 13.870562831711215, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -5.805844247566824, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "8dd7d0ac-6fc7-4600-b999-d0ca13abe64c", + "Name": "FG_2_18" + }, + "4903c03f-c787-495e-b077-592803604a78": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 12.927572498128328, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -4.391358747192491, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "4903c03f-c787-495e-b077-592803604a78", + "Name": "FP_2_19" + }, + "50abdf88-9ff5-454b-8f1c-0b8b2c2d70fc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 12.927572498128328, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -4.391358747192491, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "50abdf88-9ff5-454b-8f1c-0b8b2c2d70fc", + "Name": "FG_2_19" + }, + "968abe86-708b-487c-b07d-78b8ce52d6f8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 11.984582164545436, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -2.9768732468181547, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "968abe86-708b-487c-b07d-78b8ce52d6f8", + "Name": "FP_2_20" + }, + "015970e8-a22a-4db0-a72b-3538ab38b3e2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 11.984582164545436, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -2.9768732468181547, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "015970e8-a22a-4db0-a72b-3538ab38b3e2", + "Name": "FG_2_20" + }, + "047efc0d-2de8-41c8-ab4a-a3aad98010d6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "591e087f-51cd-4fd2-aed2-d98ad5cf8c76", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 11.041591830962549, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -1.5623877464438252, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "047efc0d-2de8-41c8-ab4a-a3aad98010d6", + "Name": "FP_2_21" + }, + "77520ac6-5f67-4c0b-bf93-3a6ffbb6bbae": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "61bf4742-3dcc-4d53-b9ea-1c39b6ca13cf", + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 11.041591830962549, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -1.5623877464438252, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "77520ac6-5f67-4c0b-bf93-3a6ffbb6bbae", + "Name": "FG_2_21" + }, + "489da548-3960-4d52-aa6b-aefb71a5daee": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.00046121355018386497, + "Y": 0.009989358440917353, + "Z": 0.0 + }, + { + "X": 0.17729516376976087, + "Y": 0.009989358440917353, + "Z": 0.0 + }, + { + "X": 0.17729516376976087, + "Y": 3.8400106415590822, + "Z": 0.0 + }, + { + "X": 0.00046121355018386497, + "Y": 3.8400106415590822, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "489da548-3960-4d52-aa6b-aefb71a5daee", + "Name": null + }, + "f36bf8c8-3804-4478-b942-cf1fc5e8b30b": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -0.5547001962252291, + 0.0, + 0.8320502943378437, + 10.09860149737966, + 0.8320502943378437, + 0.0, + 0.5547001962252291, + -0.14790224606948854, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "489da548-3960-4d52-aa6b-aefb71a5daee", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f36bf8c8-3804-4478-b942-cf1fc5e8b30b", + "Name": "FP_2_22" + }, + "82ddbd1b-03f1-4e88-8651-8ae795b8251f": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 30.041602514716892, + "Y": -29.972264990188737, + "Z": 12.2 + }, + { + "X": 10.041602514716892, + "Y": 0.02773500981126146, + "Z": 12.2 + }, + { + "X": 9.958397485283108, + "Y": -0.02773500981126146, + "Z": 12.2 + }, + { + "X": 29.958397485283108, + "Y": -30.027735009811263, + "Z": 12.2 + } + ] + }, + "Voids": [], + "Id": "82ddbd1b-03f1-4e88-8651-8ae795b8251f", + "Name": null + }, + "239576d7-74bc-4dc2-a0e1-5cca752035c1": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 30.041602514716892, + "Y": -29.972264990188737, + "Z": 12.2 + }, + { + "X": 10.041602514716892, + "Y": 0.02773500981126146, + "Z": 12.2 + }, + { + "X": 9.958397485283108, + "Y": -0.02773500981126146, + "Z": 12.2 + }, + { + "X": 29.958397485283108, + "Y": -30.027735009811263, + "Z": 12.2 + } + ] + }, + "Voids": [], + "Id": "239576d7-74bc-4dc2-a0e1-5cca752035c1", + "Name": null + }, + "9f386381-7c8b-4165-b28d-6301c2ecdd9b": { + "discriminator": "Elements.StandardWall", + "CenterLine": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 30.0, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 10.0, + "Y": 0.0, + "Z": 12.2 + } + }, + "Thickness": 0.1, + "Height": 0.9, + "Profile": null, + "Openings": [], + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "239576d7-74bc-4dc2-a0e1-5cca752035c1", + "Height": 0.9, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "9f386381-7c8b-4165-b28d-6301c2ecdd9b", + "Name": null + }, + "79977681-802b-4a15-a1dc-096f980cb3cc": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.0019121084163914713, + "Y": 0.009815489870809551, + "Z": 0.0 + }, + { + "X": 0.7480878915836086, + "Y": 0.009815489870809551, + "Z": 0.0 + }, + { + "X": 0.7480878915836086, + "Y": 3.8401845101291903, + "Z": 0.0 + }, + { + "X": 0.0019121084163914713, + "Y": 3.8401845101291903, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "79977681-802b-4a15-a1dc-096f980cb3cc", + "Name": null + }, + "8bddb413-9f4c-47c8-ac42-927f78558e7f": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 10.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "79977681-802b-4a15-a1dc-096f980cb3cc", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "8bddb413-9f4c-47c8-ac42-927f78558e7f", + "Name": "FP_2_0" + }, + "0ab3322d-2c36-4aa4-9189-eb0c1d60e8b4": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.004039326788379083, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 3.8408521128616115, + "Z": 0.0 + }, + { + "X": 0.004039326788379083, + "Y": 3.8408521128616115, + "Z": 0.0 + } + ] + }, + "Voids": [ + { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + } + ], + "Id": "0ab3322d-2c36-4aa4-9189-eb0c1d60e8b4", + "Name": null + }, + "abaaecea-32cf-428f-ab9e-a4ae53a95e0f": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.25, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "0ab3322d-2c36-4aa4-9189-eb0c1d60e8b4", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "abaaecea-32cf-428f-ab9e-a4ae53a95e0f", + "Name": "FP_2" + }, + "876b69b9-b9a0-4f8c-aa07-9abf1212de8a": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.25, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6d255750-badf-48df-940f-c20cf683aedd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "876b69b9-b9a0-4f8c-aa07-9abf1212de8a", + "Name": null + }, + "113037b7-fc1c-4d6d-a6f3-c3bb251d8b00": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "abaaecea-32cf-428f-ab9e-a4ae53a95e0f", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.25, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "113037b7-fc1c-4d6d-a6f3-c3bb251d8b00", + "Name": "FP_2_1" + }, + "6e5d4c1a-6602-4322-96ae-9323366ac24f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "876b69b9-b9a0-4f8c-aa07-9abf1212de8a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.25, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "6e5d4c1a-6602-4322-96ae-9323366ac24f", + "Name": "FG_2_1" + }, + "b7bb35c1-3afe-4ec3-8b53-2fd229e2bc07": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "abaaecea-32cf-428f-ab9e-a4ae53a95e0f", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 7.55, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "b7bb35c1-3afe-4ec3-8b53-2fd229e2bc07", + "Name": "FP_2_2" + }, + "9b46685c-8ba0-42df-912c-d9888a3f5164": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "876b69b9-b9a0-4f8c-aa07-9abf1212de8a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 7.55, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "9b46685c-8ba0-42df-912c-d9888a3f5164", + "Name": "FG_2_2" + }, + "0069b164-151f-405c-b49a-8605df4d7c44": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "abaaecea-32cf-428f-ab9e-a4ae53a95e0f", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 5.85, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "0069b164-151f-405c-b49a-8605df4d7c44", + "Name": "FP_2_3" + }, + "6dcb8e39-0bff-434c-a5f1-79fd5931e6e0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "876b69b9-b9a0-4f8c-aa07-9abf1212de8a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 5.85, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "6dcb8e39-0bff-434c-a5f1-79fd5931e6e0", + "Name": "FG_2_3" + }, + "23086d3a-e9db-4db0-8bf6-17f79c87d8b6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "abaaecea-32cf-428f-ab9e-a4ae53a95e0f", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 4.1499999999999995, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "23086d3a-e9db-4db0-8bf6-17f79c87d8b6", + "Name": "FP_2_4" + }, + "14d6a916-b23c-48f9-b451-a96e2fb9a9d1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "876b69b9-b9a0-4f8c-aa07-9abf1212de8a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 4.1499999999999995, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "14d6a916-b23c-48f9-b451-a96e2fb9a9d1", + "Name": "FG_2_4" + }, + "2a5f347e-48ca-4b84-9177-66a197870afe": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "abaaecea-32cf-428f-ab9e-a4ae53a95e0f", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.4499999999999993, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "2a5f347e-48ca-4b84-9177-66a197870afe", + "Name": "FP_2_5" + }, + "bf011475-55d3-4d39-891a-3dde8bb91902": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "876b69b9-b9a0-4f8c-aa07-9abf1212de8a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.4499999999999993, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "bf011475-55d3-4d39-891a-3dde8bb91902", + "Name": "FG_2_5" + }, + "375bad2e-c3c5-478c-9cdc-8952250c4593": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.0019121084163914713, + "Y": 0.009815489870809551, + "Z": 0.0 + }, + { + "X": 0.7480878915836086, + "Y": 0.009815489870809551, + "Z": 0.0 + }, + { + "X": 0.7480878915836086, + "Y": 3.8401845101291903, + "Z": 0.0 + }, + { + "X": 0.0019121084163914713, + "Y": 3.8401845101291903, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "375bad2e-c3c5-478c-9cdc-8952250c4593", + "Name": null + }, + "b63a5a73-d436-42ff-9182-ace944459eb0": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 0.75, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "375bad2e-c3c5-478c-9cdc-8952250c4593", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "b63a5a73-d436-42ff-9182-ace944459eb0", + "Name": "FP_2_6" + }, + "656564cb-14a9-455c-9135-c7adb0d1e033": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 10.0, + "Y": 0.05, + "Z": 12.2 + }, + { + "X": 0.0, + "Y": 0.05, + "Z": 12.2 + }, + { + "X": 0.0, + "Y": -0.05, + "Z": 12.2 + }, + { + "X": 10.0, + "Y": -0.05, + "Z": 12.2 + } + ] + }, + "Voids": [], + "Id": "656564cb-14a9-455c-9135-c7adb0d1e033", + "Name": null + }, + "0e0f96c7-e925-4bf3-b9c1-d4246c3bfc68": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 10.0, + "Y": 0.05, + "Z": 12.2 + }, + { + "X": 0.0, + "Y": 0.05, + "Z": 12.2 + }, + { + "X": 0.0, + "Y": -0.05, + "Z": 12.2 + }, + { + "X": 10.0, + "Y": -0.05, + "Z": 12.2 + } + ] + }, + "Voids": [], + "Id": "0e0f96c7-e925-4bf3-b9c1-d4246c3bfc68", + "Name": null + }, + "eea86c1a-b7ff-430e-9837-99716320fbac": { + "discriminator": "Elements.StandardWall", + "CenterLine": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.0, + "Y": 0.0, + "Z": 12.2 + }, + "End": { + "X": 0.0, + "Y": 0.0, + "Z": 12.2 + } + }, + "Thickness": 0.1, + "Height": 0.9, + "Profile": null, + "Openings": [], + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "0e0f96c7-e925-4bf3-b9c1-d4246c3bfc68", + "Height": 0.9, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "eea86c1a-b7ff-430e-9837-99716320fbac", + "Name": null + }, + "34f0f88d-ff79-4fd0-b3c9-e5a917df54e1": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.000647985949743371, + "Y": 0.009978983626048056, + "Z": 0.0 + }, + { + "X": 0.2493520140502531, + "Y": 0.009978983626048056, + "Z": 0.0 + }, + { + "X": 0.2493520140502531, + "Y": 3.8400210163739517, + "Z": 0.0 + }, + { + "X": 0.000647985949743371, + "Y": 3.8400210163739517, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "34f0f88d-ff79-4fd0-b3c9-e5a917df54e1", + "Name": null + }, + "974a7c17-acab-4194-b3a4-08fdd678aee3": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + 0.0, + -1.0, + 0.0, + 1.7763568394002506E-16, + 0.0, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "34f0f88d-ff79-4fd0-b3c9-e5a917df54e1", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "974a7c17-acab-4194-b3a4-08fdd678aee3", + "Name": "FP_2_0" + }, + "ef243317-f2b5-46ab-bfff-c5528ca81089": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.004039326788379083, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 0.00914788713838792, + "Z": 0.0 + }, + { + "X": 1.695960673211621, + "Y": 3.8408521128616115, + "Z": 0.0 + }, + { + "X": 0.004039326788379083, + "Y": 3.8408521128616115, + "Z": 0.0 + } + ] + }, + "Voids": [ + { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + } + ], + "Id": "ef243317-f2b5-46ab-bfff-c5528ca81089", + "Name": null + }, + "08536181-6c6a-4811-bd8c-26e64e079485": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.4408920985005315E-17, + -1.0, + 0.0, + 1.7763568394002506E-16, + -0.24999999999999645, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "ef243317-f2b5-46ab-bfff-c5528ca81089", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "08536181-6c6a-4811-bd8c-26e64e079485", + "Name": "FP_2" + }, + "b8bb89a8-c302-4c75-ab3e-a1fe29251479": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.4408920985005315E-17, + -1.0, + 0.0, + 1.7763568394002506E-16, + -0.24999999999999645, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6d255750-badf-48df-940f-c20cf683aedd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.01, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 3.84, + "Z": 0.0 + }, + { + "X": 1.6900000000000002, + "Y": 0.01, + "Z": 0.0 + }, + { + "X": 0.01, + "Y": 0.01, + "Z": 0.0 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Name": null + }, + "b1d55d72-1f5b-437a-87fe-318c9cc621c5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.4408920985005315E-17, + -1.0, + 0.0, + 1.7763568394002506E-16, + -0.24999999999999645, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "b1d55d72-1f5b-437a-87fe-318c9cc621c5", + "Name": "FP_2_1" + }, + "f2bd4c07-78c3-49ff-825d-561f16208835": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.4408920985005315E-17, + -1.0, + 0.0, + 1.7763568394002506E-16, + -0.24999999999999645, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "f2bd4c07-78c3-49ff-825d-561f16208835", + "Name": "FG_2_1" + }, + "e1d84665-102e-47be-a5e4-d55fa4740f85": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.4638958368304796E-16, + -1.0, + 0.0, + 1.7763568394002506E-16, + -1.9499999999999966, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "e1d84665-102e-47be-a5e4-d55fa4740f85", + "Name": "FP_2_2" + }, + "c5054ea4-df91-4232-94dc-1f466c5391ee": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.4638958368304796E-16, + -1.0, + 0.0, + 1.7763568394002506E-16, + -1.9499999999999966, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "c5054ea4-df91-4232-94dc-1f466c5391ee", + "Name": "FG_2_2" + }, + "2c653365-7ddc-42a3-9cf5-8a11c047fb88": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.483702463810906E-16, + -1.0, + 0.0, + 1.7763568394002506E-16, + -3.649999999999997, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "2c653365-7ddc-42a3-9cf5-8a11c047fb88", + "Name": "FP_2_3" + }, + "60e2ea78-784f-415f-843b-2302bd6c3d0e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.483702463810906E-16, + -1.0, + 0.0, + 1.7763568394002506E-16, + -3.649999999999997, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "60e2ea78-784f-415f-843b-2302bd6c3d0e", + "Name": "FG_2_3" + }, + "3c1c0697-4580-46a4-a0c7-66490b1f1361": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.503509090791333E-16, + -1.0, + 0.0, + 1.7763568394002506E-16, + -5.349999999999997, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "3c1c0697-4580-46a4-a0c7-66490b1f1361", + "Name": "FP_2_4" + }, + "ad4e1c3b-0420-4ccb-a562-3733aad8b4ad": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.503509090791333E-16, + -1.0, + 0.0, + 1.7763568394002506E-16, + -5.349999999999997, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "ad4e1c3b-0420-4ccb-a562-3733aad8b4ad", + "Name": "FG_2_4" + }, + "32a1eef2-0c7e-45bc-b691-3cba96f8d93b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.252331571777176E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -7.049999999999997, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "32a1eef2-0c7e-45bc-b691-3cba96f8d93b", + "Name": "FP_2_5" + }, + "32ba84d2-8c75-4f51-b5b7-a3b80a639dd8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.252331571777176E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -7.049999999999997, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "32ba84d2-8c75-4f51-b5b7-a3b80a639dd8", + "Name": "FG_2_5" + }, + "51fab152-d6ad-4d9d-8dc3-676938686b2b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.5543122344752184E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -8.749999999999996, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "51fab152-d6ad-4d9d-8dc3-676938686b2b", + "Name": "FP_2_6" + }, + "a8a36069-ea62-4618-9386-eab3a29da60f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.5543122344752184E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -8.749999999999996, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "a8a36069-ea62-4618-9386-eab3a29da60f", + "Name": "FG_2_6" + }, + "841e2e97-f1db-4490-a0d6-3e3f80dd0787": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.8562928971732612E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -10.449999999999998, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "841e2e97-f1db-4490-a0d6-3e3f80dd0787", + "Name": "FP_2_7" + }, + "2178036f-f8f3-47a7-91cf-5ba253234487": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.8562928971732612E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -10.449999999999998, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "2178036f-f8f3-47a7-91cf-5ba253234487", + "Name": "FG_2_7" + }, + "6cdd08ab-f483-461a-bcec-f5fded52ed5d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -2.1582735598713037E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -12.149999999999999, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "6cdd08ab-f483-461a-bcec-f5fded52ed5d", + "Name": "FP_2_8" + }, + "438264af-441b-4764-89de-e972d43c03b1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -2.1582735598713037E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -12.149999999999999, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "438264af-441b-4764-89de-e972d43c03b1", + "Name": "FG_2_8" + }, + "49a18462-c5f1-4dcb-a174-adc177f436d9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -2.4602542225693465E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -13.849999999999998, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "49a18462-c5f1-4dcb-a174-adc177f436d9", + "Name": "FP_2_9" + }, + "54a76ff6-d47c-4191-8826-0c42345205cc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -2.4602542225693465E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -13.849999999999998, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "54a76ff6-d47c-4191-8826-0c42345205cc", + "Name": "FG_2_9" + }, + "847d237b-8697-4bf8-a7b8-7554ba2654c9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -2.762234885267389E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -15.549999999999997, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "847d237b-8697-4bf8-a7b8-7554ba2654c9", + "Name": "FP_2_10" + }, + "419a5e92-9fb0-444d-b8bd-e3bb50865be3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -2.762234885267389E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -15.549999999999997, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "419a5e92-9fb0-444d-b8bd-e3bb50865be3", + "Name": "FG_2_10" + }, + "beee06eb-82db-40b5-a6d1-8a5cfafbf1d4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.0642155479654314E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -17.249999999999996, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "beee06eb-82db-40b5-a6d1-8a5cfafbf1d4", + "Name": "FP_2_11" + }, + "6c74635d-b842-4412-8c6f-27e4fc6284ba": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.0642155479654314E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -17.249999999999996, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "6c74635d-b842-4412-8c6f-27e4fc6284ba", + "Name": "FG_2_11" + }, + "13a9ddf9-fafd-4435-9ff1-6e3d0c608066": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.3661962106634743E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -18.95, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "13a9ddf9-fafd-4435-9ff1-6e3d0c608066", + "Name": "FP_2_12" + }, + "30ec85e0-f27a-45ff-b6d7-ffa4fdbf157e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.3661962106634743E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -18.95, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "30ec85e0-f27a-45ff-b6d7-ffa4fdbf157e", + "Name": "FG_2_12" + }, + "7c23bc28-f76a-4a30-958b-26c4def15b2e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.668176873361517E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -20.65, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "7c23bc28-f76a-4a30-958b-26c4def15b2e", + "Name": "FP_2_13" + }, + "9cb8a285-85ea-458e-a4a8-ebc29775b051": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.668176873361517E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -20.65, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "9cb8a285-85ea-458e-a4a8-ebc29775b051", + "Name": "FG_2_13" + }, + "c61da45c-2978-4ebc-9c0d-da4b85920219": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.9701575360595596E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -22.349999999999998, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "c61da45c-2978-4ebc-9c0d-da4b85920219", + "Name": "FP_2_14" + }, + "bbac01b9-d629-42ba-9a26-da7f74c3d996": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -3.9701575360595596E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -22.349999999999998, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "bbac01b9-d629-42ba-9a26-da7f74c3d996", + "Name": "FG_2_14" + }, + "fbd61f14-2a8d-4cfa-83a5-8ea35c8ef9f2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.272138198757602E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -24.05, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "fbd61f14-2a8d-4cfa-83a5-8ea35c8ef9f2", + "Name": "FP_2_15" + }, + "c736ded5-4360-40fc-9e68-4aa728d7b5c8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.272138198757602E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -24.05, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "c736ded5-4360-40fc-9e68-4aa728d7b5c8", + "Name": "FG_2_15" + }, + "0065b147-ae3d-42d2-99db-29c451a5b7b4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.574118861455645E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -25.75, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "0065b147-ae3d-42d2-99db-29c451a5b7b4", + "Name": "FP_2_16" + }, + "96fb346c-8aae-4c0b-906b-f6f7fbbd2c09": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.574118861455645E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -25.75, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "96fb346c-8aae-4c0b-906b-f6f7fbbd2c09", + "Name": "FG_2_16" + }, + "bc67b73e-d55a-499b-a177-e965d700e17c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.876099524153688E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -27.45, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "bc67b73e-d55a-499b-a177-e965d700e17c", + "Name": "FP_2_17" + }, + "665db63a-fed3-467a-83d8-1e9aa160b038": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -4.876099524153688E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -27.45, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "665db63a-fed3-467a-83d8-1e9aa160b038", + "Name": "FG_2_17" + }, + "20ccc4be-2e20-4f89-84d5-54495d70f1ce": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -5.17808018685173E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -29.15, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "20ccc4be-2e20-4f89-84d5-54495d70f1ce", + "Name": "FP_2_18" + }, + "950e2c86-8318-4538-aecb-beedfab1d529": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -5.17808018685173E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -29.15, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "950e2c86-8318-4538-aecb-beedfab1d529", + "Name": "FG_2_18" + }, + "912c0f6f-371d-45fc-bd4c-bfced1007114": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -5.480060849549773E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -30.849999999999998, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "912c0f6f-371d-45fc-bd4c-bfced1007114", + "Name": "FP_2_19" + }, + "db9a41a1-0f5e-47d7-9048-3699871976e2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -5.480060849549773E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -30.849999999999998, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "db9a41a1-0f5e-47d7-9048-3699871976e2", + "Name": "FG_2_19" + }, + "be4d4465-9195-4d2c-b001-c6b2c9b5d0dc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -5.782041512247815E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -32.55, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "be4d4465-9195-4d2c-b001-c6b2c9b5d0dc", + "Name": "FP_2_20" + }, + "95313eca-ed2c-4bb1-b4e8-d4fa7370387a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -5.782041512247815E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -32.55, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "95313eca-ed2c-4bb1-b4e8-d4fa7370387a", + "Name": "FG_2_20" + }, + "1cd13070-ec62-4884-a831-45118f2e6b0e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.0840221749458575E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -34.25, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "1cd13070-ec62-4884-a831-45118f2e6b0e", + "Name": "FP_2_21" + }, + "3be39739-0b8e-40a2-aeed-993a0df93ebc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.0840221749458575E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -34.25, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "3be39739-0b8e-40a2-aeed-993a0df93ebc", + "Name": "FG_2_21" + }, + "f1cabba6-8a40-4af3-bfd9-34a6319dffd5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.3860028376439E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -35.95, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "f1cabba6-8a40-4af3-bfd9-34a6319dffd5", + "Name": "FP_2_22" + }, + "1fd1d0ef-56dd-4326-b991-e9c1ecb0d10d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.3860028376439E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -35.95, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "1fd1d0ef-56dd-4326-b991-e9c1ecb0d10d", + "Name": "FG_2_22" + }, + "96c714f4-a381-48f1-a59a-524ccbd54dda": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.687983500341943E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -37.650000000000006, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "96c714f4-a381-48f1-a59a-524ccbd54dda", + "Name": "FP_2_23" + }, + "a3012d1e-f1e5-4fe8-91b4-325ee85e7eb7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.687983500341943E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -37.650000000000006, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "a3012d1e-f1e5-4fe8-91b4-325ee85e7eb7", + "Name": "FG_2_23" + }, + "cfbf602a-04eb-48e4-8e00-1552c63a7399": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.989964163039985E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -39.349999999999994, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "cfbf602a-04eb-48e4-8e00-1552c63a7399", + "Name": "FP_2_24" + }, + "dd9ef9ff-4bcb-43ce-bb1d-90ced3ab6c91": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -6.989964163039985E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -39.349999999999994, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "dd9ef9ff-4bcb-43ce-bb1d-90ced3ab6c91", + "Name": "FG_2_24" + }, + "6374bbd1-dbb3-47a4-8932-b53da0013da0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -7.291944825738029E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -41.05, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "6374bbd1-dbb3-47a4-8932-b53da0013da0", + "Name": "FP_2_25" + }, + "5b64a384-1a36-44d9-8035-a3643e36889c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -7.291944825738029E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -41.05, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "5b64a384-1a36-44d9-8035-a3643e36889c", + "Name": "FG_2_25" + }, + "25baac25-4efe-4981-a3c1-9c75995b2b03": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -7.593925488436071E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -42.75, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "25baac25-4efe-4981-a3c1-9c75995b2b03", + "Name": "FP_2_26" + }, + "6df497f0-e19d-4cb7-be9a-65f7de93e46f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -7.593925488436071E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -42.75, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "6df497f0-e19d-4cb7-be9a-65f7de93e46f", + "Name": "FG_2_26" + }, + "c26bc564-a14b-4006-82d6-3b6f637d01af": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -7.895906151134114E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -44.45, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "c26bc564-a14b-4006-82d6-3b6f637d01af", + "Name": "FP_2_27" + }, + "e5ed615a-a482-425f-b06e-922bca5fd0fc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -7.895906151134114E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -44.45, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "e5ed615a-a482-425f-b06e-922bca5fd0fc", + "Name": "FG_2_27" + }, + "b0e745dd-bffe-4a0f-89db-209b00ddfa71": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -8.197886813832156E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -46.150000000000006, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "b0e745dd-bffe-4a0f-89db-209b00ddfa71", + "Name": "FP_2_28" + }, + "4eede944-ff83-4bec-b698-6fcd9c2699b1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -8.197886813832156E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -46.150000000000006, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "4eede944-ff83-4bec-b698-6fcd9c2699b1", + "Name": "FG_2_28" + }, + "74aa154b-c1fc-4e8a-9f40-9f023a93c838": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -8.499867476530199E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -47.85000000000001, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "74aa154b-c1fc-4e8a-9f40-9f023a93c838", + "Name": "FP_2_29" + }, + "cb474f73-1ffc-43e5-a34d-8161e65bbd7d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -8.499867476530199E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -47.85000000000001, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "cb474f73-1ffc-43e5-a34d-8161e65bbd7d", + "Name": "FG_2_29" + }, + "69df6c8d-a0f6-426d-8aed-759ee6081cab": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -8.801848139228241E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -49.55, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "69df6c8d-a0f6-426d-8aed-759ee6081cab", + "Name": "FP_2_30" + }, + "52337a1d-9758-41ec-b005-7573045a3b0a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -8.801848139228241E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -49.55, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "52337a1d-9758-41ec-b005-7573045a3b0a", + "Name": "FG_2_30" + }, + "6a82aceb-3658-4eaa-8ee5-accdf05bf31d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.103828801926285E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -51.25, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "6a82aceb-3658-4eaa-8ee5-accdf05bf31d", + "Name": "FP_2_31" + }, + "aa3bb25c-1177-40a0-9851-c40dd8cba4ec": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.103828801926285E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -51.25, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "aa3bb25c-1177-40a0-9851-c40dd8cba4ec", + "Name": "FG_2_31" + }, + "3b8eda14-9fae-414c-9b03-4bc73e003d43": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.405809464624326E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -52.95, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "3b8eda14-9fae-414c-9b03-4bc73e003d43", + "Name": "FP_2_32" + }, + "4b80a2a2-869c-40c2-8a57-0e4aea554e87": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.405809464624326E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -52.95, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "4b80a2a2-869c-40c2-8a57-0e4aea554e87", + "Name": "FG_2_32" + }, + "73b1e826-6346-4517-a108-82595e931acb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.70779012732237E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -54.650000000000006, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "73b1e826-6346-4517-a108-82595e931acb", + "Name": "FP_2_33" + }, + "ca3cc3e2-35a4-4e79-a700-fb2b847397d8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -9.70779012732237E-15, + -1.0, + 0.0, + 1.7763568394002506E-16, + -54.650000000000006, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "ca3cc3e2-35a4-4e79-a700-fb2b847397d8", + "Name": "FG_2_33" + }, + "a7d63dc3-cd5d-428d-99ad-87c26f93bfbc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.0009770790020413E-14, + -1.0, + 0.0, + 1.7763568394002506E-16, + -56.35000000000001, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "a7d63dc3-cd5d-428d-99ad-87c26f93bfbc", + "Name": "FP_2_34" + }, + "c6ac0eeb-12fa-41ae-a16a-d4b7e1b97341": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.0009770790020413E-14, + -1.0, + 0.0, + 1.7763568394002506E-16, + -56.35000000000001, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "c6ac0eeb-12fa-41ae-a16a-d4b7e1b97341", + "Name": "FG_2_34" + }, + "69cf00be-24d0-4be1-ab1e-5e2510fbe719": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "08536181-6c6a-4811-bd8c-26e64e079485", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.0311751452718455E-14, + -1.0, + 0.0, + 1.7763568394002506E-16, + -58.05, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "69cf00be-24d0-4be1-ab1e-5e2510fbe719", + "Name": "FP_2_35" + }, + "8e8171ea-8497-4df7-927d-d1d4ef11f2a9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b8bb89a8-c302-4c75-ab3e-a1fe29251479", + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.0311751452718455E-14, + -1.0, + 0.0, + 1.7763568394002506E-16, + -58.05, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Id": "8e8171ea-8497-4df7-927d-d1d4ef11f2a9", + "Name": "FG_2_35" + }, + "28b083a7-587e-430d-b743-513cc85803bb": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 0.0006479859497433802, + "Y": 0.009978983626048054, + "Z": 0.0 + }, + { + "X": 0.24935201405025662, + "Y": 0.009978983626048054, + "Z": 0.0 + }, + { + "X": 0.24935201405025662, + "Y": 3.8400210163739517, + "Z": 0.0 + }, + { + "X": 0.0006479859497433802, + "Y": 3.8400210163739517, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "28b083a7-587e-430d-b743-513cc85803bb", + "Name": null + }, + "0857c85c-c68e-48f6-85aa-15339337b58b": { + "discriminator": "Elements.FacadePanel", + "Thickness": 0.1, + "Transform": { + "Matrix": { + "Components": [ + -1.7763568394002506E-16, + 0.0, + -1.0, + -1.0613732115416497E-14, + -1.0, + 0.0, + 1.7763568394002506E-16, + -59.75, + 0.0, + 1.0, + 0.0, + 8.35 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "28b083a7-587e-430d-b743-513cc85803bb", + "Height": 0.1, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "0857c85c-c68e-48f6-85aa-15339337b58b", + "Name": "FP_2_36" + }, + "07d9283d-4cf3-43c2-841d-c82dc71d6760": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.05, + "Y": 8.881784197001254E-18, + "Z": 12.2 + }, + { + "X": -0.05000000000001066, + "Y": -60.0, + "Z": 12.2 + }, + { + "X": 0.049999999999989345, + "Y": -60.0, + "Z": 12.2 + }, + { + "X": 0.05, + "Y": -8.881784197001254E-18, + "Z": 12.2 + } + ] + }, + "Voids": [], + "Id": "07d9283d-4cf3-43c2-841d-c82dc71d6760", + "Name": null + }, + "7f810a61-7aa0-4d54-a9e3-a30c0181c9d7": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.05, + "Y": 8.881784197001254E-18, + "Z": 12.2 + }, + { + "X": -0.05000000000001066, + "Y": -60.0, + "Z": 12.2 + }, + { + "X": 0.049999999999989345, + "Y": -60.0, + "Z": 12.2 + }, + { + "X": 0.05, + "Y": -8.881784197001254E-18, + "Z": 12.2 + } + ] + }, + "Voids": [], + "Id": "7f810a61-7aa0-4d54-a9e3-a30c0181c9d7", + "Name": null + }, + "072bccf0-7255-4bc6-9fde-abdb3fee8fbd": { + "discriminator": "Elements.StandardWall", + "CenterLine": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 12.2 + }, + "End": { + "X": -1.0658141036401503E-14, + "Y": -60.0, + "Z": 12.2 + } + }, + "Thickness": 0.1, + "Height": 0.9, + "Profile": null, + "Openings": [], + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "6771e26c-6d64-4c0e-962c-018166d01dfd", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Extrude", + "Profile": "7f810a61-7aa0-4d54-a9e3-a30c0181c9d7", + "Height": 0.9, + "Direction": { + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + }, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "072bccf0-7255-4bc6-9fde-abdb3fee8fbd", + "Name": null + }, + "1bc34a74-5aff-4a89-967c-eaaace0b4d50": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "1bc34a74-5aff-4a89-967c-eaaace0b4d50", + "Name": null + }, + "7298d643-9049-4a2b-960d-ae775b50fd80": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.0, + "Green": 0.0, + "Blue": 0.0, + "Alpha": 1.0 + }, + "SpecularFactor": 0.0, + "GlossinessFactor": 0.0, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "EdgeDisplaySettings": null, + "Id": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Name": "black" + }, + "762b6141-87f5-4a25-b644-4b1c66d8d5e5": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -30.30278, + "Z": 0.0 + }, + "End": { + "X": 9.46482, + "Y": -1.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "1bc34a74-5aff-4a89-967c-eaaace0b4d50", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "1bc34a74-5aff-4a89-967c-eaaace0b4d50", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -30.30278, + "Z": 0.0 + }, + "End": { + "X": 9.46482, + "Y": -1.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "762b6141-87f5-4a25-b644-4b1c66d8d5e5", + "Name": null + }, + "d040523b-148a-41e3-8228-523e4597e8ca": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "d040523b-148a-41e3-8228-523e4597e8ca", + "Name": null + }, + "487b40b2-a5dc-4e3d-aeba-6c49a79e00e1": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -30.30278, + "Z": 2.25 + }, + "End": { + "X": 9.46482, + "Y": -1.0, + "Z": 2.25 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "d040523b-148a-41e3-8228-523e4597e8ca", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "d040523b-148a-41e3-8228-523e4597e8ca", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -30.30278, + "Z": 2.25 + }, + "End": { + "X": 9.46482, + "Y": -1.0, + "Z": 2.25 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "487b40b2-a5dc-4e3d-aeba-6c49a79e00e1", + "Name": null + }, + "da794247-52d7-4137-8f6a-2ea2b0d321b6": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "da794247-52d7-4137-8f6a-2ea2b0d321b6", + "Name": null + }, + "5c0f8c0e-0318-43fe-bb17-4764d0d2cb61": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -30.30278, + "Z": 4.5 + }, + "End": { + "X": 9.46482, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "da794247-52d7-4137-8f6a-2ea2b0d321b6", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "da794247-52d7-4137-8f6a-2ea2b0d321b6", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -30.30278, + "Z": 4.5 + }, + "End": { + "X": 9.46482, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "5c0f8c0e-0318-43fe-bb17-4764d0d2cb61", + "Name": null + }, + "2b1e23eb-e5f9-430d-9fa1-d4539e09c134": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "2b1e23eb-e5f9-430d-9fa1-d4539e09c134", + "Name": null + }, + "c568286c-ae77-4d5b-a07e-72bcec1b5a25": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -30.30278, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -30.30278, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "2b1e23eb-e5f9-430d-9fa1-d4539e09c134", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "2b1e23eb-e5f9-430d-9fa1-d4539e09c134", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -30.30278, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -30.30278, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "c568286c-ae77-4d5b-a07e-72bcec1b5a25", + "Name": null + }, + "4a8f40c9-33ea-499c-9ea8-348bd2b41430": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "4a8f40c9-33ea-499c-9ea8-348bd2b41430", + "Name": null + }, + "1d593e24-b5ed-4a27-9a8d-d5b7c364b25a": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 28.16794990224245, + "Y": -29.054704427439727, + "Z": 0.0 + }, + "End": { + "X": 28.16794990224245, + "Y": -29.054704427439727, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "4a8f40c9-33ea-499c-9ea8-348bd2b41430", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "4a8f40c9-33ea-499c-9ea8-348bd2b41430", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 28.16794990224245, + "Y": -29.054704427439727, + "Z": 0.0 + }, + "End": { + "X": 28.16794990224245, + "Y": -29.054704427439727, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "1d593e24-b5ed-4a27-9a8d-d5b7c364b25a", + "Name": null + }, + "fdd95142-0ed3-48b4-98fe-98396287d17b": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "fdd95142-0ed3-48b4-98fe-98396287d17b", + "Name": null + }, + "80717812-352e-48cd-b0be-4ed3b11e16e9": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.3358998044849, + "Y": -27.806628854879452, + "Z": 0.0 + }, + "End": { + "X": 27.3358998044849, + "Y": -27.806628854879452, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "fdd95142-0ed3-48b4-98fe-98396287d17b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "fdd95142-0ed3-48b4-98fe-98396287d17b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.3358998044849, + "Y": -27.806628854879452, + "Z": 0.0 + }, + "End": { + "X": 27.3358998044849, + "Y": -27.806628854879452, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "80717812-352e-48cd-b0be-4ed3b11e16e9", + "Name": null + }, + "3ff6d73e-4946-478e-bfde-0645ad9893b9": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "3ff6d73e-4946-478e-bfde-0645ad9893b9", + "Name": null + }, + "7d57375c-c364-4c05-b9c7-9d384449a3e5": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.50384970672735, + "Y": -26.55855328231918, + "Z": 0.0 + }, + "End": { + "X": 26.50384970672735, + "Y": -26.55855328231918, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "3ff6d73e-4946-478e-bfde-0645ad9893b9", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "3ff6d73e-4946-478e-bfde-0645ad9893b9", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.50384970672735, + "Y": -26.55855328231918, + "Z": 0.0 + }, + "End": { + "X": 26.50384970672735, + "Y": -26.55855328231918, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "7d57375c-c364-4c05-b9c7-9d384449a3e5", + "Name": null + }, + "4d138a3d-8ee2-494d-a1b2-8acb5782a8c6": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "4d138a3d-8ee2-494d-a1b2-8acb5782a8c6", + "Name": null + }, + "1b57cf87-0e10-4adb-afb4-580f95d5b2a8": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 25.6717996089698, + "Y": -25.31047770975891, + "Z": 0.0 + }, + "End": { + "X": 25.6717996089698, + "Y": -25.31047770975891, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "4d138a3d-8ee2-494d-a1b2-8acb5782a8c6", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "4d138a3d-8ee2-494d-a1b2-8acb5782a8c6", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 25.6717996089698, + "Y": -25.31047770975891, + "Z": 0.0 + }, + "End": { + "X": 25.6717996089698, + "Y": -25.31047770975891, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "1b57cf87-0e10-4adb-afb4-580f95d5b2a8", + "Name": null + }, + "95242f67-a116-48c8-8471-b1f9e191d1a7": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "95242f67-a116-48c8-8471-b1f9e191d1a7", + "Name": null + }, + "30c921b3-278d-43b5-bc6e-25b63df5181d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.83974951121225, + "Y": -24.06240213719864, + "Z": 0.0 + }, + "End": { + "X": 24.83974951121225, + "Y": -24.06240213719864, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "95242f67-a116-48c8-8471-b1f9e191d1a7", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "95242f67-a116-48c8-8471-b1f9e191d1a7", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.83974951121225, + "Y": -24.06240213719864, + "Z": 0.0 + }, + "End": { + "X": 24.83974951121225, + "Y": -24.06240213719864, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "30c921b3-278d-43b5-bc6e-25b63df5181d", + "Name": null + }, + "9459bd17-3c8e-46e9-8895-7bfc3adbea34": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "9459bd17-3c8e-46e9-8895-7bfc3adbea34", + "Name": null + }, + "74e505aa-c39e-4a87-a5d0-cee2c496ed6c": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.007699413454702, + "Y": -22.814326564638364, + "Z": 0.0 + }, + "End": { + "X": 24.007699413454702, + "Y": -22.814326564638364, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "9459bd17-3c8e-46e9-8895-7bfc3adbea34", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "9459bd17-3c8e-46e9-8895-7bfc3adbea34", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.007699413454702, + "Y": -22.814326564638364, + "Z": 0.0 + }, + "End": { + "X": 24.007699413454702, + "Y": -22.814326564638364, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "74e505aa-c39e-4a87-a5d0-cee2c496ed6c", + "Name": null + }, + "f2203fd5-75e1-4284-abb2-638463500c12": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "f2203fd5-75e1-4284-abb2-638463500c12", + "Name": null + }, + "197adfd3-8e92-46d9-a7b6-4ce045875a1f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.17564931569715, + "Y": -21.566250992078093, + "Z": 0.0 + }, + "End": { + "X": 23.17564931569715, + "Y": -21.566250992078093, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "f2203fd5-75e1-4284-abb2-638463500c12", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "f2203fd5-75e1-4284-abb2-638463500c12", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.17564931569715, + "Y": -21.566250992078093, + "Z": 0.0 + }, + "End": { + "X": 23.17564931569715, + "Y": -21.566250992078093, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "197adfd3-8e92-46d9-a7b6-4ce045875a1f", + "Name": null + }, + "c6deb3be-8d83-4ddc-a246-38b190d088f9": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "c6deb3be-8d83-4ddc-a246-38b190d088f9", + "Name": null + }, + "2f01d0c4-9958-475e-98d9-24976578050e": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.343599217939598, + "Y": -20.31817541951782, + "Z": 0.0 + }, + "End": { + "X": 22.343599217939598, + "Y": -20.31817541951782, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "c6deb3be-8d83-4ddc-a246-38b190d088f9", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "c6deb3be-8d83-4ddc-a246-38b190d088f9", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.343599217939598, + "Y": -20.31817541951782, + "Z": 0.0 + }, + "End": { + "X": 22.343599217939598, + "Y": -20.31817541951782, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "2f01d0c4-9958-475e-98d9-24976578050e", + "Name": null + }, + "20cc3180-ef20-4ff7-82c0-ec2be19092c6": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "20cc3180-ef20-4ff7-82c0-ec2be19092c6", + "Name": null + }, + "db2fe5a6-e358-4f1b-aac2-b37a8fab6887": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.51154912018205, + "Y": -19.070099846957547, + "Z": 0.0 + }, + "End": { + "X": 21.51154912018205, + "Y": -19.070099846957547, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "20cc3180-ef20-4ff7-82c0-ec2be19092c6", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "20cc3180-ef20-4ff7-82c0-ec2be19092c6", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.51154912018205, + "Y": -19.070099846957547, + "Z": 0.0 + }, + "End": { + "X": 21.51154912018205, + "Y": -19.070099846957547, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "db2fe5a6-e358-4f1b-aac2-b37a8fab6887", + "Name": null + }, + "8fd2c859-20e3-40f0-b1b8-38c0cc1a363d": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "8fd2c859-20e3-40f0-b1b8-38c0cc1a363d", + "Name": null + }, + "d77ce8e5-6af1-4f19-9be2-42cf74458942": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 20.6794990224245, + "Y": -17.822024274397275, + "Z": 0.0 + }, + "End": { + "X": 20.6794990224245, + "Y": -17.822024274397275, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "8fd2c859-20e3-40f0-b1b8-38c0cc1a363d", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "8fd2c859-20e3-40f0-b1b8-38c0cc1a363d", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 20.6794990224245, + "Y": -17.822024274397275, + "Z": 0.0 + }, + "End": { + "X": 20.6794990224245, + "Y": -17.822024274397275, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "d77ce8e5-6af1-4f19-9be2-42cf74458942", + "Name": null + }, + "df06b204-3e10-489e-9104-0cb77222d57d": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "df06b204-3e10-489e-9104-0cb77222d57d", + "Name": null + }, + "ff9c620c-b1d3-4494-ad63-dd6371db654d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.84744892466695, + "Y": -16.573948701837004, + "Z": 0.0 + }, + "End": { + "X": 19.84744892466695, + "Y": -16.573948701837004, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "df06b204-3e10-489e-9104-0cb77222d57d", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "df06b204-3e10-489e-9104-0cb77222d57d", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.84744892466695, + "Y": -16.573948701837004, + "Z": 0.0 + }, + "End": { + "X": 19.84744892466695, + "Y": -16.573948701837004, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "ff9c620c-b1d3-4494-ad63-dd6371db654d", + "Name": null + }, + "8d99beec-8b2d-4f51-b5e0-e3426509070d": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "8d99beec-8b2d-4f51-b5e0-e3426509070d", + "Name": null + }, + "c6dbf26e-d595-4cbd-b80e-4b7a81847fd1": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.0153988269094, + "Y": -15.325873129276731, + "Z": 0.0 + }, + "End": { + "X": 19.0153988269094, + "Y": -15.325873129276731, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "8d99beec-8b2d-4f51-b5e0-e3426509070d", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "8d99beec-8b2d-4f51-b5e0-e3426509070d", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.0153988269094, + "Y": -15.325873129276731, + "Z": 0.0 + }, + "End": { + "X": 19.0153988269094, + "Y": -15.325873129276731, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "c6dbf26e-d595-4cbd-b80e-4b7a81847fd1", + "Name": null + }, + "c354aa25-fee3-4bcc-aaa8-2dfa95e8c5c2": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "c354aa25-fee3-4bcc-aaa8-2dfa95e8c5c2", + "Name": null + }, + "f553c06a-c1b4-4344-b34f-3ad6f5f45c2a": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 18.183348729151852, + "Y": -14.077797556716458, + "Z": 0.0 + }, + "End": { + "X": 18.183348729151852, + "Y": -14.077797556716458, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "c354aa25-fee3-4bcc-aaa8-2dfa95e8c5c2", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "c354aa25-fee3-4bcc-aaa8-2dfa95e8c5c2", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 18.183348729151852, + "Y": -14.077797556716458, + "Z": 0.0 + }, + "End": { + "X": 18.183348729151852, + "Y": -14.077797556716458, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f553c06a-c1b4-4344-b34f-3ad6f5f45c2a", + "Name": null + }, + "40f030e9-02af-45f9-8772-0354f6e83f08": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "40f030e9-02af-45f9-8772-0354f6e83f08", + "Name": null + }, + "4c074df2-03b5-4381-822a-5380fdfb5394": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.3512986313943, + "Y": -12.829721984156187, + "Z": 0.0 + }, + "End": { + "X": 17.3512986313943, + "Y": -12.829721984156187, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "40f030e9-02af-45f9-8772-0354f6e83f08", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "40f030e9-02af-45f9-8772-0354f6e83f08", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.3512986313943, + "Y": -12.829721984156187, + "Z": 0.0 + }, + "End": { + "X": 17.3512986313943, + "Y": -12.829721984156187, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "4c074df2-03b5-4381-822a-5380fdfb5394", + "Name": null + }, + "b91f8f0d-86fa-423a-acd1-3ac26feb9a8b": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "b91f8f0d-86fa-423a-acd1-3ac26feb9a8b", + "Name": null + }, + "b0cd255e-db88-4188-bba8-36aacb8bf1ea": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.51924853363675, + "Y": -11.581646411595916, + "Z": 0.0 + }, + "End": { + "X": 16.51924853363675, + "Y": -11.581646411595916, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "b91f8f0d-86fa-423a-acd1-3ac26feb9a8b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "b91f8f0d-86fa-423a-acd1-3ac26feb9a8b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.51924853363675, + "Y": -11.581646411595916, + "Z": 0.0 + }, + "End": { + "X": 16.51924853363675, + "Y": -11.581646411595916, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "b0cd255e-db88-4188-bba8-36aacb8bf1ea", + "Name": null + }, + "e9d848e3-448d-4aae-b730-7b2432e02b37": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "e9d848e3-448d-4aae-b730-7b2432e02b37", + "Name": null + }, + "6bcd6fac-6c82-42a7-bf67-733575b82465": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 15.6871984358792, + "Y": -10.33357083903564, + "Z": 0.0 + }, + "End": { + "X": 15.6871984358792, + "Y": -10.33357083903564, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "e9d848e3-448d-4aae-b730-7b2432e02b37", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "e9d848e3-448d-4aae-b730-7b2432e02b37", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 15.6871984358792, + "Y": -10.33357083903564, + "Z": 0.0 + }, + "End": { + "X": 15.6871984358792, + "Y": -10.33357083903564, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "6bcd6fac-6c82-42a7-bf67-733575b82465", + "Name": null + }, + "dd083ba7-259b-47a7-8cc8-6f7e86ff1053": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "dd083ba7-259b-47a7-8cc8-6f7e86ff1053", + "Name": null + }, + "8524b05a-6662-4ab2-b3a9-975275ca55fd": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.85514833812165, + "Y": -9.08549526647537, + "Z": 0.0 + }, + "End": { + "X": 14.85514833812165, + "Y": -9.08549526647537, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "dd083ba7-259b-47a7-8cc8-6f7e86ff1053", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "dd083ba7-259b-47a7-8cc8-6f7e86ff1053", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.85514833812165, + "Y": -9.08549526647537, + "Z": 0.0 + }, + "End": { + "X": 14.85514833812165, + "Y": -9.08549526647537, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "8524b05a-6662-4ab2-b3a9-975275ca55fd", + "Name": null + }, + "36f75b30-c3e4-42e7-ab8b-7847588a7b86": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "36f75b30-c3e4-42e7-ab8b-7847588a7b86", + "Name": null + }, + "652c18fd-4626-4acf-ab4a-8e2b2193be04": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.0230982403641, + "Y": -7.837419693915098, + "Z": 0.0 + }, + "End": { + "X": 14.0230982403641, + "Y": -7.837419693915098, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "36f75b30-c3e4-42e7-ab8b-7847588a7b86", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "36f75b30-c3e4-42e7-ab8b-7847588a7b86", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.0230982403641, + "Y": -7.837419693915098, + "Z": 0.0 + }, + "End": { + "X": 14.0230982403641, + "Y": -7.837419693915098, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "652c18fd-4626-4acf-ab4a-8e2b2193be04", + "Name": null + }, + "7ba7bc46-63a5-4d3f-a90a-708a99118dca": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "7ba7bc46-63a5-4d3f-a90a-708a99118dca", + "Name": null + }, + "f31c9cbe-39c6-4407-a110-872841a8b6e3": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 13.19104814260655, + "Y": -6.589344121354824, + "Z": 0.0 + }, + "End": { + "X": 13.19104814260655, + "Y": -6.589344121354824, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "7ba7bc46-63a5-4d3f-a90a-708a99118dca", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "7ba7bc46-63a5-4d3f-a90a-708a99118dca", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 13.19104814260655, + "Y": -6.589344121354824, + "Z": 0.0 + }, + "End": { + "X": 13.19104814260655, + "Y": -6.589344121354824, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f31c9cbe-39c6-4407-a110-872841a8b6e3", + "Name": null + }, + "7867cf66-2d50-4cfe-b219-b56314314a2c": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "7867cf66-2d50-4cfe-b219-b56314314a2c", + "Name": null + }, + "f7ec8249-114b-47d6-a1c0-bb61382fe1f0": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.358998044848999, + "Y": -5.341268548794552, + "Z": 0.0 + }, + "End": { + "X": 12.358998044848999, + "Y": -5.341268548794552, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "7867cf66-2d50-4cfe-b219-b56314314a2c", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "7867cf66-2d50-4cfe-b219-b56314314a2c", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.358998044848999, + "Y": -5.341268548794552, + "Z": 0.0 + }, + "End": { + "X": 12.358998044848999, + "Y": -5.341268548794552, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f7ec8249-114b-47d6-a1c0-bb61382fe1f0", + "Name": null + }, + "6964f996-efc6-4016-9711-b2b90f055904": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "6964f996-efc6-4016-9711-b2b90f055904", + "Name": null + }, + "fcac37e6-333c-4e32-9911-c54f1a7ba929": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 11.526947947091447, + "Y": -4.093192976234278, + "Z": 0.0 + }, + "End": { + "X": 11.526947947091447, + "Y": -4.093192976234278, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "6964f996-efc6-4016-9711-b2b90f055904", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "6964f996-efc6-4016-9711-b2b90f055904", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 11.526947947091447, + "Y": -4.093192976234278, + "Z": 0.0 + }, + "End": { + "X": 11.526947947091447, + "Y": -4.093192976234278, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "fcac37e6-333c-4e32-9911-c54f1a7ba929", + "Name": null + }, + "fda32561-7d07-475a-8956-957c0f46b55a": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "fda32561-7d07-475a-8956-957c0f46b55a", + "Name": null + }, + "5e2ad3eb-4222-462d-9208-d08151fd2fc0": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.694897849333898, + "Y": -2.8451174036740063, + "Z": 0.0 + }, + "End": { + "X": 10.694897849333898, + "Y": -2.8451174036740063, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "fda32561-7d07-475a-8956-957c0f46b55a", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "fda32561-7d07-475a-8956-957c0f46b55a", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.694897849333898, + "Y": -2.8451174036740063, + "Z": 0.0 + }, + "End": { + "X": 10.694897849333898, + "Y": -2.8451174036740063, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "5e2ad3eb-4222-462d-9208-d08151fd2fc0", + "Name": null + }, + "ac7a7672-70b8-4d91-aa6b-0e992f8ea94f": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ac7a7672-70b8-4d91-aa6b-0e992f8ea94f", + "Name": null + }, + "c8b66a3d-1440-40e5-9fd4-489ecfc58a18": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.86284775157635, + "Y": -1.597041831113735, + "Z": 0.0 + }, + "End": { + "X": 9.86284775157635, + "Y": -1.597041831113735, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ac7a7672-70b8-4d91-aa6b-0e992f8ea94f", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ac7a7672-70b8-4d91-aa6b-0e992f8ea94f", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.86284775157635, + "Y": -1.597041831113735, + "Z": 0.0 + }, + "End": { + "X": 9.86284775157635, + "Y": -1.597041831113735, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "c8b66a3d-1440-40e5-9fd4-489ecfc58a18", + "Name": null + }, + "7a2ec1bf-c88c-4878-a9b1-542019901232": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "7a2ec1bf-c88c-4878-a9b1-542019901232", + "Name": null + }, + "231c9fa6-72ae-4f42-b532-4d567a38d164": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.46482, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 9.46482, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "7a2ec1bf-c88c-4878-a9b1-542019901232", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "7a2ec1bf-c88c-4878-a9b1-542019901232", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.46482, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 9.46482, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "231c9fa6-72ae-4f42-b532-4d567a38d164", + "Name": null + }, + "28c5c2b1-d65c-4c46-8689-d651f50f07e7": { + "discriminator": "Elements.Material", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.20000000298023224 + }, + "SpecularFactor": 1.0, + "GlossinessFactor": 1.0, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "EmissiveFactor": 1.0, + "EdgeDisplaySettings": null, + "Id": "28c5c2b1-d65c-4c46-8689-d651f50f07e7", + "Name": "glass" + }, + "e32262e9-1265-434b-a7e4-b92de71603f7": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 29.0, + "Y": -30.30278, + "Z": 0.0 + }, + { + "X": 9.46482, + "Y": -1.0, + "Z": 0.0 + }, + { + "X": 9.46482, + "Y": -1.0, + "Z": 4.5 + }, + { + "X": 29.0, + "Y": -30.30278, + "Z": 4.5 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "28c5c2b1-d65c-4c46-8689-d651f50f07e7", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 29.0, + "Y": -30.30278, + "Z": 0.0 + }, + { + "X": 9.46482, + "Y": -1.0, + "Z": 0.0 + }, + { + "X": 9.46482, + "Y": -1.0, + "Z": 4.5 + }, + { + "X": 29.0, + "Y": -30.30278, + "Z": 4.5 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "e32262e9-1265-434b-a7e4-b92de71603f7", + "Name": null + }, + "873755b5-bd57-4001-bdba-4f3d00e2c138": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "873755b5-bd57-4001-bdba-4f3d00e2c138", + "Name": null + }, + "a086b5a3-8ec5-4c43-9b34-53e9cefec988": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.46482, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -1.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "873755b5-bd57-4001-bdba-4f3d00e2c138", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "873755b5-bd57-4001-bdba-4f3d00e2c138", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.46482, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -1.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a086b5a3-8ec5-4c43-9b34-53e9cefec988", + "Name": null + }, + "8b17641e-148a-4f78-95bb-de6b23673222": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "8b17641e-148a-4f78-95bb-de6b23673222", + "Name": null + }, + "0299a21c-b0a7-4499-810b-658db2bfd743": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.46482, + "Y": -1.0, + "Z": 2.25 + }, + "End": { + "X": 1.0, + "Y": -1.0, + "Z": 2.25 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "8b17641e-148a-4f78-95bb-de6b23673222", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "8b17641e-148a-4f78-95bb-de6b23673222", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.46482, + "Y": -1.0, + "Z": 2.25 + }, + "End": { + "X": 1.0, + "Y": -1.0, + "Z": 2.25 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "0299a21c-b0a7-4499-810b-658db2bfd743", + "Name": null + }, + "5ff005b5-9155-4f86-97f8-91aa7d6b6d8e": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "5ff005b5-9155-4f86-97f8-91aa7d6b6d8e", + "Name": null + }, + "d3288cc4-721c-4165-8a82-4327f627e3f6": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.46482, + "Y": -1.0, + "Z": 4.5 + }, + "End": { + "X": 1.0, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "5ff005b5-9155-4f86-97f8-91aa7d6b6d8e", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "5ff005b5-9155-4f86-97f8-91aa7d6b6d8e", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.46482, + "Y": -1.0, + "Z": 4.5 + }, + "End": { + "X": 1.0, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "d3288cc4-721c-4165-8a82-4327f627e3f6", + "Name": null + }, + "6d7b3f8e-7b13-4c90-91b4-3532190b49aa": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "6d7b3f8e-7b13-4c90-91b4-3532190b49aa", + "Name": null + }, + "cc2d3346-1524-4db3-bb09-4f9f1d32c768": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.46482, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 9.46482, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "6d7b3f8e-7b13-4c90-91b4-3532190b49aa", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "6d7b3f8e-7b13-4c90-91b4-3532190b49aa", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.46482, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 9.46482, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "cc2d3346-1524-4db3-bb09-4f9f1d32c768", + "Name": null + }, + "ab566acf-c5e2-49e6-b670-3a4d11e17f12": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ab566acf-c5e2-49e6-b670-3a4d11e17f12", + "Name": null + }, + "8aa1bd9a-d791-4671-92de-3c71eb32c622": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.96482, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 7.96482, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ab566acf-c5e2-49e6-b670-3a4d11e17f12", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ab566acf-c5e2-49e6-b670-3a4d11e17f12", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.96482, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 7.96482, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "8aa1bd9a-d791-4671-92de-3c71eb32c622", + "Name": null + }, + "ae067c09-4fca-435a-9023-4456f08a1648": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ae067c09-4fca-435a-9023-4456f08a1648", + "Name": null + }, + "146818c8-2a71-43b8-a8db-475aad247b99": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 6.46482, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 6.46482, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ae067c09-4fca-435a-9023-4456f08a1648", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ae067c09-4fca-435a-9023-4456f08a1648", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 6.46482, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 6.46482, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "146818c8-2a71-43b8-a8db-475aad247b99", + "Name": null + }, + "b32842b1-91c5-4efc-9d26-1b18a373e299": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "b32842b1-91c5-4efc-9d26-1b18a373e299", + "Name": null + }, + "42a579f6-0b75-4fe4-a06c-fea894313b8d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 4.96482, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 4.96482, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "b32842b1-91c5-4efc-9d26-1b18a373e299", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "b32842b1-91c5-4efc-9d26-1b18a373e299", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 4.96482, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 4.96482, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "42a579f6-0b75-4fe4-a06c-fea894313b8d", + "Name": null + }, + "79154e69-95bd-402f-88a6-1f747d936165": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "79154e69-95bd-402f-88a6-1f747d936165", + "Name": null + }, + "a0f9b4b6-ad00-4463-bfb3-74bb1f34590a": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.4648199999999996, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 3.4648199999999996, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "79154e69-95bd-402f-88a6-1f747d936165", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "79154e69-95bd-402f-88a6-1f747d936165", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.4648199999999996, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 3.4648199999999996, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a0f9b4b6-ad00-4463-bfb3-74bb1f34590a", + "Name": null + }, + "f23ddf57-3f4f-43b7-9dd3-3e05af8163c7": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "f23ddf57-3f4f-43b7-9dd3-3e05af8163c7", + "Name": null + }, + "2cce7278-649a-4ac8-b264-7aa81abe28bb": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.9648200000000005, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 1.9648200000000005, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "f23ddf57-3f4f-43b7-9dd3-3e05af8163c7", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "f23ddf57-3f4f-43b7-9dd3-3e05af8163c7", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.9648200000000005, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 1.9648200000000005, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "2cce7278-649a-4ac8-b264-7aa81abe28bb", + "Name": null + }, + "d104e5e4-4fd4-4c21-8b2c-94e0264fe90f": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "d104e5e4-4fd4-4c21-8b2c-94e0264fe90f", + "Name": null + }, + "79aef24c-6a5b-4385-b897-d8ddbb90806c": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "d104e5e4-4fd4-4c21-8b2c-94e0264fe90f", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "d104e5e4-4fd4-4c21-8b2c-94e0264fe90f", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "79aef24c-6a5b-4385-b897-d8ddbb90806c", + "Name": null + }, + "52cc745e-786a-463f-bf6b-36dd6e53601b": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 9.46482, + "Y": -1.0, + "Z": 0.0 + }, + { + "X": 1.0, + "Y": -1.0, + "Z": 0.0 + }, + { + "X": 1.0, + "Y": -1.0, + "Z": 4.5 + }, + { + "X": 9.46482, + "Y": -1.0, + "Z": 4.5 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "28c5c2b1-d65c-4c46-8689-d651f50f07e7", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 9.46482, + "Y": -1.0, + "Z": 0.0 + }, + { + "X": 1.0, + "Y": -1.0, + "Z": 0.0 + }, + { + "X": 1.0, + "Y": -1.0, + "Z": 4.5 + }, + { + "X": 9.46482, + "Y": -1.0, + "Z": 4.5 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "52cc745e-786a-463f-bf6b-36dd6e53601b", + "Name": null + }, + "4f58b206-79a4-4b92-a5a2-1fd92033d21c": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "4f58b206-79a4-4b92-a5a2-1fd92033d21c", + "Name": null + }, + "98ca7935-db5a-4eb4-948f-2b9f11a75218": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -59.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "4f58b206-79a4-4b92-a5a2-1fd92033d21c", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "4f58b206-79a4-4b92-a5a2-1fd92033d21c", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -59.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "98ca7935-db5a-4eb4-948f-2b9f11a75218", + "Name": null + }, + "09099962-1835-4692-984a-eb010bce4d0d": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "09099962-1835-4692-984a-eb010bce4d0d", + "Name": null + }, + "13d71bcf-21cf-4323-be9a-b1b70033f0a9": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -1.0, + "Z": 2.25 + }, + "End": { + "X": 1.0, + "Y": -59.0, + "Z": 2.25 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "09099962-1835-4692-984a-eb010bce4d0d", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "09099962-1835-4692-984a-eb010bce4d0d", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -1.0, + "Z": 2.25 + }, + "End": { + "X": 1.0, + "Y": -59.0, + "Z": 2.25 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "13d71bcf-21cf-4323-be9a-b1b70033f0a9", + "Name": null + }, + "48da2373-6a89-4352-bfef-bdda79713af5": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "48da2373-6a89-4352-bfef-bdda79713af5", + "Name": null + }, + "79efe3aa-b0d0-4c89-9026-9be1fe70dfeb": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -1.0, + "Z": 4.5 + }, + "End": { + "X": 1.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "48da2373-6a89-4352-bfef-bdda79713af5", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "48da2373-6a89-4352-bfef-bdda79713af5", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -1.0, + "Z": 4.5 + }, + "End": { + "X": 1.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "79efe3aa-b0d0-4c89-9026-9be1fe70dfeb", + "Name": null + }, + "8b5c4f68-a0db-45a9-9563-cf5e39c35ae1": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "8b5c4f68-a0db-45a9-9563-cf5e39c35ae1", + "Name": null + }, + "dbda0112-78e2-4cac-8ed2-f9e28cdc1757": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "8b5c4f68-a0db-45a9-9563-cf5e39c35ae1", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "8b5c4f68-a0db-45a9-9563-cf5e39c35ae1", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -1.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -1.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "dbda0112-78e2-4cac-8ed2-f9e28cdc1757", + "Name": null + }, + "a75ca899-2fa7-4f14-864b-1915867d735e": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "a75ca899-2fa7-4f14-864b-1915867d735e", + "Name": null + }, + "73ec5b23-bf5e-43ce-b76d-cd8d5658a060": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -2.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -2.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "a75ca899-2fa7-4f14-864b-1915867d735e", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "a75ca899-2fa7-4f14-864b-1915867d735e", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -2.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -2.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "73ec5b23-bf5e-43ce-b76d-cd8d5658a060", + "Name": null + }, + "0b0f7379-c1ba-4635-8c10-8225dced407e": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "0b0f7379-c1ba-4635-8c10-8225dced407e", + "Name": null + }, + "caa25bb6-ed6f-4dba-9556-4f7bd40f1dcc": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -4.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -4.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "0b0f7379-c1ba-4635-8c10-8225dced407e", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "0b0f7379-c1ba-4635-8c10-8225dced407e", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -4.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -4.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "caa25bb6-ed6f-4dba-9556-4f7bd40f1dcc", + "Name": null + }, + "3c27c5d5-0ca1-4813-9060-37b1c58e122e": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "3c27c5d5-0ca1-4813-9060-37b1c58e122e", + "Name": null + }, + "765ccb09-72df-4e60-a46d-1b9a649f1622": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -5.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -5.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "3c27c5d5-0ca1-4813-9060-37b1c58e122e", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "3c27c5d5-0ca1-4813-9060-37b1c58e122e", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -5.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -5.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "765ccb09-72df-4e60-a46d-1b9a649f1622", + "Name": null + }, + "064cf28a-febc-43b7-98f9-d361d0fee195": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "064cf28a-febc-43b7-98f9-d361d0fee195", + "Name": null + }, + "a94b553a-e0eb-47f6-afec-9ce0129f8f13": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -7.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -7.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "064cf28a-febc-43b7-98f9-d361d0fee195", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "064cf28a-febc-43b7-98f9-d361d0fee195", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -7.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -7.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a94b553a-e0eb-47f6-afec-9ce0129f8f13", + "Name": null + }, + "98f28be1-9e15-4c12-9dbb-a1b0e56e0415": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "98f28be1-9e15-4c12-9dbb-a1b0e56e0415", + "Name": null + }, + "b9e3bec8-324b-44c9-a9f3-3328035087b5": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -8.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -8.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "98f28be1-9e15-4c12-9dbb-a1b0e56e0415", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "98f28be1-9e15-4c12-9dbb-a1b0e56e0415", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -8.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -8.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "b9e3bec8-324b-44c9-a9f3-3328035087b5", + "Name": null + }, + "f262da15-7db4-4941-a974-b0c9b85b3eb8": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "f262da15-7db4-4941-a974-b0c9b85b3eb8", + "Name": null + }, + "c8e926c1-3d4e-4a6a-ad0d-4c21adc67e31": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -10.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "f262da15-7db4-4941-a974-b0c9b85b3eb8", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "f262da15-7db4-4941-a974-b0c9b85b3eb8", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -10.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "c8e926c1-3d4e-4a6a-ad0d-4c21adc67e31", + "Name": null + }, + "8287585e-5af4-471b-a102-26e73c4467ae": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "8287585e-5af4-471b-a102-26e73c4467ae", + "Name": null + }, + "977ee5dc-03c3-48a3-aea0-8ca7f889af5d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -11.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -11.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "8287585e-5af4-471b-a102-26e73c4467ae", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "8287585e-5af4-471b-a102-26e73c4467ae", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -11.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -11.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "977ee5dc-03c3-48a3-aea0-8ca7f889af5d", + "Name": null + }, + "ddf3c61c-7bc9-4536-bf74-d53d04c555d2": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ddf3c61c-7bc9-4536-bf74-d53d04c555d2", + "Name": null + }, + "8ba4ab78-b7f3-4d12-8a17-3d4c68aef25f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -13.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -13.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ddf3c61c-7bc9-4536-bf74-d53d04c555d2", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ddf3c61c-7bc9-4536-bf74-d53d04c555d2", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -13.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -13.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "8ba4ab78-b7f3-4d12-8a17-3d4c68aef25f", + "Name": null + }, + "af184823-d760-40d7-845d-50634fb99d7f": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "af184823-d760-40d7-845d-50634fb99d7f", + "Name": null + }, + "e0d4171c-0d1f-4f5c-9056-9b5a13eaabfe": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -14.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -14.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "af184823-d760-40d7-845d-50634fb99d7f", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "af184823-d760-40d7-845d-50634fb99d7f", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -14.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -14.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "e0d4171c-0d1f-4f5c-9056-9b5a13eaabfe", + "Name": null + }, + "3be64d1d-bbdc-4433-87da-a0e7eab0a67a": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "3be64d1d-bbdc-4433-87da-a0e7eab0a67a", + "Name": null + }, + "b43df5db-07eb-47ab-b91c-4b381504646a": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -16.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -16.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "3be64d1d-bbdc-4433-87da-a0e7eab0a67a", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "3be64d1d-bbdc-4433-87da-a0e7eab0a67a", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -16.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -16.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "b43df5db-07eb-47ab-b91c-4b381504646a", + "Name": null + }, + "14353ee1-8757-465f-a67e-998291a57331": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "14353ee1-8757-465f-a67e-998291a57331", + "Name": null + }, + "914e9d64-9da6-4ca4-92b6-3086885216e1": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -17.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -17.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "14353ee1-8757-465f-a67e-998291a57331", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "14353ee1-8757-465f-a67e-998291a57331", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -17.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -17.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "914e9d64-9da6-4ca4-92b6-3086885216e1", + "Name": null + }, + "8e2c3c6a-3fe1-4cb1-a5f4-261a2b7f2398": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "8e2c3c6a-3fe1-4cb1-a5f4-261a2b7f2398", + "Name": null + }, + "55e33382-ad47-421d-847d-dde998c7863f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -19.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -19.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "8e2c3c6a-3fe1-4cb1-a5f4-261a2b7f2398", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "8e2c3c6a-3fe1-4cb1-a5f4-261a2b7f2398", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -19.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -19.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "55e33382-ad47-421d-847d-dde998c7863f", + "Name": null + }, + "b6f25239-474d-4c71-a8cf-771187031726": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "b6f25239-474d-4c71-a8cf-771187031726", + "Name": null + }, + "d06dacf8-9884-4549-bf4a-0fc09e5a08e9": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -20.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -20.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "b6f25239-474d-4c71-a8cf-771187031726", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "b6f25239-474d-4c71-a8cf-771187031726", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -20.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -20.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "d06dacf8-9884-4549-bf4a-0fc09e5a08e9", + "Name": null + }, + "2fde2d11-e127-4dff-86f0-b7ae7115b33a": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "2fde2d11-e127-4dff-86f0-b7ae7115b33a", + "Name": null + }, + "d078a800-f45e-43d9-b5f8-3dae8cbd9e5a": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -22.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -22.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "2fde2d11-e127-4dff-86f0-b7ae7115b33a", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "2fde2d11-e127-4dff-86f0-b7ae7115b33a", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -22.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -22.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "d078a800-f45e-43d9-b5f8-3dae8cbd9e5a", + "Name": null + }, + "19b633f6-f1e1-4342-8b52-b75fff2f6963": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "19b633f6-f1e1-4342-8b52-b75fff2f6963", + "Name": null + }, + "b48c1065-144e-4a58-abd7-60b912ddb9e8": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -23.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -23.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "19b633f6-f1e1-4342-8b52-b75fff2f6963", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "19b633f6-f1e1-4342-8b52-b75fff2f6963", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -23.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -23.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "b48c1065-144e-4a58-abd7-60b912ddb9e8", + "Name": null + }, + "efe1be9b-b00f-4cc6-83f4-1caa2805cc04": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "efe1be9b-b00f-4cc6-83f4-1caa2805cc04", + "Name": null + }, + "8e4cb6d0-e364-48a1-9202-005a41f82e48": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -25.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "efe1be9b-b00f-4cc6-83f4-1caa2805cc04", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "efe1be9b-b00f-4cc6-83f4-1caa2805cc04", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -25.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "8e4cb6d0-e364-48a1-9202-005a41f82e48", + "Name": null + }, + "ec372921-a192-4e32-b211-f0f459e4e5f5": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ec372921-a192-4e32-b211-f0f459e4e5f5", + "Name": null + }, + "2002906c-4bf2-4fd8-98b1-b09c316ae6b2": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -26.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -26.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ec372921-a192-4e32-b211-f0f459e4e5f5", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ec372921-a192-4e32-b211-f0f459e4e5f5", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -26.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -26.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "2002906c-4bf2-4fd8-98b1-b09c316ae6b2", + "Name": null + }, + "89c787b9-1de8-4ac2-9149-574b59b5fc2d": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "89c787b9-1de8-4ac2-9149-574b59b5fc2d", + "Name": null + }, + "3faef0e0-1bdb-4723-9112-14e9ce104a05": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -28.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -28.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "89c787b9-1de8-4ac2-9149-574b59b5fc2d", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "89c787b9-1de8-4ac2-9149-574b59b5fc2d", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -28.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -28.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "3faef0e0-1bdb-4723-9112-14e9ce104a05", + "Name": null + }, + "a7e1efb1-5718-45da-85e4-bff82356b5e0": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "a7e1efb1-5718-45da-85e4-bff82356b5e0", + "Name": null + }, + "adee005d-903e-4ea2-8cd7-a9de5e975fed": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -29.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -29.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "a7e1efb1-5718-45da-85e4-bff82356b5e0", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "a7e1efb1-5718-45da-85e4-bff82356b5e0", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -29.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -29.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "adee005d-903e-4ea2-8cd7-a9de5e975fed", + "Name": null + }, + "764bf663-d0cb-41f0-94bc-0e639c6578fb": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "764bf663-d0cb-41f0-94bc-0e639c6578fb", + "Name": null + }, + "81f1b370-c69c-4907-a2a4-384f549d9af2": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -31.000000000000004, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -31.000000000000004, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "764bf663-d0cb-41f0-94bc-0e639c6578fb", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "764bf663-d0cb-41f0-94bc-0e639c6578fb", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -31.000000000000004, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -31.000000000000004, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "81f1b370-c69c-4907-a2a4-384f549d9af2", + "Name": null + }, + "dba3d51b-420b-4642-8fa5-e74a196aa430": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "dba3d51b-420b-4642-8fa5-e74a196aa430", + "Name": null + }, + "48d1db71-a215-4e19-adb2-8602f72dea04": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -32.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -32.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "dba3d51b-420b-4642-8fa5-e74a196aa430", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "dba3d51b-420b-4642-8fa5-e74a196aa430", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -32.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -32.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "48d1db71-a215-4e19-adb2-8602f72dea04", + "Name": null + }, + "1ceca958-0e42-4df7-b02f-aec37623a5aa": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "1ceca958-0e42-4df7-b02f-aec37623a5aa", + "Name": null + }, + "a6226dce-2682-4a53-b0ff-f990cb45f84d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -34.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -34.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "1ceca958-0e42-4df7-b02f-aec37623a5aa", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "1ceca958-0e42-4df7-b02f-aec37623a5aa", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -34.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -34.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a6226dce-2682-4a53-b0ff-f990cb45f84d", + "Name": null + }, + "0b09e749-de6e-4507-8d50-ca4729d7ea9c": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "0b09e749-de6e-4507-8d50-ca4729d7ea9c", + "Name": null + }, + "2528955e-325a-47e6-8e2f-586a7126954e": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -35.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -35.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "0b09e749-de6e-4507-8d50-ca4729d7ea9c", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "0b09e749-de6e-4507-8d50-ca4729d7ea9c", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -35.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -35.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "2528955e-325a-47e6-8e2f-586a7126954e", + "Name": null + }, + "b91b9895-4f96-4ab3-8532-103d7cc5ba18": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "b91b9895-4f96-4ab3-8532-103d7cc5ba18", + "Name": null + }, + "efad256b-b9e4-4559-b8ff-84894d218e57": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -37.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -37.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "b91b9895-4f96-4ab3-8532-103d7cc5ba18", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "b91b9895-4f96-4ab3-8532-103d7cc5ba18", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -37.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -37.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "efad256b-b9e4-4559-b8ff-84894d218e57", + "Name": null + }, + "4e2f26be-b780-4f22-9b92-df89a6185f73": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "4e2f26be-b780-4f22-9b92-df89a6185f73", + "Name": null + }, + "8370a8c3-1184-4b10-bd36-0c09d45f6183": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -38.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -38.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "4e2f26be-b780-4f22-9b92-df89a6185f73", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "4e2f26be-b780-4f22-9b92-df89a6185f73", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -38.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -38.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "8370a8c3-1184-4b10-bd36-0c09d45f6183", + "Name": null + }, + "53eccb2b-726a-40aa-a121-66dd0ddfe02f": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "53eccb2b-726a-40aa-a121-66dd0ddfe02f", + "Name": null + }, + "10a46ea4-e9e8-41ee-91dc-4b4a3964e067": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -40.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "53eccb2b-726a-40aa-a121-66dd0ddfe02f", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "53eccb2b-726a-40aa-a121-66dd0ddfe02f", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -40.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "10a46ea4-e9e8-41ee-91dc-4b4a3964e067", + "Name": null + }, + "5f2c2039-1468-4194-88e0-8948d0c8620b": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "5f2c2039-1468-4194-88e0-8948d0c8620b", + "Name": null + }, + "44707400-314f-4bd4-a8d2-3296885c519b": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -41.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -41.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "5f2c2039-1468-4194-88e0-8948d0c8620b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "5f2c2039-1468-4194-88e0-8948d0c8620b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -41.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -41.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "44707400-314f-4bd4-a8d2-3296885c519b", + "Name": null + }, + "a5dadcc3-70c6-42d6-9f88-4eaacfb86b21": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "a5dadcc3-70c6-42d6-9f88-4eaacfb86b21", + "Name": null + }, + "45c6fe6d-2b6e-4af5-9d23-726528cc6aba": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -43.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -43.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "a5dadcc3-70c6-42d6-9f88-4eaacfb86b21", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "a5dadcc3-70c6-42d6-9f88-4eaacfb86b21", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -43.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -43.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "45c6fe6d-2b6e-4af5-9d23-726528cc6aba", + "Name": null + }, + "fd72396f-adb0-4f63-a87f-85272e174594": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "fd72396f-adb0-4f63-a87f-85272e174594", + "Name": null + }, + "0a841f20-52f8-41cc-85fe-05c73503dff2": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -44.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -44.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "fd72396f-adb0-4f63-a87f-85272e174594", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "fd72396f-adb0-4f63-a87f-85272e174594", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -44.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -44.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "0a841f20-52f8-41cc-85fe-05c73503dff2", + "Name": null + }, + "cf0c046d-c4e3-414c-9be9-48eb84844feb": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "cf0c046d-c4e3-414c-9be9-48eb84844feb", + "Name": null + }, + "3bd0f885-8663-4fdd-b2cf-0b9bafc361e8": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -46.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -46.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "cf0c046d-c4e3-414c-9be9-48eb84844feb", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "cf0c046d-c4e3-414c-9be9-48eb84844feb", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -46.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -46.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "3bd0f885-8663-4fdd-b2cf-0b9bafc361e8", + "Name": null + }, + "97500fd2-d2c0-427a-8e12-3e20cb77b3f9": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "97500fd2-d2c0-427a-8e12-3e20cb77b3f9", + "Name": null + }, + "9383a6fd-80a5-48ce-bd40-0afcc9c1528f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -47.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -47.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "97500fd2-d2c0-427a-8e12-3e20cb77b3f9", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "97500fd2-d2c0-427a-8e12-3e20cb77b3f9", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -47.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -47.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "9383a6fd-80a5-48ce-bd40-0afcc9c1528f", + "Name": null + }, + "3be1abee-2ccb-4d66-ad8b-eccad3311f0b": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "3be1abee-2ccb-4d66-ad8b-eccad3311f0b", + "Name": null + }, + "a26296ed-6ec2-4208-8c0b-a38f444041ce": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -49.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -49.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "3be1abee-2ccb-4d66-ad8b-eccad3311f0b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "3be1abee-2ccb-4d66-ad8b-eccad3311f0b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -49.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -49.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a26296ed-6ec2-4208-8c0b-a38f444041ce", + "Name": null + }, + "98d4a0fe-e1a3-4386-9a81-0da7cc69259d": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "98d4a0fe-e1a3-4386-9a81-0da7cc69259d", + "Name": null + }, + "33d2a68e-e960-4c83-82a9-1c164fc8325a": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -50.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -50.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "98d4a0fe-e1a3-4386-9a81-0da7cc69259d", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "98d4a0fe-e1a3-4386-9a81-0da7cc69259d", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -50.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -50.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "33d2a68e-e960-4c83-82a9-1c164fc8325a", + "Name": null + }, + "1f072c1c-29a6-4e2b-9ac8-aa7dd914e84e": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "1f072c1c-29a6-4e2b-9ac8-aa7dd914e84e", + "Name": null + }, + "6b48e3ac-6c89-4b03-8ae7-9b8c8d54eb7b": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -52.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -52.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "1f072c1c-29a6-4e2b-9ac8-aa7dd914e84e", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "1f072c1c-29a6-4e2b-9ac8-aa7dd914e84e", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -52.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -52.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "6b48e3ac-6c89-4b03-8ae7-9b8c8d54eb7b", + "Name": null + }, + "0169fef7-7760-45d9-b1c4-cb8016f3359e": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "0169fef7-7760-45d9-b1c4-cb8016f3359e", + "Name": null + }, + "88b74a38-c861-47b8-b9bb-e6746cdac64e": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -53.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -53.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "0169fef7-7760-45d9-b1c4-cb8016f3359e", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "0169fef7-7760-45d9-b1c4-cb8016f3359e", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -53.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -53.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "88b74a38-c861-47b8-b9bb-e6746cdac64e", + "Name": null + }, + "08e99676-4ddc-45ef-94ec-8df764af493e": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "08e99676-4ddc-45ef-94ec-8df764af493e", + "Name": null + }, + "9d9d83d1-ed06-4c56-a60e-d1457b4679de": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -55.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "08e99676-4ddc-45ef-94ec-8df764af493e", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "08e99676-4ddc-45ef-94ec-8df764af493e", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -55.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "9d9d83d1-ed06-4c56-a60e-d1457b4679de", + "Name": null + }, + "cd470729-64f3-4b5c-9644-5f86ff6dcfab": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "cd470729-64f3-4b5c-9644-5f86ff6dcfab", + "Name": null + }, + "d1062adc-0b26-434f-865e-d55fb3791f6d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -56.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -56.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "cd470729-64f3-4b5c-9644-5f86ff6dcfab", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "cd470729-64f3-4b5c-9644-5f86ff6dcfab", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -56.5, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -56.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "d1062adc-0b26-434f-865e-d55fb3791f6d", + "Name": null + }, + "89d8fb5f-ad50-46c3-ac19-286178f292a9": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "89d8fb5f-ad50-46c3-ac19-286178f292a9", + "Name": null + }, + "f940ce60-af81-401e-b333-593aa7875a1d": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -58.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -58.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "89d8fb5f-ad50-46c3-ac19-286178f292a9", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "89d8fb5f-ad50-46c3-ac19-286178f292a9", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -58.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -58.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f940ce60-af81-401e-b333-593aa7875a1d", + "Name": null + }, + "235e1733-465c-4664-9fe4-ac20397c6e75": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "235e1733-465c-4664-9fe4-ac20397c6e75", + "Name": null + }, + "e5309f74-a3ad-4f20-ab9a-8463d3e81298": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "235e1733-465c-4664-9fe4-ac20397c6e75", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "235e1733-465c-4664-9fe4-ac20397c6e75", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "e5309f74-a3ad-4f20-ab9a-8463d3e81298", + "Name": null + }, + "f7e5dfec-3daf-47c7-ae9e-5655d7873dfd": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 1.0, + "Y": -1.0, + "Z": 0.0 + }, + { + "X": 1.0, + "Y": -59.0, + "Z": 0.0 + }, + { + "X": 1.0, + "Y": -59.0, + "Z": 4.5 + }, + { + "X": 1.0, + "Y": -1.0, + "Z": 4.5 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "28c5c2b1-d65c-4c46-8689-d651f50f07e7", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 1.0, + "Y": -1.0, + "Z": 0.0 + }, + { + "X": 1.0, + "Y": -59.0, + "Z": 0.0 + }, + { + "X": 1.0, + "Y": -59.0, + "Z": 4.5 + }, + { + "X": 1.0, + "Y": -1.0, + "Z": 4.5 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f7e5dfec-3daf-47c7-ae9e-5655d7873dfd", + "Name": null + }, + "99b93bca-f665-4b73-9232-f7629bc8903c": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "99b93bca-f665-4b73-9232-f7629bc8903c", + "Name": null + }, + "debc3ff3-499f-4a0a-ab2b-7e41f6c8a127": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -59.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "99b93bca-f665-4b73-9232-f7629bc8903c", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "99b93bca-f665-4b73-9232-f7629bc8903c", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -59.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "debc3ff3-499f-4a0a-ab2b-7e41f6c8a127", + "Name": null + }, + "a0aa1b33-82f6-4edf-834f-79f3dbb94d93": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "a0aa1b33-82f6-4edf-834f-79f3dbb94d93", + "Name": null + }, + "e1a5504c-8f26-4964-9ac3-0620d3c21890": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -59.0, + "Z": 2.25 + }, + "End": { + "X": 29.0, + "Y": -59.0, + "Z": 2.25 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "a0aa1b33-82f6-4edf-834f-79f3dbb94d93", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "a0aa1b33-82f6-4edf-834f-79f3dbb94d93", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -59.0, + "Z": 2.25 + }, + "End": { + "X": 29.0, + "Y": -59.0, + "Z": 2.25 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "e1a5504c-8f26-4964-9ac3-0620d3c21890", + "Name": null + }, + "5328ebb2-dca0-491a-9687-d7bb12142603": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "5328ebb2-dca0-491a-9687-d7bb12142603", + "Name": null + }, + "38430b0c-a9fb-4d6c-b813-1ad286874e20": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -59.0, + "Z": 4.5 + }, + "End": { + "X": 29.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "5328ebb2-dca0-491a-9687-d7bb12142603", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "5328ebb2-dca0-491a-9687-d7bb12142603", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -59.0, + "Z": 4.5 + }, + "End": { + "X": 29.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "38430b0c-a9fb-4d6c-b813-1ad286874e20", + "Name": null + }, + "f9bcd9be-8496-49d5-a6ed-f463b3b32851": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "f9bcd9be-8496-49d5-a6ed-f463b3b32851", + "Name": null + }, + "db2a7ee2-30e1-4872-990d-b8eade1e400f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "f9bcd9be-8496-49d5-a6ed-f463b3b32851", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "f9bcd9be-8496-49d5-a6ed-f463b3b32851", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 1.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 1.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "db2a7ee2-30e1-4872-990d-b8eade1e400f", + "Name": null + }, + "b7ab6c92-74fc-493b-afb6-f003bcad7e0d": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "b7ab6c92-74fc-493b-afb6-f003bcad7e0d", + "Name": null + }, + "1eee6876-975a-4858-9e8f-b26a979bfdcd": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 2.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "b7ab6c92-74fc-493b-afb6-f003bcad7e0d", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "b7ab6c92-74fc-493b-afb6-f003bcad7e0d", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 2.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "1eee6876-975a-4858-9e8f-b26a979bfdcd", + "Name": null + }, + "4504c6bb-277f-45f5-a5b5-72b7bbd4bf07": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "4504c6bb-277f-45f5-a5b5-72b7bbd4bf07", + "Name": null + }, + "b37a14cc-a004-4efd-a369-33308aac95ea": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 4.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 4.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "4504c6bb-277f-45f5-a5b5-72b7bbd4bf07", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "4504c6bb-277f-45f5-a5b5-72b7bbd4bf07", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 4.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 4.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "b37a14cc-a004-4efd-a369-33308aac95ea", + "Name": null + }, + "264c70f2-92d2-4ced-9418-d3f3e0d00869": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "264c70f2-92d2-4ced-9418-d3f3e0d00869", + "Name": null + }, + "1e45ba9e-f242-4a00-94c7-b9e9733bdd45": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 5.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "264c70f2-92d2-4ced-9418-d3f3e0d00869", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "264c70f2-92d2-4ced-9418-d3f3e0d00869", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 5.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "1e45ba9e-f242-4a00-94c7-b9e9733bdd45", + "Name": null + }, + "661c04a6-72e2-49f8-83fe-8ca6b2deafd4": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "661c04a6-72e2-49f8-83fe-8ca6b2deafd4", + "Name": null + }, + "2fc57063-e4ed-4d29-974a-a1ad7d996651": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 7.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "661c04a6-72e2-49f8-83fe-8ca6b2deafd4", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "661c04a6-72e2-49f8-83fe-8ca6b2deafd4", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 7.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "2fc57063-e4ed-4d29-974a-a1ad7d996651", + "Name": null + }, + "ea92d924-3bc7-4237-828c-65d1ba9ee6ae": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ea92d924-3bc7-4237-828c-65d1ba9ee6ae", + "Name": null + }, + "24e6a070-25d6-4095-9e76-866864281b3a": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 8.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 8.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ea92d924-3bc7-4237-828c-65d1ba9ee6ae", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ea92d924-3bc7-4237-828c-65d1ba9ee6ae", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 8.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 8.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "24e6a070-25d6-4095-9e76-866864281b3a", + "Name": null + }, + "163532af-a140-4c8f-8b39-e0764a55593d": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "163532af-a140-4c8f-8b39-e0764a55593d", + "Name": null + }, + "d85eeb32-02a1-4ca9-991b-61f76fd1f36a": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 10.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "163532af-a140-4c8f-8b39-e0764a55593d", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "163532af-a140-4c8f-8b39-e0764a55593d", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 10.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "d85eeb32-02a1-4ca9-991b-61f76fd1f36a", + "Name": null + }, + "d3f661d6-cd69-4711-9538-a6ae9d198625": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "d3f661d6-cd69-4711-9538-a6ae9d198625", + "Name": null + }, + "11497673-a045-4ef2-8189-5c76ed57b80f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 11.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 11.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "d3f661d6-cd69-4711-9538-a6ae9d198625", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "d3f661d6-cd69-4711-9538-a6ae9d198625", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 11.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 11.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "11497673-a045-4ef2-8189-5c76ed57b80f", + "Name": null + }, + "5368af83-25ec-4fe8-90a6-4a59feee1dca": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "5368af83-25ec-4fe8-90a6-4a59feee1dca", + "Name": null + }, + "7c177cfe-558c-471e-89d3-48640dd3c040": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 13.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 13.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "5368af83-25ec-4fe8-90a6-4a59feee1dca", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "5368af83-25ec-4fe8-90a6-4a59feee1dca", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 13.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 13.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "7c177cfe-558c-471e-89d3-48640dd3c040", + "Name": null + }, + "c53979b0-1e96-4392-bd17-c3fb700c5139": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "c53979b0-1e96-4392-bd17-c3fb700c5139", + "Name": null + }, + "4b105f2a-fbea-4bda-a46c-732db0abf35b": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 14.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "c53979b0-1e96-4392-bd17-c3fb700c5139", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "c53979b0-1e96-4392-bd17-c3fb700c5139", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 14.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "4b105f2a-fbea-4bda-a46c-732db0abf35b", + "Name": null + }, + "95850dd9-34fc-452e-a377-ffffa110e6aa": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "95850dd9-34fc-452e-a377-ffffa110e6aa", + "Name": null + }, + "117e1e0a-81ab-43d6-ba70-5c1841bbf3d5": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "95850dd9-34fc-452e-a377-ffffa110e6aa", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "95850dd9-34fc-452e-a377-ffffa110e6aa", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "117e1e0a-81ab-43d6-ba70-5c1841bbf3d5", + "Name": null + }, + "e4a8d36e-1d20-4c8a-9ff4-33fad9e02af7": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "e4a8d36e-1d20-4c8a-9ff4-33fad9e02af7", + "Name": null + }, + "2cf5618f-3db7-46e0-bb4e-f66f6a4456f7": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 17.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "e4a8d36e-1d20-4c8a-9ff4-33fad9e02af7", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "e4a8d36e-1d20-4c8a-9ff4-33fad9e02af7", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 17.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "2cf5618f-3db7-46e0-bb4e-f66f6a4456f7", + "Name": null + }, + "82241029-8458-4e39-ae2a-ea929600d34b": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "82241029-8458-4e39-ae2a-ea929600d34b", + "Name": null + }, + "6b41dbbb-b702-4dbe-8a58-a90bbfe946d4": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 19.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "82241029-8458-4e39-ae2a-ea929600d34b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "82241029-8458-4e39-ae2a-ea929600d34b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 19.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "6b41dbbb-b702-4dbe-8a58-a90bbfe946d4", + "Name": null + }, + "e27c94ef-98eb-4164-824b-fd425dd621e7": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "e27c94ef-98eb-4164-824b-fd425dd621e7", + "Name": null + }, + "73ce5d53-22ed-4e8e-aa8c-af8f40697e4f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 20.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 20.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "e27c94ef-98eb-4164-824b-fd425dd621e7", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "e27c94ef-98eb-4164-824b-fd425dd621e7", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 20.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 20.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "73ce5d53-22ed-4e8e-aa8c-af8f40697e4f", + "Name": null + }, + "53715e85-82b0-4eeb-8630-6df8ab63ce63": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "53715e85-82b0-4eeb-8630-6df8ab63ce63", + "Name": null + }, + "4359b28c-320f-492e-acf7-7715ffae6c1e": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 22.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "53715e85-82b0-4eeb-8630-6df8ab63ce63", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "53715e85-82b0-4eeb-8630-6df8ab63ce63", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 22.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "4359b28c-320f-492e-acf7-7715ffae6c1e", + "Name": null + }, + "10a2ff40-5964-49ee-8467-2d7009918d19": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "10a2ff40-5964-49ee-8467-2d7009918d19", + "Name": null + }, + "9990420b-c525-4a06-b764-2871a76cf02f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 23.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "10a2ff40-5964-49ee-8467-2d7009918d19", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "10a2ff40-5964-49ee-8467-2d7009918d19", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 23.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "9990420b-c525-4a06-b764-2871a76cf02f", + "Name": null + }, + "c7a838fc-0027-4b73-b7f2-9c871af30c88": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "c7a838fc-0027-4b73-b7f2-9c871af30c88", + "Name": null + }, + "c43d2cc3-0831-463b-89c7-18cf855287f5": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 25.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 25.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "c7a838fc-0027-4b73-b7f2-9c871af30c88", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "c7a838fc-0027-4b73-b7f2-9c871af30c88", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 25.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 25.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "c43d2cc3-0831-463b-89c7-18cf855287f5", + "Name": null + }, + "7160f15b-b545-4f63-8eed-92e1084d6790": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "7160f15b-b545-4f63-8eed-92e1084d6790", + "Name": null + }, + "49605b00-caed-41dd-9307-d41da97301d6": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 26.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "7160f15b-b545-4f63-8eed-92e1084d6790", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "7160f15b-b545-4f63-8eed-92e1084d6790", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.5, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 26.5, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "49605b00-caed-41dd-9307-d41da97301d6", + "Name": null + }, + "df9196e3-81d7-4493-aea4-c9aadb27a367": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "df9196e3-81d7-4493-aea4-c9aadb27a367", + "Name": null + }, + "c0e83a06-514e-4977-baaa-6826bc32176b": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 28.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 28.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "df9196e3-81d7-4493-aea4-c9aadb27a367", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "df9196e3-81d7-4493-aea4-c9aadb27a367", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 28.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 28.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "c0e83a06-514e-4977-baaa-6826bc32176b", + "Name": null + }, + "ed90c76d-3289-43d9-a5a4-4108fb2bf580": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ed90c76d-3289-43d9-a5a4-4108fb2bf580", + "Name": null + }, + "a35bad36-7158-4d40-9889-3c0bc35865c2": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed90c76d-3289-43d9-a5a4-4108fb2bf580", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed90c76d-3289-43d9-a5a4-4108fb2bf580", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a35bad36-7158-4d40-9889-3c0bc35865c2", + "Name": null + }, + "93730af0-e5c6-472f-aba2-f85e640f75f9": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 1.0, + "Y": -59.0, + "Z": 0.0 + }, + { + "X": 29.0, + "Y": -59.0, + "Z": 0.0 + }, + { + "X": 29.0, + "Y": -59.0, + "Z": 4.5 + }, + { + "X": 1.0, + "Y": -59.0, + "Z": 4.5 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "28c5c2b1-d65c-4c46-8689-d651f50f07e7", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 1.0, + "Y": -59.0, + "Z": 0.0 + }, + { + "X": 29.0, + "Y": -59.0, + "Z": 0.0 + }, + { + "X": 29.0, + "Y": -59.0, + "Z": 4.5 + }, + { + "X": 1.0, + "Y": -59.0, + "Z": 4.5 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "93730af0-e5c6-472f-aba2-f85e640f75f9", + "Name": null + }, + "2c6dfe4d-a7e7-471d-b4bb-ec7415a1db2e": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "2c6dfe4d-a7e7-471d-b4bb-ec7415a1db2e", + "Name": null + }, + "a8dd846a-2bf4-460b-91da-6c901e025b1f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -30.30278, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "2c6dfe4d-a7e7-471d-b4bb-ec7415a1db2e", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "2c6dfe4d-a7e7-471d-b4bb-ec7415a1db2e", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -30.30278, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "a8dd846a-2bf4-460b-91da-6c901e025b1f", + "Name": null + }, + "8df87452-9217-4b1e-9e14-bfad1cb07683": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "8df87452-9217-4b1e-9e14-bfad1cb07683", + "Name": null + }, + "f4d47d59-5d40-4305-af36-4cd9ff7d3287": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -59.0, + "Z": 2.25 + }, + "End": { + "X": 29.0, + "Y": -30.30278, + "Z": 2.25 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "8df87452-9217-4b1e-9e14-bfad1cb07683", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "8df87452-9217-4b1e-9e14-bfad1cb07683", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -59.0, + "Z": 2.25 + }, + "End": { + "X": 29.0, + "Y": -30.30278, + "Z": 2.25 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f4d47d59-5d40-4305-af36-4cd9ff7d3287", + "Name": null + }, + "58048ca5-5a02-4229-80a1-dedba924f62e": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "58048ca5-5a02-4229-80a1-dedba924f62e", + "Name": null + }, + "8cf556ee-e388-494b-8255-fb30af6248d3": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -59.0, + "Z": 4.5 + }, + "End": { + "X": 29.0, + "Y": -30.30278, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "58048ca5-5a02-4229-80a1-dedba924f62e", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "58048ca5-5a02-4229-80a1-dedba924f62e", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -59.0, + "Z": 4.5 + }, + "End": { + "X": 29.0, + "Y": -30.30278, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "8cf556ee-e388-494b-8255-fb30af6248d3", + "Name": null + }, + "c577c06a-14cb-445d-a7ec-b7373a056ba7": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "c577c06a-14cb-445d-a7ec-b7373a056ba7", + "Name": null + }, + "3873f57c-5d72-4809-9b1e-6ffe00535479": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "c577c06a-14cb-445d-a7ec-b7373a056ba7", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "c577c06a-14cb-445d-a7ec-b7373a056ba7", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -59.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -59.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "3873f57c-5d72-4809-9b1e-6ffe00535479", + "Name": null + }, + "c549e12a-5ed7-4d85-b3dd-8cfdfbfd5e1a": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "c549e12a-5ed7-4d85-b3dd-8cfdfbfd5e1a", + "Name": null + }, + "7c73ab0b-ee3d-420c-9abf-16482b99c6f0": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -57.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -57.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "c549e12a-5ed7-4d85-b3dd-8cfdfbfd5e1a", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "c549e12a-5ed7-4d85-b3dd-8cfdfbfd5e1a", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -57.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -57.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "7c73ab0b-ee3d-420c-9abf-16482b99c6f0", + "Name": null + }, + "6489090a-fca7-4814-a3b4-c1a1d1aa3a14": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "6489090a-fca7-4814-a3b4-c1a1d1aa3a14", + "Name": null + }, + "d390dfb3-ec3f-4a1b-83ce-005d79a56ee2": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -56.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -56.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "6489090a-fca7-4814-a3b4-c1a1d1aa3a14", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "6489090a-fca7-4814-a3b4-c1a1d1aa3a14", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -56.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -56.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "d390dfb3-ec3f-4a1b-83ce-005d79a56ee2", + "Name": null + }, + "5ae417e7-7aa9-44ea-b25e-5c2ac7c4a509": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "5ae417e7-7aa9-44ea-b25e-5c2ac7c4a509", + "Name": null + }, + "3113083a-ec22-4cdb-813c-46ba0ddee0f0": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -54.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -54.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "5ae417e7-7aa9-44ea-b25e-5c2ac7c4a509", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "5ae417e7-7aa9-44ea-b25e-5c2ac7c4a509", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -54.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -54.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "3113083a-ec22-4cdb-813c-46ba0ddee0f0", + "Name": null + }, + "ab1c0293-4c44-485a-af60-18c6de3b3c93": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ab1c0293-4c44-485a-af60-18c6de3b3c93", + "Name": null + }, + "cbc806c9-3cf8-476e-88c2-663a81447292": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -53.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -53.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ab1c0293-4c44-485a-af60-18c6de3b3c93", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ab1c0293-4c44-485a-af60-18c6de3b3c93", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -53.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -53.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "cbc806c9-3cf8-476e-88c2-663a81447292", + "Name": null + }, + "f2336244-8645-4d29-a733-27c3b432340b": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "f2336244-8645-4d29-a733-27c3b432340b", + "Name": null + }, + "f74c61e1-593d-41a9-b902-2eefaf5043d5": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -51.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -51.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "f2336244-8645-4d29-a733-27c3b432340b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "f2336244-8645-4d29-a733-27c3b432340b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -51.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -51.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "f74c61e1-593d-41a9-b902-2eefaf5043d5", + "Name": null + }, + "ecc9f632-802e-4d91-9e93-f73497c2536f": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ecc9f632-802e-4d91-9e93-f73497c2536f", + "Name": null + }, + "dae1804b-4e2a-4701-beb7-e01855726650": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -50.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ecc9f632-802e-4d91-9e93-f73497c2536f", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ecc9f632-802e-4d91-9e93-f73497c2536f", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -50.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "dae1804b-4e2a-4701-beb7-e01855726650", + "Name": null + }, + "ab3fa574-e372-42a5-8a21-8cc938daae0b": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ab3fa574-e372-42a5-8a21-8cc938daae0b", + "Name": null + }, + "0327459b-b744-423a-9136-b7a7d7ae23c3": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -48.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -48.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ab3fa574-e372-42a5-8a21-8cc938daae0b", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ab3fa574-e372-42a5-8a21-8cc938daae0b", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -48.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -48.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "0327459b-b744-423a-9136-b7a7d7ae23c3", + "Name": null + }, + "8c3388cc-12ba-4439-b477-fab180860567": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "8c3388cc-12ba-4439-b477-fab180860567", + "Name": null + }, + "7d557a36-d258-4bf3-b094-dee285d7f867": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -47.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -47.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "8c3388cc-12ba-4439-b477-fab180860567", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "8c3388cc-12ba-4439-b477-fab180860567", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -47.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -47.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "7d557a36-d258-4bf3-b094-dee285d7f867", + "Name": null + }, + "eba1cd5f-4fc6-4aba-9f79-ef5625c0b415": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "eba1cd5f-4fc6-4aba-9f79-ef5625c0b415", + "Name": null + }, + "5e56674b-3a97-4966-8ef7-814eab3c02d0": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -45.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -45.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "eba1cd5f-4fc6-4aba-9f79-ef5625c0b415", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "eba1cd5f-4fc6-4aba-9f79-ef5625c0b415", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -45.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -45.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "5e56674b-3a97-4966-8ef7-814eab3c02d0", + "Name": null + }, + "8eacceda-08e7-419d-92cd-955ee2e32547": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "8eacceda-08e7-419d-92cd-955ee2e32547", + "Name": null + }, + "b2db9cfe-92a4-406e-a664-0647f8ccca30": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -44.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -44.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "8eacceda-08e7-419d-92cd-955ee2e32547", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "8eacceda-08e7-419d-92cd-955ee2e32547", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -44.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -44.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "b2db9cfe-92a4-406e-a664-0647f8ccca30", + "Name": null + }, + "844c36b4-cedf-4e94-88a6-df931c6f52d0": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "844c36b4-cedf-4e94-88a6-df931c6f52d0", + "Name": null + }, + "4fe8e40e-860a-45c7-9bb6-4f6eef8287f0": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -42.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -42.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "844c36b4-cedf-4e94-88a6-df931c6f52d0", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "844c36b4-cedf-4e94-88a6-df931c6f52d0", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -42.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -42.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "4fe8e40e-860a-45c7-9bb6-4f6eef8287f0", + "Name": null + }, + "0ae51050-f7e4-4fa5-8a45-3c28df241143": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "0ae51050-f7e4-4fa5-8a45-3c28df241143", + "Name": null + }, + "febf34e0-2342-4073-a959-da6ecc62c484": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -41.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -41.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "0ae51050-f7e4-4fa5-8a45-3c28df241143", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "0ae51050-f7e4-4fa5-8a45-3c28df241143", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -41.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -41.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "febf34e0-2342-4073-a959-da6ecc62c484", + "Name": null + }, + "c1b3f3c9-0e76-496a-8d4a-61f76f40a747": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "c1b3f3c9-0e76-496a-8d4a-61f76f40a747", + "Name": null + }, + "2a9e554b-ab84-4ef4-8c9b-6aff65b02193": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -39.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -39.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "c1b3f3c9-0e76-496a-8d4a-61f76f40a747", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "c1b3f3c9-0e76-496a-8d4a-61f76f40a747", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -39.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -39.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "2a9e554b-ab84-4ef4-8c9b-6aff65b02193", + "Name": null + }, + "a988a85c-758b-4860-9b98-fdcc7aeec592": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "a988a85c-758b-4860-9b98-fdcc7aeec592", + "Name": null + }, + "2e64a3bf-3234-490b-8ed2-d22862ba33c3": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -38.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -38.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "a988a85c-758b-4860-9b98-fdcc7aeec592", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "a988a85c-758b-4860-9b98-fdcc7aeec592", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -38.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -38.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "2e64a3bf-3234-490b-8ed2-d22862ba33c3", + "Name": null + }, + "fec977a4-d81f-4e13-8f0d-4992a97aaec2": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "fec977a4-d81f-4e13-8f0d-4992a97aaec2", + "Name": null + }, + "6b194a90-ac4c-4f89-81f2-7eec26a259d9": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -36.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -36.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "fec977a4-d81f-4e13-8f0d-4992a97aaec2", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "fec977a4-d81f-4e13-8f0d-4992a97aaec2", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -36.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -36.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "6b194a90-ac4c-4f89-81f2-7eec26a259d9", + "Name": null + }, + "7e68f498-5590-41cc-839a-3b76b826d59f": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "7e68f498-5590-41cc-839a-3b76b826d59f", + "Name": null + }, + "9cf64079-cdef-40c9-9e1d-71001ecef6ba": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -35.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "7e68f498-5590-41cc-839a-3b76b826d59f", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "7e68f498-5590-41cc-839a-3b76b826d59f", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -35.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "9cf64079-cdef-40c9-9e1d-71001ecef6ba", + "Name": null + }, + "b7c20ef3-5a4b-4c63-9af3-7a20101ff27f": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "b7c20ef3-5a4b-4c63-9af3-7a20101ff27f", + "Name": null + }, + "53125eae-8b92-47f2-b888-db1a08d26614": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -33.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -33.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "b7c20ef3-5a4b-4c63-9af3-7a20101ff27f", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "b7c20ef3-5a4b-4c63-9af3-7a20101ff27f", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -33.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -33.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "53125eae-8b92-47f2-b888-db1a08d26614", + "Name": null + }, + "2e220695-f858-451a-996c-88813b2e4d4c": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "2e220695-f858-451a-996c-88813b2e4d4c", + "Name": null + }, + "19eed878-5722-45e9-968f-bdc5ef1705b7": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -32.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -32.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "2e220695-f858-451a-996c-88813b2e4d4c", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "2e220695-f858-451a-996c-88813b2e4d4c", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -32.0, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -32.0, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "19eed878-5722-45e9-968f-bdc5ef1705b7", + "Name": null + }, + "67949bc5-fc6c-4e03-b48e-750d673b3b45": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "67949bc5-fc6c-4e03-b48e-750d673b3b45", + "Name": null + }, + "b04741a8-8d75-4a20-9a02-713c7c9d5961": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -30.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -30.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "67949bc5-fc6c-4e03-b48e-750d673b3b45", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "67949bc5-fc6c-4e03-b48e-750d673b3b45", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -30.5, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -30.5, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "b04741a8-8d75-4a20-9a02-713c7c9d5961", + "Name": null + }, + "ffe72ae0-dd3f-4a1a-8a2a-135a997a2ef6": { + "discriminator": "Elements.Geometry.Profile", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": -0.025, + "Z": 0.0 + }, + { + "X": 0.025, + "Y": 0.025, + "Z": 0.0 + }, + { + "X": -0.025, + "Y": 0.025, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ffe72ae0-dd3f-4a1a-8a2a-135a997a2ef6", + "Name": null + }, + "71f9813c-15b2-4996-b966-d66fa6c5e1d7": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -30.30278, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -30.30278, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ffe72ae0-dd3f-4a1a-8a2a-135a997a2ef6", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "7298d643-9049-4a2b-960d-ae775b50fd80", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ffe72ae0-dd3f-4a1a-8a2a-135a997a2ef6", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.0, + "Y": -30.30278, + "Z": 0.0 + }, + "End": { + "X": 29.0, + "Y": -30.30278, + "Z": 4.5 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "71f9813c-15b2-4996-b966-d66fa6c5e1d7", + "Name": null + }, + "30479846-1e9d-4b13-98d0-ebc246e3e47d": { + "discriminator": "Elements.Panel", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 29.0, + "Y": -59.0, + "Z": 0.0 + }, + { + "X": 29.0, + "Y": -30.30278, + "Z": 0.0 + }, + { + "X": 29.0, + "Y": -30.30278, + "Z": 4.5 + }, + { + "X": 29.0, + "Y": -59.0, + "Z": 4.5 + } + ] + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "28c5c2b1-d65c-4c46-8689-d651f50f07e7", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Lamina", + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": 29.0, + "Y": -59.0, + "Z": 0.0 + }, + { + "X": 29.0, + "Y": -30.30278, + "Z": 0.0 + }, + { + "X": 29.0, + "Y": -30.30278, + "Z": 4.5 + }, + { + "X": 29.0, + "Y": -59.0, + "Z": 4.5 + } + ] + }, + "Voids": [], + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": false, + "Id": "30479846-1e9d-4b13-98d0-ebc246e3e47d", + "Name": null + }, + "d0679ff9-51db-44d0-9743-3ae8c814face": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.5, + "Green": 0.5, + "Blue": 0.5, + "Alpha": 1.0 + }, + "SpecularFactor": 0.5, + "GlossinessFactor": 0.3, + "Unlit": false, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "Id": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Name": "Steel" + }, + "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36": { + "discriminator": "Elements.Material", + "Color": { + "Red": 0.0, + "Green": 0.0, + "Blue": 1.0, + "Alpha": 1.0 + }, + "SpecularFactor": 0.10000000149011612, + "GlossinessFactor": 0.10000000149011612, + "Unlit": true, + "DoubleSided": false, + "RepeatTexture": true, + "InterpolateTexture": true, + "Id": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Name": "Z" + }, + "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151": { + "discriminator": "Elements.Geometry.Profiles.WideFlangeProfile", + "d": 0.45465999999999995, + "tw": 0.008001, + "bf": 0.152908, + "tf": 0.013335, + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.076454, + "Y": -0.1254, + "Z": 0.0 + }, + { + "X": -0.076454, + "Y": -0.138735, + "Z": 0.0 + }, + { + "X": -0.0040005, + "Y": -0.138735, + "Z": 0.0 + }, + { + "X": -0.0040005, + "Y": -0.5667249999999999, + "Z": 0.0 + }, + { + "X": -0.076454, + "Y": -0.5667249999999999, + "Z": 0.0 + }, + { + "X": -0.076454, + "Y": -0.58006, + "Z": 0.0 + }, + { + "X": 0.076454, + "Y": -0.58006, + "Z": 0.0 + }, + { + "X": 0.076454, + "Y": -0.5667249999999999, + "Z": 0.0 + }, + { + "X": 0.0040005, + "Y": -0.5667249999999999, + "Z": 0.0 + }, + { + "X": 0.0040005, + "Y": -0.138735, + "Z": 0.0 + }, + { + "X": 0.076454, + "Y": -0.138735, + "Z": 0.0 + }, + { + "X": 0.076454, + "Y": -0.1254, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Name": "W18x40" + }, + "1f248147-be87-4d6a-922b-e7bf05d5f27e": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 0.7324000000000002, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 0.7324000000000002, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "1f248147-be87-4d6a-922b-e7bf05d5f27e", + "Name": "W18x40" + }, + "e3cd3000-5e61-43c0-a010-a6757408d2ac": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 4.5, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 4.5, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Name": "W18x40" + }, + "c9699dd2-d040-4a2c-ad98-36443b0d037a": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 3.7324, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 3.7324, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "c9699dd2-d040-4a2c-ad98-36443b0d037a", + "Name": "W18x40" + }, + "442ea777-71e8-42e2-a88c-d741cce24ce5": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 5.408326913195984, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 5.408326913195984, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "442ea777-71e8-42e2-a88c-d741cce24ce5", + "Name": "W18x40" + }, + "edad7470-dae0-4697-a2aa-8adc95f4440a": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 7.0, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 7.0, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Name": "W18x40" + }, + "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 1.5, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 1.5, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Name": "W18x40" + }, + "e5972626-f896-4b80-b62f-fa93a8846507": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 0.09859999999999935, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 0.09859999999999935, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "e5972626-f896-4b80-b62f-fa93a8846507", + "Name": "W18x40" + }, + "49319ac3-7aa7-4cea-aa5e-8a40ef05e1ba": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 0.06574000000000169, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 0.06574000000000169, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "49319ac3-7aa7-4cea-aa5e-8a40ef05e1ba", + "Name": "W18x40" + }, + "4dc79d1f-76cc-4eac-ba1d-90c0929442e9": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 0.11850615005137959, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 0.11850615005137959, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "4dc79d1f-76cc-4eac-ba1d-90c0929442e9", + "Name": "W18x40" + }, + "39b28bf6-91db-4c72-b448-44bed8dc6bc0": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 5.890749673853066, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 5.890749673853066, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "39b28bf6-91db-4c72-b448-44bed8dc6bc0", + "Name": "W18x40" + }, + "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 5.0, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 5.0, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Name": "W18x40" + }, + "0b85760d-9483-48e4-99ef-f0158063192f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 3.3990599999999986, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 3.3990599999999986, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "0b85760d-9483-48e4-99ef-f0158063192f", + "Name": "W18x40" + }, + "2d8372e3-18d6-43f5-b8a6-ca8af44199e8": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 6.009244729780939, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 6.009244729780939, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "2d8372e3-18d6-43f5-b8a6-ca8af44199e8", + "Name": "W18x40" + }, + "7cd6c7d4-992c-4217-9c1f-ac7c9170b25c": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 6.732399999999998, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 6.732399999999998, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "7cd6c7d4-992c-4217-9c1f-ac7c9170b25c", + "Name": "W18x40" + }, + "f1f4efee-0d74-4a09-8341-e6127bd83748": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 6.009255823777184, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 6.009255823777184, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "f1f4efee-0d74-4a09-8341-e6127bd83748", + "Name": "W18x40" + }, + "d4da724b-0d2f-4bd3-acf2-5d3697adf278": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 4.598600000000001, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 4.598600000000001, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "d4da724b-0d2f-4bd3-acf2-5d3697adf278", + "Name": "W18x40" + }, + "b110d957-b9da-4137-9c21-3ec50b79b33e": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 3.0657400000000017, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 3.0657400000000017, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "b110d957-b9da-4137-9c21-3ec50b79b33e", + "Name": "W18x40" + }, + "e0c50391-a50c-417e-a648-1d8139e40aa4": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 5.5268330631203275, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 5.5268330631203275, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "e0c50391-a50c-417e-a648-1d8139e40aa4", + "Name": "W18x40" + }, + "3bf2c337-826f-4c12-b4d9-a345602f7c71": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 0.48242276065708173, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 0.48242276065708173, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "3bf2c337-826f-4c12-b4d9-a345602f7c71", + "Name": "W18x40" + }, + "9b7bdf59-55a7-4daf-9c50-86da88398d8a": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 6.399059999999999, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 6.399059999999999, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "9b7bdf59-55a7-4daf-9c50-86da88398d8a", + "Name": "W18x40" + }, + "34bbf385-46d3-47bf-83a0-3a400bd05173": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 0.18196385245427163, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 0.18196385245427163, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "34bbf385-46d3-47bf-83a0-3a400bd05173", + "Name": "W18x40" + }, + "bbfc5b0f-cc29-4045-91bf-821e7813de86": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 6.5, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 6.5, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Name": "W18x40" + }, + "2984e71a-f669-4201-8e3b-e26ab9529910": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 4.848600000000001, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ed29a1bb-f75f-4df0-8bb8-21ed3ecfa151", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 4.848600000000001, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "2984e71a-f669-4201-8e3b-e26ab9529910", + "Name": "W18x40" + }, + "ae17b256-3a91-41c9-b812-a732b948db41": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1f248147-be87-4d6a-922b-e7bf05d5f27e", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.7324, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "ae17b256-3a91-41c9-b812-a732b948db41", + "Name": "W18x40", + "EdgeId": 5, + "ExternalEdgeId": 5 + }, + "82cbeaef-d3df-4277-80d6-2690654b1c05": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.7324, + "Y": -0.5, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -0.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "82cbeaef-d3df-4277-80d6-2690654b1c05", + "Name": null + }, + "b1f59156-7366-4c12-9ed9-6fe976dba558": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "b1f59156-7366-4c12-9ed9-6fe976dba558", + "Name": "W18x40", + "EdgeId": 6 + }, + "cfbd5350-0d10-43ce-b63c-9d9c38caa4dc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -0.5, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -5.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cfbd5350-0d10-43ce-b63c-9d9c38caa4dc", + "Name": null + }, + "c561276f-cf9b-481a-81ad-93acecd17b23": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c9699dd2-d040-4a2c-ad98-36443b0d037a", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "c561276f-cf9b-481a-81ad-93acecd17b23", + "Name": "W18x40", + "EdgeId": 7 + }, + "753f627d-b9d1-4c55-b3cb-6ee8584fc1c4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 0.0 + }, + "End": { + "X": 12.7324, + "Y": -5.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "753f627d-b9d1-4c55-b3cb-6ee8584fc1c4", + "Name": null + }, + "31e4920c-a82d-4dc1-a3ab-5adb5ba9ff3b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "442ea777-71e8-42e2-a88c-d741cce24ce5", + "Transform": { + "Matrix": { + "Components": [ + 0.5547001962252291, + 0.8320502943378437, + 0.0, + 9.7324, + -0.8320502943378437, + 0.5547001962252291, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "31e4920c-a82d-4dc1-a3ab-5adb5ba9ff3b", + "Name": "W18x40", + "EdgeId": 8, + "ExternalEdgeId": 8 + }, + "877ba8f8-2136-413e-9809-ff6187e71bfe": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.7324, + "Y": -0.5, + "Z": 0.0 + }, + "End": { + "X": 12.7324, + "Y": -5.000000000000001, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "877ba8f8-2136-413e-9809-ff6187e71bfe", + "Name": null + }, + "b3833bc9-d208-41dc-b000-609e389a8291": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "b3833bc9-d208-41dc-b000-609e389a8291", + "Name": "W18x40", + "EdgeId": 16, + "ExternalEdgeId": 16 + }, + "d255fd5c-04f5-4027-976a-141e72bba131": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -0.5, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -0.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d255fd5c-04f5-4027-976a-141e72bba131", + "Name": null + }, + "c8aececb-18c8-4823-ba46-4b0d519535de": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "c8aececb-18c8-4823-ba46-4b0d519535de", + "Name": "W18x40", + "EdgeId": 17 + }, + "41256acb-0d1b-4b7c-9cc3-fa2611f2adde": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -0.5, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -5.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "41256acb-0d1b-4b7c-9cc3-fa2611f2adde", + "Name": null + }, + "466ad02b-076d-487c-af32-38e1f683bce2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "466ad02b-076d-487c-af32-38e1f683bce2", + "Name": "W18x40", + "EdgeId": 18 + }, + "10595b28-3506-44e5-9c50-30c36abfffea": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -5.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "10595b28-3506-44e5-9c50-30c36abfffea", + "Name": null + }, + "a6070242-e5ee-4d3f-961c-5efee9e4d87a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a6070242-e5ee-4d3f-961c-5efee9e4d87a", + "Name": "W18x40", + "EdgeId": 24, + "ExternalEdgeId": 24 + }, + "6e332766-3823-49ef-9e09-023624f445f5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -0.5, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -0.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6e332766-3823-49ef-9e09-023624f445f5", + "Name": null + }, + "97132164-947a-4bf8-bd7b-d1ad761938ef": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "97132164-947a-4bf8-bd7b-d1ad761938ef", + "Name": "W18x40", + "EdgeId": 25, + "ExternalEdgeId": 25 + }, + "ff688718-5b9e-4473-b14b-87a77ef9fa7b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -0.5, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -5.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ff688718-5b9e-4473-b14b-87a77ef9fa7b", + "Name": null + }, + "b7cca279-36ad-44b6-9905-051a28e63e69": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "b7cca279-36ad-44b6-9905-051a28e63e69", + "Name": "W18x40", + "EdgeId": 26 + }, + "37a98013-68f7-4a72-8ed9-ee922b09017b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -5.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -5.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "37a98013-68f7-4a72-8ed9-ee922b09017b", + "Name": null + }, + "e3d693f8-6171-497c-8038-f4d0035f1e4e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e5972626-f896-4b80-b62f-fa93a8846507", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -9.9014, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "e3d693f8-6171-497c-8038-f4d0035f1e4e", + "Name": "W18x40", + "EdgeId": 32 + }, + "c73c0800-487b-4a98-8fb1-92c3e1e615ee": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -9.9014, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c73c0800-487b-4a98-8fb1-92c3e1e615ee", + "Name": null + }, + "92b851c6-b096-406d-821f-799e727c0cc0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "49319ac3-7aa7-4cea-aa5e-8a40ef05e1ba", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "92b851c6-b096-406d-821f-799e727c0cc0", + "Name": "W18x40", + "EdgeId": 33 + }, + "a9f3cc05-0956-4d74-b2ae-ab855a40614c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 16.06574, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a9f3cc05-0956-4d74-b2ae-ab855a40614c", + "Name": null + }, + "39e05e73-5819-4487-ab9d-7f65bc2eec6e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4dc79d1f-76cc-4eac-ba1d-90c0929442e9", + "Transform": { + "Matrix": { + "Components": [ + 0.5547391419896724, + 0.8320243291782772, + 0.0, + 16.0, + -0.8320243291782772, + 0.5547391419896724, + 0.0, + -9.9014, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "39e05e73-5819-4487-ab9d-7f65bc2eec6e", + "Name": "W18x40", + "EdgeId": 34, + "ExternalEdgeId": 34 + }, + "2eb33d03-229f-44d6-b651-3e115a3895cd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -9.9014, + "Z": 0.0 + }, + "End": { + "X": 16.06574, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2eb33d03-229f-44d6-b651-3e115a3895cd", + "Name": null + }, + "1e006143-11ee-4e87-b178-d979565d0b3a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39b28bf6-91db-4c72-b448-44bed8dc6bc0", + "Transform": { + "Matrix": { + "Components": [ + 0.554700196225229, + 0.8320502943378437, + 0.0, + 12.7324, + -0.8320502943378437, + 0.554700196225229, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "1e006143-11ee-4e87-b178-d979565d0b3a", + "Name": "W18x40", + "EdgeId": 41, + "ExternalEdgeId": 41 + }, + "9acdad82-edfc-428f-ac09-ea6d3bc22518": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.7324, + "Y": -5.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -9.9014, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9acdad82-edfc-428f-ac09-ea6d3bc22518", + "Name": null + }, + "e4468727-72c6-4e95-9340-2ea4f16092da": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "e4468727-72c6-4e95-9340-2ea4f16092da", + "Name": "W18x40", + "EdgeId": 42 + }, + "f3baf7cb-f24d-4cb8-be12-9bc0901ee832": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f3baf7cb-f24d-4cb8-be12-9bc0901ee832", + "Name": null + }, + "8a02c5bb-287e-4cc6-a8a9-65b4ea10b2ef": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "8a02c5bb-287e-4cc6-a8a9-65b4ea10b2ef", + "Name": "W18x40", + "EdgeId": 43 + }, + "2b5a6655-46b7-471a-b200-3b5212821674": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2b5a6655-46b7-471a-b200-3b5212821674", + "Name": null + }, + "ec5e2769-91a2-4c5d-9c51-ca1965c7bd16": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "ec5e2769-91a2-4c5d-9c51-ca1965c7bd16", + "Name": "W18x40", + "EdgeId": 47 + }, + "cc444e69-3fef-4829-b15f-d96481d23430": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -5.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cc444e69-3fef-4829-b15f-d96481d23430", + "Name": null + }, + "a9475a27-ff48-4320-87a5-a4356568df4b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a9475a27-ff48-4320-87a5-a4356568df4b", + "Name": "W18x40", + "EdgeId": 48 + }, + "ebd81fb1-ec36-4d7f-a2e3-bad8555dfc97": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ebd81fb1-ec36-4d7f-a2e3-bad8555dfc97", + "Name": null + }, + "b49b476f-0728-4dfb-bf8c-3b801f66251a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "b49b476f-0728-4dfb-bf8c-3b801f66251a", + "Name": "W18x40", + "EdgeId": 52, + "ExternalEdgeId": 52 + }, + "168c09dc-e2ba-47a4-b7b5-cb3e8dd542b3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -5.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "168c09dc-e2ba-47a4-b7b5-cb3e8dd542b3", + "Name": null + }, + "1cfb46f7-63b4-43b0-b104-79dfaabc963b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "1cfb46f7-63b4-43b0-b104-79dfaabc963b", + "Name": "W18x40", + "EdgeId": 53 + }, + "5608a27d-0f01-4c80-b161-c54662595932": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5608a27d-0f01-4c80-b161-c54662595932", + "Name": null + }, + "29c93ade-ace5-4fbe-88fa-d3a6061c388b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "29c93ade-ace5-4fbe-88fa-d3a6061c388b", + "Name": "W18x40", + "EdgeId": 58 + }, + "e4b51bce-581a-4b7b-a35e-e943b7c2144d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e4b51bce-581a-4b7b-a35e-e943b7c2144d", + "Name": null + }, + "4625c2ce-39df-4173-ae2d-b393e079f119": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "0b85760d-9483-48e4-99ef-f0158063192f", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "4625c2ce-39df-4173-ae2d-b393e079f119", + "Name": "W18x40", + "EdgeId": 59 + }, + "4e1b3209-6273-44d5-8900-75a71724d698": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 19.39906, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4e1b3209-6273-44d5-8900-75a71724d698", + "Name": null + }, + "f9cffb1b-0da5-481c-b77e-849634352a77": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2d8372e3-18d6-43f5-b8a6-ca8af44199e8", + "Transform": { + "Matrix": { + "Components": [ + 0.5546986601295418, + 0.8320513183995871, + 0.0, + 16.06574, + -0.8320513183995871, + 0.5546986601295418, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "f9cffb1b-0da5-481c-b77e-849634352a77", + "Name": "W18x40", + "EdgeId": 60, + "ExternalEdgeId": 60 + }, + "621ecd7d-9d31-428e-b432-24b910e8fc53": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.06574, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 19.39906, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "621ecd7d-9d31-428e-b432-24b910e8fc53", + "Name": null + }, + "226e428e-5844-4099-934c-c761c5029249": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "226e428e-5844-4099-934c-c761c5029249", + "Name": "W18x40", + "EdgeId": 65 + }, + "4e2d3230-d888-4514-824a-3b4523c18f13": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4e2d3230-d888-4514-824a-3b4523c18f13", + "Name": null + }, + "2daa57de-4f29-493b-8ecc-1a57c56e3ba1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "2daa57de-4f29-493b-8ecc-1a57c56e3ba1", + "Name": "W18x40", + "EdgeId": 66 + }, + "0daa255c-a59c-456b-9134-01df740622b6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0daa255c-a59c-456b-9134-01df740622b6", + "Name": null + }, + "340a59ac-f7c0-4f16-afe9-316a6c9c39b7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "340a59ac-f7c0-4f16-afe9-316a6c9c39b7", + "Name": "W18x40", + "EdgeId": 70 + }, + "5b664155-fdb4-49cb-a10d-125580438eee": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5b664155-fdb4-49cb-a10d-125580438eee", + "Name": null + }, + "d7891b32-e863-43d0-a5ff-bfe2e8385839": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "d7891b32-e863-43d0-a5ff-bfe2e8385839", + "Name": "W18x40", + "EdgeId": 71 + }, + "8dd0de28-dd71-412e-a94a-2e3ad8c91a48": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8dd0de28-dd71-412e-a94a-2e3ad8c91a48", + "Name": null + }, + "f9e1b96a-32d7-4f7d-9e2d-3ff0de635348": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "f9e1b96a-32d7-4f7d-9e2d-3ff0de635348", + "Name": "W18x40", + "EdgeId": 75, + "ExternalEdgeId": 75 + }, + "14634e11-1ae6-4b2b-91db-4443ea657d96": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "14634e11-1ae6-4b2b-91db-4443ea657d96", + "Name": null + }, + "d78784a4-d29d-4724-ad9e-f0d0c4356c4c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "d78784a4-d29d-4724-ad9e-f0d0c4356c4c", + "Name": "W18x40", + "EdgeId": 76 + }, + "29d9b80a-b9ae-49fd-917e-12a075ccc9e1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "29d9b80a-b9ae-49fd-917e-12a075ccc9e1", + "Name": null + }, + "f23036c8-9449-4e50-83e0-e776ea5edd62": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "f23036c8-9449-4e50-83e0-e776ea5edd62", + "Name": "W18x40", + "EdgeId": 81 + }, + "60eb3957-3a8b-458e-b99e-6c50df3c41a6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "60eb3957-3a8b-458e-b99e-6c50df3c41a6", + "Name": null + }, + "cec114d5-e4d6-454f-9b34-a57d4a79e47e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7cd6c7d4-992c-4217-9c1f-ac7c9170b25c", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "cec114d5-e4d6-454f-9b34-a57d4a79e47e", + "Name": "W18x40", + "EdgeId": 82 + }, + "d9578b9b-c652-4266-a0fd-eb07654736b6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 22.7324, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d9578b9b-c652-4266-a0fd-eb07654736b6", + "Name": null + }, + "f59dbd27-9bde-4cfe-8761-09f55dc5ac0d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "f1f4efee-0d74-4a09-8341-e6127bd83748", + "Transform": { + "Matrix": { + "Components": [ + 0.5547009642709457, + 0.832049782306854, + 0.0, + 19.39906, + -0.832049782306854, + 0.5547009642709457, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "f59dbd27-9bde-4cfe-8761-09f55dc5ac0d", + "Name": "W18x40", + "EdgeId": 83, + "ExternalEdgeId": 83 + }, + "ae45d0c8-1906-4c70-bb93-c32d9466ddc4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.39906, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 22.7324, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ae45d0c8-1906-4c70-bb93-c32d9466ddc4", + "Name": null + }, + "a9dc5e6a-97c9-4c44-a00a-f92205bfcadd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a9dc5e6a-97c9-4c44-a00a-f92205bfcadd", + "Name": "W18x40", + "EdgeId": 88 + }, + "8e7912fe-7b3a-471f-ab34-64bf9ec274e6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8e7912fe-7b3a-471f-ab34-64bf9ec274e6", + "Name": null + }, + "6013df4e-bede-4a41-ad39-05a61f6c79ff": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "6013df4e-bede-4a41-ad39-05a61f6c79ff", + "Name": "W18x40", + "EdgeId": 89 + }, + "4f6a8b84-6e6e-4670-bf2d-d6c05ff49b19": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4f6a8b84-6e6e-4670-bf2d-d6c05ff49b19", + "Name": null + }, + "699e7aa7-8ac3-4131-93f8-238c84378764": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "699e7aa7-8ac3-4131-93f8-238c84378764", + "Name": "W18x40", + "EdgeId": 93 + }, + "bc811a61-40c9-45f7-a21e-06f541b95670": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bc811a61-40c9-45f7-a21e-06f541b95670", + "Name": null + }, + "51d36270-886e-4f9d-859f-d82e4b5dee53": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "51d36270-886e-4f9d-859f-d82e4b5dee53", + "Name": "W18x40", + "EdgeId": 94 + }, + "f49c573e-fc3d-488f-8d50-8ebd1aee2074": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f49c573e-fc3d-488f-8d50-8ebd1aee2074", + "Name": null + }, + "9a1c5df6-ac81-4698-9004-3efe13e37b47": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "9a1c5df6-ac81-4698-9004-3efe13e37b47", + "Name": "W18x40", + "EdgeId": 98, + "ExternalEdgeId": 98 + }, + "c0c93675-73aa-4281-a31e-6e0da3bcafa1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c0c93675-73aa-4281-a31e-6e0da3bcafa1", + "Name": null + }, + "d997ae53-2842-436a-8686-49634a26f17e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "d997ae53-2842-436a-8686-49634a26f17e", + "Name": "W18x40", + "EdgeId": 99 + }, + "228df31a-7ece-46e0-ae50-8eb9c1b21c51": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "228df31a-7ece-46e0-ae50-8eb9c1b21c51", + "Name": null + }, + "20e54c91-a655-4be8-9671-4d5462e74320": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d4da724b-0d2f-4bd3-acf2-5d3697adf278", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -20.4014, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "20e54c91-a655-4be8-9671-4d5462e74320", + "Name": "W18x40", + "EdgeId": 104 + }, + "86529516-d2f5-4df4-8d6b-d51c8b940ed8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -20.4014, + "Z": 0.0 + }, + "End": { + "X": 23.0, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "86529516-d2f5-4df4-8d6b-d51c8b940ed8", + "Name": null + }, + "547eaa00-10da-4755-8fa0-48d58e01685f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b110d957-b9da-4137-9c21-3ec50b79b33e", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "547eaa00-10da-4755-8fa0-48d58e01685f", + "Name": "W18x40", + "EdgeId": 105 + }, + "96a2943d-8b62-40de-9217-89c0c36ea25a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 26.06574, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "96a2943d-8b62-40de-9217-89c0c36ea25a", + "Name": null + }, + "e02ec524-729b-4f92-b280-72484287779c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e0c50391-a50c-417e-a648-1d8139e40aa4", + "Transform": { + "Matrix": { + "Components": [ + 0.5547010313116194, + 0.8320497376129783, + 0.0, + 23.0, + -0.8320497376129783, + 0.5547010313116194, + 0.0, + -20.4014, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "e02ec524-729b-4f92-b280-72484287779c", + "Name": "W18x40", + "EdgeId": 106, + "ExternalEdgeId": 106 + }, + "c2d1b78f-54f3-41f4-a9a3-40db314d57af": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -20.4014, + "Z": 0.0 + }, + "End": { + "X": 26.06574, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c2d1b78f-54f3-41f4-a9a3-40db314d57af", + "Name": null + }, + "0ea3c452-bb63-4e86-9d01-d649e69bc608": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3bf2c337-826f-4c12-b4d9-a345602f7c71", + "Transform": { + "Matrix": { + "Components": [ + 0.5547001962252325, + 0.8320502943378414, + 0.0, + 22.7324, + -0.8320502943378414, + 0.5547001962252325, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "0ea3c452-bb63-4e86-9d01-d649e69bc608", + "Name": "W18x40", + "EdgeId": 113, + "ExternalEdgeId": 113 + }, + "5766748d-7453-43d3-b6af-05d0badf27a9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.7324, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 23.0, + "Y": -20.4014, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5766748d-7453-43d3-b6af-05d0badf27a9", + "Name": null + }, + "7a705425-2382-4657-9852-4c3d323af2a5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "7a705425-2382-4657-9852-4c3d323af2a5", + "Name": "W18x40", + "EdgeId": 114 + }, + "20b42428-92dd-4175-be10-b972fc1a36ec": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "20b42428-92dd-4175-be10-b972fc1a36ec", + "Name": null + }, + "eb853b1e-b0ad-4842-a019-5a86ecba0abb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "eb853b1e-b0ad-4842-a019-5a86ecba0abb", + "Name": "W18x40", + "EdgeId": 115 + }, + "13cc1eea-637f-4be4-8bbf-4cc0a9ff8b8e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "13cc1eea-637f-4be4-8bbf-4cc0a9ff8b8e", + "Name": null + }, + "352550ee-0419-4677-93da-e17b83e458f5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "352550ee-0419-4677-93da-e17b83e458f5", + "Name": "W18x40", + "EdgeId": 119 + }, + "172658a4-8e3d-41ca-bcd0-8502d4a69581": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "172658a4-8e3d-41ca-bcd0-8502d4a69581", + "Name": null + }, + "0cf4265c-2002-492d-8150-79472ec80f7c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "0cf4265c-2002-492d-8150-79472ec80f7c", + "Name": "W18x40", + "EdgeId": 120 + }, + "12353ffe-2c8b-4194-8079-d99389388383": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "12353ffe-2c8b-4194-8079-d99389388383", + "Name": null + }, + "0207f7ff-a77e-41b8-93a2-adcd79f75719": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "0207f7ff-a77e-41b8-93a2-adcd79f75719", + "Name": "W18x40", + "EdgeId": 124 + }, + "55ba5899-ce79-4ef3-8d8c-13795c0eb896": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "55ba5899-ce79-4ef3-8d8c-13795c0eb896", + "Name": null + }, + "dd68a031-f7b3-4a22-8442-1f2af9f15842": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "dd68a031-f7b3-4a22-8442-1f2af9f15842", + "Name": "W18x40", + "EdgeId": 125 + }, + "3e83e411-07fd-40d4-93a4-0b3391c11758": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3e83e411-07fd-40d4-93a4-0b3391c11758", + "Name": null + }, + "00f83664-313a-45ac-856c-45f7582a0779": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "00f83664-313a-45ac-856c-45f7582a0779", + "Name": "W18x40", + "EdgeId": 129, + "ExternalEdgeId": 129 + }, + "27ab68b9-2150-436b-afff-908c6cdad629": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "27ab68b9-2150-436b-afff-908c6cdad629", + "Name": null + }, + "9bb72b77-ce9a-4ad6-a3e4-453ace4dddcf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "9bb72b77-ce9a-4ad6-a3e4-453ace4dddcf", + "Name": "W18x40", + "EdgeId": 130 + }, + "eb6394b6-c2b0-46f3-8a92-7a0161b83654": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "eb6394b6-c2b0-46f3-8a92-7a0161b83654", + "Name": null + }, + "80db92c8-c919-475b-9184-d25b4a000538": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "80db92c8-c919-475b-9184-d25b4a000538", + "Name": "W18x40", + "EdgeId": 135 + }, + "0b6aaf8b-c7e3-47b5-a816-569c02f1bc79": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 23.0, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0b6aaf8b-c7e3-47b5-a816-569c02f1bc79", + "Name": null + }, + "6f0191a8-0e95-49e0-9e33-061a64129074": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "9b7bdf59-55a7-4daf-9c50-86da88398d8a", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "6f0191a8-0e95-49e0-9e33-061a64129074", + "Name": "W18x40", + "EdgeId": 136 + }, + "25cd25be-43f9-4bb0-9cce-c9efbe8488c1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 29.39906, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "25cd25be-43f9-4bb0-9cce-c9efbe8488c1", + "Name": null + }, + "b63d7598-f2d9-47d1-a81c-2398e9dde8c8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2d8372e3-18d6-43f5-b8a6-ca8af44199e8", + "Transform": { + "Matrix": { + "Components": [ + 0.5546986601295418, + 0.8320513183995871, + 0.0, + 26.06574, + -0.8320513183995871, + 0.5546986601295418, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "b63d7598-f2d9-47d1-a81c-2398e9dde8c8", + "Name": "W18x40", + "EdgeId": 137, + "ExternalEdgeId": 137 + }, + "bb46dee5-c65d-4abf-a6fa-cfffb40bb545": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.06574, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 29.39906, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bb46dee5-c65d-4abf-a6fa-cfffb40bb545", + "Name": null + }, + "14bcaa75-d02b-413b-90bb-10e70c336f4c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "14bcaa75-d02b-413b-90bb-10e70c336f4c", + "Name": "W18x40", + "EdgeId": 142 + }, + "5afd924d-be55-4993-b38c-6c59a9cbe103": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5afd924d-be55-4993-b38c-6c59a9cbe103", + "Name": null + }, + "21ec8bb1-aa2d-4937-b29a-058dce56cfb6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "21ec8bb1-aa2d-4937-b29a-058dce56cfb6", + "Name": "W18x40", + "EdgeId": 143 + }, + "e3de19ac-0e78-4532-890e-79da208e913d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e3de19ac-0e78-4532-890e-79da208e913d", + "Name": null + }, + "80e1290c-92e5-48fb-8e47-edbeee3b16de": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "80e1290c-92e5-48fb-8e47-edbeee3b16de", + "Name": "W18x40", + "EdgeId": 147 + }, + "803463fe-3412-4f16-85fd-ceb2b0221053": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "803463fe-3412-4f16-85fd-ceb2b0221053", + "Name": null + }, + "814eb173-0496-447e-81bb-53c70cc1aa50": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "814eb173-0496-447e-81bb-53c70cc1aa50", + "Name": "W18x40", + "EdgeId": 148 + }, + "f789e063-60e9-4a44-9a96-855fe3cdbddc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f789e063-60e9-4a44-9a96-855fe3cdbddc", + "Name": null + }, + "153d24c2-0859-4b89-9558-d7ce786cbdf7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "153d24c2-0859-4b89-9558-d7ce786cbdf7", + "Name": "W18x40", + "EdgeId": 152 + }, + "834b6b1a-8de9-4150-9960-f92ab9f2fa0d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "834b6b1a-8de9-4150-9960-f92ab9f2fa0d", + "Name": null + }, + "7f634a6d-baf6-4dc6-9e1e-503a40faf078": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "7f634a6d-baf6-4dc6-9e1e-503a40faf078", + "Name": "W18x40", + "EdgeId": 153 + }, + "b0b69429-0368-4cf4-856b-b83b9cbbddf1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b0b69429-0368-4cf4-856b-b83b9cbbddf1", + "Name": null + }, + "cc9761fa-4a8f-4e87-9ae4-3b48443ead31": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "cc9761fa-4a8f-4e87-9ae4-3b48443ead31", + "Name": "W18x40", + "EdgeId": 157, + "ExternalEdgeId": 157 + }, + "d238319f-e6d4-470b-9ade-342276086489": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d238319f-e6d4-470b-9ade-342276086489", + "Name": null + }, + "28a300c9-e8a8-454e-8463-ed2fb1223134": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "28a300c9-e8a8-454e-8463-ed2fb1223134", + "Name": "W18x40", + "EdgeId": 158 + }, + "178f4487-4e72-4188-8a0b-374a55919070": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "178f4487-4e72-4188-8a0b-374a55919070", + "Name": null + }, + "c254d40c-2e91-4648-a29b-042a9c9fb997": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "34bbf385-46d3-47bf-83a0-3a400bd05173", + "Transform": { + "Matrix": { + "Components": [ + 0.5547255602613056, + 0.8320333844220319, + 0.0, + 29.39906, + -0.8320333844220319, + 0.5547255602613056, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "c254d40c-2e91-4648-a29b-042a9c9fb997", + "Name": "W18x40", + "EdgeId": 164, + "ExternalEdgeId": 164 + }, + "b1c8b4a4-46b5-4575-93c4-0c9e1a040d60": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.39906, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 29.5, + "Y": -30.1514, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b1c8b4a4-46b5-4575-93c4-0c9e1a040d60", + "Name": null + }, + "3b109814-03b3-451d-b7c4-099f5fe75d2e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "3b109814-03b3-451d-b7c4-099f5fe75d2e", + "Name": "W18x40", + "EdgeId": 165 + }, + "2fa0f4d4-df43-4d21-bba6-cfa9b009546c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 23.0, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2fa0f4d4-df43-4d21-bba6-cfa9b009546c", + "Name": null + }, + "f27f1de6-931f-4841-b988-ef70321cd9e6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "f27f1de6-931f-4841-b988-ef70321cd9e6", + "Name": "W18x40", + "EdgeId": 166 + }, + "cc2d6fa3-1261-4daf-aee8-6058ca30519b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 29.5, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cc2d6fa3-1261-4daf-aee8-6058ca30519b", + "Name": null + }, + "1b5e2158-e374-41f0-9643-cd6884186c74": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2984e71a-f669-4201-8e3b-e26ab9529910", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -30.1514, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "1b5e2158-e374-41f0-9643-cd6884186c74", + "Name": "W18x40", + "EdgeId": 167, + "ExternalEdgeId": 167 + }, + "dd1c836e-0c4c-43d8-af7e-294c0c4b0aa5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -30.1514, + "Z": 0.0 + }, + "End": { + "X": 29.5, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dd1c836e-0c4c-43d8-af7e-294c0c4b0aa5", + "Name": null + }, + "0267933d-f93c-4a68-834a-82f3b75a087f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "0267933d-f93c-4a68-834a-82f3b75a087f", + "Name": "W18x40", + "EdgeId": 173 + }, + "fe8fc3d9-9375-427a-b41e-f51bc1c7c621": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fe8fc3d9-9375-427a-b41e-f51bc1c7c621", + "Name": null + }, + "0312ecbf-c857-4483-9371-79c74eee2b68": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "0312ecbf-c857-4483-9371-79c74eee2b68", + "Name": "W18x40", + "EdgeId": 174 + }, + "0b0d4c85-34ab-43f5-acc1-fdd5f5caba30": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0b0d4c85-34ab-43f5-acc1-fdd5f5caba30", + "Name": null + }, + "42a61dc5-4ab6-4f71-9a76-51c5401cb920": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "42a61dc5-4ab6-4f71-9a76-51c5401cb920", + "Name": "W18x40", + "EdgeId": 178 + }, + "a4ff9b4a-2b07-44b4-9164-2365e10d455b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a4ff9b4a-2b07-44b4-9164-2365e10d455b", + "Name": null + }, + "ec21251a-bea5-487e-b1b3-68bbc46b72ef": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "ec21251a-bea5-487e-b1b3-68bbc46b72ef", + "Name": "W18x40", + "EdgeId": 179 + }, + "28ef286a-a38d-4af2-833a-0b589ea4919f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "28ef286a-a38d-4af2-833a-0b589ea4919f", + "Name": null + }, + "942f1fd1-4e02-410c-af7b-b50c1b651e34": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "942f1fd1-4e02-410c-af7b-b50c1b651e34", + "Name": "W18x40", + "EdgeId": 183 + }, + "e35903a6-272e-49b5-b435-b06debdc5d45": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e35903a6-272e-49b5-b435-b06debdc5d45", + "Name": null + }, + "8d9096ae-1c98-4c6a-acc4-c45b5ee912fe": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "8d9096ae-1c98-4c6a-acc4-c45b5ee912fe", + "Name": "W18x40", + "EdgeId": 184 + }, + "212b18a1-d70b-4c38-a7e2-23280b28e092": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "212b18a1-d70b-4c38-a7e2-23280b28e092", + "Name": null + }, + "71ca6208-6333-470c-843c-9d19f925f5f2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "71ca6208-6333-470c-843c-9d19f925f5f2", + "Name": "W18x40", + "EdgeId": 188, + "ExternalEdgeId": 188 + }, + "580c3b82-8c7f-4ecb-9211-4251e5e518ad": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "580c3b82-8c7f-4ecb-9211-4251e5e518ad", + "Name": null + }, + "27d03f63-12be-4317-b4d7-5959cd9167a8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "27d03f63-12be-4317-b4d7-5959cd9167a8", + "Name": "W18x40", + "EdgeId": 189 + }, + "92ed1097-fbd6-4e08-b27b-f948674dcedd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "92ed1097-fbd6-4e08-b27b-f948674dcedd", + "Name": null + }, + "b5a2f412-ae2a-4599-937e-8db5c5e49059": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "b5a2f412-ae2a-4599-937e-8db5c5e49059", + "Name": "W18x40", + "EdgeId": 194 + }, + "2d2c997d-4597-404d-8ede-5ac742c52316": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 23.0, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2d2c997d-4597-404d-8ede-5ac742c52316", + "Name": null + }, + "e42b18a8-d809-4ae5-a6ac-f6e960dbfa6f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "e42b18a8-d809-4ae5-a6ac-f6e960dbfa6f", + "Name": "W18x40", + "EdgeId": 195 + }, + "b5059e89-9afa-44e0-a2e0-60195ecd7759": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 29.5, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b5059e89-9afa-44e0-a2e0-60195ecd7759", + "Name": null + }, + "28d5c4f5-4a70-4e61-bd27-ebd97a51a13e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "28d5c4f5-4a70-4e61-bd27-ebd97a51a13e", + "Name": "W18x40", + "EdgeId": 196, + "ExternalEdgeId": 196 + }, + "3917c1f5-d035-4528-afb3-56b819596670": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 29.5, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3917c1f5-d035-4528-afb3-56b819596670", + "Name": null + }, + "c24e318a-1dd3-4029-8a0d-0bed4ad16a20": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "c24e318a-1dd3-4029-8a0d-0bed4ad16a20", + "Name": "W18x40", + "EdgeId": 201 + }, + "305c2f31-a475-43e0-b8e8-f28fdc64c91a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "305c2f31-a475-43e0-b8e8-f28fdc64c91a", + "Name": null + }, + "a91f6a1c-c6bf-498f-87c7-824b80dd1029": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a91f6a1c-c6bf-498f-87c7-824b80dd1029", + "Name": "W18x40", + "EdgeId": 202 + }, + "9603393a-2a16-4fd0-8cee-458f2ff36694": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9603393a-2a16-4fd0-8cee-458f2ff36694", + "Name": null + }, + "938f81aa-f830-4892-9e3c-43fad84b3956": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "938f81aa-f830-4892-9e3c-43fad84b3956", + "Name": "W18x40", + "EdgeId": 206 + }, + "30edeeb3-df3d-438e-befd-4d154d7bb541": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "30edeeb3-df3d-438e-befd-4d154d7bb541", + "Name": null + }, + "66263f74-855a-4d72-bc60-e40c1c303b75": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "66263f74-855a-4d72-bc60-e40c1c303b75", + "Name": "W18x40", + "EdgeId": 207 + }, + "0a085250-7e36-470a-9d9b-04b517d9dbaa": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0a085250-7e36-470a-9d9b-04b517d9dbaa", + "Name": null + }, + "78d96028-2809-4763-82c9-1b976ee4409c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "78d96028-2809-4763-82c9-1b976ee4409c", + "Name": "W18x40", + "EdgeId": 211 + }, + "64ce661d-3df1-485c-90ab-f633f935ff10": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "64ce661d-3df1-485c-90ab-f633f935ff10", + "Name": null + }, + "46b02b69-c852-4a72-9ade-e334f2fd6bfb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "46b02b69-c852-4a72-9ade-e334f2fd6bfb", + "Name": "W18x40", + "EdgeId": 212 + }, + "e06995d7-3011-4b07-a0f0-9442f71d14f4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e06995d7-3011-4b07-a0f0-9442f71d14f4", + "Name": null + }, + "0c9f542f-a91c-43a9-8c3e-9345bb876efa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "0c9f542f-a91c-43a9-8c3e-9345bb876efa", + "Name": "W18x40", + "EdgeId": 216, + "ExternalEdgeId": 216 + }, + "b87e37b1-5692-4791-b43d-9337ed140548": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b87e37b1-5692-4791-b43d-9337ed140548", + "Name": null + }, + "7e8b900d-27bc-408a-81ae-53438247f059": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "7e8b900d-27bc-408a-81ae-53438247f059", + "Name": "W18x40", + "EdgeId": 217 + }, + "52ec10a4-b2ab-4860-8c61-45c2c3352c4b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "52ec10a4-b2ab-4860-8c61-45c2c3352c4b", + "Name": null + }, + "a997202a-5a3e-4e46-a8b9-03ba84857820": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a997202a-5a3e-4e46-a8b9-03ba84857820", + "Name": "W18x40", + "EdgeId": 222 + }, + "a1e3e2fa-a755-46d7-8da7-2b149275bdec": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 23.0, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a1e3e2fa-a755-46d7-8da7-2b149275bdec", + "Name": null + }, + "172cf631-3712-4317-a993-91ba09e11d12": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "172cf631-3712-4317-a993-91ba09e11d12", + "Name": "W18x40", + "EdgeId": 223 + }, + "ad7da4a3-fa7e-49d2-8a31-25370b79a641": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 29.5, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ad7da4a3-fa7e-49d2-8a31-25370b79a641", + "Name": null + }, + "eb795953-2568-465f-9b74-f1078a8e68e7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "eb795953-2568-465f-9b74-f1078a8e68e7", + "Name": "W18x40", + "EdgeId": 224, + "ExternalEdgeId": 224 + }, + "83c2a9b0-4ff9-44c8-9387-a1b53bd19876": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 29.5, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "83c2a9b0-4ff9-44c8-9387-a1b53bd19876", + "Name": null + }, + "e89c308d-769d-49fe-9cb3-4e71364adf86": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "e89c308d-769d-49fe-9cb3-4e71364adf86", + "Name": "W18x40", + "EdgeId": 229 + }, + "38923d51-2d66-429c-8df6-c17dcf977aec": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "38923d51-2d66-429c-8df6-c17dcf977aec", + "Name": null + }, + "a6ef0dfa-7138-4619-92dc-f7216e254d21": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a6ef0dfa-7138-4619-92dc-f7216e254d21", + "Name": "W18x40", + "EdgeId": 230 + }, + "3981bba0-275d-409b-be8a-21b147c63b24": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3981bba0-275d-409b-be8a-21b147c63b24", + "Name": null + }, + "c4c352fe-29ce-4226-b0ff-87fe9181f7a8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "c4c352fe-29ce-4226-b0ff-87fe9181f7a8", + "Name": "W18x40", + "EdgeId": 234 + }, + "792d35ba-505b-4717-ae30-0574541c8eee": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "792d35ba-505b-4717-ae30-0574541c8eee", + "Name": null + }, + "54ea5cfa-826d-4678-966a-9a49a295c13f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "54ea5cfa-826d-4678-966a-9a49a295c13f", + "Name": "W18x40", + "EdgeId": 235 + }, + "10a378f9-7aec-40eb-87e5-011b689abdb5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "10a378f9-7aec-40eb-87e5-011b689abdb5", + "Name": null + }, + "fd86a24e-118a-47df-9b62-6b8cc5319f4a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "fd86a24e-118a-47df-9b62-6b8cc5319f4a", + "Name": "W18x40", + "EdgeId": 239 + }, + "fc90d40e-84e6-4702-a2a8-c755dd966525": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fc90d40e-84e6-4702-a2a8-c755dd966525", + "Name": null + }, + "1ca61af4-3939-4a30-8225-dcea7b7de391": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "1ca61af4-3939-4a30-8225-dcea7b7de391", + "Name": "W18x40", + "EdgeId": 240 + }, + "acc0b12a-4dac-4bae-bffd-24899bbcee12": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "acc0b12a-4dac-4bae-bffd-24899bbcee12", + "Name": null + }, + "8dace4b8-440b-48db-9aae-37eb8d311e2e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "8dace4b8-440b-48db-9aae-37eb8d311e2e", + "Name": "W18x40", + "EdgeId": 244, + "ExternalEdgeId": 244 + }, + "cb9ae6b6-1e46-4736-ae26-768d4c7ec0be": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cb9ae6b6-1e46-4736-ae26-768d4c7ec0be", + "Name": null + }, + "ef986c15-2ac9-46fa-a63f-84e8897dae3b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "ef986c15-2ac9-46fa-a63f-84e8897dae3b", + "Name": "W18x40", + "EdgeId": 245 + }, + "72477917-2055-44a6-9eaf-ff2c6fc52f17": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "72477917-2055-44a6-9eaf-ff2c6fc52f17", + "Name": null + }, + "e056abb1-ed90-4b92-8fea-04471d0dad59": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "e056abb1-ed90-4b92-8fea-04471d0dad59", + "Name": "W18x40", + "EdgeId": 250 + }, + "5c2a64a9-de66-4b9b-b9ca-205fa60436c5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 23.0, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5c2a64a9-de66-4b9b-b9ca-205fa60436c5", + "Name": null + }, + "41323531-d1a4-4aed-9c52-4f4b59259096": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "41323531-d1a4-4aed-9c52-4f4b59259096", + "Name": "W18x40", + "EdgeId": 251 + }, + "21304e88-f0df-43e1-99c1-6909c611ac69": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 29.5, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "21304e88-f0df-43e1-99c1-6909c611ac69", + "Name": null + }, + "cbdc7041-d7bf-429d-a991-529ebd23ceb7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "cbdc7041-d7bf-429d-a991-529ebd23ceb7", + "Name": "W18x40", + "EdgeId": 252, + "ExternalEdgeId": 252 + }, + "4c8b2de0-0200-44a0-944e-dbb34527d3bf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 29.5, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4c8b2de0-0200-44a0-944e-dbb34527d3bf", + "Name": null + }, + "4ceaa300-8022-4e39-a0bb-f5cefa889087": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "4ceaa300-8022-4e39-a0bb-f5cefa889087", + "Name": "W18x40", + "EdgeId": 257 + }, + "ee66ca6c-6d45-491e-9df6-69b88afae611": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ee66ca6c-6d45-491e-9df6-69b88afae611", + "Name": null + }, + "aebf6dbe-40f4-41f6-8f7b-41321d57115c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "aebf6dbe-40f4-41f6-8f7b-41321d57115c", + "Name": "W18x40", + "EdgeId": 258 + }, + "083b5588-5e6b-4f02-aa82-6cff6f88b1e9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "083b5588-5e6b-4f02-aa82-6cff6f88b1e9", + "Name": null + }, + "31e5df48-79ef-42ce-a9e4-8d957267c117": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "31e5df48-79ef-42ce-a9e4-8d957267c117", + "Name": "W18x40", + "EdgeId": 262 + }, + "219ed329-0bc5-4c99-862b-f2de6df0322c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "219ed329-0bc5-4c99-862b-f2de6df0322c", + "Name": null + }, + "da1239f7-b819-4ab1-a324-af5463852f4e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "da1239f7-b819-4ab1-a324-af5463852f4e", + "Name": "W18x40", + "EdgeId": 263 + }, + "ef757a8f-64a3-42ee-852d-bf403aa6a580": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ef757a8f-64a3-42ee-852d-bf403aa6a580", + "Name": null + }, + "ccc3f409-ead5-4f79-8dbc-a02d8516b5ff": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "ccc3f409-ead5-4f79-8dbc-a02d8516b5ff", + "Name": "W18x40", + "EdgeId": 267 + }, + "4ce11a50-452e-48b1-b02d-a9f5d1dc4da3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4ce11a50-452e-48b1-b02d-a9f5d1dc4da3", + "Name": null + }, + "8572b7ba-86a0-4ee8-92d4-0f62896efd4a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "8572b7ba-86a0-4ee8-92d4-0f62896efd4a", + "Name": "W18x40", + "EdgeId": 268 + }, + "8f9fb229-5944-4913-bac2-297075383a87": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8f9fb229-5944-4913-bac2-297075383a87", + "Name": null + }, + "4fd42bbe-5a7d-4e8e-abf4-ee176c2088bd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "4fd42bbe-5a7d-4e8e-abf4-ee176c2088bd", + "Name": "W18x40", + "EdgeId": 272, + "ExternalEdgeId": 272 + }, + "da0cd287-2462-42fe-93ca-db4662722c92": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "da0cd287-2462-42fe-93ca-db4662722c92", + "Name": null + }, + "bccdd461-d584-4927-8b16-e92e6a8b2430": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "bccdd461-d584-4927-8b16-e92e6a8b2430", + "Name": "W18x40", + "EdgeId": 273 + }, + "0cc56e04-7f6a-416e-8df6-2805b839072f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0cc56e04-7f6a-416e-8df6-2805b839072f", + "Name": null + }, + "9bf42062-7eb8-4246-858d-7f96ba9dd798": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "9bf42062-7eb8-4246-858d-7f96ba9dd798", + "Name": "W18x40", + "EdgeId": 278 + }, + "58a4a2d1-a820-41d0-a640-3bf442ca65d3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 23.0, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "58a4a2d1-a820-41d0-a640-3bf442ca65d3", + "Name": null + }, + "cce71879-c29e-499b-bbe3-3345e901b7c9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "cce71879-c29e-499b-bbe3-3345e901b7c9", + "Name": "W18x40", + "EdgeId": 279 + }, + "f4ac9691-fe5b-45bf-be64-9c4b7682136e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 29.5, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f4ac9691-fe5b-45bf-be64-9c4b7682136e", + "Name": null + }, + "509bdce4-fd50-43f5-ae44-981200acfbf1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "509bdce4-fd50-43f5-ae44-981200acfbf1", + "Name": "W18x40", + "EdgeId": 280, + "ExternalEdgeId": 280 + }, + "06e8e416-c7c7-4383-bda7-5dfde39a7a4b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 29.5, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "06e8e416-c7c7-4383-bda7-5dfde39a7a4b", + "Name": null + }, + "af4de305-e791-4466-b972-ea5a4f91c3bd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "af4de305-e791-4466-b972-ea5a4f91c3bd", + "Name": "W18x40", + "EdgeId": 285 + }, + "34075005-73c4-4e09-bebb-3288e90c2077": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "34075005-73c4-4e09-bebb-3288e90c2077", + "Name": null + }, + "7b9bf020-4f02-4de5-a71e-115d274ca524": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "7b9bf020-4f02-4de5-a71e-115d274ca524", + "Name": "W18x40", + "EdgeId": 286 + }, + "95578b76-df01-422f-aaaf-0294be5e4ff6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "95578b76-df01-422f-aaaf-0294be5e4ff6", + "Name": null + }, + "b1f7bd78-ff3e-44ea-a40a-163ff4b56750": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "b1f7bd78-ff3e-44ea-a40a-163ff4b56750", + "Name": "W18x40", + "EdgeId": 290 + }, + "cf712197-8635-46d9-a053-67892cf1a895": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cf712197-8635-46d9-a053-67892cf1a895", + "Name": null + }, + "40241f81-75fa-475c-b862-c0585825657e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "40241f81-75fa-475c-b862-c0585825657e", + "Name": "W18x40", + "EdgeId": 291 + }, + "cad36578-ac43-44e6-a79d-f39dda06c8ed": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cad36578-ac43-44e6-a79d-f39dda06c8ed", + "Name": null + }, + "dc296252-72e6-4f46-b78a-24e132cd9e15": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "dc296252-72e6-4f46-b78a-24e132cd9e15", + "Name": "W18x40", + "EdgeId": 295 + }, + "6325c132-549d-455f-915f-46ed65eab9b4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6325c132-549d-455f-915f-46ed65eab9b4", + "Name": null + }, + "d8a1a5b1-5cde-4f8a-ac7d-1c243e95dcce": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "d8a1a5b1-5cde-4f8a-ac7d-1c243e95dcce", + "Name": "W18x40", + "EdgeId": 296 + }, + "e3b51de8-ade1-4f4e-b571-9c6ff749da4e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e3b51de8-ade1-4f4e-b571-9c6ff749da4e", + "Name": null + }, + "9ab58337-1dcd-4ff7-817b-401ed68a61ef": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "9ab58337-1dcd-4ff7-817b-401ed68a61ef", + "Name": "W18x40", + "EdgeId": 300, + "ExternalEdgeId": 300 + }, + "af38a673-6719-4914-91a6-1fff4f946153": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "af38a673-6719-4914-91a6-1fff4f946153", + "Name": null + }, + "baa14628-227b-4931-8af4-81dffebd47f7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "baa14628-227b-4931-8af4-81dffebd47f7", + "Name": "W18x40", + "EdgeId": 301 + }, + "970364de-abf3-436e-898f-c45e74433d64": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "970364de-abf3-436e-898f-c45e74433d64", + "Name": null + }, + "4f5b621b-7f1b-4ea3-b29a-2ad73e0160fd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "4f5b621b-7f1b-4ea3-b29a-2ad73e0160fd", + "Name": "W18x40", + "EdgeId": 306 + }, + "4a1c8a62-ea42-414e-940f-5bf779aff334": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 23.0, + "Y": -59.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4a1c8a62-ea42-414e-940f-5bf779aff334", + "Name": null + }, + "dae33c7d-cfe7-4acb-a455-c3f1451d1378": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "dae33c7d-cfe7-4acb-a455-c3f1451d1378", + "Name": "W18x40", + "EdgeId": 307, + "ExternalEdgeId": 307 + }, + "005b342f-75ba-441c-b00f-dc8f11db1b3b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 29.5, + "Y": -59.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "005b342f-75ba-441c-b00f-dc8f11db1b3b", + "Name": null + }, + "d7ac1548-7650-472a-8741-bad52be9afd9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "d7ac1548-7650-472a-8741-bad52be9afd9", + "Name": "W18x40", + "EdgeId": 308, + "ExternalEdgeId": 308 + }, + "950de28f-aff7-44ed-b2b9-7e7668f518d8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 29.5, + "Y": -59.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "950de28f-aff7-44ed-b2b9-7e7668f518d8", + "Name": null + }, + "d72e0bf9-4229-438e-9047-1d816f068c4e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "d72e0bf9-4229-438e-9047-1d816f068c4e", + "Name": "W18x40", + "EdgeId": 313 + }, + "8a1d8841-6ea7-4d6f-a42f-bea0473987aa": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -59.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8a1d8841-6ea7-4d6f-a42f-bea0473987aa", + "Name": null + }, + "eeb9e196-db05-4d71-84b0-bcebf07b6063": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "eeb9e196-db05-4d71-84b0-bcebf07b6063", + "Name": "W18x40", + "EdgeId": 314, + "ExternalEdgeId": 314 + }, + "e8134d32-05b1-42ab-8599-a6ef0f201ee8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 16.0, + "Y": -59.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e8134d32-05b1-42ab-8599-a6ef0f201ee8", + "Name": null + }, + "f4486d31-63dd-4d86-bf93-21122cd0fd7d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "f4486d31-63dd-4d86-bf93-21122cd0fd7d", + "Name": "W18x40", + "EdgeId": 318 + }, + "6b1e787c-a045-410d-8d10-2aea8ffb8f81": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -59.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6b1e787c-a045-410d-8d10-2aea8ffb8f81", + "Name": null + }, + "b105cc2e-6e0a-43bb-b37c-62d76c1f707a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "b105cc2e-6e0a-43bb-b37c-62d76c1f707a", + "Name": "W18x40", + "EdgeId": 319, + "ExternalEdgeId": 319 + }, + "005413af-e9d7-4fdc-b916-ac01234b64d5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 9.0, + "Y": -59.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "005413af-e9d7-4fdc-b916-ac01234b64d5", + "Name": null + }, + "ff827db3-a27a-432f-af3d-3d3479b8d84d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "ff827db3-a27a-432f-af3d-3d3479b8d84d", + "Name": "W18x40", + "EdgeId": 323 + }, + "a425b9c2-21ad-4e34-9d73-4edbbea686fc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -59.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a425b9c2-21ad-4e34-9d73-4edbbea686fc", + "Name": null + }, + "f72b2c92-63be-4d8a-b1aa-7dd8569b7445": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "f72b2c92-63be-4d8a-b1aa-7dd8569b7445", + "Name": "W18x40", + "EdgeId": 324, + "ExternalEdgeId": 324 + }, + "dc8b16a4-6045-42ad-9046-29b7f7211e92": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 2.0, + "Y": -59.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dc8b16a4-6045-42ad-9046-29b7f7211e92", + "Name": null + }, + "a592d121-7ed6-4df3-b357-3b3952cebe69": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a592d121-7ed6-4df3-b357-3b3952cebe69", + "Name": "W18x40", + "EdgeId": 328, + "ExternalEdgeId": 328 + }, + "ad8cc820-fddc-4b23-a9a6-1c6eb18b0413": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -59.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ad8cc820-fddc-4b23-a9a6-1c6eb18b0413", + "Name": null + }, + "ae3b6a32-2682-4dce-a010-edf6c92760ee": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "ae3b6a32-2682-4dce-a010-edf6c92760ee", + "Name": "W18x40", + "EdgeId": 329, + "ExternalEdgeId": 329 + }, + "53da9573-c7ba-42e4-a746-5c36dfa5bbe5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -59.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "53da9573-c7ba-42e4-a746-5c36dfa5bbe5", + "Name": null + }, + "0e54563f-2fc4-4d9d-9369-32f6c2ea0b49": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1f248147-be87-4d6a-922b-e7bf05d5f27e", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.7324, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "0e54563f-2fc4-4d9d-9369-32f6c2ea0b49", + "Name": "W18x40", + "EdgeId": 331, + "ExternalEdgeId": 331 + }, + "382530bd-989e-4f59-a332-a6c78c466768": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.7324, + "Y": -0.5, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -0.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "382530bd-989e-4f59-a332-a6c78c466768", + "Name": null + }, + "195a46b1-7b5f-4d19-9527-c1f581a96fab": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "195a46b1-7b5f-4d19-9527-c1f581a96fab", + "Name": "W18x40", + "EdgeId": 332 + }, + "02a57abe-d470-4d9f-aeeb-faa2c9c3bcf4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -0.5, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -5.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "02a57abe-d470-4d9f-aeeb-faa2c9c3bcf4", + "Name": null + }, + "673f2af9-52df-4335-9457-1b8ecf1aa4a0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c9699dd2-d040-4a2c-ad98-36443b0d037a", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "673f2af9-52df-4335-9457-1b8ecf1aa4a0", + "Name": "W18x40", + "EdgeId": 333 + }, + "42b6e906-313d-4eb8-b831-ac9753a803cf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 4.5 + }, + "End": { + "X": 12.7324, + "Y": -5.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "42b6e906-313d-4eb8-b831-ac9753a803cf", + "Name": null + }, + "76e6154e-9902-42e5-bd4e-d4a909f8aa79": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "442ea777-71e8-42e2-a88c-d741cce24ce5", + "Transform": { + "Matrix": { + "Components": [ + 0.5547001962252291, + 0.8320502943378437, + 0.0, + 9.7324, + -0.8320502943378437, + 0.5547001962252291, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "76e6154e-9902-42e5-bd4e-d4a909f8aa79", + "Name": "W18x40", + "EdgeId": 334, + "ExternalEdgeId": 334 + }, + "7d9660d4-43b2-482e-82b4-292d8e2d001c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.7324, + "Y": -0.5, + "Z": 4.5 + }, + "End": { + "X": 12.7324, + "Y": -5.000000000000001, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7d9660d4-43b2-482e-82b4-292d8e2d001c", + "Name": null + }, + "292e1a1d-9b9b-4921-b15a-dfac213efee1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "292e1a1d-9b9b-4921-b15a-dfac213efee1", + "Name": "W18x40", + "EdgeId": 339, + "ExternalEdgeId": 339 + }, + "db1e7492-dd35-4398-8549-1c5bf5d84797": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -0.5, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -0.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "db1e7492-dd35-4398-8549-1c5bf5d84797", + "Name": null + }, + "bb07065a-6c3d-4545-90fa-b3c8cb1989ca": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "bb07065a-6c3d-4545-90fa-b3c8cb1989ca", + "Name": "W18x40", + "EdgeId": 340 + }, + "0b731827-dafb-4223-bac7-9f0a03eaaf64": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -0.5, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -5.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0b731827-dafb-4223-bac7-9f0a03eaaf64", + "Name": null + }, + "f24f08a3-0b9d-4cc7-8b93-0ea27a62253a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "f24f08a3-0b9d-4cc7-8b93-0ea27a62253a", + "Name": "W18x40", + "EdgeId": 341 + }, + "b4f95fe4-098d-4fb0-908c-ebef6344d3cd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -5.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b4f95fe4-098d-4fb0-908c-ebef6344d3cd", + "Name": null + }, + "141c3c4a-94b1-4152-9ca8-7b82030d1fdf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "141c3c4a-94b1-4152-9ca8-7b82030d1fdf", + "Name": "W18x40", + "EdgeId": 344, + "ExternalEdgeId": 344 + }, + "91a3462d-81f0-4d87-b12a-e9f41614b325": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -0.5, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -0.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "91a3462d-81f0-4d87-b12a-e9f41614b325", + "Name": null + }, + "3edeb499-9df5-4571-871d-5fc61baca0bb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "3edeb499-9df5-4571-871d-5fc61baca0bb", + "Name": "W18x40", + "EdgeId": 345, + "ExternalEdgeId": 345 + }, + "7645f093-55c5-49bb-a377-3a26c95241c3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -0.5, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -5.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7645f093-55c5-49bb-a377-3a26c95241c3", + "Name": null + }, + "3de06577-6368-4655-93fb-7a6b9d6c25dc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "3de06577-6368-4655-93fb-7a6b9d6c25dc", + "Name": "W18x40", + "EdgeId": 346 + }, + "3519218e-ac4c-4ff6-90b6-460873da9d10": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -5.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -5.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3519218e-ac4c-4ff6-90b6-460873da9d10", + "Name": null + }, + "718acb3a-bda7-40c4-89ca-367e62ad9e52": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e5972626-f896-4b80-b62f-fa93a8846507", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -9.9014, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "718acb3a-bda7-40c4-89ca-367e62ad9e52", + "Name": "W18x40", + "EdgeId": 349 + }, + "0f07889b-470d-4e67-b431-395d9daa9eb8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -9.9014, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0f07889b-470d-4e67-b431-395d9daa9eb8", + "Name": null + }, + "b3568703-34ff-4a0a-ab20-178ad643a787": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "49319ac3-7aa7-4cea-aa5e-8a40ef05e1ba", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "b3568703-34ff-4a0a-ab20-178ad643a787", + "Name": "W18x40", + "EdgeId": 350 + }, + "1965e954-cdc4-4710-8fc6-5eb5759dd77d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 16.06574, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1965e954-cdc4-4710-8fc6-5eb5759dd77d", + "Name": null + }, + "5c0751c6-7dd3-494b-aae2-9f6c6934c3fe": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4dc79d1f-76cc-4eac-ba1d-90c0929442e9", + "Transform": { + "Matrix": { + "Components": [ + 0.5547391419896724, + 0.8320243291782772, + 0.0, + 16.0, + -0.8320243291782772, + 0.5547391419896724, + 0.0, + -9.9014, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "5c0751c6-7dd3-494b-aae2-9f6c6934c3fe", + "Name": "W18x40", + "EdgeId": 351, + "ExternalEdgeId": 351 + }, + "740529b9-4663-427e-b1fa-eff316b90ff7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -9.9014, + "Z": 4.5 + }, + "End": { + "X": 16.06574, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "740529b9-4663-427e-b1fa-eff316b90ff7", + "Name": null + }, + "749fabbe-482f-4e31-a4b3-7f2f85f9c37b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39b28bf6-91db-4c72-b448-44bed8dc6bc0", + "Transform": { + "Matrix": { + "Components": [ + 0.554700196225229, + 0.8320502943378437, + 0.0, + 12.7324, + -0.8320502943378437, + 0.554700196225229, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "749fabbe-482f-4e31-a4b3-7f2f85f9c37b", + "Name": "W18x40", + "EdgeId": 355, + "ExternalEdgeId": 355 + }, + "da7e086b-2aa4-4474-8de1-d8bde6afbc51": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.7324, + "Y": -5.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -9.9014, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "da7e086b-2aa4-4474-8de1-d8bde6afbc51", + "Name": null + }, + "ac2a1b89-4369-4e52-87d0-741afb304b76": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "ac2a1b89-4369-4e52-87d0-741afb304b76", + "Name": "W18x40", + "EdgeId": 356 + }, + "248fc446-6a8c-4ec4-883c-c15ab42c7f7d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "248fc446-6a8c-4ec4-883c-c15ab42c7f7d", + "Name": null + }, + "17420ccd-0b5c-4f6f-b6d0-8fdeab1bcbbf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "17420ccd-0b5c-4f6f-b6d0-8fdeab1bcbbf", + "Name": "W18x40", + "EdgeId": 357 + }, + "b60594d5-586c-4f05-bdd6-91860777b981": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b60594d5-586c-4f05-bdd6-91860777b981", + "Name": null + }, + "c2af512a-b65d-401a-b950-f1e57e453322": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c2af512a-b65d-401a-b950-f1e57e453322", + "Name": "W18x40", + "EdgeId": 359 + }, + "95bf01d5-a35a-497b-aff4-c1c95111424f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -5.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "95bf01d5-a35a-497b-aff4-c1c95111424f", + "Name": null + }, + "51d23319-3e28-4f76-aa8a-493a172e7f14": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "51d23319-3e28-4f76-aa8a-493a172e7f14", + "Name": "W18x40", + "EdgeId": 360 + }, + "ee0f0a9a-4aa2-4eb8-93e5-52adbad8c5fa": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ee0f0a9a-4aa2-4eb8-93e5-52adbad8c5fa", + "Name": null + }, + "acc61123-96b8-425b-8592-58d53bc446c1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "acc61123-96b8-425b-8592-58d53bc446c1", + "Name": "W18x40", + "EdgeId": 362, + "ExternalEdgeId": 362 + }, + "436d63dd-5762-4a4f-afe2-d0bd34ec818b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -5.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "436d63dd-5762-4a4f-afe2-d0bd34ec818b", + "Name": null + }, + "c2359198-8052-48f7-9379-fd30309e7840": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c2359198-8052-48f7-9379-fd30309e7840", + "Name": "W18x40", + "EdgeId": 363 + }, + "7cbf1076-18af-442a-aa94-658b30e1a17a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7cbf1076-18af-442a-aa94-658b30e1a17a", + "Name": null + }, + "32fa9586-f0b8-46c9-b7e1-fdf07c33742b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "32fa9586-f0b8-46c9-b7e1-fdf07c33742b", + "Name": "W18x40", + "EdgeId": 365 + }, + "00bf53c7-2df6-4343-b648-4497d55e6c46": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "00bf53c7-2df6-4343-b648-4497d55e6c46", + "Name": null + }, + "40757812-7faf-4b05-acd8-c6d9bb4ea8f9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "0b85760d-9483-48e4-99ef-f0158063192f", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "40757812-7faf-4b05-acd8-c6d9bb4ea8f9", + "Name": "W18x40", + "EdgeId": 366 + }, + "b187c97c-12f6-4cbc-8258-9077a872f047": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 19.39906, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b187c97c-12f6-4cbc-8258-9077a872f047", + "Name": null + }, + "a61b2830-3e47-47c4-bd3c-8c042ddf65ef": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2d8372e3-18d6-43f5-b8a6-ca8af44199e8", + "Transform": { + "Matrix": { + "Components": [ + 0.5546986601295418, + 0.8320513183995871, + 0.0, + 16.06574, + -0.8320513183995871, + 0.5546986601295418, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "a61b2830-3e47-47c4-bd3c-8c042ddf65ef", + "Name": "W18x40", + "EdgeId": 367, + "ExternalEdgeId": 367 + }, + "72221334-cbd7-49fd-95dc-eeb96145c890": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.06574, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 19.39906, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "72221334-cbd7-49fd-95dc-eeb96145c890", + "Name": null + }, + "c800dae5-a69b-4eb6-93e9-770e672f7eb8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c800dae5-a69b-4eb6-93e9-770e672f7eb8", + "Name": "W18x40", + "EdgeId": 370 + }, + "159daeac-5141-4ab4-bc8d-e7d365f9ec83": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "159daeac-5141-4ab4-bc8d-e7d365f9ec83", + "Name": null + }, + "b4014d37-f1a2-49c1-ada7-8c0f030d5830": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "b4014d37-f1a2-49c1-ada7-8c0f030d5830", + "Name": "W18x40", + "EdgeId": 371 + }, + "8738f1fc-f06c-4c19-8d9c-dedf0d07f4e4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8738f1fc-f06c-4c19-8d9c-dedf0d07f4e4", + "Name": null + }, + "656ed2a6-9138-4e30-853a-3c6c40eafa99": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "656ed2a6-9138-4e30-853a-3c6c40eafa99", + "Name": "W18x40", + "EdgeId": 373 + }, + "1b65f783-6996-4655-ad9d-e1e48a1d6867": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1b65f783-6996-4655-ad9d-e1e48a1d6867", + "Name": null + }, + "dab2bc72-f1a0-4400-964c-6b23013d5bf2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "dab2bc72-f1a0-4400-964c-6b23013d5bf2", + "Name": "W18x40", + "EdgeId": 374 + }, + "75af2fca-942c-4e6b-be8f-6c31e1e4e474": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "75af2fca-942c-4e6b-be8f-6c31e1e4e474", + "Name": null + }, + "d2abbea9-a0d8-4786-a45b-462010cf62a2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "d2abbea9-a0d8-4786-a45b-462010cf62a2", + "Name": "W18x40", + "EdgeId": 376, + "ExternalEdgeId": 376 + }, + "402ad856-dc8d-4bff-88bd-ca1f8e452dd3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "402ad856-dc8d-4bff-88bd-ca1f8e452dd3", + "Name": null + }, + "40bcc871-c45b-4ae9-b403-fa0dcf71781e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "40bcc871-c45b-4ae9-b403-fa0dcf71781e", + "Name": "W18x40", + "EdgeId": 377 + }, + "dfd51255-c9e9-45c0-b842-2efd6c54d75b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dfd51255-c9e9-45c0-b842-2efd6c54d75b", + "Name": null + }, + "7b25fcba-3cdf-404e-b2c7-52adb2f843f2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "7b25fcba-3cdf-404e-b2c7-52adb2f843f2", + "Name": "W18x40", + "EdgeId": 379 + }, + "c5eb6f00-5098-43ee-ba90-76fb7c1530e8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c5eb6f00-5098-43ee-ba90-76fb7c1530e8", + "Name": null + }, + "e0d46986-35b9-4396-a0ff-d69e5b378932": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7cd6c7d4-992c-4217-9c1f-ac7c9170b25c", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e0d46986-35b9-4396-a0ff-d69e5b378932", + "Name": "W18x40", + "EdgeId": 380 + }, + "1c32c468-a24a-466b-9003-b64055e11f3c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 22.7324, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1c32c468-a24a-466b-9003-b64055e11f3c", + "Name": null + }, + "fa7471a7-7703-4446-ad4f-37431975557f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "f1f4efee-0d74-4a09-8341-e6127bd83748", + "Transform": { + "Matrix": { + "Components": [ + 0.5547009642709457, + 0.832049782306854, + 0.0, + 19.39906, + -0.832049782306854, + 0.5547009642709457, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "fa7471a7-7703-4446-ad4f-37431975557f", + "Name": "W18x40", + "EdgeId": 381, + "ExternalEdgeId": 381 + }, + "c5747bbb-afce-4c64-bca1-821500537422": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.39906, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 22.7324, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c5747bbb-afce-4c64-bca1-821500537422", + "Name": null + }, + "451d339c-1696-4e1b-8be7-7cfc352a3ba5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "451d339c-1696-4e1b-8be7-7cfc352a3ba5", + "Name": "W18x40", + "EdgeId": 384 + }, + "f8fb7ada-b5bb-4658-9b54-e4fe304c6652": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f8fb7ada-b5bb-4658-9b54-e4fe304c6652", + "Name": null + }, + "33715d15-e80c-463d-8b31-fbedafa243fd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "33715d15-e80c-463d-8b31-fbedafa243fd", + "Name": "W18x40", + "EdgeId": 385 + }, + "0814bde4-623d-404f-992e-26bab4883fa4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0814bde4-623d-404f-992e-26bab4883fa4", + "Name": null + }, + "ae178a39-4f27-45b7-8829-cdc742bdf6f5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "ae178a39-4f27-45b7-8829-cdc742bdf6f5", + "Name": "W18x40", + "EdgeId": 387 + }, + "5c32ba28-a744-48ee-af46-8a3287d3f45c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5c32ba28-a744-48ee-af46-8a3287d3f45c", + "Name": null + }, + "9e7d58e0-2394-4a53-a737-139875c5dc7f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "9e7d58e0-2394-4a53-a737-139875c5dc7f", + "Name": "W18x40", + "EdgeId": 388 + }, + "64442de3-4d5f-4cad-8e05-33e5d1784cb3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "64442de3-4d5f-4cad-8e05-33e5d1784cb3", + "Name": null + }, + "8df09f90-c4fc-4c2e-bddc-d4531599deae": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "8df09f90-c4fc-4c2e-bddc-d4531599deae", + "Name": "W18x40", + "EdgeId": 390, + "ExternalEdgeId": 390 + }, + "9e0d4b17-495b-41ac-8787-b65e05887465": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9e0d4b17-495b-41ac-8787-b65e05887465", + "Name": null + }, + "104c49c5-4a16-4492-a389-993e86a706c2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "104c49c5-4a16-4492-a389-993e86a706c2", + "Name": "W18x40", + "EdgeId": 391 + }, + "f4dc01cd-0805-41bc-9fbd-aa675966eb16": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f4dc01cd-0805-41bc-9fbd-aa675966eb16", + "Name": null + }, + "45819a07-0377-4f96-b35c-ebfb8b10dfb5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d4da724b-0d2f-4bd3-acf2-5d3697adf278", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -20.4014, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "45819a07-0377-4f96-b35c-ebfb8b10dfb5", + "Name": "W18x40", + "EdgeId": 393 + }, + "2eff71a1-49f2-4d4e-8f58-165535c16473": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -20.4014, + "Z": 4.5 + }, + "End": { + "X": 23.0, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2eff71a1-49f2-4d4e-8f58-165535c16473", + "Name": null + }, + "3b6ed46a-d0f6-4f32-9a08-f7f047aaa3f2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b110d957-b9da-4137-9c21-3ec50b79b33e", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "3b6ed46a-d0f6-4f32-9a08-f7f047aaa3f2", + "Name": "W18x40", + "EdgeId": 394 + }, + "416847c1-4fcd-4931-94fd-55f44df7586c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 26.06574, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "416847c1-4fcd-4931-94fd-55f44df7586c", + "Name": null + }, + "12a373e4-f160-464e-a0ef-18bb895f4635": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e0c50391-a50c-417e-a648-1d8139e40aa4", + "Transform": { + "Matrix": { + "Components": [ + 0.5547010313116194, + 0.8320497376129783, + 0.0, + 23.0, + -0.8320497376129783, + 0.5547010313116194, + 0.0, + -20.4014, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "12a373e4-f160-464e-a0ef-18bb895f4635", + "Name": "W18x40", + "EdgeId": 395, + "ExternalEdgeId": 395 + }, + "312c9e72-ecf9-47f5-aa9f-e7b35c198b36": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -20.4014, + "Z": 4.5 + }, + "End": { + "X": 26.06574, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "312c9e72-ecf9-47f5-aa9f-e7b35c198b36", + "Name": null + }, + "847c76f8-f248-408e-b962-a7e61eb8fd2d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3bf2c337-826f-4c12-b4d9-a345602f7c71", + "Transform": { + "Matrix": { + "Components": [ + 0.5547001962252325, + 0.8320502943378414, + 0.0, + 22.7324, + -0.8320502943378414, + 0.5547001962252325, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "847c76f8-f248-408e-b962-a7e61eb8fd2d", + "Name": "W18x40", + "EdgeId": 399, + "ExternalEdgeId": 399 + }, + "8dafe523-5d01-45ef-b715-26bb1a00f4df": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.7324, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 23.0, + "Y": -20.4014, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8dafe523-5d01-45ef-b715-26bb1a00f4df", + "Name": null + }, + "a160a36b-01b6-4f2f-a3ec-165f2c05aa13": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "a160a36b-01b6-4f2f-a3ec-165f2c05aa13", + "Name": "W18x40", + "EdgeId": 400 + }, + "0577e476-df51-4fad-a3e5-ff33e6ec5588": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0577e476-df51-4fad-a3e5-ff33e6ec5588", + "Name": null + }, + "a8a8f2c0-0e1e-4627-b27a-8f8307805127": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "a8a8f2c0-0e1e-4627-b27a-8f8307805127", + "Name": "W18x40", + "EdgeId": 401 + }, + "25ac06b9-8ef6-4732-8cd1-00d1b4a4fffa": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "25ac06b9-8ef6-4732-8cd1-00d1b4a4fffa", + "Name": null + }, + "9267a1a4-0447-45e1-aff0-20846e3d839b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "9267a1a4-0447-45e1-aff0-20846e3d839b", + "Name": "W18x40", + "EdgeId": 403 + }, + "253f18ab-d786-49ef-9f5c-8598933a4ec7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "253f18ab-d786-49ef-9f5c-8598933a4ec7", + "Name": null + }, + "1cbc815e-0d8f-475f-ae7d-1e8a6d511faa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "1cbc815e-0d8f-475f-ae7d-1e8a6d511faa", + "Name": "W18x40", + "EdgeId": 404 + }, + "ddf4b673-90a1-4013-b3bf-c3b1a0e2409b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ddf4b673-90a1-4013-b3bf-c3b1a0e2409b", + "Name": null + }, + "649a01ad-d0b4-4d53-9b99-632517b2172a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "649a01ad-d0b4-4d53-9b99-632517b2172a", + "Name": "W18x40", + "EdgeId": 406 + }, + "6d543297-c151-45b1-b188-6cd797ee2285": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6d543297-c151-45b1-b188-6cd797ee2285", + "Name": null + }, + "713c9309-23f4-4527-90a8-5167233eba5c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "713c9309-23f4-4527-90a8-5167233eba5c", + "Name": "W18x40", + "EdgeId": 407 + }, + "9357660f-8eec-4acb-bd9d-be170e7658ce": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9357660f-8eec-4acb-bd9d-be170e7658ce", + "Name": null + }, + "2bb3c432-7ec0-4aad-957f-994c26cb24b3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "2bb3c432-7ec0-4aad-957f-994c26cb24b3", + "Name": "W18x40", + "EdgeId": 409, + "ExternalEdgeId": 409 + }, + "8ca2205f-8655-4456-9d57-c6146c5ed35a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8ca2205f-8655-4456-9d57-c6146c5ed35a", + "Name": null + }, + "3f056e54-a892-4e0b-b4b0-347b1765c30a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "3f056e54-a892-4e0b-b4b0-347b1765c30a", + "Name": "W18x40", + "EdgeId": 410 + }, + "2c3e8f2f-95c7-465e-a1fc-8f6195d6a35f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2c3e8f2f-95c7-465e-a1fc-8f6195d6a35f", + "Name": null + }, + "8a459e9f-44b8-4307-b4c8-3ec45376516b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "8a459e9f-44b8-4307-b4c8-3ec45376516b", + "Name": "W18x40", + "EdgeId": 412 + }, + "49929cc0-4add-46a7-8fac-9610355983c8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 23.0, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "49929cc0-4add-46a7-8fac-9610355983c8", + "Name": null + }, + "7b18568a-91ad-4146-8471-65965440b805": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "9b7bdf59-55a7-4daf-9c50-86da88398d8a", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "7b18568a-91ad-4146-8471-65965440b805", + "Name": "W18x40", + "EdgeId": 413 + }, + "008ef7fa-65f7-490e-a5a7-a2a4d111ab47": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 29.39906, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "008ef7fa-65f7-490e-a5a7-a2a4d111ab47", + "Name": null + }, + "f7f33c38-10b7-406e-89de-63d6c5522a81": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2d8372e3-18d6-43f5-b8a6-ca8af44199e8", + "Transform": { + "Matrix": { + "Components": [ + 0.5546986601295418, + 0.8320513183995871, + 0.0, + 26.06574, + -0.8320513183995871, + 0.5546986601295418, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "f7f33c38-10b7-406e-89de-63d6c5522a81", + "Name": "W18x40", + "EdgeId": 414, + "ExternalEdgeId": 414 + }, + "30c29c96-54d1-416a-9b97-198c4c923db0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.06574, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 29.39906, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "30c29c96-54d1-416a-9b97-198c4c923db0", + "Name": null + }, + "9fbc8044-2452-4ddd-b104-7b561f8bdf19": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "9fbc8044-2452-4ddd-b104-7b561f8bdf19", + "Name": "W18x40", + "EdgeId": 417 + }, + "d1b10d77-49c8-4642-a634-3bc4e02cde9b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d1b10d77-49c8-4642-a634-3bc4e02cde9b", + "Name": null + }, + "7f61102a-dfe9-4113-82ec-f374eeeb3f90": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "7f61102a-dfe9-4113-82ec-f374eeeb3f90", + "Name": "W18x40", + "EdgeId": 418 + }, + "1084d9b9-dc29-4953-8a00-e4fc03b42647": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1084d9b9-dc29-4953-8a00-e4fc03b42647", + "Name": null + }, + "27d1ffe8-96c8-4c81-be51-e376ec06d25f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "27d1ffe8-96c8-4c81-be51-e376ec06d25f", + "Name": "W18x40", + "EdgeId": 420 + }, + "18b34de6-b22b-4897-9d96-15c4d1991d3f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "18b34de6-b22b-4897-9d96-15c4d1991d3f", + "Name": null + }, + "6d18d66d-7a36-436c-b2cf-00cc993788db": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "6d18d66d-7a36-436c-b2cf-00cc993788db", + "Name": "W18x40", + "EdgeId": 421 + }, + "578f57d7-1433-46c5-814b-78ae38400cb2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "578f57d7-1433-46c5-814b-78ae38400cb2", + "Name": null + }, + "3b423e1c-a877-4221-a221-8c4dfbd0e187": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "3b423e1c-a877-4221-a221-8c4dfbd0e187", + "Name": "W18x40", + "EdgeId": 423 + }, + "7ea52dc9-565a-4ff8-8963-d66911ec7f5e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7ea52dc9-565a-4ff8-8963-d66911ec7f5e", + "Name": null + }, + "e6ea7cf7-8c0a-45f7-8b14-f2979589894b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e6ea7cf7-8c0a-45f7-8b14-f2979589894b", + "Name": "W18x40", + "EdgeId": 424 + }, + "4d41e8b9-b2a4-4796-8b22-96c260fef66d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4d41e8b9-b2a4-4796-8b22-96c260fef66d", + "Name": null + }, + "e7831153-d604-4c44-a914-0b6918dc68af": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e7831153-d604-4c44-a914-0b6918dc68af", + "Name": "W18x40", + "EdgeId": 426, + "ExternalEdgeId": 426 + }, + "7235648b-0f6f-4231-9e5d-7f9de2c81780": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7235648b-0f6f-4231-9e5d-7f9de2c81780", + "Name": null + }, + "5f714000-5e54-458d-bbe7-ffca726908a9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "5f714000-5e54-458d-bbe7-ffca726908a9", + "Name": "W18x40", + "EdgeId": 427 + }, + "56101f9b-8867-42fd-9816-526ae55b646a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "56101f9b-8867-42fd-9816-526ae55b646a", + "Name": null + }, + "73d82ef5-a6b2-46b2-a132-cc7dd324259a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "34bbf385-46d3-47bf-83a0-3a400bd05173", + "Transform": { + "Matrix": { + "Components": [ + 0.5547255602613056, + 0.8320333844220319, + 0.0, + 29.39906, + -0.8320333844220319, + 0.5547255602613056, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "73d82ef5-a6b2-46b2-a132-cc7dd324259a", + "Name": "W18x40", + "EdgeId": 429, + "ExternalEdgeId": 429 + }, + "5dedbb9e-79d9-48f1-b723-a36aeac940d8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.39906, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 29.5, + "Y": -30.1514, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5dedbb9e-79d9-48f1-b723-a36aeac940d8", + "Name": null + }, + "e8004738-0626-4beb-8c08-00db5d95a624": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e8004738-0626-4beb-8c08-00db5d95a624", + "Name": "W18x40", + "EdgeId": 430 + }, + "e4323265-26da-4946-b144-f9eddee07379": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 23.0, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e4323265-26da-4946-b144-f9eddee07379", + "Name": null + }, + "32408f50-cc83-4827-b93b-648ebad40097": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "32408f50-cc83-4827-b93b-648ebad40097", + "Name": "W18x40", + "EdgeId": 431 + }, + "a8284ffb-52e5-4a8f-8bd6-7973fb1e8588": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 29.5, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a8284ffb-52e5-4a8f-8bd6-7973fb1e8588", + "Name": null + }, + "f5ab5f57-1803-42d5-ab6d-e6ee86f62cbf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2984e71a-f669-4201-8e3b-e26ab9529910", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -30.1514, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "f5ab5f57-1803-42d5-ab6d-e6ee86f62cbf", + "Name": "W18x40", + "EdgeId": 432, + "ExternalEdgeId": 432 + }, + "4007b698-78dc-4890-bebf-5692fdbbd43b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -30.1514, + "Z": 4.5 + }, + "End": { + "X": 29.5, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4007b698-78dc-4890-bebf-5692fdbbd43b", + "Name": null + }, + "a74c3554-0a61-4b0b-9120-993989ab26a4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "a74c3554-0a61-4b0b-9120-993989ab26a4", + "Name": "W18x40", + "EdgeId": 436 + }, + "73ba442c-a45a-439c-8dc8-5a0b2f4606d3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "73ba442c-a45a-439c-8dc8-5a0b2f4606d3", + "Name": null + }, + "2110c24d-f114-4bf8-b4dc-63d22bcfda09": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "2110c24d-f114-4bf8-b4dc-63d22bcfda09", + "Name": "W18x40", + "EdgeId": 437 + }, + "195d04a7-372b-42bd-9725-ae7e8ccce118": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "195d04a7-372b-42bd-9725-ae7e8ccce118", + "Name": null + }, + "66b14883-7a7a-438f-8717-fd0904df8d27": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "66b14883-7a7a-438f-8717-fd0904df8d27", + "Name": "W18x40", + "EdgeId": 439 + }, + "29a5217f-850a-4143-97de-af8ec842764d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "29a5217f-850a-4143-97de-af8ec842764d", + "Name": null + }, + "2ea79f52-0eb6-4e89-9a95-7bd922a0e78e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "2ea79f52-0eb6-4e89-9a95-7bd922a0e78e", + "Name": "W18x40", + "EdgeId": 440 + }, + "1824fdfa-4793-4e1b-8613-fcbc78c14c51": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1824fdfa-4793-4e1b-8613-fcbc78c14c51", + "Name": null + }, + "ed751285-34d5-414a-85dd-58bdf461faf8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "ed751285-34d5-414a-85dd-58bdf461faf8", + "Name": "W18x40", + "EdgeId": 442 + }, + "8fcc4ba8-5084-469f-8415-db61f7a0c1b2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8fcc4ba8-5084-469f-8415-db61f7a0c1b2", + "Name": null + }, + "4083fd59-fa75-424a-bcf4-84af740ad572": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "4083fd59-fa75-424a-bcf4-84af740ad572", + "Name": "W18x40", + "EdgeId": 443 + }, + "e51fd538-194e-4abb-b1f1-884bd6471568": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e51fd538-194e-4abb-b1f1-884bd6471568", + "Name": null + }, + "f0c83f7b-a5c3-473f-940a-c0ebd646916e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "f0c83f7b-a5c3-473f-940a-c0ebd646916e", + "Name": "W18x40", + "EdgeId": 445, + "ExternalEdgeId": 445 + }, + "2cf14a56-d854-4c73-af24-f33793017b0c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2cf14a56-d854-4c73-af24-f33793017b0c", + "Name": null + }, + "46ed86de-64bb-4902-b188-98db4ee2e175": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "46ed86de-64bb-4902-b188-98db4ee2e175", + "Name": "W18x40", + "EdgeId": 446 + }, + "eadf1133-5eca-45d7-9c55-ec26a1018752": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "eadf1133-5eca-45d7-9c55-ec26a1018752", + "Name": null + }, + "e1c5627c-fc71-4ef1-8d6f-6b4e573d0993": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e1c5627c-fc71-4ef1-8d6f-6b4e573d0993", + "Name": "W18x40", + "EdgeId": 448 + }, + "0d401603-857a-4692-8813-8a3b73af5578": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 23.0, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0d401603-857a-4692-8813-8a3b73af5578", + "Name": null + }, + "b79410e0-c167-41e1-8726-65dba97a33b3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "b79410e0-c167-41e1-8726-65dba97a33b3", + "Name": "W18x40", + "EdgeId": 449 + }, + "c9bc4f63-ee39-4ded-919e-2d44b9237177": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 29.5, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c9bc4f63-ee39-4ded-919e-2d44b9237177", + "Name": null + }, + "aa1588e4-2804-4100-a062-d5127b4dc8f1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "aa1588e4-2804-4100-a062-d5127b4dc8f1", + "Name": "W18x40", + "EdgeId": 450, + "ExternalEdgeId": 450 + }, + "cd81d1f2-ecc9-4565-8c54-adb26184d4ff": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 29.5, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cd81d1f2-ecc9-4565-8c54-adb26184d4ff", + "Name": null + }, + "fff28568-1fe8-401e-9968-258e175b2e69": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "fff28568-1fe8-401e-9968-258e175b2e69", + "Name": "W18x40", + "EdgeId": 453 + }, + "9978c910-dd89-4f77-b64d-23df3a81825b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9978c910-dd89-4f77-b64d-23df3a81825b", + "Name": null + }, + "ee17cc36-e38b-49f1-a74b-85754d3eaa4a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "ee17cc36-e38b-49f1-a74b-85754d3eaa4a", + "Name": "W18x40", + "EdgeId": 454 + }, + "06ca1c3f-92b1-4a5b-bc4f-9c9f027f757b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "06ca1c3f-92b1-4a5b-bc4f-9c9f027f757b", + "Name": null + }, + "c98792b3-04a5-49f4-9915-2c94212b7fe7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c98792b3-04a5-49f4-9915-2c94212b7fe7", + "Name": "W18x40", + "EdgeId": 456 + }, + "5dd74521-1769-4163-9424-d980103ddbb0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5dd74521-1769-4163-9424-d980103ddbb0", + "Name": null + }, + "072f4e73-3da9-486f-90bc-0329df07512a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "072f4e73-3da9-486f-90bc-0329df07512a", + "Name": "W18x40", + "EdgeId": 457 + }, + "cfbc82bf-57b1-4d90-84fa-5e13b704a778": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cfbc82bf-57b1-4d90-84fa-5e13b704a778", + "Name": null + }, + "a8003fbf-556a-4bb9-bdd9-63b0212fe18d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "a8003fbf-556a-4bb9-bdd9-63b0212fe18d", + "Name": "W18x40", + "EdgeId": 459 + }, + "ef153aba-9d58-47bb-a1a4-2911b17de41f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ef153aba-9d58-47bb-a1a4-2911b17de41f", + "Name": null + }, + "408ced1f-be08-4106-887a-62e256471875": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "408ced1f-be08-4106-887a-62e256471875", + "Name": "W18x40", + "EdgeId": 460 + }, + "edeef0c9-53c1-40e5-a952-f959d87ad14c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "edeef0c9-53c1-40e5-a952-f959d87ad14c", + "Name": null + }, + "202f4b4c-a6ce-4a09-abfd-4173f238376b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "202f4b4c-a6ce-4a09-abfd-4173f238376b", + "Name": "W18x40", + "EdgeId": 462, + "ExternalEdgeId": 462 + }, + "bddc1693-3599-46ae-8fac-3ec141bb8769": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bddc1693-3599-46ae-8fac-3ec141bb8769", + "Name": null + }, + "38322f4a-9058-46aa-a786-28846e770b10": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "38322f4a-9058-46aa-a786-28846e770b10", + "Name": "W18x40", + "EdgeId": 463 + }, + "e3e92db6-a2e5-406e-8c22-9bb781763552": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e3e92db6-a2e5-406e-8c22-9bb781763552", + "Name": null + }, + "e19c675b-1e8b-4762-948d-31e27a5ce963": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e19c675b-1e8b-4762-948d-31e27a5ce963", + "Name": "W18x40", + "EdgeId": 465 + }, + "d07b6671-6ba0-488b-87d3-adbe1c0a7484": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 23.0, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d07b6671-6ba0-488b-87d3-adbe1c0a7484", + "Name": null + }, + "35333aed-6c8a-4b8a-b6d8-a8273f32dcb3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "35333aed-6c8a-4b8a-b6d8-a8273f32dcb3", + "Name": "W18x40", + "EdgeId": 466 + }, + "2d6c93c9-9d15-47f0-9f31-7845171aa504": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 29.5, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2d6c93c9-9d15-47f0-9f31-7845171aa504", + "Name": null + }, + "2580066f-8237-4d91-937f-2372c6d7abe9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "2580066f-8237-4d91-937f-2372c6d7abe9", + "Name": "W18x40", + "EdgeId": 467, + "ExternalEdgeId": 467 + }, + "94b0cf9d-a4d6-46ab-8f03-22871c3d919d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 29.5, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "94b0cf9d-a4d6-46ab-8f03-22871c3d919d", + "Name": null + }, + "5bd49134-a8e6-4cf7-aafa-769be27b6e8d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "5bd49134-a8e6-4cf7-aafa-769be27b6e8d", + "Name": "W18x40", + "EdgeId": 470 + }, + "9673e9b7-47c4-4fe7-9858-70aa7c7fcb21": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9673e9b7-47c4-4fe7-9858-70aa7c7fcb21", + "Name": null + }, + "f3da95cd-fd36-4904-ac2a-e22d74980eed": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "f3da95cd-fd36-4904-ac2a-e22d74980eed", + "Name": "W18x40", + "EdgeId": 471 + }, + "d7a6c2c8-e952-4723-9da2-f3a700a7352c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d7a6c2c8-e952-4723-9da2-f3a700a7352c", + "Name": null + }, + "781f9978-5ed2-487d-849e-e13f09067163": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "781f9978-5ed2-487d-849e-e13f09067163", + "Name": "W18x40", + "EdgeId": 473 + }, + "06b06cdd-6655-4f1b-b950-d62b64cdc5c1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "06b06cdd-6655-4f1b-b950-d62b64cdc5c1", + "Name": null + }, + "c6dbc864-7a61-44c7-9d78-1540a133cbb9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c6dbc864-7a61-44c7-9d78-1540a133cbb9", + "Name": "W18x40", + "EdgeId": 474 + }, + "21ad6249-617e-4ab0-9ebb-e8046d05fd5a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "21ad6249-617e-4ab0-9ebb-e8046d05fd5a", + "Name": null + }, + "898c5207-cd7b-4b78-8662-4fcabf1b860b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "898c5207-cd7b-4b78-8662-4fcabf1b860b", + "Name": "W18x40", + "EdgeId": 476 + }, + "4e226bf1-de18-4c4c-bcfe-04c032592a0a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4e226bf1-de18-4c4c-bcfe-04c032592a0a", + "Name": null + }, + "c028ef97-ecfa-4670-8b41-80f0d0a92318": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c028ef97-ecfa-4670-8b41-80f0d0a92318", + "Name": "W18x40", + "EdgeId": 477 + }, + "344aaf41-0de7-43b2-9220-48b619e7e23e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "344aaf41-0de7-43b2-9220-48b619e7e23e", + "Name": null + }, + "ec832f5f-50c4-440e-9bfb-9d9b9738fa02": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "ec832f5f-50c4-440e-9bfb-9d9b9738fa02", + "Name": "W18x40", + "EdgeId": 479, + "ExternalEdgeId": 479 + }, + "3e915036-6d9b-4e7a-b9f6-b64a8581a075": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3e915036-6d9b-4e7a-b9f6-b64a8581a075", + "Name": null + }, + "b5888ddd-b9ef-4e23-9534-565cafcb157d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "b5888ddd-b9ef-4e23-9534-565cafcb157d", + "Name": "W18x40", + "EdgeId": 480 + }, + "83b916ff-734b-4d7b-9f6f-9606284c4189": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "83b916ff-734b-4d7b-9f6f-9606284c4189", + "Name": null + }, + "51c40da0-79ed-4900-a96f-cf620f4870ac": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "51c40da0-79ed-4900-a96f-cf620f4870ac", + "Name": "W18x40", + "EdgeId": 482 + }, + "88d5337b-e54c-477f-884e-8101e3cae098": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 23.0, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "88d5337b-e54c-477f-884e-8101e3cae098", + "Name": null + }, + "4213249f-7d5b-4f8c-ae84-9f5ad218a3b1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "4213249f-7d5b-4f8c-ae84-9f5ad218a3b1", + "Name": "W18x40", + "EdgeId": 483 + }, + "54c567fc-0b1a-46e4-a803-88d69edc6489": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 29.5, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "54c567fc-0b1a-46e4-a803-88d69edc6489", + "Name": null + }, + "12ad9ce2-4321-4264-a566-07768ba4e2c1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "12ad9ce2-4321-4264-a566-07768ba4e2c1", + "Name": "W18x40", + "EdgeId": 484, + "ExternalEdgeId": 484 + }, + "cd019d14-61a4-45d4-9620-465183fae753": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 29.5, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cd019d14-61a4-45d4-9620-465183fae753", + "Name": null + }, + "c8dde09f-beea-4648-8823-300f7bbaa4eb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c8dde09f-beea-4648-8823-300f7bbaa4eb", + "Name": "W18x40", + "EdgeId": 487 + }, + "091509da-b7d5-4719-8777-ac41c1b4ae6f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "091509da-b7d5-4719-8777-ac41c1b4ae6f", + "Name": null + }, + "cb1771b1-8be6-4ae0-9ca9-641f72c0ec21": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "cb1771b1-8be6-4ae0-9ca9-641f72c0ec21", + "Name": "W18x40", + "EdgeId": 488 + }, + "6bad82ac-248a-41f4-8c14-b4d8593d498a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6bad82ac-248a-41f4-8c14-b4d8593d498a", + "Name": null + }, + "3cd2302f-863f-4789-b78c-864c4504c151": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "3cd2302f-863f-4789-b78c-864c4504c151", + "Name": "W18x40", + "EdgeId": 490 + }, + "407c9a72-8c14-4915-97ba-f5043fd4b307": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "407c9a72-8c14-4915-97ba-f5043fd4b307", + "Name": null + }, + "d49e6c12-100f-4f98-a8d3-0f869b94934e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "d49e6c12-100f-4f98-a8d3-0f869b94934e", + "Name": "W18x40", + "EdgeId": 491 + }, + "dc3c545d-c603-4230-98f3-e632009d19cd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dc3c545d-c603-4230-98f3-e632009d19cd", + "Name": null + }, + "63ae07e2-98ce-4baa-a154-63fca89ad3f8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "63ae07e2-98ce-4baa-a154-63fca89ad3f8", + "Name": "W18x40", + "EdgeId": 493 + }, + "f871cfc6-b8a0-49f6-8e69-a7d8a9d8f3cf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f871cfc6-b8a0-49f6-8e69-a7d8a9d8f3cf", + "Name": null + }, + "e18772cd-c699-41f3-8af6-efbab1c35001": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e18772cd-c699-41f3-8af6-efbab1c35001", + "Name": "W18x40", + "EdgeId": 494 + }, + "134a0fe3-d9ed-4fcb-b0b9-45c1d32f1ca4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "134a0fe3-d9ed-4fcb-b0b9-45c1d32f1ca4", + "Name": null + }, + "8ff37956-7786-4ce0-96b8-8c6570207400": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "8ff37956-7786-4ce0-96b8-8c6570207400", + "Name": "W18x40", + "EdgeId": 496, + "ExternalEdgeId": 496 + }, + "7fec4a62-3fcb-49c6-9213-83efaeb037a3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7fec4a62-3fcb-49c6-9213-83efaeb037a3", + "Name": null + }, + "0864ec9b-91aa-4b7f-8815-45325fc29f2a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "0864ec9b-91aa-4b7f-8815-45325fc29f2a", + "Name": "W18x40", + "EdgeId": 497 + }, + "f4593ac0-13c3-4977-b06f-935f4954cfb8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f4593ac0-13c3-4977-b06f-935f4954cfb8", + "Name": null + }, + "24133a3b-98ad-4df5-a8b1-b2ba54cfec4e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "24133a3b-98ad-4df5-a8b1-b2ba54cfec4e", + "Name": "W18x40", + "EdgeId": 499 + }, + "b5a5e7a6-294c-4f53-9acf-6625b08d6c16": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 23.0, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b5a5e7a6-294c-4f53-9acf-6625b08d6c16", + "Name": null + }, + "e48a76ca-de62-4c0a-9eb3-3a3171c525f7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e48a76ca-de62-4c0a-9eb3-3a3171c525f7", + "Name": "W18x40", + "EdgeId": 500 + }, + "042604eb-4a63-4775-9b3e-c972f2826472": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 29.5, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "042604eb-4a63-4775-9b3e-c972f2826472", + "Name": null + }, + "ea16284c-c2b8-4010-9cf2-72c882acc2f3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "ea16284c-c2b8-4010-9cf2-72c882acc2f3", + "Name": "W18x40", + "EdgeId": 501, + "ExternalEdgeId": 501 + }, + "2b77f4af-f61a-4d56-84b6-26f42bc05c36": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 29.5, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2b77f4af-f61a-4d56-84b6-26f42bc05c36", + "Name": null + }, + "35539d96-d549-4c0c-a473-254181c0f522": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "35539d96-d549-4c0c-a473-254181c0f522", + "Name": "W18x40", + "EdgeId": 504 + }, + "21357ccc-2127-4f97-908f-4f3192d3dc53": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "21357ccc-2127-4f97-908f-4f3192d3dc53", + "Name": null + }, + "5b9182eb-9dd8-4f91-99f0-84a49cdbde12": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "5b9182eb-9dd8-4f91-99f0-84a49cdbde12", + "Name": "W18x40", + "EdgeId": 505 + }, + "9f9aed96-f99d-4ab6-9084-57d8f9056ecb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9f9aed96-f99d-4ab6-9084-57d8f9056ecb", + "Name": null + }, + "0cfb36e1-67cc-47b3-97c0-f43c1cfb38a0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "0cfb36e1-67cc-47b3-97c0-f43c1cfb38a0", + "Name": "W18x40", + "EdgeId": 507 + }, + "ce81b307-6508-4089-9325-9c1258910861": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ce81b307-6508-4089-9325-9c1258910861", + "Name": null + }, + "fa15ba16-d9d4-4e0c-b6c0-a15393bbf965": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "fa15ba16-d9d4-4e0c-b6c0-a15393bbf965", + "Name": "W18x40", + "EdgeId": 508 + }, + "3916623a-8af1-47b3-94fd-6cf921adb0d0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3916623a-8af1-47b3-94fd-6cf921adb0d0", + "Name": null + }, + "1c7fff3d-db80-4626-bf22-e3490fa22e5e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "1c7fff3d-db80-4626-bf22-e3490fa22e5e", + "Name": "W18x40", + "EdgeId": 510 + }, + "30efc5a2-57d2-47e5-bb15-956d56f7d0f8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "30efc5a2-57d2-47e5-bb15-956d56f7d0f8", + "Name": null + }, + "7b2471a0-6ddf-4c44-8621-674fff7db443": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "7b2471a0-6ddf-4c44-8621-674fff7db443", + "Name": "W18x40", + "EdgeId": 511 + }, + "78c0a8a3-c448-414a-b071-ff83bfc9950c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "78c0a8a3-c448-414a-b071-ff83bfc9950c", + "Name": null + }, + "fa03b414-d8bb-49cb-bff2-6f12bbff989d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "fa03b414-d8bb-49cb-bff2-6f12bbff989d", + "Name": "W18x40", + "EdgeId": 513, + "ExternalEdgeId": 513 + }, + "716c77e2-9bb4-4fd2-a9e3-91cbb2ee1582": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "716c77e2-9bb4-4fd2-a9e3-91cbb2ee1582", + "Name": null + }, + "5fb29c1c-1de2-42e9-8fa0-22843ac23f97": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "5fb29c1c-1de2-42e9-8fa0-22843ac23f97", + "Name": "W18x40", + "EdgeId": 514 + }, + "23008b41-5a5c-4bc3-bdea-0fe8a1f0fe93": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "23008b41-5a5c-4bc3-bdea-0fe8a1f0fe93", + "Name": null + }, + "786e1ae8-4b5c-41f1-bf7d-2605505edd95": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "786e1ae8-4b5c-41f1-bf7d-2605505edd95", + "Name": "W18x40", + "EdgeId": 516 + }, + "1477736d-1342-4704-a8a1-1cae631da591": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 23.0, + "Y": -59.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1477736d-1342-4704-a8a1-1cae631da591", + "Name": null + }, + "dcbb564e-b680-41d3-a03c-4b4b7331f018": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "dcbb564e-b680-41d3-a03c-4b4b7331f018", + "Name": "W18x40", + "EdgeId": 517, + "ExternalEdgeId": 517 + }, + "50fcfc58-7b38-4936-bef9-402960d869cb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 29.5, + "Y": -59.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "50fcfc58-7b38-4936-bef9-402960d869cb", + "Name": null + }, + "7a499bf1-09e7-4c46-88b9-9ee39f48dfb5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "7a499bf1-09e7-4c46-88b9-9ee39f48dfb5", + "Name": "W18x40", + "EdgeId": 518, + "ExternalEdgeId": 518 + }, + "6e3484f9-2666-4ddb-8991-52481c425075": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 29.5, + "Y": -59.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6e3484f9-2666-4ddb-8991-52481c425075", + "Name": null + }, + "a91312c2-1538-46bb-9fcb-67610f58662b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "a91312c2-1538-46bb-9fcb-67610f58662b", + "Name": "W18x40", + "EdgeId": 521 + }, + "363d564e-15ee-404e-992d-757c898f3c58": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -59.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "363d564e-15ee-404e-992d-757c898f3c58", + "Name": null + }, + "f8cff8e0-7525-49ef-a226-c844fcf92da8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "f8cff8e0-7525-49ef-a226-c844fcf92da8", + "Name": "W18x40", + "EdgeId": 522, + "ExternalEdgeId": 522 + }, + "9f9f8a52-f753-4bef-8f60-e9577263d57d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 16.0, + "Y": -59.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9f9f8a52-f753-4bef-8f60-e9577263d57d", + "Name": null + }, + "01386b9d-711d-45a3-9cdb-a64d2d9ef76b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "01386b9d-711d-45a3-9cdb-a64d2d9ef76b", + "Name": "W18x40", + "EdgeId": 524 + }, + "66d53930-aaac-45ae-9a6a-811bf8ada88d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -59.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "66d53930-aaac-45ae-9a6a-811bf8ada88d", + "Name": null + }, + "4d999ee2-79be-4e87-9ee5-303dd62ee13a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "4d999ee2-79be-4e87-9ee5-303dd62ee13a", + "Name": "W18x40", + "EdgeId": 525, + "ExternalEdgeId": 525 + }, + "881990a9-c500-4dc6-a9ee-768a38cc6ddf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 9.0, + "Y": -59.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "881990a9-c500-4dc6-a9ee-768a38cc6ddf", + "Name": null + }, + "65b564be-5588-4955-834f-99c5532759b9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "65b564be-5588-4955-834f-99c5532759b9", + "Name": "W18x40", + "EdgeId": 527 + }, + "1d4514bd-1943-48d0-b1f4-ea4dd6905f95": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -59.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1d4514bd-1943-48d0-b1f4-ea4dd6905f95", + "Name": null + }, + "cf5f8d4b-791d-48ba-9630-67652ad9333d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "cf5f8d4b-791d-48ba-9630-67652ad9333d", + "Name": "W18x40", + "EdgeId": 528, + "ExternalEdgeId": 528 + }, + "2c3b4e05-70f1-496f-b415-71a5783f4c2f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 2.0, + "Y": -59.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2c3b4e05-70f1-496f-b415-71a5783f4c2f", + "Name": null + }, + "2ba9ddbc-d2c4-4659-8567-09c4564d5705": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "2ba9ddbc-d2c4-4659-8567-09c4564d5705", + "Name": "W18x40", + "EdgeId": 530, + "ExternalEdgeId": 530 + }, + "1cc1cd68-4ef8-4d29-9d15-36a5464b483a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -59.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1cc1cd68-4ef8-4d29-9d15-36a5464b483a", + "Name": null + }, + "3d7ba69a-bce3-41f4-a9f2-230aaea63481": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "3d7ba69a-bce3-41f4-a9f2-230aaea63481", + "Name": "W18x40", + "EdgeId": 531, + "ExternalEdgeId": 531 + }, + "8613ad7e-d740-41cf-997b-a381e7de7eec": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -59.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8613ad7e-d740-41cf-997b-a381e7de7eec", + "Name": null + }, + "82709de5-2093-458e-9b1a-bf8f09b499f3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1f248147-be87-4d6a-922b-e7bf05d5f27e", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.7324, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "82709de5-2093-458e-9b1a-bf8f09b499f3", + "Name": "W18x40", + "EdgeId": 533, + "ExternalEdgeId": 533 + }, + "6d98902a-e135-4064-8535-dfecaba53d8d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.7324, + "Y": -0.5, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -0.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6d98902a-e135-4064-8535-dfecaba53d8d", + "Name": null + }, + "732896dc-6029-4516-b565-d888f81fdb55": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "732896dc-6029-4516-b565-d888f81fdb55", + "Name": "W18x40", + "EdgeId": 534 + }, + "e026282a-23cc-4d9d-94ba-5c4434ab22fc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -0.5, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -5.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e026282a-23cc-4d9d-94ba-5c4434ab22fc", + "Name": null + }, + "531a3451-a5de-4441-b5e3-0aa303ab18c4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c9699dd2-d040-4a2c-ad98-36443b0d037a", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "531a3451-a5de-4441-b5e3-0aa303ab18c4", + "Name": "W18x40", + "EdgeId": 535 + }, + "df0903f7-b1e5-4d10-b88d-966e28ff3c39": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 8.35 + }, + "End": { + "X": 12.7324, + "Y": -5.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "df0903f7-b1e5-4d10-b88d-966e28ff3c39", + "Name": null + }, + "dfba7895-9944-49af-99b9-12735d7dac29": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "442ea777-71e8-42e2-a88c-d741cce24ce5", + "Transform": { + "Matrix": { + "Components": [ + 0.5547001962252291, + 0.8320502943378437, + 0.0, + 9.7324, + -0.8320502943378437, + 0.5547001962252291, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "dfba7895-9944-49af-99b9-12735d7dac29", + "Name": "W18x40", + "EdgeId": 536, + "ExternalEdgeId": 536 + }, + "f3809848-30d4-45a8-b2df-ea6b9eebc03e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.7324, + "Y": -0.5, + "Z": 8.35 + }, + "End": { + "X": 12.7324, + "Y": -5.000000000000001, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f3809848-30d4-45a8-b2df-ea6b9eebc03e", + "Name": null + }, + "6da1a03b-f3ce-412d-8484-2aa7a29e1872": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "6da1a03b-f3ce-412d-8484-2aa7a29e1872", + "Name": "W18x40", + "EdgeId": 541, + "ExternalEdgeId": 541 + }, + "2126646f-4b86-4108-8ecc-2225934277c9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -0.5, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -0.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2126646f-4b86-4108-8ecc-2225934277c9", + "Name": null + }, + "0d9f7576-3e6b-4547-b7b4-19a2373142b9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "0d9f7576-3e6b-4547-b7b4-19a2373142b9", + "Name": "W18x40", + "EdgeId": 542 + }, + "44dc0ab1-c628-43e8-9341-5895e14481f8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -0.5, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -5.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "44dc0ab1-c628-43e8-9341-5895e14481f8", + "Name": null + }, + "36309f39-2557-46c6-91e4-d10f1bed4595": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "36309f39-2557-46c6-91e4-d10f1bed4595", + "Name": "W18x40", + "EdgeId": 543 + }, + "6fb7cada-40a5-4868-bf0e-9a472581bcc6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -5.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6fb7cada-40a5-4868-bf0e-9a472581bcc6", + "Name": null + }, + "77c2d152-c901-4a73-844e-1759d5dc9add": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "77c2d152-c901-4a73-844e-1759d5dc9add", + "Name": "W18x40", + "EdgeId": 546, + "ExternalEdgeId": 546 + }, + "e6ce235e-5bdf-4047-8259-52641e61fc5b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -0.5, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -0.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e6ce235e-5bdf-4047-8259-52641e61fc5b", + "Name": null + }, + "aaba0f83-47fd-4085-a5d5-b09583bdd0d6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "aaba0f83-47fd-4085-a5d5-b09583bdd0d6", + "Name": "W18x40", + "EdgeId": 547, + "ExternalEdgeId": 547 + }, + "e34cd9b7-913a-4ca6-8917-96cfd57abcf2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -0.5, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -5.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e34cd9b7-913a-4ca6-8917-96cfd57abcf2", + "Name": null + }, + "553d02eb-e5a8-4e1e-856f-8ac87d14ae03": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "553d02eb-e5a8-4e1e-856f-8ac87d14ae03", + "Name": "W18x40", + "EdgeId": 548 + }, + "b5864596-d19a-47e6-9735-ccc266d3dafe": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -5.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -5.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b5864596-d19a-47e6-9735-ccc266d3dafe", + "Name": null + }, + "ef4fc27e-f345-4cfb-9905-fce410f57cd4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e5972626-f896-4b80-b62f-fa93a8846507", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -9.9014, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "ef4fc27e-f345-4cfb-9905-fce410f57cd4", + "Name": "W18x40", + "EdgeId": 551 + }, + "7e4b8d91-7179-480a-9357-72ff32f91015": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -9.9014, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7e4b8d91-7179-480a-9357-72ff32f91015", + "Name": null + }, + "440c0fb1-907a-4b70-b03d-33d3f8b3ad43": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "49319ac3-7aa7-4cea-aa5e-8a40ef05e1ba", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "440c0fb1-907a-4b70-b03d-33d3f8b3ad43", + "Name": "W18x40", + "EdgeId": 552 + }, + "4d104296-008e-4bfb-93b6-8be080f77e15": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 16.06574, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4d104296-008e-4bfb-93b6-8be080f77e15", + "Name": null + }, + "b7d5d464-f8cd-4643-83c9-100af647f3e1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4dc79d1f-76cc-4eac-ba1d-90c0929442e9", + "Transform": { + "Matrix": { + "Components": [ + 0.5547391419896724, + 0.8320243291782772, + 0.0, + 16.0, + -0.8320243291782772, + 0.5547391419896724, + 0.0, + -9.9014, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "b7d5d464-f8cd-4643-83c9-100af647f3e1", + "Name": "W18x40", + "EdgeId": 553, + "ExternalEdgeId": 553 + }, + "159f6e96-82cd-4825-a48e-dd6566c370ec": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -9.9014, + "Z": 8.35 + }, + "End": { + "X": 16.06574, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "159f6e96-82cd-4825-a48e-dd6566c370ec", + "Name": null + }, + "bf4e21aa-36d6-4319-90d2-5782f1f92c55": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39b28bf6-91db-4c72-b448-44bed8dc6bc0", + "Transform": { + "Matrix": { + "Components": [ + 0.554700196225229, + 0.8320502943378437, + 0.0, + 12.7324, + -0.8320502943378437, + 0.554700196225229, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "bf4e21aa-36d6-4319-90d2-5782f1f92c55", + "Name": "W18x40", + "EdgeId": 557, + "ExternalEdgeId": 557 + }, + "8cfed69e-0e43-4388-860d-aa71121e6044": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.7324, + "Y": -5.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -9.9014, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8cfed69e-0e43-4388-860d-aa71121e6044", + "Name": null + }, + "30381bd3-9e57-456f-861c-2bf567df1fbb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "30381bd3-9e57-456f-861c-2bf567df1fbb", + "Name": "W18x40", + "EdgeId": 558 + }, + "ae148857-66ec-469b-90f6-00728af88075": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ae148857-66ec-469b-90f6-00728af88075", + "Name": null + }, + "ae9b234a-15df-4841-a6f5-56d479728ba4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "ae9b234a-15df-4841-a6f5-56d479728ba4", + "Name": "W18x40", + "EdgeId": 559 + }, + "f040c36d-4668-4a29-93a2-fd43a2e108ff": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f040c36d-4668-4a29-93a2-fd43a2e108ff", + "Name": null + }, + "c27b6bdf-486b-4eae-9318-8e0cdb2240d2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "c27b6bdf-486b-4eae-9318-8e0cdb2240d2", + "Name": "W18x40", + "EdgeId": 561 + }, + "45e5953a-6668-4da1-a880-015d7774fa29": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -5.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "45e5953a-6668-4da1-a880-015d7774fa29", + "Name": null + }, + "9cdae8d5-38db-4c6a-b6fc-b16bafe93936": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "9cdae8d5-38db-4c6a-b6fc-b16bafe93936", + "Name": "W18x40", + "EdgeId": 562 + }, + "5a52281c-f6ae-441e-bb7c-6b2458845a68": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5a52281c-f6ae-441e-bb7c-6b2458845a68", + "Name": null + }, + "cbffc2b6-d5bd-408d-80c6-bc302d4e2ec2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "cbffc2b6-d5bd-408d-80c6-bc302d4e2ec2", + "Name": "W18x40", + "EdgeId": 564, + "ExternalEdgeId": 564 + }, + "faa27509-b0a8-4807-994e-970d95778a66": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -5.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "faa27509-b0a8-4807-994e-970d95778a66", + "Name": null + }, + "d45af803-8b10-4bbf-80ce-987d8634c059": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d45af803-8b10-4bbf-80ce-987d8634c059", + "Name": "W18x40", + "EdgeId": 565 + }, + "5ee3ed80-b8d1-4db3-83d8-c567b68ff4d9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5ee3ed80-b8d1-4db3-83d8-c567b68ff4d9", + "Name": null + }, + "18251fd4-4c52-4057-9d41-0a7d1ba8403a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "18251fd4-4c52-4057-9d41-0a7d1ba8403a", + "Name": "W18x40", + "EdgeId": 567 + }, + "13619d49-7821-4ce6-9bf9-b6158ba7147d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "13619d49-7821-4ce6-9bf9-b6158ba7147d", + "Name": null + }, + "2646a5ea-75f3-4afe-8776-a34d3cba01b9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "0b85760d-9483-48e4-99ef-f0158063192f", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "2646a5ea-75f3-4afe-8776-a34d3cba01b9", + "Name": "W18x40", + "EdgeId": 568 + }, + "08286746-8261-43b9-b1d4-add93b0442b8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 19.39906, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "08286746-8261-43b9-b1d4-add93b0442b8", + "Name": null + }, + "e99f1d37-12b3-4b77-aaeb-c0514863ceb8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2d8372e3-18d6-43f5-b8a6-ca8af44199e8", + "Transform": { + "Matrix": { + "Components": [ + 0.5546986601295418, + 0.8320513183995871, + 0.0, + 16.06574, + -0.8320513183995871, + 0.5546986601295418, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "e99f1d37-12b3-4b77-aaeb-c0514863ceb8", + "Name": "W18x40", + "EdgeId": 569, + "ExternalEdgeId": 569 + }, + "7fc26bbb-689f-48cf-9694-f9a5d20bb297": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.06574, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 19.39906, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7fc26bbb-689f-48cf-9694-f9a5d20bb297", + "Name": null + }, + "11dcb1b5-c7ad-4955-a308-680dea537863": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "11dcb1b5-c7ad-4955-a308-680dea537863", + "Name": "W18x40", + "EdgeId": 572 + }, + "e48e653f-9cae-404f-8781-a38cba71622d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e48e653f-9cae-404f-8781-a38cba71622d", + "Name": null + }, + "60f6edbf-099b-4403-b538-fd86f4a94318": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "60f6edbf-099b-4403-b538-fd86f4a94318", + "Name": "W18x40", + "EdgeId": 573 + }, + "e5c8b139-92b6-4522-bc54-a0e58c4da197": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e5c8b139-92b6-4522-bc54-a0e58c4da197", + "Name": null + }, + "2b8db37d-b668-4583-8713-c8fb4f01e2a7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "2b8db37d-b668-4583-8713-c8fb4f01e2a7", + "Name": "W18x40", + "EdgeId": 575 + }, + "81e09bb2-cc85-4668-8a92-d16ab3dbb658": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "81e09bb2-cc85-4668-8a92-d16ab3dbb658", + "Name": null + }, + "5f562ec8-560f-4f50-9a8d-02c1a9ee9129": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "5f562ec8-560f-4f50-9a8d-02c1a9ee9129", + "Name": "W18x40", + "EdgeId": 576 + }, + "b67b9ecd-f0bd-414f-bb6f-faa4582132a1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b67b9ecd-f0bd-414f-bb6f-faa4582132a1", + "Name": null + }, + "b86d4b15-fade-4abd-92f9-beda551ec426": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "b86d4b15-fade-4abd-92f9-beda551ec426", + "Name": "W18x40", + "EdgeId": 578, + "ExternalEdgeId": 578 + }, + "facd80c3-d842-4c86-8557-33393436f4f1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "facd80c3-d842-4c86-8557-33393436f4f1", + "Name": null + }, + "a768dd55-59da-49e7-8f55-326e2bae23b2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "a768dd55-59da-49e7-8f55-326e2bae23b2", + "Name": "W18x40", + "EdgeId": 579 + }, + "87d71f27-cec5-48c6-be6f-0fe77e64b67a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "87d71f27-cec5-48c6-be6f-0fe77e64b67a", + "Name": null + }, + "b3a10a02-d1b6-47eb-a34f-a80ed7de65e8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "b3a10a02-d1b6-47eb-a34f-a80ed7de65e8", + "Name": "W18x40", + "EdgeId": 581 + }, + "32c08391-736b-48b8-a108-94c861adcf80": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "32c08391-736b-48b8-a108-94c861adcf80", + "Name": null + }, + "40815228-0652-4a31-8667-2ad82257949f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7cd6c7d4-992c-4217-9c1f-ac7c9170b25c", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "40815228-0652-4a31-8667-2ad82257949f", + "Name": "W18x40", + "EdgeId": 582 + }, + "1ed54863-c7e7-4e55-ab4e-7478d51f99d7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 22.7324, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1ed54863-c7e7-4e55-ab4e-7478d51f99d7", + "Name": null + }, + "cdaf6ec3-2eab-4656-bd6d-4c2f0c9dd196": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "f1f4efee-0d74-4a09-8341-e6127bd83748", + "Transform": { + "Matrix": { + "Components": [ + 0.5547009642709457, + 0.832049782306854, + 0.0, + 19.39906, + -0.832049782306854, + 0.5547009642709457, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "cdaf6ec3-2eab-4656-bd6d-4c2f0c9dd196", + "Name": "W18x40", + "EdgeId": 583, + "ExternalEdgeId": 583 + }, + "6595382e-b658-40f8-8d1f-e02731fce3b0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.39906, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 22.7324, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6595382e-b658-40f8-8d1f-e02731fce3b0", + "Name": null + }, + "d08eaf1f-fdb0-4cd9-bc05-a4461fe773a8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d08eaf1f-fdb0-4cd9-bc05-a4461fe773a8", + "Name": "W18x40", + "EdgeId": 586 + }, + "c1f1347b-b979-4744-b514-0d41c7705bbd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c1f1347b-b979-4744-b514-0d41c7705bbd", + "Name": null + }, + "50f1b3e2-ae23-4fc3-b661-a216a7e4cbe5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "50f1b3e2-ae23-4fc3-b661-a216a7e4cbe5", + "Name": "W18x40", + "EdgeId": 587 + }, + "9564ff58-bd64-4b45-ba6a-0788332140e9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9564ff58-bd64-4b45-ba6a-0788332140e9", + "Name": null + }, + "d8a38080-0444-4ee4-8216-05ba26e27146": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d8a38080-0444-4ee4-8216-05ba26e27146", + "Name": "W18x40", + "EdgeId": 589 + }, + "9fa86edd-b765-44e1-be26-306e501b9f58": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9fa86edd-b765-44e1-be26-306e501b9f58", + "Name": null + }, + "57bc1d9b-b00a-40c9-8723-e6fc6d208f18": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "57bc1d9b-b00a-40c9-8723-e6fc6d208f18", + "Name": "W18x40", + "EdgeId": 590 + }, + "6e6de7ef-42cf-473d-90d5-adcfbbe260c4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6e6de7ef-42cf-473d-90d5-adcfbbe260c4", + "Name": null + }, + "8cc1458c-393e-49dc-9324-dc9d1822744e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "8cc1458c-393e-49dc-9324-dc9d1822744e", + "Name": "W18x40", + "EdgeId": 592, + "ExternalEdgeId": 592 + }, + "5826ef4b-f0a3-406d-931f-d439b158936c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5826ef4b-f0a3-406d-931f-d439b158936c", + "Name": null + }, + "936fe620-b84d-4c04-bb11-d1f35ce79776": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "936fe620-b84d-4c04-bb11-d1f35ce79776", + "Name": "W18x40", + "EdgeId": 593 + }, + "088af1c1-ecd6-41ca-9be4-2d964a97a977": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "088af1c1-ecd6-41ca-9be4-2d964a97a977", + "Name": null + }, + "efc11817-9104-4a7a-9f5b-33ad621e0417": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d4da724b-0d2f-4bd3-acf2-5d3697adf278", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -20.4014, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "efc11817-9104-4a7a-9f5b-33ad621e0417", + "Name": "W18x40", + "EdgeId": 595 + }, + "3c89d32b-5a44-4c7f-af26-228e77df13cd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -20.4014, + "Z": 8.35 + }, + "End": { + "X": 23.0, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3c89d32b-5a44-4c7f-af26-228e77df13cd", + "Name": null + }, + "ba888f8b-b24f-4d6e-a97e-e67451855487": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b110d957-b9da-4137-9c21-3ec50b79b33e", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "ba888f8b-b24f-4d6e-a97e-e67451855487", + "Name": "W18x40", + "EdgeId": 596 + }, + "23f1c4df-0ef7-4474-b9dc-3fbd78b40649": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 26.06574, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "23f1c4df-0ef7-4474-b9dc-3fbd78b40649", + "Name": null + }, + "ca2b2483-283e-4669-96aa-2c1bd17af9a4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e0c50391-a50c-417e-a648-1d8139e40aa4", + "Transform": { + "Matrix": { + "Components": [ + 0.5547010313116194, + 0.8320497376129783, + 0.0, + 23.0, + -0.8320497376129783, + 0.5547010313116194, + 0.0, + -20.4014, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "ca2b2483-283e-4669-96aa-2c1bd17af9a4", + "Name": "W18x40", + "EdgeId": 597, + "ExternalEdgeId": 597 + }, + "193c5f89-e69d-45a3-9d1b-c97a2ce7daaf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -20.4014, + "Z": 8.35 + }, + "End": { + "X": 26.06574, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "193c5f89-e69d-45a3-9d1b-c97a2ce7daaf", + "Name": null + }, + "c6d445c1-5f48-4421-a286-821bba3d7a76": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3bf2c337-826f-4c12-b4d9-a345602f7c71", + "Transform": { + "Matrix": { + "Components": [ + 0.5547001962252325, + 0.8320502943378414, + 0.0, + 22.7324, + -0.8320502943378414, + 0.5547001962252325, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "c6d445c1-5f48-4421-a286-821bba3d7a76", + "Name": "W18x40", + "EdgeId": 601, + "ExternalEdgeId": 601 + }, + "0867c95f-7168-4b23-b340-21813bb6c0da": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.7324, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 23.0, + "Y": -20.4014, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0867c95f-7168-4b23-b340-21813bb6c0da", + "Name": null + }, + "16834ca5-faff-47f1-9cdd-a870ad74ba83": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "16834ca5-faff-47f1-9cdd-a870ad74ba83", + "Name": "W18x40", + "EdgeId": 602 + }, + "b88259ce-9134-469a-8a4e-6a8326867f0b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b88259ce-9134-469a-8a4e-6a8326867f0b", + "Name": null + }, + "7dcbcbe4-7829-40ef-addc-6d1cac014c05": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "7dcbcbe4-7829-40ef-addc-6d1cac014c05", + "Name": "W18x40", + "EdgeId": 603 + }, + "d7df921b-beba-4d8d-8010-47bb6ab3a559": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d7df921b-beba-4d8d-8010-47bb6ab3a559", + "Name": null + }, + "62e320d4-80ef-4844-ae6e-9e7820cae6fd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "62e320d4-80ef-4844-ae6e-9e7820cae6fd", + "Name": "W18x40", + "EdgeId": 605 + }, + "91588d9a-0e75-43ab-8b87-f40c7bd0e9ba": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "91588d9a-0e75-43ab-8b87-f40c7bd0e9ba", + "Name": null + }, + "789ce616-a358-4da0-abd1-c2cd96d96c77": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "789ce616-a358-4da0-abd1-c2cd96d96c77", + "Name": "W18x40", + "EdgeId": 606 + }, + "f0d1faad-5527-4b7b-8b69-93478f3c3a39": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f0d1faad-5527-4b7b-8b69-93478f3c3a39", + "Name": null + }, + "c0cd3c93-d2ed-40b2-87e8-bae9075fb034": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "c0cd3c93-d2ed-40b2-87e8-bae9075fb034", + "Name": "W18x40", + "EdgeId": 608 + }, + "72d1ea92-99b3-43e3-b2b0-39195d5e6784": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "72d1ea92-99b3-43e3-b2b0-39195d5e6784", + "Name": null + }, + "d68c905f-3144-4f37-b3f7-e8fcf9ad0580": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d68c905f-3144-4f37-b3f7-e8fcf9ad0580", + "Name": "W18x40", + "EdgeId": 609 + }, + "ec69dbe0-24cc-4c69-9a17-6370b74fe341": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ec69dbe0-24cc-4c69-9a17-6370b74fe341", + "Name": null + }, + "57445ce6-80b5-4057-b74f-a3312f7f6c7f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "57445ce6-80b5-4057-b74f-a3312f7f6c7f", + "Name": "W18x40", + "EdgeId": 611, + "ExternalEdgeId": 611 + }, + "92b60307-d3a3-4367-b801-dfd01e369b13": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "92b60307-d3a3-4367-b801-dfd01e369b13", + "Name": null + }, + "5cbc2d16-2196-4845-a278-6cbec774f77d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "5cbc2d16-2196-4845-a278-6cbec774f77d", + "Name": "W18x40", + "EdgeId": 612 + }, + "212043e5-070b-4769-a2e7-ad8b6f72fc30": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "212043e5-070b-4769-a2e7-ad8b6f72fc30", + "Name": null + }, + "d5ade6f8-a253-4e2b-8e67-2bebef4e43c2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d5ade6f8-a253-4e2b-8e67-2bebef4e43c2", + "Name": "W18x40", + "EdgeId": 614 + }, + "923ccd38-bb60-48d9-a326-5adedfdf4e91": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 23.0, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "923ccd38-bb60-48d9-a326-5adedfdf4e91", + "Name": null + }, + "a05fe6ac-71a8-490f-bdbf-24afdabfa1bb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "9b7bdf59-55a7-4daf-9c50-86da88398d8a", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "a05fe6ac-71a8-490f-bdbf-24afdabfa1bb", + "Name": "W18x40", + "EdgeId": 615 + }, + "047231a8-2c6a-4505-bb2e-49b604e0a16d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 29.39906, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "047231a8-2c6a-4505-bb2e-49b604e0a16d", + "Name": null + }, + "974201ba-8ba2-4c4b-91ab-0d88f3fb53fd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2d8372e3-18d6-43f5-b8a6-ca8af44199e8", + "Transform": { + "Matrix": { + "Components": [ + 0.5546986601295418, + 0.8320513183995871, + 0.0, + 26.06574, + -0.8320513183995871, + 0.5546986601295418, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "974201ba-8ba2-4c4b-91ab-0d88f3fb53fd", + "Name": "W18x40", + "EdgeId": 616, + "ExternalEdgeId": 616 + }, + "adafce07-2c95-4901-b4d5-739a9cf47bbd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.06574, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 29.39906, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "adafce07-2c95-4901-b4d5-739a9cf47bbd", + "Name": null + }, + "d0c8759a-9c91-4f22-a1cc-b94d5c45abab": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d0c8759a-9c91-4f22-a1cc-b94d5c45abab", + "Name": "W18x40", + "EdgeId": 619 + }, + "669ef044-3557-47cf-bf23-0a17b92724bf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "669ef044-3557-47cf-bf23-0a17b92724bf", + "Name": null + }, + "f464c76d-6a27-4b91-bdd4-21f37a9df2e0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "f464c76d-6a27-4b91-bdd4-21f37a9df2e0", + "Name": "W18x40", + "EdgeId": 620 + }, + "33c9dd82-8239-46cd-9709-5ed6c52dd653": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "33c9dd82-8239-46cd-9709-5ed6c52dd653", + "Name": null + }, + "4904ebb7-77bc-4b67-bb5a-054ebd7231ad": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "4904ebb7-77bc-4b67-bb5a-054ebd7231ad", + "Name": "W18x40", + "EdgeId": 622 + }, + "fa1518ea-7c05-426c-9d7b-1781e4a01034": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fa1518ea-7c05-426c-9d7b-1781e4a01034", + "Name": null + }, + "0e48fd48-ef21-4f02-a90d-d51b139cb09e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "0e48fd48-ef21-4f02-a90d-d51b139cb09e", + "Name": "W18x40", + "EdgeId": 623 + }, + "ae2d3589-0442-4ad8-89d3-36864fd25b4f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ae2d3589-0442-4ad8-89d3-36864fd25b4f", + "Name": null + }, + "8fdb757a-bfb8-41fe-9848-0ba0d8f15b02": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "8fdb757a-bfb8-41fe-9848-0ba0d8f15b02", + "Name": "W18x40", + "EdgeId": 625 + }, + "9e4b89f6-e940-48e8-9065-d1b6bd17348b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9e4b89f6-e940-48e8-9065-d1b6bd17348b", + "Name": null + }, + "55f24018-a730-4851-8806-4474071fbf7d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "55f24018-a730-4851-8806-4474071fbf7d", + "Name": "W18x40", + "EdgeId": 626 + }, + "01716952-2b3c-4567-9606-e5eed9fa1b04": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "01716952-2b3c-4567-9606-e5eed9fa1b04", + "Name": null + }, + "496e4a9e-1e09-4265-b237-93d553c94cf7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "496e4a9e-1e09-4265-b237-93d553c94cf7", + "Name": "W18x40", + "EdgeId": 628, + "ExternalEdgeId": 628 + }, + "c5940f3c-4157-477a-81ab-aa0f8a74dbd3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c5940f3c-4157-477a-81ab-aa0f8a74dbd3", + "Name": null + }, + "598893a7-a401-4411-bff3-55d7a1c0857d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "598893a7-a401-4411-bff3-55d7a1c0857d", + "Name": "W18x40", + "EdgeId": 629 + }, + "4bd68415-f16a-45ba-b1d4-3f0aef241629": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4bd68415-f16a-45ba-b1d4-3f0aef241629", + "Name": null + }, + "8b81275f-4d44-45af-81fa-003c41bf7c90": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "34bbf385-46d3-47bf-83a0-3a400bd05173", + "Transform": { + "Matrix": { + "Components": [ + 0.5547255602613056, + 0.8320333844220319, + 0.0, + 29.39906, + -0.8320333844220319, + 0.5547255602613056, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "8b81275f-4d44-45af-81fa-003c41bf7c90", + "Name": "W18x40", + "EdgeId": 631, + "ExternalEdgeId": 631 + }, + "c4c646be-fd29-48c8-9d34-f765107b31dd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.39906, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 29.5, + "Y": -30.1514, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c4c646be-fd29-48c8-9d34-f765107b31dd", + "Name": null + }, + "41a95020-fe80-44bd-85fb-4993379dd1d1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "41a95020-fe80-44bd-85fb-4993379dd1d1", + "Name": "W18x40", + "EdgeId": 632 + }, + "55736b40-1d0d-4476-8001-980e135f6ed3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 23.0, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "55736b40-1d0d-4476-8001-980e135f6ed3", + "Name": null + }, + "f0103a92-4216-4c66-ad52-37ec0db58e40": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "f0103a92-4216-4c66-ad52-37ec0db58e40", + "Name": "W18x40", + "EdgeId": 633 + }, + "11e5cb44-d8bf-4f79-ae9f-973342842153": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 29.5, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "11e5cb44-d8bf-4f79-ae9f-973342842153", + "Name": null + }, + "856924b0-f6b9-4705-a5bc-d6f422a242ed": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2984e71a-f669-4201-8e3b-e26ab9529910", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -30.1514, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "856924b0-f6b9-4705-a5bc-d6f422a242ed", + "Name": "W18x40", + "EdgeId": 634, + "ExternalEdgeId": 634 + }, + "b65785e2-56b7-478c-85bc-70d32d8c5bd0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -30.1514, + "Z": 8.35 + }, + "End": { + "X": 29.5, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b65785e2-56b7-478c-85bc-70d32d8c5bd0", + "Name": null + }, + "90c18d70-2de7-470d-b4c7-3134dde7c081": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "90c18d70-2de7-470d-b4c7-3134dde7c081", + "Name": "W18x40", + "EdgeId": 638 + }, + "37a187ef-32f4-4a48-9a18-5a68c9d45e91": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "37a187ef-32f4-4a48-9a18-5a68c9d45e91", + "Name": null + }, + "0efdd0d4-69a6-4010-97e5-549d788097f0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "0efdd0d4-69a6-4010-97e5-549d788097f0", + "Name": "W18x40", + "EdgeId": 639 + }, + "0c74bb05-47ec-48ad-96d4-d8c6b8186425": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0c74bb05-47ec-48ad-96d4-d8c6b8186425", + "Name": null + }, + "0d72ef8e-341f-42db-8070-9aa2d1906935": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "0d72ef8e-341f-42db-8070-9aa2d1906935", + "Name": "W18x40", + "EdgeId": 641 + }, + "8570b9a5-a1ff-45f2-abed-9c3f5825b645": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8570b9a5-a1ff-45f2-abed-9c3f5825b645", + "Name": null + }, + "c3af9d39-5435-4e99-a49b-f46543ebc474": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "c3af9d39-5435-4e99-a49b-f46543ebc474", + "Name": "W18x40", + "EdgeId": 642 + }, + "ece1ff08-e34f-4073-8b78-faa59c3a95ff": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ece1ff08-e34f-4073-8b78-faa59c3a95ff", + "Name": null + }, + "731fe8f4-16ab-45ad-bd79-dfdbc86da032": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "731fe8f4-16ab-45ad-bd79-dfdbc86da032", + "Name": "W18x40", + "EdgeId": 644 + }, + "e3e7c14c-5616-4a17-9bcf-8f752f1da869": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e3e7c14c-5616-4a17-9bcf-8f752f1da869", + "Name": null + }, + "70df52ce-0402-4727-99f1-00ad5d1a13cd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "70df52ce-0402-4727-99f1-00ad5d1a13cd", + "Name": "W18x40", + "EdgeId": 645 + }, + "e667196c-8e07-4865-afcc-1053169ea9ff": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e667196c-8e07-4865-afcc-1053169ea9ff", + "Name": null + }, + "94c6fbc3-b8c2-48ac-af52-df631ee1b3d3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "94c6fbc3-b8c2-48ac-af52-df631ee1b3d3", + "Name": "W18x40", + "EdgeId": 647, + "ExternalEdgeId": 647 + }, + "5fdbaa73-0bad-440f-95ee-dc89c177c392": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5fdbaa73-0bad-440f-95ee-dc89c177c392", + "Name": null + }, + "a2e652c1-52c7-400d-9862-ea1d79a02daa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "a2e652c1-52c7-400d-9862-ea1d79a02daa", + "Name": "W18x40", + "EdgeId": 648 + }, + "23179f5b-0691-4e38-8d02-31e1391821e5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "23179f5b-0691-4e38-8d02-31e1391821e5", + "Name": null + }, + "1639e74f-1ab2-4284-af23-7b2920053694": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "1639e74f-1ab2-4284-af23-7b2920053694", + "Name": "W18x40", + "EdgeId": 650 + }, + "213981cb-b6a4-4067-a1d6-6d2feaa0a5f1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 23.0, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "213981cb-b6a4-4067-a1d6-6d2feaa0a5f1", + "Name": null + }, + "1cfef996-38bf-423a-b89c-a22527bd808b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "1cfef996-38bf-423a-b89c-a22527bd808b", + "Name": "W18x40", + "EdgeId": 651 + }, + "7c45c886-b9ee-4d53-af0c-d27717a1fefb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 29.5, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7c45c886-b9ee-4d53-af0c-d27717a1fefb", + "Name": null + }, + "438608be-71bd-4916-aac3-b792fa314e6b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "438608be-71bd-4916-aac3-b792fa314e6b", + "Name": "W18x40", + "EdgeId": 652, + "ExternalEdgeId": 652 + }, + "df61e984-0c0e-473a-80a4-00cdfbe01db4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 29.5, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "df61e984-0c0e-473a-80a4-00cdfbe01db4", + "Name": null + }, + "9c7a13ff-626a-44c2-b8de-c11e1d574557": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "9c7a13ff-626a-44c2-b8de-c11e1d574557", + "Name": "W18x40", + "EdgeId": 655 + }, + "7f9d113c-148b-466d-b559-8687bfb89acf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7f9d113c-148b-466d-b559-8687bfb89acf", + "Name": null + }, + "68503447-8ffd-483b-b7d9-5f04308eb45a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "68503447-8ffd-483b-b7d9-5f04308eb45a", + "Name": "W18x40", + "EdgeId": 656 + }, + "4a77d3ad-f7fa-4aef-863d-baa1e3949a5d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4a77d3ad-f7fa-4aef-863d-baa1e3949a5d", + "Name": null + }, + "17556f05-3714-4782-aeea-e29a3ce38da8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "17556f05-3714-4782-aeea-e29a3ce38da8", + "Name": "W18x40", + "EdgeId": 658 + }, + "1146f832-cda6-45a1-8aac-01bef1491ecb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1146f832-cda6-45a1-8aac-01bef1491ecb", + "Name": null + }, + "4b0cb37f-2669-44d9-be31-f4c129261170": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "4b0cb37f-2669-44d9-be31-f4c129261170", + "Name": "W18x40", + "EdgeId": 659 + }, + "713828b8-d8c6-4f5a-8cd5-af664d42e099": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "713828b8-d8c6-4f5a-8cd5-af664d42e099", + "Name": null + }, + "2171e22b-7f6b-434c-bb02-8de29fe8c897": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "2171e22b-7f6b-434c-bb02-8de29fe8c897", + "Name": "W18x40", + "EdgeId": 661 + }, + "a86c1578-00d6-4e88-998e-5202e2e809ea": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a86c1578-00d6-4e88-998e-5202e2e809ea", + "Name": null + }, + "3ee749a3-05d9-4fe5-a1a2-4f0544780b5b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "3ee749a3-05d9-4fe5-a1a2-4f0544780b5b", + "Name": "W18x40", + "EdgeId": 662 + }, + "02668896-213e-42e1-91e4-d792f781a20b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "02668896-213e-42e1-91e4-d792f781a20b", + "Name": null + }, + "02337205-a9b8-45df-851a-a72e39765d5c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "02337205-a9b8-45df-851a-a72e39765d5c", + "Name": "W18x40", + "EdgeId": 664, + "ExternalEdgeId": 664 + }, + "c861af71-4204-4f3d-9c09-99aa28512a32": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c861af71-4204-4f3d-9c09-99aa28512a32", + "Name": null + }, + "5d55ba06-766f-4ab3-8f6f-f55fc5ec65a4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "5d55ba06-766f-4ab3-8f6f-f55fc5ec65a4", + "Name": "W18x40", + "EdgeId": 665 + }, + "44319f82-bcac-43bd-a36e-c7b59709c4a3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "44319f82-bcac-43bd-a36e-c7b59709c4a3", + "Name": null + }, + "e78eddf3-3116-4cfc-8f48-96ce1a55ad3e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "e78eddf3-3116-4cfc-8f48-96ce1a55ad3e", + "Name": "W18x40", + "EdgeId": 667 + }, + "5272dd16-7d31-4c50-a8a9-7df801128e9b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 23.0, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5272dd16-7d31-4c50-a8a9-7df801128e9b", + "Name": null + }, + "a1d867fe-f5cd-4693-84df-2aa6efb42666": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "a1d867fe-f5cd-4693-84df-2aa6efb42666", + "Name": "W18x40", + "EdgeId": 668 + }, + "f00e3222-b4c6-45cf-83cb-3d5004fe9972": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 29.5, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f00e3222-b4c6-45cf-83cb-3d5004fe9972", + "Name": null + }, + "d7f63a4a-bc14-4e51-b500-e205a0df7438": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d7f63a4a-bc14-4e51-b500-e205a0df7438", + "Name": "W18x40", + "EdgeId": 669, + "ExternalEdgeId": 669 + }, + "188b0ee1-01af-4945-bf1e-9345ac5b8c2d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 29.5, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "188b0ee1-01af-4945-bf1e-9345ac5b8c2d", + "Name": null + }, + "0f12bef3-0263-4aa0-9fb6-ff0b36cc2a42": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "0f12bef3-0263-4aa0-9fb6-ff0b36cc2a42", + "Name": "W18x40", + "EdgeId": 672 + }, + "d82797e6-1e45-4ba6-aad6-dfa0bdd288ae": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d82797e6-1e45-4ba6-aad6-dfa0bdd288ae", + "Name": null + }, + "bb40d9d1-da82-4767-97f4-a04832c2511c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "bb40d9d1-da82-4767-97f4-a04832c2511c", + "Name": "W18x40", + "EdgeId": 673 + }, + "38807bd4-8a0f-4c1f-8130-c7f1f68c4d73": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "38807bd4-8a0f-4c1f-8130-c7f1f68c4d73", + "Name": null + }, + "0335932e-9777-479e-a61e-4c5920d7f26c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "0335932e-9777-479e-a61e-4c5920d7f26c", + "Name": "W18x40", + "EdgeId": 675 + }, + "7ef946e6-9996-406d-a8d3-6204f670d74c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7ef946e6-9996-406d-a8d3-6204f670d74c", + "Name": null + }, + "152b55c8-0f1a-4dc1-9b53-4d8e1aa8d63d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "152b55c8-0f1a-4dc1-9b53-4d8e1aa8d63d", + "Name": "W18x40", + "EdgeId": 676 + }, + "960ebc28-e19b-4d56-96c9-336d4ad4b9ce": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "960ebc28-e19b-4d56-96c9-336d4ad4b9ce", + "Name": null + }, + "2a4e78db-55eb-46bc-a92f-cbef56700e54": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "2a4e78db-55eb-46bc-a92f-cbef56700e54", + "Name": "W18x40", + "EdgeId": 678 + }, + "197372bd-4243-418a-8bf0-24e9a047e7a7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "197372bd-4243-418a-8bf0-24e9a047e7a7", + "Name": null + }, + "7e466ee8-ba28-423a-b2e3-09e8befdd55e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "7e466ee8-ba28-423a-b2e3-09e8befdd55e", + "Name": "W18x40", + "EdgeId": 679 + }, + "621d7cba-486d-4c87-a89a-27bcf925dd34": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "621d7cba-486d-4c87-a89a-27bcf925dd34", + "Name": null + }, + "097b411b-c31c-450e-ad41-631dfa5fd716": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "097b411b-c31c-450e-ad41-631dfa5fd716", + "Name": "W18x40", + "EdgeId": 681, + "ExternalEdgeId": 681 + }, + "2d72d68c-1cdd-4d53-8b12-efb29b1e4ca5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2d72d68c-1cdd-4d53-8b12-efb29b1e4ca5", + "Name": null + }, + "afff9e36-4812-492f-9120-19adafd33b4b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "afff9e36-4812-492f-9120-19adafd33b4b", + "Name": "W18x40", + "EdgeId": 682 + }, + "e8dc1d66-b730-41d4-830d-aea8a2e55a09": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e8dc1d66-b730-41d4-830d-aea8a2e55a09", + "Name": null + }, + "b960de5c-c968-403a-899e-536ca8bd0c65": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "b960de5c-c968-403a-899e-536ca8bd0c65", + "Name": "W18x40", + "EdgeId": 684 + }, + "4b74e2cf-f7e6-409c-90f5-8bcff539deae": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 23.0, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4b74e2cf-f7e6-409c-90f5-8bcff539deae", + "Name": null + }, + "4427efa4-fd38-46ed-bf1a-ea530b6c2ee3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "4427efa4-fd38-46ed-bf1a-ea530b6c2ee3", + "Name": "W18x40", + "EdgeId": 685 + }, + "6badb462-afef-4fc4-be4e-8fefe80c01e7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 29.5, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6badb462-afef-4fc4-be4e-8fefe80c01e7", + "Name": null + }, + "8ec52ca1-0b49-44c2-bee5-eee48b3cc5ce": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "8ec52ca1-0b49-44c2-bee5-eee48b3cc5ce", + "Name": "W18x40", + "EdgeId": 686, + "ExternalEdgeId": 686 + }, + "b22adece-0233-417e-bbac-43ba6b7a441e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 29.5, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b22adece-0233-417e-bbac-43ba6b7a441e", + "Name": null + }, + "e720ef94-b7fe-4e9d-841b-1d206930b45a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "e720ef94-b7fe-4e9d-841b-1d206930b45a", + "Name": "W18x40", + "EdgeId": 689 + }, + "fc2db445-77aa-4ed0-a6b4-de497f7de4e6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fc2db445-77aa-4ed0-a6b4-de497f7de4e6", + "Name": null + }, + "de9e670c-f9c5-41b0-81f2-94967ed7162b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "de9e670c-f9c5-41b0-81f2-94967ed7162b", + "Name": "W18x40", + "EdgeId": 690 + }, + "7b516efa-2836-4ef5-8440-31af77332211": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7b516efa-2836-4ef5-8440-31af77332211", + "Name": null + }, + "a549ab27-74da-453b-9236-622e0ad74f6b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "a549ab27-74da-453b-9236-622e0ad74f6b", + "Name": "W18x40", + "EdgeId": 692 + }, + "22dddca2-ae26-45be-9f6c-21972a573998": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "22dddca2-ae26-45be-9f6c-21972a573998", + "Name": null + }, + "cc7761db-f00b-463c-81be-d0483014b063": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "cc7761db-f00b-463c-81be-d0483014b063", + "Name": "W18x40", + "EdgeId": 693 + }, + "7d8c69fe-0433-459a-9d21-bccea609b225": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7d8c69fe-0433-459a-9d21-bccea609b225", + "Name": null + }, + "6fc38163-b854-49a5-85b2-5be323c2850b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "6fc38163-b854-49a5-85b2-5be323c2850b", + "Name": "W18x40", + "EdgeId": 695 + }, + "d6141e17-0070-4ce8-ad38-723e5e73c36b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d6141e17-0070-4ce8-ad38-723e5e73c36b", + "Name": null + }, + "2785888a-eff3-4efb-9ea1-a6b6c12744c8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "2785888a-eff3-4efb-9ea1-a6b6c12744c8", + "Name": "W18x40", + "EdgeId": 696 + }, + "93e1e0f0-0e8a-4aeb-867f-f258b61048d3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "93e1e0f0-0e8a-4aeb-867f-f258b61048d3", + "Name": null + }, + "ee7099e6-33ba-4d25-9c9e-d1c67d9b8fa3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "ee7099e6-33ba-4d25-9c9e-d1c67d9b8fa3", + "Name": "W18x40", + "EdgeId": 698, + "ExternalEdgeId": 698 + }, + "d56afa21-4686-4392-9274-961eb900858f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d56afa21-4686-4392-9274-961eb900858f", + "Name": null + }, + "f725689d-470c-4eac-9ea9-f8d4e907dbd0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "f725689d-470c-4eac-9ea9-f8d4e907dbd0", + "Name": "W18x40", + "EdgeId": 699 + }, + "0dcf95a6-7244-4d90-8e2f-1c635c5354f4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0dcf95a6-7244-4d90-8e2f-1c635c5354f4", + "Name": null + }, + "4e218c34-6142-46b4-bbd6-7a0ebb2390f9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "4e218c34-6142-46b4-bbd6-7a0ebb2390f9", + "Name": "W18x40", + "EdgeId": 701 + }, + "fd1748dd-e5a7-41d4-a2af-77c1ac721375": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 23.0, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fd1748dd-e5a7-41d4-a2af-77c1ac721375", + "Name": null + }, + "285764b0-4fdd-4bcc-bb17-f88af2757a42": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "285764b0-4fdd-4bcc-bb17-f88af2757a42", + "Name": "W18x40", + "EdgeId": 702 + }, + "4f4a540e-97a9-4899-a62c-06b63d13cce0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 29.5, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4f4a540e-97a9-4899-a62c-06b63d13cce0", + "Name": null + }, + "63f7a03e-fd12-4c62-b502-e04948630395": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "63f7a03e-fd12-4c62-b502-e04948630395", + "Name": "W18x40", + "EdgeId": 703, + "ExternalEdgeId": 703 + }, + "12339089-9808-45f7-aabc-06e5dde7d0b4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 29.5, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "12339089-9808-45f7-aabc-06e5dde7d0b4", + "Name": null + }, + "67e36fac-3eef-43ba-a1ef-bac68b1bb4b5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "67e36fac-3eef-43ba-a1ef-bac68b1bb4b5", + "Name": "W18x40", + "EdgeId": 706 + }, + "0c580409-ad34-4524-ac77-877676bb2dae": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0c580409-ad34-4524-ac77-877676bb2dae", + "Name": null + }, + "6b051126-0250-4fd6-a927-201c7a207eb8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "6b051126-0250-4fd6-a927-201c7a207eb8", + "Name": "W18x40", + "EdgeId": 707 + }, + "461c624c-a959-491d-8cfb-0e6c814ff2cf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "461c624c-a959-491d-8cfb-0e6c814ff2cf", + "Name": null + }, + "802833d2-eb2c-473e-9cd4-7a911ca9afbf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "802833d2-eb2c-473e-9cd4-7a911ca9afbf", + "Name": "W18x40", + "EdgeId": 709 + }, + "f3e08c36-2f9e-4a22-9ab1-1d83b699b63d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f3e08c36-2f9e-4a22-9ab1-1d83b699b63d", + "Name": null + }, + "f67e7b9e-cc99-46d4-9795-9a06d9eedd52": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "f67e7b9e-cc99-46d4-9795-9a06d9eedd52", + "Name": "W18x40", + "EdgeId": 710 + }, + "fe985664-3fff-40f0-8c2c-f2d16b72bd9a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fe985664-3fff-40f0-8c2c-f2d16b72bd9a", + "Name": null + }, + "6712b459-3ca2-43a8-a170-782ca04dffc5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "6712b459-3ca2-43a8-a170-782ca04dffc5", + "Name": "W18x40", + "EdgeId": 712 + }, + "424e571e-6182-4fec-95c0-aedd296a4548": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "424e571e-6182-4fec-95c0-aedd296a4548", + "Name": null + }, + "2bdf99f6-9504-4858-b0e2-512f07819cbf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "2bdf99f6-9504-4858-b0e2-512f07819cbf", + "Name": "W18x40", + "EdgeId": 713 + }, + "1da82b37-17c2-47ea-87e9-e73438c62084": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1da82b37-17c2-47ea-87e9-e73438c62084", + "Name": null + }, + "c4213c32-b37a-495a-a76d-4ea63c0f5022": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "c4213c32-b37a-495a-a76d-4ea63c0f5022", + "Name": "W18x40", + "EdgeId": 715, + "ExternalEdgeId": 715 + }, + "41b62742-7c1d-46e3-aa5b-fa3f84d66de7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "41b62742-7c1d-46e3-aa5b-fa3f84d66de7", + "Name": null + }, + "86fc3b96-8b4b-4c2c-8847-e30f73f8626c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "86fc3b96-8b4b-4c2c-8847-e30f73f8626c", + "Name": "W18x40", + "EdgeId": 716 + }, + "1745e124-4060-4571-b15d-1936e374af86": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1745e124-4060-4571-b15d-1936e374af86", + "Name": null + }, + "314674f9-2d4b-4679-ad3c-7c8f613a4077": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "314674f9-2d4b-4679-ad3c-7c8f613a4077", + "Name": "W18x40", + "EdgeId": 718 + }, + "9074c498-0d66-4e3f-8c1c-7342296a8eb8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 23.0, + "Y": -59.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9074c498-0d66-4e3f-8c1c-7342296a8eb8", + "Name": null + }, + "c1c09f5b-1a1f-47ad-a376-eb66a6786392": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "c1c09f5b-1a1f-47ad-a376-eb66a6786392", + "Name": "W18x40", + "EdgeId": 719, + "ExternalEdgeId": 719 + }, + "bb98b3dd-8fce-43fe-b41f-89739b78be22": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 29.5, + "Y": -59.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bb98b3dd-8fce-43fe-b41f-89739b78be22", + "Name": null + }, + "bf51ef59-9801-4933-8fbc-a96fb94acca1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "bf51ef59-9801-4933-8fbc-a96fb94acca1", + "Name": "W18x40", + "EdgeId": 720, + "ExternalEdgeId": 720 + }, + "e414ac4b-ff52-48b9-981c-b3edddea0b7a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 29.5, + "Y": -59.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e414ac4b-ff52-48b9-981c-b3edddea0b7a", + "Name": null + }, + "e08b3150-d842-4c01-89c8-5f3e046ca18a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "e08b3150-d842-4c01-89c8-5f3e046ca18a", + "Name": "W18x40", + "EdgeId": 723 + }, + "dc69d71e-b19b-4ddf-9c15-58ef2734fc77": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -59.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dc69d71e-b19b-4ddf-9c15-58ef2734fc77", + "Name": null + }, + "6c43088a-9d54-4e00-a19d-b0b4528d3896": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "6c43088a-9d54-4e00-a19d-b0b4528d3896", + "Name": "W18x40", + "EdgeId": 724, + "ExternalEdgeId": 724 + }, + "7daa4cd1-c930-42d1-9418-6241abbd842c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 16.0, + "Y": -59.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7daa4cd1-c930-42d1-9418-6241abbd842c", + "Name": null + }, + "92093ca5-b651-430c-828a-b577685d68dd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "92093ca5-b651-430c-828a-b577685d68dd", + "Name": "W18x40", + "EdgeId": 726 + }, + "66096f54-35b0-4dfa-9514-4da037eaf739": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -59.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "66096f54-35b0-4dfa-9514-4da037eaf739", + "Name": null + }, + "3248ccd0-0d78-45c6-b1a2-9179e54da3a6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "3248ccd0-0d78-45c6-b1a2-9179e54da3a6", + "Name": "W18x40", + "EdgeId": 727, + "ExternalEdgeId": 727 + }, + "df1756c5-010c-4af7-822a-d4dc8fdf84a2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 9.0, + "Y": -59.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "df1756c5-010c-4af7-822a-d4dc8fdf84a2", + "Name": null + }, + "09db585f-b4d6-40c2-9764-e25865e034d3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "09db585f-b4d6-40c2-9764-e25865e034d3", + "Name": "W18x40", + "EdgeId": 729 + }, + "5d9b9e6f-5951-4e22-bd0d-69aad03ddfc5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -59.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5d9b9e6f-5951-4e22-bd0d-69aad03ddfc5", + "Name": null + }, + "0a7d1485-5017-42fb-ab83-49b8295b2f6a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "0a7d1485-5017-42fb-ab83-49b8295b2f6a", + "Name": "W18x40", + "EdgeId": 730, + "ExternalEdgeId": 730 + }, + "b303bdd4-8e84-4523-b986-8d075f960771": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 2.0, + "Y": -59.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b303bdd4-8e84-4523-b986-8d075f960771", + "Name": null + }, + "6678d9fc-8d61-4903-9d80-156ad0014450": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "6678d9fc-8d61-4903-9d80-156ad0014450", + "Name": "W18x40", + "EdgeId": 732, + "ExternalEdgeId": 732 + }, + "ca3b112d-8218-403c-9343-20a643d38435": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -59.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ca3b112d-8218-403c-9343-20a643d38435", + "Name": null + }, + "d5465768-3985-433d-a36f-90d52e2de837": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d5465768-3985-433d-a36f-90d52e2de837", + "Name": "W18x40", + "EdgeId": 733, + "ExternalEdgeId": 733 + }, + "12da39bf-4637-4864-bb1e-1c42ff40031a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -59.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "12da39bf-4637-4864-bb1e-1c42ff40031a", + "Name": null + }, + "6278eb75-ee82-4711-82a4-551acd3604fb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1f248147-be87-4d6a-922b-e7bf05d5f27e", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.7324, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "6278eb75-ee82-4711-82a4-551acd3604fb", + "Name": "W18x40", + "EdgeId": 735, + "ExternalEdgeId": 735 + }, + "5e31d40d-60d4-45ad-ab5c-44be440068b4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.7324, + "Y": -0.5, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -0.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5e31d40d-60d4-45ad-ab5c-44be440068b4", + "Name": null + }, + "2828b295-3d8b-4bce-b93d-b7aeeb0f002c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "2828b295-3d8b-4bce-b93d-b7aeeb0f002c", + "Name": "W18x40", + "EdgeId": 736 + }, + "52a5901a-2eb2-4776-9db5-fb22d30cd1ca": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -0.5, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -5.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "52a5901a-2eb2-4776-9db5-fb22d30cd1ca", + "Name": null + }, + "14c6e7bc-e519-483a-ab5b-b8c7b0dc2a37": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c9699dd2-d040-4a2c-ad98-36443b0d037a", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "14c6e7bc-e519-483a-ab5b-b8c7b0dc2a37", + "Name": "W18x40", + "EdgeId": 737 + }, + "511f9f9c-1788-4f75-828d-49f9594082f3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 12.2 + }, + "End": { + "X": 12.7324, + "Y": -5.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "511f9f9c-1788-4f75-828d-49f9594082f3", + "Name": null + }, + "172770b0-c1e4-49b2-989e-c8ab281b1da2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "442ea777-71e8-42e2-a88c-d741cce24ce5", + "Transform": { + "Matrix": { + "Components": [ + 0.5547001962252291, + 0.8320502943378437, + 0.0, + 9.7324, + -0.8320502943378437, + 0.5547001962252291, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "172770b0-c1e4-49b2-989e-c8ab281b1da2", + "Name": "W18x40", + "EdgeId": 738, + "ExternalEdgeId": 738 + }, + "0e240d5c-4b42-4601-9340-dba9521eeb9f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.7324, + "Y": -0.5, + "Z": 12.2 + }, + "End": { + "X": 12.7324, + "Y": -5.000000000000001, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0e240d5c-4b42-4601-9340-dba9521eeb9f", + "Name": null + }, + "ab8905c5-4c44-4b33-8183-3575cb364226": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "ab8905c5-4c44-4b33-8183-3575cb364226", + "Name": "W18x40", + "EdgeId": 751, + "ExternalEdgeId": 751 + }, + "7830efee-c59b-42ca-8c46-b0ff10bfdced": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -0.5, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -0.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7830efee-c59b-42ca-8c46-b0ff10bfdced", + "Name": null + }, + "e9f186fb-58c3-4a6b-a2f0-c1b4bf2cff82": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "e9f186fb-58c3-4a6b-a2f0-c1b4bf2cff82", + "Name": "W18x40", + "EdgeId": 752 + }, + "4443adb2-bb80-406e-ad94-8f6bdab9076b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -0.5, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -5.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4443adb2-bb80-406e-ad94-8f6bdab9076b", + "Name": null + }, + "a82d229f-f699-48b7-8578-d42fab0f313f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "a82d229f-f699-48b7-8578-d42fab0f313f", + "Name": "W18x40", + "EdgeId": 753 + }, + "9507fcbf-4b43-4b75-b340-217776be17f7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -5.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9507fcbf-4b43-4b75-b340-217776be17f7", + "Name": null + }, + "02179fe1-712e-47bd-a17e-4ff602253db1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "02179fe1-712e-47bd-a17e-4ff602253db1", + "Name": "W18x40", + "EdgeId": 761, + "ExternalEdgeId": 761 + }, + "d22a4302-0363-4b52-8886-fca1e1c95dc3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -0.5, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -0.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d22a4302-0363-4b52-8886-fca1e1c95dc3", + "Name": null + }, + "d9243ebf-3865-4b35-981f-c29eda40bb7a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d9243ebf-3865-4b35-981f-c29eda40bb7a", + "Name": "W18x40", + "EdgeId": 762, + "ExternalEdgeId": 762 + }, + "2047e28a-ee64-4672-877a-6cca26ba35bf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -0.5, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -5.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2047e28a-ee64-4672-877a-6cca26ba35bf", + "Name": null + }, + "63a4be15-49ec-4b28-913e-0936b135b944": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "63a4be15-49ec-4b28-913e-0936b135b944", + "Name": "W18x40", + "EdgeId": 763 + }, + "25484848-c8da-48fa-a591-ce74cbfad519": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -5.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -5.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "25484848-c8da-48fa-a591-ce74cbfad519", + "Name": null + }, + "d677110d-bd61-4a67-a0b2-ba16e43a1cc4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e5972626-f896-4b80-b62f-fa93a8846507", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -9.9014, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d677110d-bd61-4a67-a0b2-ba16e43a1cc4", + "Name": "W18x40", + "EdgeId": 771 + }, + "d030b8a9-e8bf-4669-8ca4-de79a9644c0a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -9.9014, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d030b8a9-e8bf-4669-8ca4-de79a9644c0a", + "Name": null + }, + "4fae3e42-b0ab-468a-8f0f-220eee32fe62": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "49319ac3-7aa7-4cea-aa5e-8a40ef05e1ba", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "4fae3e42-b0ab-468a-8f0f-220eee32fe62", + "Name": "W18x40", + "EdgeId": 772 + }, + "3bd386f8-e4e7-4af0-9074-5364afe58181": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 16.06574, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3bd386f8-e4e7-4af0-9074-5364afe58181", + "Name": null + }, + "a2d324d5-d3f2-4f1a-adf1-4544f7ebb76d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4dc79d1f-76cc-4eac-ba1d-90c0929442e9", + "Transform": { + "Matrix": { + "Components": [ + 0.5547391419896724, + 0.8320243291782772, + 0.0, + 16.0, + -0.8320243291782772, + 0.5547391419896724, + 0.0, + -9.9014, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "a2d324d5-d3f2-4f1a-adf1-4544f7ebb76d", + "Name": "W18x40", + "EdgeId": 773, + "ExternalEdgeId": 773 + }, + "ddd8f4d5-84b4-477d-aab8-a580f63fe88f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -9.9014, + "Z": 12.2 + }, + "End": { + "X": 16.06574, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ddd8f4d5-84b4-477d-aab8-a580f63fe88f", + "Name": null + }, + "6070f0bc-4975-416a-89cb-1ee11dfb4ff4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39b28bf6-91db-4c72-b448-44bed8dc6bc0", + "Transform": { + "Matrix": { + "Components": [ + 0.554700196225229, + 0.8320502943378437, + 0.0, + 12.7324, + -0.8320502943378437, + 0.554700196225229, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "6070f0bc-4975-416a-89cb-1ee11dfb4ff4", + "Name": "W18x40", + "EdgeId": 783, + "ExternalEdgeId": 783 + }, + "af8a7abe-5366-4953-9590-4249df93344c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.7324, + "Y": -5.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -9.9014, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "af8a7abe-5366-4953-9590-4249df93344c", + "Name": null + }, + "08fed6cd-bdee-4114-a596-e023c67e6ca7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "08fed6cd-bdee-4114-a596-e023c67e6ca7", + "Name": "W18x40", + "EdgeId": 784 + }, + "04621c3b-5d98-417e-8c9b-001f150ed81e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "04621c3b-5d98-417e-8c9b-001f150ed81e", + "Name": null + }, + "4aecf056-d65e-4b4a-af8c-5db3ac13082d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "4aecf056-d65e-4b4a-af8c-5db3ac13082d", + "Name": "W18x40", + "EdgeId": 785 + }, + "562192f6-974a-49db-8985-ff5fdacb7f65": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "562192f6-974a-49db-8985-ff5fdacb7f65", + "Name": null + }, + "cb613018-a485-4790-921d-b536813b985f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "cb613018-a485-4790-921d-b536813b985f", + "Name": "W18x40", + "EdgeId": 791 + }, + "2e9aa2f3-926a-48f5-bb05-11f03eb4953c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -5.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2e9aa2f3-926a-48f5-bb05-11f03eb4953c", + "Name": null + }, + "d5a2fecd-5102-4110-88b1-9c6b5c17f9b9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d5a2fecd-5102-4110-88b1-9c6b5c17f9b9", + "Name": "W18x40", + "EdgeId": 792 + }, + "7e8a56aa-621f-4635-bfad-8d864dd6b724": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7e8a56aa-621f-4635-bfad-8d864dd6b724", + "Name": null + }, + "525ca0d5-12ff-426a-b61d-a0cf9782416e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "525ca0d5-12ff-426a-b61d-a0cf9782416e", + "Name": "W18x40", + "EdgeId": 797, + "ExternalEdgeId": 797 + }, + "20d0c086-e029-4225-8892-4e47f629e4d0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -5.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "20d0c086-e029-4225-8892-4e47f629e4d0", + "Name": null + }, + "e408ea7f-f097-41cf-b61f-10dee50f3a17": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "e408ea7f-f097-41cf-b61f-10dee50f3a17", + "Name": "W18x40", + "EdgeId": 798 + }, + "2940d88f-755b-4bda-ad10-e6269c4bc883": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2940d88f-755b-4bda-ad10-e6269c4bc883", + "Name": null + }, + "60732040-fcec-4636-a642-c9e7dc85fbb1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "60732040-fcec-4636-a642-c9e7dc85fbb1", + "Name": "W18x40", + "EdgeId": 803 + }, + "d49c71a8-f057-4c78-acd1-cb75e701e09e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d49c71a8-f057-4c78-acd1-cb75e701e09e", + "Name": null + }, + "57191743-eb24-4780-b427-bf4438a33760": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "0b85760d-9483-48e4-99ef-f0158063192f", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "57191743-eb24-4780-b427-bf4438a33760", + "Name": "W18x40", + "EdgeId": 804 + }, + "5bb53622-1219-4cf1-92cb-566522e7a5ce": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 19.39906, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5bb53622-1219-4cf1-92cb-566522e7a5ce", + "Name": null + }, + "7bd1ab4c-482c-47d4-aedd-6aab66a8618c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2d8372e3-18d6-43f5-b8a6-ca8af44199e8", + "Transform": { + "Matrix": { + "Components": [ + 0.5546986601295418, + 0.8320513183995871, + 0.0, + 16.06574, + -0.8320513183995871, + 0.5546986601295418, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "7bd1ab4c-482c-47d4-aedd-6aab66a8618c", + "Name": "W18x40", + "EdgeId": 805, + "ExternalEdgeId": 805 + }, + "d43d26e5-df76-41c9-86fa-df0221c56d5f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.06574, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 19.39906, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d43d26e5-df76-41c9-86fa-df0221c56d5f", + "Name": null + }, + "e21df52a-aab0-4e93-96aa-63634c3ed924": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "e21df52a-aab0-4e93-96aa-63634c3ed924", + "Name": "W18x40", + "EdgeId": 813 + }, + "7bd4f717-f725-4eb5-87a8-99d0470ffb73": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7bd4f717-f725-4eb5-87a8-99d0470ffb73", + "Name": null + }, + "795c0d71-630e-413b-ade7-fa1fdc2d6c48": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "795c0d71-630e-413b-ade7-fa1fdc2d6c48", + "Name": "W18x40", + "EdgeId": 814 + }, + "2266fcdf-ce58-4a4f-927a-050231eb7286": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2266fcdf-ce58-4a4f-927a-050231eb7286", + "Name": null + }, + "0650d3ac-fdc3-4935-8432-c01dc436ca09": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "0650d3ac-fdc3-4935-8432-c01dc436ca09", + "Name": "W18x40", + "EdgeId": 819 + }, + "8fc1ab94-0d45-4a7c-aba9-27260378ad4a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8fc1ab94-0d45-4a7c-aba9-27260378ad4a", + "Name": null + }, + "7d025b16-4fdb-464a-89c5-bfad331a46b8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "7d025b16-4fdb-464a-89c5-bfad331a46b8", + "Name": "W18x40", + "EdgeId": 820 + }, + "39d90870-f39a-415f-9c8b-550e7fcd5332": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "39d90870-f39a-415f-9c8b-550e7fcd5332", + "Name": null + }, + "b8bd6171-1d3b-4eef-9c9a-dcd566d19782": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "b8bd6171-1d3b-4eef-9c9a-dcd566d19782", + "Name": "W18x40", + "EdgeId": 825, + "ExternalEdgeId": 825 + }, + "6c1240fc-8715-47e5-ae08-5d969dcc943f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6c1240fc-8715-47e5-ae08-5d969dcc943f", + "Name": null + }, + "0cfe8387-77e3-4bcb-93bb-8d3047e2ee56": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "0cfe8387-77e3-4bcb-93bb-8d3047e2ee56", + "Name": "W18x40", + "EdgeId": 826 + }, + "2e44b8e7-bb85-460d-ba88-55c9db3acef9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2e44b8e7-bb85-460d-ba88-55c9db3acef9", + "Name": null + }, + "66b8949a-79b7-48ff-ac04-e172e38b25c4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "66b8949a-79b7-48ff-ac04-e172e38b25c4", + "Name": "W18x40", + "EdgeId": 831 + }, + "b2ee679a-0ac9-4bb3-9725-fa2b899a955d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b2ee679a-0ac9-4bb3-9725-fa2b899a955d", + "Name": null + }, + "77e1e159-d80f-4cfe-97a5-658569553785": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7cd6c7d4-992c-4217-9c1f-ac7c9170b25c", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "77e1e159-d80f-4cfe-97a5-658569553785", + "Name": "W18x40", + "EdgeId": 832 + }, + "6623faa6-9f86-4b0d-b6f9-36062756577a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 22.7324, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6623faa6-9f86-4b0d-b6f9-36062756577a", + "Name": null + }, + "353b4408-5054-41f6-9fbe-ce9213a963ec": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "f1f4efee-0d74-4a09-8341-e6127bd83748", + "Transform": { + "Matrix": { + "Components": [ + 0.5547009642709457, + 0.832049782306854, + 0.0, + 19.39906, + -0.832049782306854, + 0.5547009642709457, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "353b4408-5054-41f6-9fbe-ce9213a963ec", + "Name": "W18x40", + "EdgeId": 833, + "ExternalEdgeId": 833 + }, + "d9122a01-28f8-4ca1-9698-537b71aaf575": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.39906, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 22.7324, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d9122a01-28f8-4ca1-9698-537b71aaf575", + "Name": null + }, + "a3ded4ae-5988-4e14-9091-3984a5765d91": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "a3ded4ae-5988-4e14-9091-3984a5765d91", + "Name": "W18x40", + "EdgeId": 841 + }, + "72e3fe47-cc82-400a-ba3a-03d1b52d04b5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "72e3fe47-cc82-400a-ba3a-03d1b52d04b5", + "Name": null + }, + "ddb22953-fc40-4db0-84bf-87094f33a482": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "ddb22953-fc40-4db0-84bf-87094f33a482", + "Name": "W18x40", + "EdgeId": 842 + }, + "1345f66e-d8a4-4e05-864b-e632845e9c2b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1345f66e-d8a4-4e05-864b-e632845e9c2b", + "Name": null + }, + "1e292f0f-af50-4b4a-b4f0-ff35d23979a3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "1e292f0f-af50-4b4a-b4f0-ff35d23979a3", + "Name": "W18x40", + "EdgeId": 847 + }, + "07a4d9d4-6206-4407-a1ee-4ab956141201": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "07a4d9d4-6206-4407-a1ee-4ab956141201", + "Name": null + }, + "46aa6fa9-1a45-425d-bf58-5e2b5c944636": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "46aa6fa9-1a45-425d-bf58-5e2b5c944636", + "Name": "W18x40", + "EdgeId": 848 + }, + "80f1200e-0057-49e6-b25e-fb25e537e433": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "80f1200e-0057-49e6-b25e-fb25e537e433", + "Name": null + }, + "c40d8899-5076-4b17-a890-5df23beb6e57": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "c40d8899-5076-4b17-a890-5df23beb6e57", + "Name": "W18x40", + "EdgeId": 853, + "ExternalEdgeId": 853 + }, + "69ffbdcc-9c53-4ee8-a442-2fcc55b449af": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "69ffbdcc-9c53-4ee8-a442-2fcc55b449af", + "Name": null + }, + "da87b32a-cfea-46aa-8452-6ad7c83ea8f3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "da87b32a-cfea-46aa-8452-6ad7c83ea8f3", + "Name": "W18x40", + "EdgeId": 854 + }, + "02443929-50ae-4bf0-8a5f-6217a21fa38b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "02443929-50ae-4bf0-8a5f-6217a21fa38b", + "Name": null + }, + "53ce087d-b3d2-4865-b37b-0844e03d3e05": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d4da724b-0d2f-4bd3-acf2-5d3697adf278", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -20.4014, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "53ce087d-b3d2-4865-b37b-0844e03d3e05", + "Name": "W18x40", + "EdgeId": 859 + }, + "1ab6c488-1d06-4bba-9977-8bd646178cb0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -20.4014, + "Z": 12.2 + }, + "End": { + "X": 23.0, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1ab6c488-1d06-4bba-9977-8bd646178cb0", + "Name": null + }, + "dedb3cfa-481a-4010-b82a-e1a7a93bfd8e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b110d957-b9da-4137-9c21-3ec50b79b33e", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "dedb3cfa-481a-4010-b82a-e1a7a93bfd8e", + "Name": "W18x40", + "EdgeId": 860 + }, + "ee727740-89eb-4290-b113-94dee3d030eb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 26.06574, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ee727740-89eb-4290-b113-94dee3d030eb", + "Name": null + }, + "92442fb7-e836-4d9d-9e72-f022b7158515": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e0c50391-a50c-417e-a648-1d8139e40aa4", + "Transform": { + "Matrix": { + "Components": [ + 0.5547010313116194, + 0.8320497376129783, + 0.0, + 23.0, + -0.8320497376129783, + 0.5547010313116194, + 0.0, + -20.4014, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "92442fb7-e836-4d9d-9e72-f022b7158515", + "Name": "W18x40", + "EdgeId": 861, + "ExternalEdgeId": 861 + }, + "4b24b6f7-a6aa-4f9b-906d-5d0b6c389755": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -20.4014, + "Z": 12.2 + }, + "End": { + "X": 26.06574, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4b24b6f7-a6aa-4f9b-906d-5d0b6c389755", + "Name": null + }, + "6de5caf2-d34f-4877-9014-4393b49f8e3a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3bf2c337-826f-4c12-b4d9-a345602f7c71", + "Transform": { + "Matrix": { + "Components": [ + 0.5547001962252325, + 0.8320502943378414, + 0.0, + 22.7324, + -0.8320502943378414, + 0.5547001962252325, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "6de5caf2-d34f-4877-9014-4393b49f8e3a", + "Name": "W18x40", + "EdgeId": 871, + "ExternalEdgeId": 871 + }, + "1d3ce3a1-b4c2-4d21-acb6-f3a03d31b55b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.7324, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 23.0, + "Y": -20.4014, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1d3ce3a1-b4c2-4d21-acb6-f3a03d31b55b", + "Name": null + }, + "6ccb20e7-1f65-4483-8655-1ed1e178151d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "6ccb20e7-1f65-4483-8655-1ed1e178151d", + "Name": "W18x40", + "EdgeId": 872 + }, + "6a3b4aa0-6f7f-4b03-b933-9611f334af51": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6a3b4aa0-6f7f-4b03-b933-9611f334af51", + "Name": null + }, + "b7b67984-e0c0-49db-a5d3-7e8c822b4810": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "b7b67984-e0c0-49db-a5d3-7e8c822b4810", + "Name": "W18x40", + "EdgeId": 873 + }, + "0328129d-f77b-417e-b165-e9445e54280c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0328129d-f77b-417e-b165-e9445e54280c", + "Name": null + }, + "0cea2cc5-01f0-486b-aebe-cfebd88754db": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "0cea2cc5-01f0-486b-aebe-cfebd88754db", + "Name": "W18x40", + "EdgeId": 879 + }, + "acbcc01a-2cfc-4e40-9c6f-3e968ef5818d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "acbcc01a-2cfc-4e40-9c6f-3e968ef5818d", + "Name": null + }, + "4ed6dd27-071f-419c-945e-0a10b8505d2a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "4ed6dd27-071f-419c-945e-0a10b8505d2a", + "Name": "W18x40", + "EdgeId": 880 + }, + "0b003873-b0e1-4229-8b54-ee009ac85354": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0b003873-b0e1-4229-8b54-ee009ac85354", + "Name": null + }, + "845a29d2-6b72-48bd-9100-19f761f009af": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "845a29d2-6b72-48bd-9100-19f761f009af", + "Name": "W18x40", + "EdgeId": 885 + }, + "de308678-58ed-48d3-8fbc-fc0ccba87c0b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "de308678-58ed-48d3-8fbc-fc0ccba87c0b", + "Name": null + }, + "b61e2aa8-2ae0-4ab6-b217-8c09d8147b97": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "b61e2aa8-2ae0-4ab6-b217-8c09d8147b97", + "Name": "W18x40", + "EdgeId": 886 + }, + "95c91f2f-6311-461a-b4ea-9af2f612c4e4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "95c91f2f-6311-461a-b4ea-9af2f612c4e4", + "Name": null + }, + "4ed5e031-168d-44d7-9508-5b96d3e00952": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "4ed5e031-168d-44d7-9508-5b96d3e00952", + "Name": "W18x40", + "EdgeId": 891, + "ExternalEdgeId": 891 + }, + "a353f84c-8ac9-492a-993f-f903b6e8763f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a353f84c-8ac9-492a-993f-f903b6e8763f", + "Name": null + }, + "202f4412-041e-4af1-8f53-39f5ca607324": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "202f4412-041e-4af1-8f53-39f5ca607324", + "Name": "W18x40", + "EdgeId": 892 + }, + "8a48b564-ac10-4860-8d2c-53697554f6fa": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8a48b564-ac10-4860-8d2c-53697554f6fa", + "Name": null + }, + "b022f0ef-e871-4e2d-9f82-e011e3f198aa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "b022f0ef-e871-4e2d-9f82-e011e3f198aa", + "Name": "W18x40", + "EdgeId": 897 + }, + "9c26bef7-4919-4401-a94a-a802f75c7b5f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 23.0, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9c26bef7-4919-4401-a94a-a802f75c7b5f", + "Name": null + }, + "434f96fa-11fe-4fd6-873d-dc3cc619039c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "9b7bdf59-55a7-4daf-9c50-86da88398d8a", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "434f96fa-11fe-4fd6-873d-dc3cc619039c", + "Name": "W18x40", + "EdgeId": 898 + }, + "014b9d7d-b169-4ef4-951c-dbc1fe300a4f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 29.39906, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "014b9d7d-b169-4ef4-951c-dbc1fe300a4f", + "Name": null + }, + "97840780-9e87-43c7-a95c-9e18a2f32a16": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2d8372e3-18d6-43f5-b8a6-ca8af44199e8", + "Transform": { + "Matrix": { + "Components": [ + 0.5546986601295418, + 0.8320513183995871, + 0.0, + 26.06574, + -0.8320513183995871, + 0.5546986601295418, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "97840780-9e87-43c7-a95c-9e18a2f32a16", + "Name": "W18x40", + "EdgeId": 899, + "ExternalEdgeId": 899 + }, + "d5b6ea80-71cf-4ff8-ad7b-fee3d363ad99": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.06574, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 29.39906, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d5b6ea80-71cf-4ff8-ad7b-fee3d363ad99", + "Name": null + }, + "7f37d961-7941-4f30-a73c-7e56e111305d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "7f37d961-7941-4f30-a73c-7e56e111305d", + "Name": "W18x40", + "EdgeId": 907 + }, + "238bec02-62d5-4b95-924a-1ae428241d45": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "238bec02-62d5-4b95-924a-1ae428241d45", + "Name": null + }, + "87f4d676-8b6d-4962-834d-ac53f051abab": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "87f4d676-8b6d-4962-834d-ac53f051abab", + "Name": "W18x40", + "EdgeId": 908 + }, + "b0546e5a-e494-4ff6-a336-b24d9f9a94c7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b0546e5a-e494-4ff6-a336-b24d9f9a94c7", + "Name": null + }, + "b85323f7-1b7e-47c0-afdc-2fa219a807b4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "b85323f7-1b7e-47c0-afdc-2fa219a807b4", + "Name": "W18x40", + "EdgeId": 913 + }, + "3367a3b0-c696-4e0c-a5d3-9f5403edb042": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3367a3b0-c696-4e0c-a5d3-9f5403edb042", + "Name": null + }, + "be7ad5a2-0596-49e5-9dd2-03b5f3480b1e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "be7ad5a2-0596-49e5-9dd2-03b5f3480b1e", + "Name": "W18x40", + "EdgeId": 914 + }, + "04cc2833-d566-4f56-b028-b15d614dbbd7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "04cc2833-d566-4f56-b028-b15d614dbbd7", + "Name": null + }, + "72f08611-40a3-44ff-bd59-ba61a6995784": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "72f08611-40a3-44ff-bd59-ba61a6995784", + "Name": "W18x40", + "EdgeId": 919 + }, + "6007d404-e4e2-4146-a7b0-54aed9170f57": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6007d404-e4e2-4146-a7b0-54aed9170f57", + "Name": null + }, + "af146aef-0199-4145-98aa-d4bfc4c21b40": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "af146aef-0199-4145-98aa-d4bfc4c21b40", + "Name": "W18x40", + "EdgeId": 920 + }, + "f2d204dd-e4f0-4833-9068-86b553633cbf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f2d204dd-e4f0-4833-9068-86b553633cbf", + "Name": null + }, + "8485bda3-641d-41a5-a8ec-2284d3f2e0e0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "8485bda3-641d-41a5-a8ec-2284d3f2e0e0", + "Name": "W18x40", + "EdgeId": 925, + "ExternalEdgeId": 925 + }, + "4486f5c8-a4ce-4761-93e7-f5ef6fc1f642": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4486f5c8-a4ce-4761-93e7-f5ef6fc1f642", + "Name": null + }, + "326e18c0-0c54-4b0e-9d9a-645a15db3c9a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "326e18c0-0c54-4b0e-9d9a-645a15db3c9a", + "Name": "W18x40", + "EdgeId": 926 + }, + "1aef58bf-2c31-4ab8-9a5a-5f4feac4c023": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1aef58bf-2c31-4ab8-9a5a-5f4feac4c023", + "Name": null + }, + "e0887725-f83d-4055-943b-67a28ffed050": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "34bbf385-46d3-47bf-83a0-3a400bd05173", + "Transform": { + "Matrix": { + "Components": [ + 0.5547255602613056, + 0.8320333844220319, + 0.0, + 29.39906, + -0.8320333844220319, + 0.5547255602613056, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "e0887725-f83d-4055-943b-67a28ffed050", + "Name": "W18x40", + "EdgeId": 931, + "ExternalEdgeId": 931 + }, + "224bbb6f-07da-49ec-93c3-e72644363d67": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.39906, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 29.5, + "Y": -30.1514, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "224bbb6f-07da-49ec-93c3-e72644363d67", + "Name": null + }, + "56bdf867-fa4d-4d37-b7bd-896a7df4849c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "56bdf867-fa4d-4d37-b7bd-896a7df4849c", + "Name": "W18x40", + "EdgeId": 932 + }, + "02e5a1d4-05cf-4be3-b2e4-4eeb60a784bf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 23.0, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "02e5a1d4-05cf-4be3-b2e4-4eeb60a784bf", + "Name": null + }, + "5257ce25-325d-49b6-954d-172df4eebc17": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "5257ce25-325d-49b6-954d-172df4eebc17", + "Name": "W18x40", + "EdgeId": 933 + }, + "47aead43-688c-49d1-abf9-0b0d840457df": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 29.5, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "47aead43-688c-49d1-abf9-0b0d840457df", + "Name": null + }, + "a597527a-d8bc-4ed1-a56e-6c38a1e55aaf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2984e71a-f669-4201-8e3b-e26ab9529910", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -30.1514, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "a597527a-d8bc-4ed1-a56e-6c38a1e55aaf", + "Name": "W18x40", + "EdgeId": 934, + "ExternalEdgeId": 934 + }, + "b36a4080-9c01-4049-832a-84dc2005b912": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -30.1514, + "Z": 12.2 + }, + "End": { + "X": 29.5, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b36a4080-9c01-4049-832a-84dc2005b912", + "Name": null + }, + "3f396256-cb3f-4b89-8e36-f3d385163b72": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "3f396256-cb3f-4b89-8e36-f3d385163b72", + "Name": "W18x40", + "EdgeId": 945 + }, + "e270a422-370f-48d9-8cf7-f2c1b518a851": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e270a422-370f-48d9-8cf7-f2c1b518a851", + "Name": null + }, + "cade78b7-d216-48df-b73b-3493856c9176": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "cade78b7-d216-48df-b73b-3493856c9176", + "Name": "W18x40", + "EdgeId": 946 + }, + "86907db9-a070-4ee0-972e-c7a5f5673fde": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "86907db9-a070-4ee0-972e-c7a5f5673fde", + "Name": null + }, + "9e25c8e3-ed7e-46af-85df-5c640338891a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "9e25c8e3-ed7e-46af-85df-5c640338891a", + "Name": "W18x40", + "EdgeId": 951 + }, + "5b872b24-8232-4086-a6ac-a79a39b4abcb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5b872b24-8232-4086-a6ac-a79a39b4abcb", + "Name": null + }, + "bb6d153d-c853-4e86-91c3-23b3e5059381": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "bb6d153d-c853-4e86-91c3-23b3e5059381", + "Name": "W18x40", + "EdgeId": 952 + }, + "ca1933d4-2a1e-4783-81ed-574d4688a8b6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ca1933d4-2a1e-4783-81ed-574d4688a8b6", + "Name": null + }, + "21897307-b491-478c-b951-48f35e9f4fae": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "21897307-b491-478c-b951-48f35e9f4fae", + "Name": "W18x40", + "EdgeId": 957 + }, + "a69ad1ab-10e7-4f06-ac0f-809526d2fb82": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a69ad1ab-10e7-4f06-ac0f-809526d2fb82", + "Name": null + }, + "5cc9406f-3ea5-4a89-a3b3-41d089c4dcde": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "5cc9406f-3ea5-4a89-a3b3-41d089c4dcde", + "Name": "W18x40", + "EdgeId": 958 + }, + "aad658cd-6d93-4496-9005-0a5add074f90": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "aad658cd-6d93-4496-9005-0a5add074f90", + "Name": null + }, + "d92bd33c-4cd5-4f06-a895-d234dcec5d6b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d92bd33c-4cd5-4f06-a895-d234dcec5d6b", + "Name": "W18x40", + "EdgeId": 963, + "ExternalEdgeId": 963 + }, + "19a31dcd-0000-461d-b2d4-2491119b7202": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "19a31dcd-0000-461d-b2d4-2491119b7202", + "Name": null + }, + "19788b97-b34b-45c0-93e2-009dbf63c25d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "19788b97-b34b-45c0-93e2-009dbf63c25d", + "Name": "W18x40", + "EdgeId": 964 + }, + "4fb6e98b-2334-4b35-bbf2-117c9d475f3f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4fb6e98b-2334-4b35-bbf2-117c9d475f3f", + "Name": null + }, + "0064a6ca-833c-4a64-93ff-064c1d856491": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "0064a6ca-833c-4a64-93ff-064c1d856491", + "Name": "W18x40", + "EdgeId": 969 + }, + "0c437276-905d-4145-a257-6ff53010845b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 23.0, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0c437276-905d-4145-a257-6ff53010845b", + "Name": null + }, + "97e67332-44ff-4c68-9e17-4e8b5cb76537": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "97e67332-44ff-4c68-9e17-4e8b5cb76537", + "Name": "W18x40", + "EdgeId": 970 + }, + "2cf860e0-7abd-4125-9f9a-b3609f23259f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 29.5, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2cf860e0-7abd-4125-9f9a-b3609f23259f", + "Name": null + }, + "51a6e81f-9be7-44f4-84d4-fb10f4721dbe": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "51a6e81f-9be7-44f4-84d4-fb10f4721dbe", + "Name": "W18x40", + "EdgeId": 971, + "ExternalEdgeId": 971 + }, + "33f4d2a1-3fbe-43db-9764-4d4d05461b1e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 29.5, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "33f4d2a1-3fbe-43db-9764-4d4d05461b1e", + "Name": null + }, + "5d33760f-aed3-4335-a39f-614d74db1c8e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "5d33760f-aed3-4335-a39f-614d74db1c8e", + "Name": "W18x40", + "EdgeId": 979 + }, + "09ddf95b-5b1f-4689-8d6c-e9a745d216fe": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "09ddf95b-5b1f-4689-8d6c-e9a745d216fe", + "Name": null + }, + "841e1873-a5ce-4e5f-a4d3-a22fa20e0f77": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "841e1873-a5ce-4e5f-a4d3-a22fa20e0f77", + "Name": "W18x40", + "EdgeId": 980 + }, + "d8cca4fd-3e92-42ff-9cbb-975de2d16cce": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d8cca4fd-3e92-42ff-9cbb-975de2d16cce", + "Name": null + }, + "b30a3068-4e4b-4f1a-aac9-bbb0e0e2f8aa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "b30a3068-4e4b-4f1a-aac9-bbb0e0e2f8aa", + "Name": "W18x40", + "EdgeId": 985 + }, + "ec8a7ebb-ab99-4ecc-a245-780b55747dff": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ec8a7ebb-ab99-4ecc-a245-780b55747dff", + "Name": null + }, + "73887299-2003-476c-87aa-d8c5c9bf9c64": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "73887299-2003-476c-87aa-d8c5c9bf9c64", + "Name": "W18x40", + "EdgeId": 986 + }, + "12864b4c-7915-4a5f-a6df-6e4322701cbd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "12864b4c-7915-4a5f-a6df-6e4322701cbd", + "Name": null + }, + "57a5c10e-df9b-4241-87a4-63a9ceae33ad": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "57a5c10e-df9b-4241-87a4-63a9ceae33ad", + "Name": "W18x40", + "EdgeId": 991 + }, + "bedf52ae-f9c0-47bc-8ccd-5e038fd511f6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bedf52ae-f9c0-47bc-8ccd-5e038fd511f6", + "Name": null + }, + "f06bcf45-d1aa-4c58-b44b-74d4d1b64815": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "f06bcf45-d1aa-4c58-b44b-74d4d1b64815", + "Name": "W18x40", + "EdgeId": 992 + }, + "20ca2a12-e319-4251-ab17-46f027198811": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "20ca2a12-e319-4251-ab17-46f027198811", + "Name": null + }, + "f7053a12-a73d-4c6a-a042-d1a79b695591": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "f7053a12-a73d-4c6a-a042-d1a79b695591", + "Name": "W18x40", + "EdgeId": 997, + "ExternalEdgeId": 997 + }, + "63838ec7-5e20-428b-9400-e687d8e3e5d0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "63838ec7-5e20-428b-9400-e687d8e3e5d0", + "Name": null + }, + "25414101-4368-4632-98b5-f81152fd630e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "25414101-4368-4632-98b5-f81152fd630e", + "Name": "W18x40", + "EdgeId": 998 + }, + "122f88db-5dfe-4749-9652-248f605ff7bd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "122f88db-5dfe-4749-9652-248f605ff7bd", + "Name": null + }, + "90d23a15-350f-4f3a-b35c-c63aae5f1a78": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "90d23a15-350f-4f3a-b35c-c63aae5f1a78", + "Name": "W18x40", + "EdgeId": 1003 + }, + "f505cdde-bc96-4bdb-b288-b361227c3db0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 23.0, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f505cdde-bc96-4bdb-b288-b361227c3db0", + "Name": null + }, + "0653fa17-dfaa-48c8-8238-00d9788555a2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "0653fa17-dfaa-48c8-8238-00d9788555a2", + "Name": "W18x40", + "EdgeId": 1004 + }, + "0e094db9-767a-4414-ba25-ab1b9e786b43": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 29.5, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0e094db9-767a-4414-ba25-ab1b9e786b43", + "Name": null + }, + "b8a3d14d-3e3a-481e-aa41-698d92bfaa8a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "b8a3d14d-3e3a-481e-aa41-698d92bfaa8a", + "Name": "W18x40", + "EdgeId": 1005, + "ExternalEdgeId": 1005 + }, + "2bdaff6f-830d-48d6-8a4d-42cdd73c0399": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 29.5, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2bdaff6f-830d-48d6-8a4d-42cdd73c0399", + "Name": null + }, + "b030f520-90b0-40a5-9f74-7fe0509ebbe4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "b030f520-90b0-40a5-9f74-7fe0509ebbe4", + "Name": "W18x40", + "EdgeId": 1013 + }, + "8c10d6c6-284e-46cb-8e8e-b786e9e22b7d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8c10d6c6-284e-46cb-8e8e-b786e9e22b7d", + "Name": null + }, + "3299945c-a95d-421b-b727-272c5f30a116": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "3299945c-a95d-421b-b727-272c5f30a116", + "Name": "W18x40", + "EdgeId": 1014 + }, + "b431ab58-6ead-439d-a469-cc5c6b130be6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b431ab58-6ead-439d-a469-cc5c6b130be6", + "Name": null + }, + "b3c1e6b6-c4a4-4ed0-a261-c5746181dccd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "b3c1e6b6-c4a4-4ed0-a261-c5746181dccd", + "Name": "W18x40", + "EdgeId": 1019 + }, + "45101495-88be-44a7-9fbe-94e0136170e3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "45101495-88be-44a7-9fbe-94e0136170e3", + "Name": null + }, + "b53e6cef-503e-4360-9fc0-cb10010a6768": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "b53e6cef-503e-4360-9fc0-cb10010a6768", + "Name": "W18x40", + "EdgeId": 1020 + }, + "356238d6-5168-4196-9ba3-2c1e71b4e0e9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "356238d6-5168-4196-9ba3-2c1e71b4e0e9", + "Name": null + }, + "13183004-63cc-4007-af24-e232118246b5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "13183004-63cc-4007-af24-e232118246b5", + "Name": "W18x40", + "EdgeId": 1025 + }, + "7ed0fbee-305e-4949-aa54-c901c3b4646b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7ed0fbee-305e-4949-aa54-c901c3b4646b", + "Name": null + }, + "f211b2d4-05ea-4999-86f0-8e52af6b3424": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "f211b2d4-05ea-4999-86f0-8e52af6b3424", + "Name": "W18x40", + "EdgeId": 1026 + }, + "ada75c3f-6841-443e-9b1c-ee37bcf487ea": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ada75c3f-6841-443e-9b1c-ee37bcf487ea", + "Name": null + }, + "0ca744f2-c1d8-421d-b1f9-6ed37218fc7f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "0ca744f2-c1d8-421d-b1f9-6ed37218fc7f", + "Name": "W18x40", + "EdgeId": 1031, + "ExternalEdgeId": 1031 + }, + "e205c057-0bf7-4fe6-90fd-796ad945b239": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e205c057-0bf7-4fe6-90fd-796ad945b239", + "Name": null + }, + "ba3a81a6-17ad-4f21-b74e-5efa1af8c89a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "ba3a81a6-17ad-4f21-b74e-5efa1af8c89a", + "Name": "W18x40", + "EdgeId": 1032 + }, + "9385c7de-30af-4209-baa0-6275e49b4014": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9385c7de-30af-4209-baa0-6275e49b4014", + "Name": null + }, + "8b60a443-dd33-457b-9f4b-af6e912995e2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "8b60a443-dd33-457b-9f4b-af6e912995e2", + "Name": "W18x40", + "EdgeId": 1037 + }, + "792048f0-8bc3-4371-b0e6-686075799980": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 23.0, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "792048f0-8bc3-4371-b0e6-686075799980", + "Name": null + }, + "07ab2d04-b671-4557-9787-0be69c71fdff": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "07ab2d04-b671-4557-9787-0be69c71fdff", + "Name": "W18x40", + "EdgeId": 1038 + }, + "737aeea6-bc4f-4365-aed6-f0bc0da758b2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 29.5, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "737aeea6-bc4f-4365-aed6-f0bc0da758b2", + "Name": null + }, + "4cae0f49-a7b4-4233-a84d-2a65aa402ab2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "4cae0f49-a7b4-4233-a84d-2a65aa402ab2", + "Name": "W18x40", + "EdgeId": 1039, + "ExternalEdgeId": 1039 + }, + "9c526e10-ee01-4583-b79a-041158e88eb2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 29.5, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9c526e10-ee01-4583-b79a-041158e88eb2", + "Name": null + }, + "842db928-cb4e-4841-ba4e-e54a53e0c300": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "842db928-cb4e-4841-ba4e-e54a53e0c300", + "Name": "W18x40", + "EdgeId": 1047 + }, + "f20d1831-8a72-4e0a-94cc-39ea0a44ddfb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f20d1831-8a72-4e0a-94cc-39ea0a44ddfb", + "Name": null + }, + "7feba37c-ef3a-4fd4-b23c-7fd8b03a3d70": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "7feba37c-ef3a-4fd4-b23c-7fd8b03a3d70", + "Name": "W18x40", + "EdgeId": 1048 + }, + "4ef0579c-1165-4b8c-b54c-24a7a5f9b210": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4ef0579c-1165-4b8c-b54c-24a7a5f9b210", + "Name": null + }, + "c259c496-7702-44f8-8f86-5b622316afe3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "c259c496-7702-44f8-8f86-5b622316afe3", + "Name": "W18x40", + "EdgeId": 1053 + }, + "1e832f87-1838-4842-9287-546747bcb1d0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1e832f87-1838-4842-9287-546747bcb1d0", + "Name": null + }, + "ad05947a-43fb-4b48-9e9a-4b1d6e67df6e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "ad05947a-43fb-4b48-9e9a-4b1d6e67df6e", + "Name": "W18x40", + "EdgeId": 1054 + }, + "e2b6d25b-6e74-47b4-b902-b4edaf4d0a9c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e2b6d25b-6e74-47b4-b902-b4edaf4d0a9c", + "Name": null + }, + "fac774d4-8062-41ae-b582-c8f95063a717": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "fac774d4-8062-41ae-b582-c8f95063a717", + "Name": "W18x40", + "EdgeId": 1059 + }, + "99729961-09a4-4eed-8de8-cc8f33a2ea65": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "99729961-09a4-4eed-8de8-cc8f33a2ea65", + "Name": null + }, + "6ac34513-5421-44fc-b586-2a8940408c70": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "6ac34513-5421-44fc-b586-2a8940408c70", + "Name": "W18x40", + "EdgeId": 1060 + }, + "1c0ff0bf-a658-4707-bf4e-257a8677bcd1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1c0ff0bf-a658-4707-bf4e-257a8677bcd1", + "Name": null + }, + "6fe44760-40a1-4ee4-a425-ad47a2c4977a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "6fe44760-40a1-4ee4-a425-ad47a2c4977a", + "Name": "W18x40", + "EdgeId": 1065, + "ExternalEdgeId": 1065 + }, + "88707677-feaa-4195-aaf2-1459810c56d2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "88707677-feaa-4195-aaf2-1459810c56d2", + "Name": null + }, + "4581c9a3-4ad8-4632-b1c1-e547d19623c7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "4581c9a3-4ad8-4632-b1c1-e547d19623c7", + "Name": "W18x40", + "EdgeId": 1066 + }, + "334be1ae-722b-4936-8647-3a315193571b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "334be1ae-722b-4936-8647-3a315193571b", + "Name": null + }, + "c2b14c7e-2cda-44d5-8096-0ab4516bbad2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "c2b14c7e-2cda-44d5-8096-0ab4516bbad2", + "Name": "W18x40", + "EdgeId": 1071 + }, + "ecf7ec55-4fb0-4a40-a222-1197b0e9ab97": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 23.0, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ecf7ec55-4fb0-4a40-a222-1197b0e9ab97", + "Name": null + }, + "68c6e619-9420-41bc-abfb-5332f7ff9176": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "68c6e619-9420-41bc-abfb-5332f7ff9176", + "Name": "W18x40", + "EdgeId": 1072 + }, + "122ec086-fc79-4c98-94bd-5e3928d4e6ff": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 29.5, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "122ec086-fc79-4c98-94bd-5e3928d4e6ff", + "Name": null + }, + "7e62bb88-aba9-42a3-b3f7-c57950b3f539": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "7e62bb88-aba9-42a3-b3f7-c57950b3f539", + "Name": "W18x40", + "EdgeId": 1073, + "ExternalEdgeId": 1073 + }, + "69121062-d5c5-46b5-93fc-3a894c17da79": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 29.5, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "69121062-d5c5-46b5-93fc-3a894c17da79", + "Name": null + }, + "069e53f9-7101-47df-9ac0-7aba65d55112": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "069e53f9-7101-47df-9ac0-7aba65d55112", + "Name": "W18x40", + "EdgeId": 1081 + }, + "03cca63e-8eb4-43f0-ab09-4d0f0066eaeb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "03cca63e-8eb4-43f0-ab09-4d0f0066eaeb", + "Name": null + }, + "0146905f-d047-451c-a766-7da7adb8a634": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "0146905f-d047-451c-a766-7da7adb8a634", + "Name": "W18x40", + "EdgeId": 1082 + }, + "26610b95-a6c1-43b9-b1b9-4e069a3662d9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "26610b95-a6c1-43b9-b1b9-4e069a3662d9", + "Name": null + }, + "9c1ec1d1-3815-4d65-8520-acec9321895c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "9c1ec1d1-3815-4d65-8520-acec9321895c", + "Name": "W18x40", + "EdgeId": 1087 + }, + "5e5c948f-8d93-4025-9bc3-d2e3e1f42df9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5e5c948f-8d93-4025-9bc3-d2e3e1f42df9", + "Name": null + }, + "c165d5f3-38ba-4beb-ac9c-e7218d9ae4a5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "c165d5f3-38ba-4beb-ac9c-e7218d9ae4a5", + "Name": "W18x40", + "EdgeId": 1088 + }, + "e827e482-650d-4b1f-8599-1ab31e092d6c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e827e482-650d-4b1f-8599-1ab31e092d6c", + "Name": null + }, + "1d9cf1d2-c33b-42f6-99bf-97e67b980f87": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "1d9cf1d2-c33b-42f6-99bf-97e67b980f87", + "Name": "W18x40", + "EdgeId": 1093 + }, + "63e6b456-592e-4a89-bd27-a2d0a9fd7754": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "63e6b456-592e-4a89-bd27-a2d0a9fd7754", + "Name": null + }, + "0ae2f756-987c-44a8-b108-5f1fb90b7ec4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "0ae2f756-987c-44a8-b108-5f1fb90b7ec4", + "Name": "W18x40", + "EdgeId": 1094 + }, + "5e98b592-3177-4431-bd26-ce3eaef766c1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5e98b592-3177-4431-bd26-ce3eaef766c1", + "Name": null + }, + "2c488f87-15c2-4601-a52e-313f85d3b074": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "2c488f87-15c2-4601-a52e-313f85d3b074", + "Name": "W18x40", + "EdgeId": 1099, + "ExternalEdgeId": 1099 + }, + "686cf60d-a032-4763-9880-e161132bc47f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "686cf60d-a032-4763-9880-e161132bc47f", + "Name": null + }, + "ba8620a3-8f7d-4eed-a751-034fe965a15d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "ba8620a3-8f7d-4eed-a751-034fe965a15d", + "Name": "W18x40", + "EdgeId": 1100 + }, + "e2f50129-1b6b-4820-89a6-1fea563e9190": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e2f50129-1b6b-4820-89a6-1fea563e9190", + "Name": null + }, + "c4504696-bf38-4e1d-8052-7a36144a107b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "c4504696-bf38-4e1d-8052-7a36144a107b", + "Name": "W18x40", + "EdgeId": 1105 + }, + "c0975bdd-0fa5-4f9a-9d01-a639c21d71e1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 23.0, + "Y": -59.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c0975bdd-0fa5-4f9a-9d01-a639c21d71e1", + "Name": null + }, + "f04bd75e-2a0e-4d3d-ae8e-4916576b0c32": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "f04bd75e-2a0e-4d3d-ae8e-4916576b0c32", + "Name": "W18x40", + "EdgeId": 1106, + "ExternalEdgeId": 1106 + }, + "68432f5b-933a-417f-bc7d-8ede14e900b3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 29.5, + "Y": -59.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "68432f5b-933a-417f-bc7d-8ede14e900b3", + "Name": null + }, + "1ed05372-58db-4b76-8e17-b198ba1a47f8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "1ed05372-58db-4b76-8e17-b198ba1a47f8", + "Name": "W18x40", + "EdgeId": 1107, + "ExternalEdgeId": 1107 + }, + "734caf1a-caed-49be-a580-985d2b31de86": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 29.5, + "Y": -59.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "734caf1a-caed-49be-a580-985d2b31de86", + "Name": null + }, + "28ee7ea3-4d7b-4732-808c-aee4d80f4d29": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "28ee7ea3-4d7b-4732-808c-aee4d80f4d29", + "Name": "W18x40", + "EdgeId": 1115 + }, + "890ca6ff-89d9-46e3-b80e-135f22f863de": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -59.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "890ca6ff-89d9-46e3-b80e-135f22f863de", + "Name": null + }, + "2617c055-0f7c-496f-93b0-c56282d8dc89": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "2617c055-0f7c-496f-93b0-c56282d8dc89", + "Name": "W18x40", + "EdgeId": 1116, + "ExternalEdgeId": 1116 + }, + "0d7a00d2-fc67-4b0c-a444-f1cb107c93d1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 16.0, + "Y": -59.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0d7a00d2-fc67-4b0c-a444-f1cb107c93d1", + "Name": null + }, + "a04426ef-3811-4523-bb52-4fdc05146523": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "a04426ef-3811-4523-bb52-4fdc05146523", + "Name": "W18x40", + "EdgeId": 1121 + }, + "4730ad2e-5e56-45a8-b370-3409a00c60e2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -59.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4730ad2e-5e56-45a8-b370-3409a00c60e2", + "Name": null + }, + "9ed94cac-a200-4fe9-a48d-8cda6f79d8b9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "9ed94cac-a200-4fe9-a48d-8cda6f79d8b9", + "Name": "W18x40", + "EdgeId": 1122, + "ExternalEdgeId": 1122 + }, + "33802575-64c8-4662-b003-e57a72c61d83": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 9.0, + "Y": -59.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "33802575-64c8-4662-b003-e57a72c61d83", + "Name": null + }, + "2ab1d6ef-a307-49aa-bb63-8ee84d8d0a20": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "2ab1d6ef-a307-49aa-bb63-8ee84d8d0a20", + "Name": "W18x40", + "EdgeId": 1127 + }, + "357366fb-303b-4a27-954d-4b57371fa7ab": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -59.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "357366fb-303b-4a27-954d-4b57371fa7ab", + "Name": null + }, + "d32b8c0d-780f-47bf-a48b-175320edbcd4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d32b8c0d-780f-47bf-a48b-175320edbcd4", + "Name": "W18x40", + "EdgeId": 1128, + "ExternalEdgeId": 1128 + }, + "9ab272b5-8bd6-4999-a586-9cf9ca59b05b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 2.0, + "Y": -59.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9ab272b5-8bd6-4999-a586-9cf9ca59b05b", + "Name": null + }, + "292516de-95d8-44b1-a523-02ae4900c662": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "292516de-95d8-44b1-a523-02ae4900c662", + "Name": "W18x40", + "EdgeId": 1133, + "ExternalEdgeId": 1133 + }, + "653c69cd-6178-457f-b9ef-8dae21dfeacd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -59.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "653c69cd-6178-457f-b9ef-8dae21dfeacd", + "Name": null + }, + "20991959-31f3-4543-a74e-6b2c1faae1b5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "20991959-31f3-4543-a74e-6b2c1faae1b5", + "Name": "W18x40", + "EdgeId": 1134, + "ExternalEdgeId": 1134 + }, + "73b4469f-b20c-4663-9314-bfc38a1b686d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -59.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "73b4469f-b20c-4663-9314-bfc38a1b686d", + "Name": null + }, + "2c7eb993-4cd4-4f20-8317-9f163c87afc5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1f248147-be87-4d6a-922b-e7bf05d5f27e", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.7324, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "2c7eb993-4cd4-4f20-8317-9f163c87afc5", + "Name": "W18x40", + "EdgeId": 743, + "ExternalEdgeId": 743 + }, + "8663cb0c-7427-4bd0-8cbc-cad30654bcc2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.7324, + "Y": -0.5, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -0.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8663cb0c-7427-4bd0-8cbc-cad30654bcc2", + "Name": null + }, + "5756762a-2263-45b8-be4e-a2ad7639e4e4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5756762a-2263-45b8-be4e-a2ad7639e4e4", + "Name": "W18x40", + "EdgeId": 744, + "ExternalEdgeId": 744 + }, + "73a74312-97bc-4cef-82de-e4c2a579f925": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -0.5, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -5.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "73a74312-97bc-4cef-82de-e4c2a579f925", + "Name": null + }, + "b5b0811b-cb0b-4d76-8d5c-e01131948b0a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c9699dd2-d040-4a2c-ad98-36443b0d037a", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "b5b0811b-cb0b-4d76-8d5c-e01131948b0a", + "Name": "W18x40", + "EdgeId": 745, + "ExternalEdgeId": 745 + }, + "7b6151cf-07db-4a66-95c5-ab33ba68b16e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 20.0 + }, + "End": { + "X": 12.7324, + "Y": -5.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7b6151cf-07db-4a66-95c5-ab33ba68b16e", + "Name": null + }, + "0321b70d-cd9e-4fa7-9ac2-38ac0f08bab7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "442ea777-71e8-42e2-a88c-d741cce24ce5", + "Transform": { + "Matrix": { + "Components": [ + 0.5547001962252291, + 0.8320502943378437, + 0.0, + 9.7324, + -0.8320502943378437, + 0.5547001962252291, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "0321b70d-cd9e-4fa7-9ac2-38ac0f08bab7", + "Name": "W18x40", + "EdgeId": 746, + "ExternalEdgeId": 746 + }, + "d3d26f53-ed8c-4b28-9a8f-275ea2d5666f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.7324, + "Y": -0.5, + "Z": 20.0 + }, + "End": { + "X": 12.7324, + "Y": -5.000000000000001, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d3d26f53-ed8c-4b28-9a8f-275ea2d5666f", + "Name": null + }, + "b043f409-ee4d-4888-a089-0bdd02a18c85": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "b043f409-ee4d-4888-a089-0bdd02a18c85", + "Name": "W18x40", + "EdgeId": 756, + "ExternalEdgeId": 756 + }, + "38e3f2b7-efce-40ca-b287-764275ff732b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -0.5, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -0.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "38e3f2b7-efce-40ca-b287-764275ff732b", + "Name": null + }, + "5132d139-53df-47fc-b4e0-01402b2ff457": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5132d139-53df-47fc-b4e0-01402b2ff457", + "Name": "W18x40", + "EdgeId": 757, + "ExternalEdgeId": 757 + }, + "cf827c03-1d40-48f8-81ed-cbd2a689b310": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -0.5, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -5.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cf827c03-1d40-48f8-81ed-cbd2a689b310", + "Name": null + }, + "bce2b108-d4f7-480a-8ec5-f41e537e159c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "bce2b108-d4f7-480a-8ec5-f41e537e159c", + "Name": "W18x40", + "EdgeId": 758, + "ExternalEdgeId": 758 + }, + "6ff41ea2-caa9-4a70-a098-1801a987e5f0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -5.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6ff41ea2-caa9-4a70-a098-1801a987e5f0", + "Name": null + }, + "38b34cb0-298c-4166-9d59-ded344b19df4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "38b34cb0-298c-4166-9d59-ded344b19df4", + "Name": "W18x40", + "EdgeId": 766, + "ExternalEdgeId": 766 + }, + "c0ef46fb-af19-43c0-aedb-14bcf36be031": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -0.5, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -0.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c0ef46fb-af19-43c0-aedb-14bcf36be031", + "Name": null + }, + "d7c4da69-c1c2-4fbc-bd21-d4809a0ef5fe": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -0.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "d7c4da69-c1c2-4fbc-bd21-d4809a0ef5fe", + "Name": "W18x40", + "EdgeId": 767, + "ExternalEdgeId": 767 + }, + "3ed175cb-b5d1-49db-94a7-b77b70556d25": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -0.5, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -5.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3ed175cb-b5d1-49db-94a7-b77b70556d25", + "Name": null + }, + "cb4583df-2059-49fb-a900-929869c892ee": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "cb4583df-2059-49fb-a900-929869c892ee", + "Name": "W18x40", + "EdgeId": 768, + "ExternalEdgeId": 768 + }, + "828084ab-62c7-4ab4-b643-dbe6d0c1e89f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -5.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -5.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "828084ab-62c7-4ab4-b643-dbe6d0c1e89f", + "Name": null + }, + "71ae6296-8777-40f8-82d8-8ee0bd2b089f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e5972626-f896-4b80-b62f-fa93a8846507", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -9.9014, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "71ae6296-8777-40f8-82d8-8ee0bd2b089f", + "Name": "W18x40", + "EdgeId": 777, + "ExternalEdgeId": 777 + }, + "7788f3e8-a530-4b70-b586-a3bf3b4aad13": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -9.9014, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7788f3e8-a530-4b70-b586-a3bf3b4aad13", + "Name": null + }, + "ee9be891-f9c8-4f9a-978a-97dc932ff571": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "49319ac3-7aa7-4cea-aa5e-8a40ef05e1ba", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ee9be891-f9c8-4f9a-978a-97dc932ff571", + "Name": "W18x40", + "EdgeId": 778, + "ExternalEdgeId": 778 + }, + "950cb672-8034-4cba-b1bc-2d775e62da27": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 16.06574, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "950cb672-8034-4cba-b1bc-2d775e62da27", + "Name": null + }, + "2473e0ee-e5ae-488c-ba80-d6a29fd67dcb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "4dc79d1f-76cc-4eac-ba1d-90c0929442e9", + "Transform": { + "Matrix": { + "Components": [ + 0.5547391419896724, + 0.8320243291782772, + 0.0, + 16.0, + -0.8320243291782772, + 0.5547391419896724, + 0.0, + -9.9014, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "2473e0ee-e5ae-488c-ba80-d6a29fd67dcb", + "Name": "W18x40", + "EdgeId": 779, + "ExternalEdgeId": 779 + }, + "9c19123b-a9b1-485d-9566-dbdbd9216efb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -9.9014, + "Z": 20.0 + }, + "End": { + "X": 16.06574, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9c19123b-a9b1-485d-9566-dbdbd9216efb", + "Name": null + }, + "bb40d15e-e079-4dc2-93de-e18ceceaecad": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "39b28bf6-91db-4c72-b448-44bed8dc6bc0", + "Transform": { + "Matrix": { + "Components": [ + 0.554700196225229, + 0.8320502943378437, + 0.0, + 12.7324, + -0.8320502943378437, + 0.554700196225229, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "bb40d15e-e079-4dc2-93de-e18ceceaecad", + "Name": "W18x40", + "EdgeId": 787, + "ExternalEdgeId": 787 + }, + "34a8d463-fc09-4115-a43c-0ee0b975aef4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.7324, + "Y": -5.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -9.9014, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "34a8d463-fc09-4115-a43c-0ee0b975aef4", + "Name": null + }, + "65981e7e-d5a1-4313-8676-b35279a176bc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "65981e7e-d5a1-4313-8676-b35279a176bc", + "Name": "W18x40", + "EdgeId": 788, + "ExternalEdgeId": 788 + }, + "ac7e3056-82e6-4587-8fe7-735f65926c34": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -5.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ac7e3056-82e6-4587-8fe7-735f65926c34", + "Name": null + }, + "41822c49-718f-43a8-a3ea-d357d91566aa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "41822c49-718f-43a8-a3ea-d357d91566aa", + "Name": "W18x40", + "EdgeId": 789, + "ExternalEdgeId": 789 + }, + "243f6eeb-15f9-43e6-bd7a-6dfbfccde7d4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "243f6eeb-15f9-43e6-bd7a-6dfbfccde7d4", + "Name": null + }, + "e218b82a-f3fc-4467-b5ef-38a4da62bca2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "e218b82a-f3fc-4467-b5ef-38a4da62bca2", + "Name": "W18x40", + "EdgeId": 794, + "ExternalEdgeId": 794 + }, + "6cbf7deb-dae4-41d0-8e8d-82c3260a2430": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -5.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6cbf7deb-dae4-41d0-8e8d-82c3260a2430", + "Name": null + }, + "da2dc2c2-0df2-42f2-b2d7-b929ad3d3d53": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "da2dc2c2-0df2-42f2-b2d7-b929ad3d3d53", + "Name": "W18x40", + "EdgeId": 795, + "ExternalEdgeId": 795 + }, + "52aea727-371e-4797-b661-b7889feef359": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "52aea727-371e-4797-b661-b7889feef359", + "Name": null + }, + "e20f78b6-c5f5-46c6-b47d-ebd49576e288": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "e20f78b6-c5f5-46c6-b47d-ebd49576e288", + "Name": "W18x40", + "EdgeId": 800, + "ExternalEdgeId": 800 + }, + "44bff635-6507-4c63-afbb-56351081e556": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -5.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "44bff635-6507-4c63-afbb-56351081e556", + "Name": null + }, + "3e33cffe-9621-4dd3-a2fa-97a6ee0c80ef": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "3e33cffe-9621-4dd3-a2fa-97a6ee0c80ef", + "Name": "W18x40", + "EdgeId": 801, + "ExternalEdgeId": 801 + }, + "7ae1d603-4118-485e-969b-f0c500108f0b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7ae1d603-4118-485e-969b-f0c500108f0b", + "Name": null + }, + "f665b099-8d3f-4f2f-8efb-78684869ee9a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "f665b099-8d3f-4f2f-8efb-78684869ee9a", + "Name": "W18x40", + "EdgeId": 808, + "ExternalEdgeId": 808 + }, + "65656ef1-fabc-42a7-950b-3cbb77315098": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "65656ef1-fabc-42a7-950b-3cbb77315098", + "Name": null + }, + "62b1a0fd-51db-4848-bc63-a54b510683d3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "0b85760d-9483-48e4-99ef-f0158063192f", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "62b1a0fd-51db-4848-bc63-a54b510683d3", + "Name": "W18x40", + "EdgeId": 809, + "ExternalEdgeId": 809 + }, + "b78ebffa-56bc-4113-b30a-f8bf8ee25d50": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 19.39906, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b78ebffa-56bc-4113-b30a-f8bf8ee25d50", + "Name": null + }, + "ff320985-20bc-4322-838c-a8268cbb31e7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2d8372e3-18d6-43f5-b8a6-ca8af44199e8", + "Transform": { + "Matrix": { + "Components": [ + 0.5546986601295418, + 0.8320513183995871, + 0.0, + 16.06574, + -0.8320513183995871, + 0.5546986601295418, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ff320985-20bc-4322-838c-a8268cbb31e7", + "Name": "W18x40", + "EdgeId": 810, + "ExternalEdgeId": 810 + }, + "d3883d30-ddc0-413b-be63-9138d286a076": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.06574, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 19.39906, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d3883d30-ddc0-413b-be63-9138d286a076", + "Name": null + }, + "4a518308-397c-4ffd-85d2-a0cf7fc869a8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "4a518308-397c-4ffd-85d2-a0cf7fc869a8", + "Name": "W18x40", + "EdgeId": 816, + "ExternalEdgeId": 816 + }, + "bfbd8a52-9670-4628-8ffd-15f8473f936f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bfbd8a52-9670-4628-8ffd-15f8473f936f", + "Name": null + }, + "4ccc9ba0-0d14-4a09-824f-17be83ece5fb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "4ccc9ba0-0d14-4a09-824f-17be83ece5fb", + "Name": "W18x40", + "EdgeId": 817, + "ExternalEdgeId": 817 + }, + "6e347141-937a-4777-9759-33424e9ff420": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6e347141-937a-4777-9759-33424e9ff420", + "Name": null + }, + "95814d6a-59f3-4dc7-b58f-11046e48fd77": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "95814d6a-59f3-4dc7-b58f-11046e48fd77", + "Name": "W18x40", + "EdgeId": 822, + "ExternalEdgeId": 822 + }, + "89d6c147-b368-46ab-a23c-8ce956c9108d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "89d6c147-b368-46ab-a23c-8ce956c9108d", + "Name": null + }, + "5661d36f-32ca-4590-8f6e-8a7c093db3d7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5661d36f-32ca-4590-8f6e-8a7c093db3d7", + "Name": "W18x40", + "EdgeId": 823, + "ExternalEdgeId": 823 + }, + "6ff4922b-1361-470e-bdde-889202ccfad9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6ff4922b-1361-470e-bdde-889202ccfad9", + "Name": null + }, + "ecf1ed6e-0aae-4cdd-9970-e6844cd79632": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ecf1ed6e-0aae-4cdd-9970-e6844cd79632", + "Name": "W18x40", + "EdgeId": 828, + "ExternalEdgeId": 828 + }, + "f6d9d95e-ed0a-46d3-aa9d-46fd12655481": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f6d9d95e-ed0a-46d3-aa9d-46fd12655481", + "Name": null + }, + "3adb9c36-6df2-46b9-beeb-cc9f9476a6a1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "3adb9c36-6df2-46b9-beeb-cc9f9476a6a1", + "Name": "W18x40", + "EdgeId": 829, + "ExternalEdgeId": 829 + }, + "721b5f74-a61a-479d-a3c4-80357ca13269": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "721b5f74-a61a-479d-a3c4-80357ca13269", + "Name": null + }, + "bedc85d6-d54d-4c4a-9eda-77a124c04fdf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "bedc85d6-d54d-4c4a-9eda-77a124c04fdf", + "Name": "W18x40", + "EdgeId": 836, + "ExternalEdgeId": 836 + }, + "6408316b-1e56-41e8-9d1d-e4dfb779b7bf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6408316b-1e56-41e8-9d1d-e4dfb779b7bf", + "Name": null + }, + "a342edcf-f7fa-4ec7-9dc5-6e3179058dc9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "7cd6c7d4-992c-4217-9c1f-ac7c9170b25c", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "a342edcf-f7fa-4ec7-9dc5-6e3179058dc9", + "Name": "W18x40", + "EdgeId": 837, + "ExternalEdgeId": 837 + }, + "a65c9b1a-22e6-496c-808f-637dc2dc29f0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 22.7324, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a65c9b1a-22e6-496c-808f-637dc2dc29f0", + "Name": null + }, + "3b72397b-b999-4167-b563-85082306e283": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "f1f4efee-0d74-4a09-8341-e6127bd83748", + "Transform": { + "Matrix": { + "Components": [ + 0.5547009642709457, + 0.832049782306854, + 0.0, + 19.39906, + -0.832049782306854, + 0.5547009642709457, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "3b72397b-b999-4167-b563-85082306e283", + "Name": "W18x40", + "EdgeId": 838, + "ExternalEdgeId": 838 + }, + "77d9f8aa-d428-4c21-93df-66a7c3cb4e7b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.39906, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 22.7324, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "77d9f8aa-d428-4c21-93df-66a7c3cb4e7b", + "Name": null + }, + "d0e7a827-0007-49c1-b7bd-19876abd9664": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "d0e7a827-0007-49c1-b7bd-19876abd9664", + "Name": "W18x40", + "EdgeId": 844, + "ExternalEdgeId": 844 + }, + "a7c2923a-7f60-44ff-9140-ad25c85b6c02": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a7c2923a-7f60-44ff-9140-ad25c85b6c02", + "Name": null + }, + "0ce428b1-7ae5-48df-a70a-c208c6144f46": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "0ce428b1-7ae5-48df-a70a-c208c6144f46", + "Name": "W18x40", + "EdgeId": 845, + "ExternalEdgeId": 845 + }, + "60d0cc29-63f4-4bbb-8120-75671843a2f9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "60d0cc29-63f4-4bbb-8120-75671843a2f9", + "Name": null + }, + "c3d4d65b-35a7-4b46-a6c6-ade3ce953ad6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "c3d4d65b-35a7-4b46-a6c6-ade3ce953ad6", + "Name": "W18x40", + "EdgeId": 850, + "ExternalEdgeId": 850 + }, + "f52dc20f-c60e-49c6-bea8-f80bd1f74321": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f52dc20f-c60e-49c6-bea8-f80bd1f74321", + "Name": null + }, + "94246612-0f92-4187-8cd0-d6cd6415d402": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "94246612-0f92-4187-8cd0-d6cd6415d402", + "Name": "W18x40", + "EdgeId": 851, + "ExternalEdgeId": 851 + }, + "85975820-fc2b-4c25-ad99-5b4d3d8f1be5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "85975820-fc2b-4c25-ad99-5b4d3d8f1be5", + "Name": null + }, + "8c8b161d-d579-44e1-a9a1-3659d664ac19": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "8c8b161d-d579-44e1-a9a1-3659d664ac19", + "Name": "W18x40", + "EdgeId": 856, + "ExternalEdgeId": 856 + }, + "459d04bf-a8b5-4434-ace4-f0071301e4f5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "459d04bf-a8b5-4434-ace4-f0071301e4f5", + "Name": null + }, + "0430ef17-e21e-44a8-88d3-9a4d4cafb4d8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "0430ef17-e21e-44a8-88d3-9a4d4cafb4d8", + "Name": "W18x40", + "EdgeId": 857, + "ExternalEdgeId": 857 + }, + "b5ad1334-5949-49d1-a1f9-585b5099a88d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b5ad1334-5949-49d1-a1f9-585b5099a88d", + "Name": null + }, + "30ffb01c-8106-450b-a0f5-217ee9a49c3c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d4da724b-0d2f-4bd3-acf2-5d3697adf278", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -20.4014, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "30ffb01c-8106-450b-a0f5-217ee9a49c3c", + "Name": "W18x40", + "EdgeId": 865, + "ExternalEdgeId": 865 + }, + "444bcd1b-af72-442c-91fe-3fa51a086344": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -20.4014, + "Z": 20.0 + }, + "End": { + "X": 23.0, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "444bcd1b-af72-442c-91fe-3fa51a086344", + "Name": null + }, + "34ac1015-8fa2-458c-88b4-9c3a44a410ad": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b110d957-b9da-4137-9c21-3ec50b79b33e", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "34ac1015-8fa2-458c-88b4-9c3a44a410ad", + "Name": "W18x40", + "EdgeId": 866, + "ExternalEdgeId": 866 + }, + "63be612e-2c6c-45e3-a336-67f869575bdf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 26.06574, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "63be612e-2c6c-45e3-a336-67f869575bdf", + "Name": null + }, + "a17f5d18-cd51-4d21-8264-1bbde173aade": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e0c50391-a50c-417e-a648-1d8139e40aa4", + "Transform": { + "Matrix": { + "Components": [ + 0.5547010313116194, + 0.8320497376129783, + 0.0, + 23.0, + -0.8320497376129783, + 0.5547010313116194, + 0.0, + -20.4014, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "a17f5d18-cd51-4d21-8264-1bbde173aade", + "Name": "W18x40", + "EdgeId": 867, + "ExternalEdgeId": 867 + }, + "e9284f9c-d88c-4bb6-8bdc-4ed852eb477a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -20.4014, + "Z": 20.0 + }, + "End": { + "X": 26.06574, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e9284f9c-d88c-4bb6-8bdc-4ed852eb477a", + "Name": null + }, + "693cdb0c-e4cd-4bb6-baf2-f3e754bcd5b0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "3bf2c337-826f-4c12-b4d9-a345602f7c71", + "Transform": { + "Matrix": { + "Components": [ + 0.5547001962252325, + 0.8320502943378414, + 0.0, + 22.7324, + -0.8320502943378414, + 0.5547001962252325, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "693cdb0c-e4cd-4bb6-baf2-f3e754bcd5b0", + "Name": "W18x40", + "EdgeId": 875, + "ExternalEdgeId": 875 + }, + "961c967d-6fe0-42eb-a8a0-12a8e4b83c17": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 22.7324, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 23.0, + "Y": -20.4014, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "961c967d-6fe0-42eb-a8a0-12a8e4b83c17", + "Name": null + }, + "5ccb4c9e-2a53-4d93-a600-e6bc4cbc0317": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5ccb4c9e-2a53-4d93-a600-e6bc4cbc0317", + "Name": "W18x40", + "EdgeId": 876, + "ExternalEdgeId": 876 + }, + "a2a24add-5406-4e8c-9719-b0c2b6fc564d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a2a24add-5406-4e8c-9719-b0c2b6fc564d", + "Name": null + }, + "66b9b86b-606c-48cb-aa7d-e3d991825009": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "66b9b86b-606c-48cb-aa7d-e3d991825009", + "Name": "W18x40", + "EdgeId": 877, + "ExternalEdgeId": 877 + }, + "10904fb9-2f15-44f2-a0bf-e0414d04cdb4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "10904fb9-2f15-44f2-a0bf-e0414d04cdb4", + "Name": null + }, + "36be7197-ee41-4c8f-8a36-421985abc6dd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "36be7197-ee41-4c8f-8a36-421985abc6dd", + "Name": "W18x40", + "EdgeId": 882, + "ExternalEdgeId": 882 + }, + "e2806254-740d-4b80-9b03-2f18691629d7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e2806254-740d-4b80-9b03-2f18691629d7", + "Name": null + }, + "28f31813-d4bf-4f0e-b249-1e2a82cf87fd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "28f31813-d4bf-4f0e-b249-1e2a82cf87fd", + "Name": "W18x40", + "EdgeId": 883, + "ExternalEdgeId": 883 + }, + "b9aa9f70-f29e-496f-8fde-c5c3771b5a56": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b9aa9f70-f29e-496f-8fde-c5c3771b5a56", + "Name": null + }, + "623831a9-1c60-4d67-a71c-2e3d6f4e502c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "623831a9-1c60-4d67-a71c-2e3d6f4e502c", + "Name": "W18x40", + "EdgeId": 888, + "ExternalEdgeId": 888 + }, + "05a16553-518c-45dd-a305-c7f6b9c04bb2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "05a16553-518c-45dd-a305-c7f6b9c04bb2", + "Name": null + }, + "92a9090a-4ba7-47c4-aff6-2417b3ba43a6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "92a9090a-4ba7-47c4-aff6-2417b3ba43a6", + "Name": "W18x40", + "EdgeId": 889, + "ExternalEdgeId": 889 + }, + "62649b46-d79e-4a58-9d57-fa27f1a8214e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "62649b46-d79e-4a58-9d57-fa27f1a8214e", + "Name": null + }, + "92f8f5e9-f770-4ec5-851e-d485a3f0f77f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "92f8f5e9-f770-4ec5-851e-d485a3f0f77f", + "Name": "W18x40", + "EdgeId": 894, + "ExternalEdgeId": 894 + }, + "f271ffb4-48d9-4f9d-81ad-f02950f9dd13": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f271ffb4-48d9-4f9d-81ad-f02950f9dd13", + "Name": null + }, + "b7cab596-9e32-4caf-a586-96421f96a748": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "b7cab596-9e32-4caf-a586-96421f96a748", + "Name": "W18x40", + "EdgeId": 895, + "ExternalEdgeId": 895 + }, + "70c077ab-9d1d-40e1-8d5e-e06581dc9cbd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "70c077ab-9d1d-40e1-8d5e-e06581dc9cbd", + "Name": null + }, + "7566054d-9770-4a02-a74b-568fd5c011ab": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "7566054d-9770-4a02-a74b-568fd5c011ab", + "Name": "W18x40", + "EdgeId": 902, + "ExternalEdgeId": 902 + }, + "6d949604-4db6-48a8-a715-238cc841e241": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 23.0, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6d949604-4db6-48a8-a715-238cc841e241", + "Name": null + }, + "fcb071dd-e00b-4d80-8f28-d8b678c4e22c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "9b7bdf59-55a7-4daf-9c50-86da88398d8a", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "fcb071dd-e00b-4d80-8f28-d8b678c4e22c", + "Name": "W18x40", + "EdgeId": 903, + "ExternalEdgeId": 903 + }, + "b4131bed-9735-4b2a-93a4-db8400dc7cf1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 29.39906, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b4131bed-9735-4b2a-93a4-db8400dc7cf1", + "Name": null + }, + "32993163-28bf-446d-bc41-e38dc63dcf63": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2d8372e3-18d6-43f5-b8a6-ca8af44199e8", + "Transform": { + "Matrix": { + "Components": [ + 0.5546986601295418, + 0.8320513183995871, + 0.0, + 26.06574, + -0.8320513183995871, + 0.5546986601295418, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "32993163-28bf-446d-bc41-e38dc63dcf63", + "Name": "W18x40", + "EdgeId": 904, + "ExternalEdgeId": 904 + }, + "cebc0a4c-75a5-4f98-bc26-627264d2d24c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.06574, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 29.39906, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cebc0a4c-75a5-4f98-bc26-627264d2d24c", + "Name": null + }, + "714355d3-4abe-4fbd-9d7c-ca868550ca9d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "714355d3-4abe-4fbd-9d7c-ca868550ca9d", + "Name": "W18x40", + "EdgeId": 910, + "ExternalEdgeId": 910 + }, + "8837d5be-0438-4d00-a44f-d56165d5f86b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8837d5be-0438-4d00-a44f-d56165d5f86b", + "Name": null + }, + "0122a9d8-8a9c-44f4-9ed2-973ff1371324": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "0122a9d8-8a9c-44f4-9ed2-973ff1371324", + "Name": "W18x40", + "EdgeId": 911, + "ExternalEdgeId": 911 + }, + "368d544b-1bc0-4772-afaa-4fa96f0bf5d6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "368d544b-1bc0-4772-afaa-4fa96f0bf5d6", + "Name": null + }, + "12b5ec13-41b5-4e8a-bd0c-f3685a74b648": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "12b5ec13-41b5-4e8a-bd0c-f3685a74b648", + "Name": "W18x40", + "EdgeId": 916, + "ExternalEdgeId": 916 + }, + "be1eea6c-5381-4a49-9607-4e47e5a12b78": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "be1eea6c-5381-4a49-9607-4e47e5a12b78", + "Name": null + }, + "ffd2e42e-eba8-4dae-9be3-4a08fd21717b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ffd2e42e-eba8-4dae-9be3-4a08fd21717b", + "Name": "W18x40", + "EdgeId": 917, + "ExternalEdgeId": 917 + }, + "d31d51e9-ce64-4226-a448-637d7c7aee90": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d31d51e9-ce64-4226-a448-637d7c7aee90", + "Name": null + }, + "e70f7a79-8204-45b6-b93e-c463fef45005": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "e70f7a79-8204-45b6-b93e-c463fef45005", + "Name": "W18x40", + "EdgeId": 922, + "ExternalEdgeId": 922 + }, + "79ab0755-68bb-47da-8548-4b6c81777e0f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "79ab0755-68bb-47da-8548-4b6c81777e0f", + "Name": null + }, + "2674f30b-a4de-4f3d-820f-efd5a19ef366": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "2674f30b-a4de-4f3d-820f-efd5a19ef366", + "Name": "W18x40", + "EdgeId": 923, + "ExternalEdgeId": 923 + }, + "14762112-2644-420c-bac2-15118c85b1c5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "14762112-2644-420c-bac2-15118c85b1c5", + "Name": null + }, + "5f898749-d865-43f3-94e6-f4dfe98ecb80": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5f898749-d865-43f3-94e6-f4dfe98ecb80", + "Name": "W18x40", + "EdgeId": 928, + "ExternalEdgeId": 928 + }, + "ac5a5eac-2ebe-4ed7-acda-a5906bc8c520": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ac5a5eac-2ebe-4ed7-acda-a5906bc8c520", + "Name": null + }, + "8ba3fc5e-c4f7-401b-a83a-8b3fef431bfc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "8ba3fc5e-c4f7-401b-a83a-8b3fef431bfc", + "Name": "W18x40", + "EdgeId": 929, + "ExternalEdgeId": 929 + }, + "ef3034db-548f-410f-90cd-b9338048aede": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ef3034db-548f-410f-90cd-b9338048aede", + "Name": null + }, + "53296270-fce1-41bd-9d78-3f9dbb774191": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "34bbf385-46d3-47bf-83a0-3a400bd05173", + "Transform": { + "Matrix": { + "Components": [ + 0.5547255602613056, + 0.8320333844220319, + 0.0, + 29.39906, + -0.8320333844220319, + 0.5547255602613056, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "53296270-fce1-41bd-9d78-3f9dbb774191", + "Name": "W18x40", + "EdgeId": 938, + "ExternalEdgeId": 938 + }, + "9f54c068-1b29-4670-8d39-d3bdf2135f77": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.39906, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 29.5, + "Y": -30.1514, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9f54c068-1b29-4670-8d39-d3bdf2135f77", + "Name": null + }, + "721061e9-d727-4962-8bfd-c5927f6ffdf3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "721061e9-d727-4962-8bfd-c5927f6ffdf3", + "Name": "W18x40", + "EdgeId": 939, + "ExternalEdgeId": 939 + }, + "7c86758a-223d-4005-8e05-a70915727041": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 23.0, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7c86758a-223d-4005-8e05-a70915727041", + "Name": null + }, + "e24785cc-7120-4edb-8430-7a59883bfe30": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "e24785cc-7120-4edb-8430-7a59883bfe30", + "Name": "W18x40", + "EdgeId": 940, + "ExternalEdgeId": 940 + }, + "2d2b99f4-b82b-4524-831d-5c24d3a1cddc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 29.5, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2d2b99f4-b82b-4524-831d-5c24d3a1cddc", + "Name": null + }, + "fdfff1e4-2107-47fe-b6b4-00f44348b518": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2984e71a-f669-4201-8e3b-e26ab9529910", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -30.1514, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "fdfff1e4-2107-47fe-b6b4-00f44348b518", + "Name": "W18x40", + "EdgeId": 941, + "ExternalEdgeId": 941 + }, + "fbb81037-5754-4d19-8cc3-2b070c916858": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -30.1514, + "Z": 20.0 + }, + "End": { + "X": 29.5, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fbb81037-5754-4d19-8cc3-2b070c916858", + "Name": null + }, + "c59fd964-46f1-47dd-b042-1357c366eeca": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "c59fd964-46f1-47dd-b042-1357c366eeca", + "Name": "W18x40", + "EdgeId": 948, + "ExternalEdgeId": 948 + }, + "e5fa3f8a-f2d9-4409-af93-183d7fef4b13": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e5fa3f8a-f2d9-4409-af93-183d7fef4b13", + "Name": null + }, + "ac1a3fe0-2302-4749-906a-b07f147d4c48": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ac1a3fe0-2302-4749-906a-b07f147d4c48", + "Name": "W18x40", + "EdgeId": 949, + "ExternalEdgeId": 949 + }, + "ea6ffe64-4db0-4878-a2f1-5b42902c3472": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ea6ffe64-4db0-4878-a2f1-5b42902c3472", + "Name": null + }, + "587341cb-ec42-431e-a66a-ec5f6a9ba78a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "587341cb-ec42-431e-a66a-ec5f6a9ba78a", + "Name": "W18x40", + "EdgeId": 954, + "ExternalEdgeId": 954 + }, + "487b1b5b-84c1-4cf2-b777-6ce3c2595f1e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "487b1b5b-84c1-4cf2-b777-6ce3c2595f1e", + "Name": null + }, + "b62c2d59-e03e-49de-a2b9-f9a4ca6bc863": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "b62c2d59-e03e-49de-a2b9-f9a4ca6bc863", + "Name": "W18x40", + "EdgeId": 955, + "ExternalEdgeId": 955 + }, + "b64bff93-2329-42be-8d9c-c9a51a4d68be": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b64bff93-2329-42be-8d9c-c9a51a4d68be", + "Name": null + }, + "654c062f-a3d5-4646-940b-d16b68e75ac7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "654c062f-a3d5-4646-940b-d16b68e75ac7", + "Name": "W18x40", + "EdgeId": 960, + "ExternalEdgeId": 960 + }, + "c64b40cd-45ea-4411-878c-f96656f3d512": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c64b40cd-45ea-4411-878c-f96656f3d512", + "Name": null + }, + "ae39f61f-1e45-4f2b-bb05-dff285aa5231": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ae39f61f-1e45-4f2b-bb05-dff285aa5231", + "Name": "W18x40", + "EdgeId": 961, + "ExternalEdgeId": 961 + }, + "8adba4b3-ce06-47f6-92f0-74792f86a334": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8adba4b3-ce06-47f6-92f0-74792f86a334", + "Name": null + }, + "9a32a250-7090-4ece-8064-e5d566ef045a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "9a32a250-7090-4ece-8064-e5d566ef045a", + "Name": "W18x40", + "EdgeId": 966, + "ExternalEdgeId": 966 + }, + "6738b108-a109-45c5-b0cf-ea19feaeca6a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6738b108-a109-45c5-b0cf-ea19feaeca6a", + "Name": null + }, + "8a4d5797-fc3e-4e1c-a76d-f25a45aef2b9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "8a4d5797-fc3e-4e1c-a76d-f25a45aef2b9", + "Name": "W18x40", + "EdgeId": 967, + "ExternalEdgeId": 967 + }, + "5bb43beb-dedb-4d48-80b5-566a5035974c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5bb43beb-dedb-4d48-80b5-566a5035974c", + "Name": null + }, + "c1b9a3e3-87ea-4d35-9c10-dde0976a3a56": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "c1b9a3e3-87ea-4d35-9c10-dde0976a3a56", + "Name": "W18x40", + "EdgeId": 974, + "ExternalEdgeId": 974 + }, + "d1b989fa-cdc4-4f82-a779-dffd764cab77": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 23.0, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d1b989fa-cdc4-4f82-a779-dffd764cab77", + "Name": null + }, + "8422fc73-f654-40be-92ef-b47bfa083722": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "8422fc73-f654-40be-92ef-b47bfa083722", + "Name": "W18x40", + "EdgeId": 975, + "ExternalEdgeId": 975 + }, + "32847fe1-8fce-421e-978f-067f16b4cbe7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 29.5, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "32847fe1-8fce-421e-978f-067f16b4cbe7", + "Name": null + }, + "a3aed147-8a79-4e25-90da-ceed483bfb0a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "a3aed147-8a79-4e25-90da-ceed483bfb0a", + "Name": "W18x40", + "EdgeId": 976, + "ExternalEdgeId": 976 + }, + "62eba8bb-7ed6-40b9-b40a-3aede2fe15cd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 29.5, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "62eba8bb-7ed6-40b9-b40a-3aede2fe15cd", + "Name": null + }, + "1338175c-45d5-48f8-b3cd-5bfcce3a26be": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "1338175c-45d5-48f8-b3cd-5bfcce3a26be", + "Name": "W18x40", + "EdgeId": 982, + "ExternalEdgeId": 982 + }, + "83d5bbae-24a5-4ccb-bdf5-fefe56a4da96": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "83d5bbae-24a5-4ccb-bdf5-fefe56a4da96", + "Name": null + }, + "5ba70cc0-1749-498a-ba7c-a113c849c0ee": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5ba70cc0-1749-498a-ba7c-a113c849c0ee", + "Name": "W18x40", + "EdgeId": 983, + "ExternalEdgeId": 983 + }, + "fda51021-19ea-47c2-89d8-bebefae64ef7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fda51021-19ea-47c2-89d8-bebefae64ef7", + "Name": null + }, + "aee751e8-23b3-43b6-ad64-46e454aa4e01": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "aee751e8-23b3-43b6-ad64-46e454aa4e01", + "Name": "W18x40", + "EdgeId": 988, + "ExternalEdgeId": 988 + }, + "b3be5363-5298-4e00-9c9a-d29bd855b1ba": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b3be5363-5298-4e00-9c9a-d29bd855b1ba", + "Name": null + }, + "00cd6d38-81c0-4546-ae18-577def7829ac": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "00cd6d38-81c0-4546-ae18-577def7829ac", + "Name": "W18x40", + "EdgeId": 989, + "ExternalEdgeId": 989 + }, + "6f10f44f-4bea-4415-97bc-75f6a29ead0f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6f10f44f-4bea-4415-97bc-75f6a29ead0f", + "Name": null + }, + "9331dc8b-e289-49b1-a173-ddb610239644": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "9331dc8b-e289-49b1-a173-ddb610239644", + "Name": "W18x40", + "EdgeId": 994, + "ExternalEdgeId": 994 + }, + "5d25370a-d634-49b0-98e4-3c3a643493a3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5d25370a-d634-49b0-98e4-3c3a643493a3", + "Name": null + }, + "d3303415-fd73-4c95-ba14-0d4a738f3710": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "d3303415-fd73-4c95-ba14-0d4a738f3710", + "Name": "W18x40", + "EdgeId": 995, + "ExternalEdgeId": 995 + }, + "9ff47446-ad73-475c-bd69-29d9910f2eee": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9ff47446-ad73-475c-bd69-29d9910f2eee", + "Name": null + }, + "f7fd7ce1-e38d-4262-a535-65297ffec748": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "f7fd7ce1-e38d-4262-a535-65297ffec748", + "Name": "W18x40", + "EdgeId": 1000, + "ExternalEdgeId": 1000 + }, + "afba6cb7-2cb7-45cd-94c4-89cb9febc67f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "afba6cb7-2cb7-45cd-94c4-89cb9febc67f", + "Name": null + }, + "3400de3a-be17-43a5-b35e-2e24a05a60d6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "3400de3a-be17-43a5-b35e-2e24a05a60d6", + "Name": "W18x40", + "EdgeId": 1001, + "ExternalEdgeId": 1001 + }, + "528c9834-f0e7-4420-9a89-e3e25eeb63c5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "528c9834-f0e7-4420-9a89-e3e25eeb63c5", + "Name": null + }, + "ce9d7ceb-1e34-48d1-8dc3-e065820bf4ca": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ce9d7ceb-1e34-48d1-8dc3-e065820bf4ca", + "Name": "W18x40", + "EdgeId": 1008, + "ExternalEdgeId": 1008 + }, + "7f1188b8-b857-498c-ac4f-0c0b0e7dfa5c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 23.0, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7f1188b8-b857-498c-ac4f-0c0b0e7dfa5c", + "Name": null + }, + "0a728c89-ee3d-4e8c-a333-f7fcf52c83ef": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "0a728c89-ee3d-4e8c-a333-f7fcf52c83ef", + "Name": "W18x40", + "EdgeId": 1009, + "ExternalEdgeId": 1009 + }, + "e735e45f-1105-450c-8196-70eaf295de28": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 29.5, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e735e45f-1105-450c-8196-70eaf295de28", + "Name": null + }, + "01ad8d79-bdc1-4996-82c8-f12caffcca7c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "01ad8d79-bdc1-4996-82c8-f12caffcca7c", + "Name": "W18x40", + "EdgeId": 1010, + "ExternalEdgeId": 1010 + }, + "74dbfe53-ed7c-45d0-84b2-4f8102e7a988": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 29.5, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "74dbfe53-ed7c-45d0-84b2-4f8102e7a988", + "Name": null + }, + "d3b77ff3-da08-4bfc-8455-67982cb68b91": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "d3b77ff3-da08-4bfc-8455-67982cb68b91", + "Name": "W18x40", + "EdgeId": 1016, + "ExternalEdgeId": 1016 + }, + "4f840cd7-cf6f-416e-b568-1ec54c879391": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4f840cd7-cf6f-416e-b568-1ec54c879391", + "Name": null + }, + "4a67bc8d-d672-4e1d-b148-48c1161a338e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "4a67bc8d-d672-4e1d-b148-48c1161a338e", + "Name": "W18x40", + "EdgeId": 1017, + "ExternalEdgeId": 1017 + }, + "5a84afaa-2916-4f0e-b296-a7b8457373a4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5a84afaa-2916-4f0e-b296-a7b8457373a4", + "Name": null + }, + "6dbfb248-8bf5-4825-bf8e-dde9fe8087e7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "6dbfb248-8bf5-4825-bf8e-dde9fe8087e7", + "Name": "W18x40", + "EdgeId": 1022, + "ExternalEdgeId": 1022 + }, + "6d9bad59-e1f2-4cd0-a52b-3f4b6370bf6c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6d9bad59-e1f2-4cd0-a52b-3f4b6370bf6c", + "Name": null + }, + "430f0555-2259-4f0a-90bd-1955db210de8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "430f0555-2259-4f0a-90bd-1955db210de8", + "Name": "W18x40", + "EdgeId": 1023, + "ExternalEdgeId": 1023 + }, + "95048724-622a-431b-8caa-4a4c25b6fd77": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "95048724-622a-431b-8caa-4a4c25b6fd77", + "Name": null + }, + "5b17eeb9-8f36-448f-a70a-0ee3cec4e307": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5b17eeb9-8f36-448f-a70a-0ee3cec4e307", + "Name": "W18x40", + "EdgeId": 1028, + "ExternalEdgeId": 1028 + }, + "d65f691e-d173-44ed-a5bd-97dbc3742fbb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d65f691e-d173-44ed-a5bd-97dbc3742fbb", + "Name": null + }, + "1855a12a-4644-41c5-8643-b41a84160976": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "1855a12a-4644-41c5-8643-b41a84160976", + "Name": "W18x40", + "EdgeId": 1029, + "ExternalEdgeId": 1029 + }, + "0b1dcd83-8da1-403c-a45d-efffdf6ab4c6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0b1dcd83-8da1-403c-a45d-efffdf6ab4c6", + "Name": null + }, + "ca0c0fa4-ce88-43c4-ba38-94ba716a28f8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ca0c0fa4-ce88-43c4-ba38-94ba716a28f8", + "Name": "W18x40", + "EdgeId": 1034, + "ExternalEdgeId": 1034 + }, + "6a6f15af-2700-4a08-8ba2-0fea76108621": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6a6f15af-2700-4a08-8ba2-0fea76108621", + "Name": null + }, + "6eed850c-cf55-44c8-a524-2e118f502216": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "6eed850c-cf55-44c8-a524-2e118f502216", + "Name": "W18x40", + "EdgeId": 1035, + "ExternalEdgeId": 1035 + }, + "ebcd5df0-0959-49b8-a4de-0930b927c256": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ebcd5df0-0959-49b8-a4de-0930b927c256", + "Name": null + }, + "214e40dc-9bab-4536-812a-99914eefee2a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "214e40dc-9bab-4536-812a-99914eefee2a", + "Name": "W18x40", + "EdgeId": 1042, + "ExternalEdgeId": 1042 + }, + "5a554915-ef21-4142-ad3e-2b19ed3bbbc7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 23.0, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5a554915-ef21-4142-ad3e-2b19ed3bbbc7", + "Name": null + }, + "8b12b4c9-d97b-4aa8-94d3-4f9cb50ff424": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "8b12b4c9-d97b-4aa8-94d3-4f9cb50ff424", + "Name": "W18x40", + "EdgeId": 1043, + "ExternalEdgeId": 1043 + }, + "a8855d0e-8c83-4093-8b3a-45d565bf1d6c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 29.5, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a8855d0e-8c83-4093-8b3a-45d565bf1d6c", + "Name": null + }, + "1ecdee24-569f-4399-b36f-fdff365f0d55": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "1ecdee24-569f-4399-b36f-fdff365f0d55", + "Name": "W18x40", + "EdgeId": 1044, + "ExternalEdgeId": 1044 + }, + "80570f75-78b0-4df7-9905-00fc6a6b763f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 29.5, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "80570f75-78b0-4df7-9905-00fc6a6b763f", + "Name": null + }, + "23394662-b582-4370-86df-dd403bd134ba": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "23394662-b582-4370-86df-dd403bd134ba", + "Name": "W18x40", + "EdgeId": 1050, + "ExternalEdgeId": 1050 + }, + "18762e61-5387-4317-89c4-9be721f4510e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "18762e61-5387-4317-89c4-9be721f4510e", + "Name": null + }, + "14f2860a-81de-4a1c-9ec9-8035154a191c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "14f2860a-81de-4a1c-9ec9-8035154a191c", + "Name": "W18x40", + "EdgeId": 1051, + "ExternalEdgeId": 1051 + }, + "d74448c6-43ce-4b44-9bea-675ed2995fdf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d74448c6-43ce-4b44-9bea-675ed2995fdf", + "Name": null + }, + "aa1ccf4e-9039-4e6b-a62b-cba3f34f923e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "aa1ccf4e-9039-4e6b-a62b-cba3f34f923e", + "Name": "W18x40", + "EdgeId": 1056, + "ExternalEdgeId": 1056 + }, + "87d89d5e-8f0f-4736-a1e8-046736c22475": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "87d89d5e-8f0f-4736-a1e8-046736c22475", + "Name": null + }, + "1064435f-bc3f-4ab5-86ef-9c4e2ce0d8cc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "1064435f-bc3f-4ab5-86ef-9c4e2ce0d8cc", + "Name": "W18x40", + "EdgeId": 1057, + "ExternalEdgeId": 1057 + }, + "97533c8f-5966-47ba-a0be-c64dd35738b1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "97533c8f-5966-47ba-a0be-c64dd35738b1", + "Name": null + }, + "e4b7c94a-f81d-4917-a6e7-19154823c805": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "e4b7c94a-f81d-4917-a6e7-19154823c805", + "Name": "W18x40", + "EdgeId": 1062, + "ExternalEdgeId": 1062 + }, + "09c4971b-e5cb-4215-b128-45eda3433813": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "09c4971b-e5cb-4215-b128-45eda3433813", + "Name": null + }, + "beb1ef4e-cb97-4d05-b750-cae86722bfe5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "beb1ef4e-cb97-4d05-b750-cae86722bfe5", + "Name": "W18x40", + "EdgeId": 1063, + "ExternalEdgeId": 1063 + }, + "92acd662-e306-4d5b-bdf0-30e4ab652210": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "92acd662-e306-4d5b-bdf0-30e4ab652210", + "Name": null + }, + "1ec03e95-eb8c-4585-a2c5-02c45cd66b50": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "1ec03e95-eb8c-4585-a2c5-02c45cd66b50", + "Name": "W18x40", + "EdgeId": 1068, + "ExternalEdgeId": 1068 + }, + "802825c3-ed25-45e0-a04e-0e4d827e0541": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "802825c3-ed25-45e0-a04e-0e4d827e0541", + "Name": null + }, + "024831f0-b74c-40b9-978a-699fe12c616e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "024831f0-b74c-40b9-978a-699fe12c616e", + "Name": "W18x40", + "EdgeId": 1069, + "ExternalEdgeId": 1069 + }, + "c5e4d3cf-ca69-4e87-b412-11a742db9a8e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c5e4d3cf-ca69-4e87-b412-11a742db9a8e", + "Name": null + }, + "187b44aa-cfc6-4aba-97d5-ec7dec3ae4ef": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "187b44aa-cfc6-4aba-97d5-ec7dec3ae4ef", + "Name": "W18x40", + "EdgeId": 1076, + "ExternalEdgeId": 1076 + }, + "611cbf05-1da3-485d-b6cb-654dc0c54555": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 23.0, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "611cbf05-1da3-485d-b6cb-654dc0c54555", + "Name": null + }, + "3d248dc6-5a3c-44c8-b2f4-d7de43d857b3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "3d248dc6-5a3c-44c8-b2f4-d7de43d857b3", + "Name": "W18x40", + "EdgeId": 1077, + "ExternalEdgeId": 1077 + }, + "b46db0c6-c3c2-4213-8a2a-16ad7eaad69d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 29.5, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b46db0c6-c3c2-4213-8a2a-16ad7eaad69d", + "Name": null + }, + "f34b4850-ffd7-47eb-be95-9792c25c0733": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "f34b4850-ffd7-47eb-be95-9792c25c0733", + "Name": "W18x40", + "EdgeId": 1078, + "ExternalEdgeId": 1078 + }, + "032ed244-4c60-402a-957b-1bd82fdec910": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 29.5, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "032ed244-4c60-402a-957b-1bd82fdec910", + "Name": null + }, + "5810d885-305f-42dd-8513-1d3c2a737daa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5810d885-305f-42dd-8513-1d3c2a737daa", + "Name": "W18x40", + "EdgeId": 1084, + "ExternalEdgeId": 1084 + }, + "c612bae5-4240-4b8c-9278-4ca6e904550f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c612bae5-4240-4b8c-9278-4ca6e904550f", + "Name": null + }, + "5118949c-7cc2-4973-a00f-a94da863bd41": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5118949c-7cc2-4973-a00f-a94da863bd41", + "Name": "W18x40", + "EdgeId": 1085, + "ExternalEdgeId": 1085 + }, + "aa787c70-926c-4233-b06c-6f04c3833999": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "aa787c70-926c-4233-b06c-6f04c3833999", + "Name": null + }, + "9028e06e-6a51-4b62-ac9e-13c69457c5de": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "9028e06e-6a51-4b62-ac9e-13c69457c5de", + "Name": "W18x40", + "EdgeId": 1090, + "ExternalEdgeId": 1090 + }, + "98865673-61d3-4a80-9466-6513a3ca88fa": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "98865673-61d3-4a80-9466-6513a3ca88fa", + "Name": null + }, + "f3b26343-1ddf-4fe1-bc4b-5fe71233bc63": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "f3b26343-1ddf-4fe1-bc4b-5fe71233bc63", + "Name": "W18x40", + "EdgeId": 1091, + "ExternalEdgeId": 1091 + }, + "744d0008-e4fa-4613-82c8-54d440a2b431": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "744d0008-e4fa-4613-82c8-54d440a2b431", + "Name": null + }, + "afed523c-ea8b-49b2-ac48-197fbcdf05cb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "afed523c-ea8b-49b2-ac48-197fbcdf05cb", + "Name": "W18x40", + "EdgeId": 1096, + "ExternalEdgeId": 1096 + }, + "f2d4b68b-7ff1-474e-b84e-376809fd6204": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f2d4b68b-7ff1-474e-b84e-376809fd6204", + "Name": null + }, + "b7d778c8-bf39-4e50-886d-d96f51c232c4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "b7d778c8-bf39-4e50-886d-d96f51c232c4", + "Name": "W18x40", + "EdgeId": 1097, + "ExternalEdgeId": 1097 + }, + "1c58ef99-e6ef-4d3d-9f75-7e8c3f76216b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1c58ef99-e6ef-4d3d-9f75-7e8c3f76216b", + "Name": null + }, + "523695b9-4db3-45d0-aa2b-9726ea2c687e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "29a3bfb0-f79a-4f73-a31e-bc9aa76abe02", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "523695b9-4db3-45d0-aa2b-9726ea2c687e", + "Name": "W18x40", + "EdgeId": 1102, + "ExternalEdgeId": 1102 + }, + "0e100606-1bfc-4a69-8a50-e464b1715fb4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0e100606-1bfc-4a69-8a50-e464b1715fb4", + "Name": null + }, + "f6e6d5fb-9011-4fce-856a-5531d17517e5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "f6e6d5fb-9011-4fce-856a-5531d17517e5", + "Name": "W18x40", + "EdgeId": 1103, + "ExternalEdgeId": 1103 + }, + "109f3366-a42b-4108-9e0e-4d092146ad2d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "109f3366-a42b-4108-9e0e-4d092146ad2d", + "Name": null + }, + "06a695f9-33db-4275-9ed6-6ab24f1b7d5d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 23.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "06a695f9-33db-4275-9ed6-6ab24f1b7d5d", + "Name": "W18x40", + "EdgeId": 1110, + "ExternalEdgeId": 1110 + }, + "1a598a52-c112-448d-ae36-6060d5c3b8db": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 23.0, + "Y": -59.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1a598a52-c112-448d-ae36-6060d5c3b8db", + "Name": null + }, + "ff8d58ae-1250-40ef-9efc-9d8d93fe210f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "bbfc5b0f-cc29-4045-91bf-821e7813de86", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ff8d58ae-1250-40ef-9efc-9d8d93fe210f", + "Name": "W18x40", + "EdgeId": 1111, + "ExternalEdgeId": 1111 + }, + "b0cbb75b-ef17-431d-a588-38fcdd915df7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 29.5, + "Y": -59.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b0cbb75b-ef17-431d-a588-38fcdd915df7", + "Name": null + }, + "4b655ede-2c4f-4872-9484-c3fe68376324": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 29.5, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "4b655ede-2c4f-4872-9484-c3fe68376324", + "Name": "W18x40", + "EdgeId": 1112, + "ExternalEdgeId": 1112 + }, + "95e50dbf-f04b-4409-b717-700a2779b620": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 29.5, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 29.5, + "Y": -59.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "95e50dbf-f04b-4409-b717-700a2779b620", + "Name": null + }, + "6d67d031-8d8a-4597-9f85-bfc610289575": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 16.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "6d67d031-8d8a-4597-9f85-bfc610289575", + "Name": "W18x40", + "EdgeId": 1118, + "ExternalEdgeId": 1118 + }, + "5f46b3b3-4cf0-4256-b453-27b01cab9f67": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -59.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5f46b3b3-4cf0-4256-b453-27b01cab9f67", + "Name": null + }, + "68faa333-8a54-4377-baf5-cc022c013146": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 23.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "68faa333-8a54-4377-baf5-cc022c013146", + "Name": "W18x40", + "EdgeId": 1119, + "ExternalEdgeId": 1119 + }, + "53326853-5982-4ac1-bdc5-e5cef8c3a686": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 16.0, + "Y": -59.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "53326853-5982-4ac1-bdc5-e5cef8c3a686", + "Name": null + }, + "ddd81600-a8f0-4a72-a38c-fdb9b6fc4fd5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 9.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ddd81600-a8f0-4a72-a38c-fdb9b6fc4fd5", + "Name": "W18x40", + "EdgeId": 1124, + "ExternalEdgeId": 1124 + }, + "68e28ab2-00b2-4b63-a569-13f4a46a86a3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -59.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "68e28ab2-00b2-4b63-a569-13f4a46a86a3", + "Name": null + }, + "2a3074b5-e468-4f65-a93d-f7f9365d9cad": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 16.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "2a3074b5-e468-4f65-a93d-f7f9365d9cad", + "Name": "W18x40", + "EdgeId": 1125, + "ExternalEdgeId": 1125 + }, + "aad7fa2a-9081-4561-a963-6c7c20eb1fa4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 9.0, + "Y": -59.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "aad7fa2a-9081-4561-a963-6c7c20eb1fa4", + "Name": null + }, + "151fe9cb-c75b-4dab-aef0-d615cd614234": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 2.0, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "151fe9cb-c75b-4dab-aef0-d615cd614234", + "Name": "W18x40", + "EdgeId": 1130, + "ExternalEdgeId": 1130 + }, + "57a22834-7313-48d6-b5ca-2c0d99d484fa": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -59.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "57a22834-7313-48d6-b5ca-2c0d99d484fa", + "Name": null + }, + "ce5a878c-d590-4c85-a750-48063db872fe": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "edad7470-dae0-4697-a2aa-8adc95f4440a", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 9.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ce5a878c-d590-4c85-a750-48063db872fe", + "Name": "W18x40", + "EdgeId": 1131, + "ExternalEdgeId": 1131 + }, + "90a9a41e-5559-4818-b679-12b0944a5b2e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 2.0, + "Y": -59.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "90a9a41e-5559-4818-b679-12b0944a5b2e", + "Name": null + }, + "c1d16bc0-9bbe-4518-8c13-7c7a16d175c8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e3cd3000-5e61-43c0-a010-a6757408d2ac", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + 1.0, + 0.0, + 0.5, + -1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "c1d16bc0-9bbe-4518-8c13-7c7a16d175c8", + "Name": "W18x40", + "EdgeId": 1136, + "ExternalEdgeId": 1136 + }, + "1c60aea2-e24f-4661-b48e-f393be79fbd3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.5, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -59.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1c60aea2-e24f-4661-b48e-f393be79fbd3", + "Name": null + }, + "757ae4ce-eab0-4f33-90ec-f6bc52e2cfce": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "1ac84bd4-786a-4888-b74f-bcfe8abc7fb2", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "757ae4ce-eab0-4f33-90ec-f6bc52e2cfce", + "Name": "W18x40", + "EdgeId": 1137, + "ExternalEdgeId": 1137 + }, + "2faa0294-dc44-4d7f-8825-7bb4a04bcdeb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -59.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2faa0294-dc44-4d7f-8825-7bb4a04bcdeb", + "Name": null + }, + "ba999146-e65c-442e-91e9-eb65608079b8": { + "discriminator": "Elements.Geometry.Profiles.WideFlangeProfile", + "d": 0.34797999999999996, + "tw": 0.022098, + "bf": 0.3175, + "tf": 0.035559999999999994, + "Perimeter": { + "discriminator": "Elements.Geometry.Polygon", + "Vertices": [ + { + "X": -0.15875, + "Y": -0.1254, + "Z": 0.0 + }, + { + "X": -0.15875, + "Y": -0.16096, + "Z": 0.0 + }, + { + "X": -0.011049, + "Y": -0.16096, + "Z": 0.0 + }, + { + "X": -0.011049, + "Y": -0.43782, + "Z": 0.0 + }, + { + "X": -0.15875, + "Y": -0.43782, + "Z": 0.0 + }, + { + "X": -0.15875, + "Y": -0.47337999999999997, + "Z": 0.0 + }, + { + "X": 0.15875, + "Y": -0.47337999999999997, + "Z": 0.0 + }, + { + "X": 0.15875, + "Y": -0.43782, + "Z": 0.0 + }, + { + "X": 0.011049, + "Y": -0.43782, + "Z": 0.0 + }, + { + "X": 0.011049, + "Y": -0.16096, + "Z": 0.0 + }, + { + "X": 0.15875, + "Y": -0.16096, + "Z": 0.0 + }, + { + "X": 0.15875, + "Y": -0.1254, + "Z": 0.0 + } + ] + }, + "Voids": [], + "Id": "ba999146-e65c-442e-91e9-eb65608079b8", + "Name": "W12x152" + }, + "0a4b6575-3b0a-47a0-834e-6e427af090ca": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 1.7324000000000002, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 1.7324000000000002, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "0a4b6575-3b0a-47a0-834e-6e427af090ca", + "Name": "W12x152" + }, + "449114c8-aba4-45a1-ac2c-1deab031ba63": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "0a4b6575-3b0a-47a0-834e-6e427af090ca", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -2.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "449114c8-aba4-45a1-ac2c-1deab031ba63", + "Name": "W12x152", + "CellId": 1, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "84347875-374d-48bb-9ebc-b23333323928": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -2.0, + "Z": 0.0 + }, + "End": { + "X": 10.7324, + "Y": -2.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "84347875-374d-48bb-9ebc-b23333323928", + "Name": null + }, + "c30b6320-d3a9-4244-9b8e-ff895659beb0": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 2.7324, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 2.7324, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "c30b6320-d3a9-4244-9b8e-ff895659beb0", + "Name": "W12x152" + }, + "0901f2b3-e657-4fcd-bcea-51ba11feff7e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c30b6320-d3a9-4244-9b8e-ff895659beb0", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -3.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "0901f2b3-e657-4fcd-bcea-51ba11feff7e", + "Name": "W12x152", + "CellId": 1, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "434e5170-a2e4-489d-af09-6e2f56c8ec34": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -3.5, + "Z": 0.0 + }, + "End": { + "X": 11.7324, + "Y": -3.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "434e5170-a2e4-489d-af09-6e2f56c8ec34", + "Name": null + }, + "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 4.5, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 4.5, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Name": "W12x152" + }, + "9bed612f-e237-4382-a50e-8ca5bbcfdd23": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "9bed612f-e237-4382-a50e-8ca5bbcfdd23", + "Name": "W12x152", + "CellId": 2, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6479ba6c-d57a-4b59-a288-f25cb6652175": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -5.0, + "Z": 0.0 + }, + "End": { + "X": 3.75, + "Y": -0.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6479ba6c-d57a-4b59-a288-f25cb6652175", + "Name": null + }, + "3d231d2f-006e-4afd-bdb7-bc4274237b15": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "3d231d2f-006e-4afd-bdb7-bc4274237b15", + "Name": "W12x152", + "CellId": 2, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a754a688-2691-4a44-90a2-e6b6be1f78ce": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -5.0, + "Z": 0.0 + }, + "End": { + "X": 5.5, + "Y": -0.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a754a688-2691-4a44-90a2-e6b6be1f78ce", + "Name": null + }, + "a9f4d907-24c1-4efc-9f62-773ee1029d41": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a9f4d907-24c1-4efc-9f62-773ee1029d41", + "Name": "W12x152", + "CellId": 2, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b4aa8881-1a7f-462e-b80e-b3e05a626a85": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -5.0, + "Z": 0.0 + }, + "End": { + "X": 7.25, + "Y": -0.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b4aa8881-1a7f-462e-b80e-b3e05a626a85", + "Name": null + }, + "671f5123-41bb-4c51-acf5-878316d496f4": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 1.5, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 1.5, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "671f5123-41bb-4c51-acf5-878316d496f4", + "Name": "W12x152" + }, + "08c46ad5-a131-4196-8d2e-d01760fe677b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -3.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "08c46ad5-a131-4196-8d2e-d01760fe677b", + "Name": "W12x152", + "CellId": 3, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "58fa04fb-9784-434b-a2ef-a1ecec0dd2ef": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -3.5, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -3.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "58fa04fb-9784-434b-a2ef-a1ecec0dd2ef", + "Name": null + }, + "4e04d4c7-03f7-42ad-88c0-5ef8088bf0e1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -2.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "4e04d4c7-03f7-42ad-88c0-5ef8088bf0e1", + "Name": "W12x152", + "CellId": 3, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "e33aff5e-7199-4d7d-b105-bf291daefb56": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -2.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -2.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e33aff5e-7199-4d7d-b105-bf291daefb56", + "Name": null + }, + "b835b073-27e7-4087-a023-3557ecf67ad3": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 5.0, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 5.0, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Name": "W12x152" + }, + "b363be0f-c937-438f-9a6e-9150f75e36a8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "b363be0f-c937-438f-9a6e-9150f75e36a8", + "Name": "W12x152", + "CellId": 5, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ce741b06-e484-4ed0-92c0-7b9a0cf95480": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 10.75, + "Y": -5.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ce741b06-e484-4ed0-92c0-7b9a0cf95480", + "Name": null + }, + "907e56e7-f3df-4850-861c-b9c75d67e770": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "907e56e7-f3df-4850-861c-b9c75d67e770", + "Name": "W12x152", + "CellId": 5, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "15b213ec-5c5b-41c3-aefe-d1c9d41c271a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 12.5, + "Y": -5.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "15b213ec-5c5b-41c3-aefe-d1c9d41c271a", + "Name": null + }, + "d463367e-606b-478f-9829-18208e0b592e": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 2.7235999999999994, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 2.7235999999999994, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "d463367e-606b-478f-9829-18208e0b592e", + "Name": "W12x152" + }, + "81a8a73d-b5c5-4991-a557-2d6945472e50": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d463367e-606b-478f-9829-18208e0b592e", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "81a8a73d-b5c5-4991-a557-2d6945472e50", + "Name": "W12x152", + "CellId": 5, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a063db72-4c35-4e63-bb1d-2166750a058e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 14.25, + "Y": -7.276400000000001, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a063db72-4c35-4e63-bb1d-2166750a058e", + "Name": null + }, + "379c1421-dcff-429c-bbb2-600d8b5a79a9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "379c1421-dcff-429c-bbb2-600d8b5a79a9", + "Name": "W12x152", + "CellId": 6, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "65bbc369-7924-40ff-afc9-a86a94605429": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 3.75, + "Y": -5.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "65bbc369-7924-40ff-afc9-a86a94605429", + "Name": null + }, + "6f8b4a01-2bb1-4f8a-a561-d55a9450046b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "6f8b4a01-2bb1-4f8a-a561-d55a9450046b", + "Name": "W12x152", + "CellId": 6, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "52a037bc-05aa-4a65-940f-341b13c993bc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 5.5, + "Y": -5.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "52a037bc-05aa-4a65-940f-341b13c993bc", + "Name": null + }, + "d05f8c24-bddf-412e-927e-fe6aebe03ecf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "d05f8c24-bddf-412e-927e-fe6aebe03ecf", + "Name": "W12x152", + "CellId": 6, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a01e0837-5d91-4ad8-95d7-deae343fc12b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -10.0, + "Z": 0.0 + }, + "End": { + "X": 7.25, + "Y": -5.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a01e0837-5d91-4ad8-95d7-deae343fc12b", + "Name": null + }, + "486bb3f6-862d-4f65-be5b-b0c46c466f22": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -8.333333333333334, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "486bb3f6-862d-4f65-be5b-b0c46c466f22", + "Name": "W12x152", + "CellId": 7, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "5f3cf050-e289-4113-94f6-ccae99edfe6f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -8.333333333333334, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -8.333333333333334, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5f3cf050-e289-4113-94f6-ccae99edfe6f", + "Name": null + }, + "a0983a2e-fbc2-4c0d-a13d-719e5daf6304": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -6.666666666666667, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a0983a2e-fbc2-4c0d-a13d-719e5daf6304", + "Name": "W12x152", + "CellId": 7, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "30784c32-148f-4d5c-a040-a6461d8eb8cc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -6.666666666666667, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -6.666666666666667, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "30784c32-148f-4d5c-a040-a6461d8eb8cc", + "Name": null + }, + "e9998d1f-f37e-4ec1-9a37-d6129df9567b": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 1.1768466666666662, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 1.1768466666666662, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "e9998d1f-f37e-4ec1-9a37-d6129df9567b", + "Name": "W12x152" + }, + "c81c4880-8791-458b-919f-e8e3bfec18f9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e9998d1f-f37e-4ec1-9a37-d6129df9567b", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -11.666666666666666, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "c81c4880-8791-458b-919f-e8e3bfec18f9", + "Name": "W12x152", + "CellId": 8, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "634805b1-e125-4c91-80f7-420458d80c1a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -11.666666666666666, + "Z": 0.0 + }, + "End": { + "X": 17.176846666666666, + "Y": -11.666666666666666, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "634805b1-e125-4c91-80f7-420458d80c1a", + "Name": null + }, + "48a4ab2f-6f28-414c-be2a-e0687d5249cc": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 2.287953333333334, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 2.287953333333334, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "48a4ab2f-6f28-414c-be2a-e0687d5249cc", + "Name": "W12x152" + }, + "a94f957d-f83c-4f67-99a4-39ec8b978fdb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "48a4ab2f-6f28-414c-be2a-e0687d5249cc", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -13.333333333333332, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a94f957d-f83c-4f67-99a4-39ec8b978fdb", + "Name": "W12x152", + "CellId": 8, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "b52a05c9-634e-4088-b781-2b0991333f4b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -13.333333333333332, + "Z": 0.0 + }, + "End": { + "X": 18.287953333333334, + "Y": -13.333333333333332, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b52a05c9-634e-4088-b781-2b0991333f4b", + "Name": null + }, + "96407be9-dfa2-4201-aedb-5e9af21811b8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "96407be9-dfa2-4201-aedb-5e9af21811b8", + "Name": "W12x152", + "CellId": 9, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fde535c1-34ef-49eb-a1b3-0f629e2a5b86": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 10.75, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fde535c1-34ef-49eb-a1b3-0f629e2a5b86", + "Name": null + }, + "9afa8a8d-5341-4990-ae7a-483622d2e033": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "9afa8a8d-5341-4990-ae7a-483622d2e033", + "Name": "W12x152", + "CellId": 9, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "31d042c1-e5f3-4109-b9d4-aa3842be5912": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 12.5, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "31d042c1-e5f3-4109-b9d4-aa3842be5912", + "Name": null + }, + "80a53a2a-673b-475d-a044-c29ff8124ce7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "80a53a2a-673b-475d-a044-c29ff8124ce7", + "Name": "W12x152", + "CellId": 9, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "53d9fcb7-193b-43ec-bf15-8016f74cc06d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 14.25, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "53d9fcb7-193b-43ec-bf15-8016f74cc06d", + "Name": null + }, + "1f0d4419-51cc-41b4-9b9f-c8acb9e9b125": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "1f0d4419-51cc-41b4-9b9f-c8acb9e9b125", + "Name": "W12x152", + "CellId": 10, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6c9c94ef-9560-4b0b-96ca-5533c3e417e6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 3.75, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6c9c94ef-9560-4b0b-96ca-5533c3e417e6", + "Name": null + }, + "223e8f48-53b0-420d-9566-e42927f37af0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "223e8f48-53b0-420d-9566-e42927f37af0", + "Name": "W12x152", + "CellId": 10, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "294fd0b7-9dcf-4976-8694-c2d11915cf50": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 5.5, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "294fd0b7-9dcf-4976-8694-c2d11915cf50", + "Name": null + }, + "e7c8d611-9bd0-449e-895f-41b4f189df9a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "e7c8d611-9bd0-449e-895f-41b4f189df9a", + "Name": "W12x152", + "CellId": 10, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "bf38e54e-58a5-4c93-8db0-d04ff1d2771f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -15.0, + "Z": 0.0 + }, + "End": { + "X": 7.25, + "Y": -10.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bf38e54e-58a5-4c93-8db0-d04ff1d2771f", + "Name": null + }, + "072e735e-97cf-4835-abc3-37cfda558744": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -13.333333333333334, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "072e735e-97cf-4835-abc3-37cfda558744", + "Name": "W12x152", + "CellId": 11, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "7613040a-6d75-42e2-8939-835b7786f804": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -13.333333333333334, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -13.333333333333334, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7613040a-6d75-42e2-8939-835b7786f804", + "Name": null + }, + "6452829f-e877-40a4-90b7-ca0cfd622257": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -11.666666666666668, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "6452829f-e877-40a4-90b7-ca0cfd622257", + "Name": "W12x152", + "CellId": 11, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "9dc97b70-3fc3-48f2-b69b-9c3b04287c3a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -11.666666666666668, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -11.666666666666668, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9dc97b70-3fc3-48f2-b69b-9c3b04287c3a", + "Name": null + }, + "55db97f8-49be-48d7-ae39-e4f3046bf020": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.6831, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "55db97f8-49be-48d7-ae39-e4f3046bf020", + "Name": "W12x152", + "CellId": 12, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9fe0863f-78d5-4d02-bf09-54e101a052d4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.6831, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 17.6831, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9fe0863f-78d5-4d02-bf09-54e101a052d4", + "Name": null + }, + "74b73145-d10e-494c-abfa-a1f4b4698f76": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.3662, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "74b73145-d10e-494c-abfa-a1f4b4698f76", + "Name": "W12x152", + "CellId": 12, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "11170d2d-96d3-4bd4-8606-691d3fcb9ca9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.3662, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 19.3662, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "11170d2d-96d3-4bd4-8606-691d3fcb9ca9", + "Name": null + }, + "a14957ee-e204-468a-8e80-821f5ea2eabc": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 2.5246449507100976, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 2.5246449507100976, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "a14957ee-e204-468a-8e80-821f5ea2eabc", + "Name": "W12x152" + }, + "eb1ab162-e201-4584-9488-fb3f8f7f8e8a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "a14957ee-e204-468a-8e80-821f5ea2eabc", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.0493, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "eb1ab162-e201-4584-9488-fb3f8f7f8e8a", + "Name": "W12x152", + "CellId": 12, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "35a21f74-63e3-4b51-935f-da6596ad2349": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.0493, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 21.0493, + "Y": -17.475355049289902, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "35a21f74-63e3-4b51-935f-da6596ad2349", + "Name": null + }, + "32a38780-bc18-494e-a490-85bf4fd5b42e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "32a38780-bc18-494e-a490-85bf4fd5b42e", + "Name": "W12x152", + "CellId": 13, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b0be2b8a-66fb-447a-b94e-edbe55badf43": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 10.75, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b0be2b8a-66fb-447a-b94e-edbe55badf43", + "Name": null + }, + "0a190965-7886-4017-a503-6254f1ce54f8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "0a190965-7886-4017-a503-6254f1ce54f8", + "Name": "W12x152", + "CellId": 13, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4646d504-8b54-4ce8-bb44-74e79029d746": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 12.5, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4646d504-8b54-4ce8-bb44-74e79029d746", + "Name": null + }, + "45807bf8-4758-46d0-8066-cbf9e1f2e20c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "45807bf8-4758-46d0-8066-cbf9e1f2e20c", + "Name": "W12x152", + "CellId": 13, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5f742c34-556a-4a25-a69e-bba30ef7bbcf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 14.25, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5f742c34-556a-4a25-a69e-bba30ef7bbcf", + "Name": null + }, + "9d91550b-1cee-478a-9fe2-e68912aa699b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "9d91550b-1cee-478a-9fe2-e68912aa699b", + "Name": "W12x152", + "CellId": 14, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fc563825-c1d7-404f-85a9-cc4a1eb00218": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 3.75, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fc563825-c1d7-404f-85a9-cc4a1eb00218", + "Name": null + }, + "53140030-acfc-4890-b228-8735aa9202ec": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "53140030-acfc-4890-b228-8735aa9202ec", + "Name": "W12x152", + "CellId": 14, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0bcd1f7f-852c-4738-8292-f30d29c6bf8e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 5.5, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0bcd1f7f-852c-4738-8292-f30d29c6bf8e", + "Name": null + }, + "537e2b30-223f-4bdb-82df-ad3e63cff89a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "537e2b30-223f-4bdb-82df-ad3e63cff89a", + "Name": "W12x152", + "CellId": 14, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fe87032c-8bc7-43b4-bdef-32ae4125b1fd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -20.0, + "Z": 0.0 + }, + "End": { + "X": 7.25, + "Y": -15.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fe87032c-8bc7-43b4-bdef-32ae4125b1fd", + "Name": null + }, + "6bb90384-e500-40b3-8cda-6dcf66b1e94e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -18.333333333333332, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "6bb90384-e500-40b3-8cda-6dcf66b1e94e", + "Name": "W12x152", + "CellId": 15, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "4c749511-44d6-4af3-9ab5-0d41047a43e6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -18.333333333333332, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -18.333333333333332, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4c749511-44d6-4af3-9ab5-0d41047a43e6", + "Name": null + }, + "8ce4e6fa-3570-4962-a142-ab88971bfefd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -16.666666666666668, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "8ce4e6fa-3570-4962-a142-ab88971bfefd", + "Name": "W12x152", + "CellId": 15, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "8d727634-8a31-48dd-bbd9-2e3b15399bf9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -16.666666666666668, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -16.666666666666668, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8d727634-8a31-48dd-bbd9-2e3b15399bf9", + "Name": null + }, + "00428e4f-d368-4fa9-9b91-6b35a98db880": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 1.021913333333334, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 1.021913333333334, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "00428e4f-d368-4fa9-9b91-6b35a98db880", + "Name": "W12x152" + }, + "ef687703-9143-444e-b4f2-6fb7a2b587c6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "00428e4f-d368-4fa9-9b91-6b35a98db880", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -21.934266666666666, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "ef687703-9143-444e-b4f2-6fb7a2b587c6", + "Name": "W12x152", + "CellId": 16, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "88421fcd-5d63-45ff-aa16-74c52bd313c5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -21.934266666666666, + "Z": 0.0 + }, + "End": { + "X": 24.021913333333334, + "Y": -21.934266666666666, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "88421fcd-5d63-45ff-aa16-74c52bd313c5", + "Name": null + }, + "2a51b0ec-7a36-4993-b509-32bf4c52b9b4": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 2.043826666666668, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 2.043826666666668, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "2a51b0ec-7a36-4993-b509-32bf4c52b9b4", + "Name": "W12x152" + }, + "41cbe9f7-e93a-4d2b-b79a-1be05425266a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2a51b0ec-7a36-4993-b509-32bf4c52b9b4", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -23.467133333333333, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "41cbe9f7-e93a-4d2b-b79a-1be05425266a", + "Name": "W12x152", + "CellId": 16, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "719b7363-b074-4045-9695-22f2ebe87ad8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -23.467133333333333, + "Z": 0.0 + }, + "End": { + "X": 25.043826666666668, + "Y": -23.467133333333333, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "719b7363-b074-4045-9695-22f2ebe87ad8", + "Name": null + }, + "096908ac-1df9-4d07-9ac7-a8579865819d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "096908ac-1df9-4d07-9ac7-a8579865819d", + "Name": "W12x152", + "CellId": 17, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "713e84a5-f413-4098-81b8-b6e91f320a34": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 17.75, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "713e84a5-f413-4098-81b8-b6e91f320a34", + "Name": null + }, + "7af7feb5-9f26-4d62-87f2-813f0b548bc0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "7af7feb5-9f26-4d62-87f2-813f0b548bc0", + "Name": "W12x152", + "CellId": 17, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0b367183-5431-4c29-a58c-561b71950836": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 19.5, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0b367183-5431-4c29-a58c-561b71950836", + "Name": null + }, + "e382b529-e95d-44ca-acc6-4695c9e303ca": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "e382b529-e95d-44ca-acc6-4695c9e303ca", + "Name": "W12x152", + "CellId": 17, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "11db4bde-461c-41ee-8193-8281feefa892": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 21.25, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "11db4bde-461c-41ee-8193-8281feefa892", + "Name": null + }, + "6ccd0013-a834-4d86-8b2d-84f9ecc9064c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "6ccd0013-a834-4d86-8b2d-84f9ecc9064c", + "Name": "W12x152", + "CellId": 18, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "40f48473-8ee9-4897-a3df-83de50094edd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 10.75, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "40f48473-8ee9-4897-a3df-83de50094edd", + "Name": null + }, + "a50a119e-9b36-49b3-9f5f-b63b2b92c8de": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a50a119e-9b36-49b3-9f5f-b63b2b92c8de", + "Name": "W12x152", + "CellId": 18, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fbf05b8e-60ae-48f7-b3de-3cf1f5496dc6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 12.5, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fbf05b8e-60ae-48f7-b3de-3cf1f5496dc6", + "Name": null + }, + "f995d5db-874c-45e0-9699-c8711fa07656": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "f995d5db-874c-45e0-9699-c8711fa07656", + "Name": "W12x152", + "CellId": 18, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "13249f6c-95d8-499a-b1ac-3274f9717251": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 14.25, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "13249f6c-95d8-499a-b1ac-3274f9717251", + "Name": null + }, + "2ec7b373-71f5-46da-b975-3d777eeb50ad": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "2ec7b373-71f5-46da-b975-3d777eeb50ad", + "Name": "W12x152", + "CellId": 19, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c554a074-76b3-4f22-bed8-0ebd8a49da02": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 3.75, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c554a074-76b3-4f22-bed8-0ebd8a49da02", + "Name": null + }, + "26d090e7-433b-41b5-b58b-602168f54dda": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "26d090e7-433b-41b5-b58b-602168f54dda", + "Name": "W12x152", + "CellId": 19, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0a922690-2b55-432a-a96c-a79d1c47e25a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 5.5, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0a922690-2b55-432a-a96c-a79d1c47e25a", + "Name": null + }, + "70c341b7-d624-420b-bd31-5a7193407a1b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "70c341b7-d624-420b-bd31-5a7193407a1b", + "Name": "W12x152", + "CellId": 19, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0d79f155-a182-4615-b48e-32ee7f6f4e0b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -25.0, + "Z": 0.0 + }, + "End": { + "X": 7.25, + "Y": -20.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0d79f155-a182-4615-b48e-32ee7f6f4e0b", + "Name": null + }, + "7e27aeb9-8dcb-4c6d-80ce-236cf011cb84": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -23.333333333333332, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "7e27aeb9-8dcb-4c6d-80ce-236cf011cb84", + "Name": "W12x152", + "CellId": 20, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "796e4e6e-338b-4c02-a61d-4ed24e10b992": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -23.333333333333332, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -23.333333333333332, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "796e4e6e-338b-4c02-a61d-4ed24e10b992", + "Name": null + }, + "1adf6423-7aa3-422a-a23f-76a0a8db3419": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -21.666666666666668, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "1adf6423-7aa3-422a-a23f-76a0a8db3419", + "Name": "W12x152", + "CellId": 20, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "ca0c878a-7b20-4085-99c4-b81ce71979f9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -21.666666666666668, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -21.666666666666668, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ca0c878a-7b20-4085-99c4-b81ce71979f9", + "Name": null + }, + "73eddbbd-42c3-458b-9597-f9bd49147a87": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.599764999999998, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "73eddbbd-42c3-458b-9597-f9bd49147a87", + "Name": "W12x152", + "CellId": 21, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1430d63a-a64c-4fa3-a94d-9419c60e68f5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.599764999999998, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 24.599764999999998, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1430d63a-a64c-4fa3-a94d-9419c60e68f5", + "Name": null + }, + "c86c7794-702f-43dc-82a1-ccf5f1b5deea": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 4.799314197256791, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 4.799314197256791, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "c86c7794-702f-43dc-82a1-ccf5f1b5deea", + "Name": "W12x152" + }, + "ae823504-a480-4343-a424-3f09806bc38f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c86c7794-702f-43dc-82a1-ccf5f1b5deea", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.19953, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "ae823504-a480-4343-a424-3f09806bc38f", + "Name": "W12x152", + "CellId": 21, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "185a4fc8-23f1-4445-bcec-66e5cfaddde2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.19953, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 26.19953, + "Y": -25.20068580274321, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "185a4fc8-23f1-4445-bcec-66e5cfaddde2", + "Name": null + }, + "d27c8274-35d1-48e6-a623-33a7ddfb778f": { + "discriminator": "Elements.Beam", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 2.3996570986283956, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Rotation": 0.0, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "d0679ff9-51db-44d0-9743-3ae8c814face", + "Representation": { + "SolidOperations": [ + { + "discriminator": "Elements.Geometry.Solids.Sweep", + "Profile": "ba999146-e65c-442e-91e9-eb65608079b8", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "End": { + "X": 2.3996570986283956, + "Y": 0.0, + "Z": 0.0 + } + }, + "StartSetback": 0.0, + "EndSetback": 0.0, + "ProfileRotation": 0.0, + "LocalTransform": null, + "IsVoid": false + } + ] + }, + "IsElementDefinition": true, + "Id": "d27c8274-35d1-48e6-a623-33a7ddfb778f", + "Name": "W12x152" + }, + "150efd5e-2748-42a9-b38a-ff9706c24107": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d27c8274-35d1-48e6-a623-33a7ddfb778f", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.799295, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "150efd5e-2748-42a9-b38a-ff9706c24107", + "Name": "W12x152", + "CellId": 21, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "66270b5d-8823-4729-9e96-635806fbf3c6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.799295, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 27.799295, + "Y": -27.600342901371604, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "66270b5d-8823-4729-9e96-635806fbf3c6", + "Name": null + }, + "8e927082-1213-4ebd-8af8-ea2ede83306b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "8e927082-1213-4ebd-8af8-ea2ede83306b", + "Name": "W12x152", + "CellId": 22, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f34a7472-5e0c-4307-994c-7e71c017cd3c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 17.75, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f34a7472-5e0c-4307-994c-7e71c017cd3c", + "Name": null + }, + "d0774240-8e91-4077-afc1-3e240fbaecc4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "d0774240-8e91-4077-afc1-3e240fbaecc4", + "Name": "W12x152", + "CellId": 22, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3515422d-9e82-4ee1-a1e1-4afdad29545b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 19.5, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3515422d-9e82-4ee1-a1e1-4afdad29545b", + "Name": null + }, + "9f09a16c-5df6-4c7d-99ee-99d675eb7076": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "9f09a16c-5df6-4c7d-99ee-99d675eb7076", + "Name": "W12x152", + "CellId": 22, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "94b2c49f-4aef-4cc6-af8d-418e00dfeab4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 21.25, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "94b2c49f-4aef-4cc6-af8d-418e00dfeab4", + "Name": null + }, + "d978b146-4c91-41ff-80df-b9e8fb255920": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "d978b146-4c91-41ff-80df-b9e8fb255920", + "Name": "W12x152", + "CellId": 23, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "da48e726-ed32-4fa7-bb65-6f611857d70a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 10.75, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "da48e726-ed32-4fa7-bb65-6f611857d70a", + "Name": null + }, + "11eb21f4-2a54-474c-b3e6-011a117ec662": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "11eb21f4-2a54-474c-b3e6-011a117ec662", + "Name": "W12x152", + "CellId": 23, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "cff448d8-9482-47a7-b3c4-77b5cd3ec65a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 12.5, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cff448d8-9482-47a7-b3c4-77b5cd3ec65a", + "Name": null + }, + "32e12537-1518-4d48-992b-517ca6b4f0bb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "32e12537-1518-4d48-992b-517ca6b4f0bb", + "Name": "W12x152", + "CellId": 23, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5c897942-8264-49f4-acb2-f0a6a22027ca": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 14.25, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5c897942-8264-49f4-acb2-f0a6a22027ca", + "Name": null + }, + "9530151f-c2cb-47f9-9340-8d86fc0ef29c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "9530151f-c2cb-47f9-9340-8d86fc0ef29c", + "Name": "W12x152", + "CellId": 24, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5cdfd673-d2f2-44bc-a5bf-ff3e46950256": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 3.75, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5cdfd673-d2f2-44bc-a5bf-ff3e46950256", + "Name": null + }, + "77c43644-dc3c-4c46-b2b4-0a4dcc64ac4f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "77c43644-dc3c-4c46-b2b4-0a4dcc64ac4f", + "Name": "W12x152", + "CellId": 24, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "de83349c-f30c-4f37-8d56-ff23d8dcef2f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 5.5, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "de83349c-f30c-4f37-8d56-ff23d8dcef2f", + "Name": null + }, + "a4a12eba-f2ae-40d9-85d4-c66721437e9f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a4a12eba-f2ae-40d9-85d4-c66721437e9f", + "Name": "W12x152", + "CellId": 24, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "36c45f6f-10af-4764-a3c9-fb840a7737e6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -30.0, + "Z": 0.0 + }, + "End": { + "X": 7.25, + "Y": -25.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "36c45f6f-10af-4764-a3c9-fb840a7737e6", + "Name": null + }, + "50576bdb-41bc-43f8-964c-af9495e3b331": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -28.333333333333332, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "50576bdb-41bc-43f8-964c-af9495e3b331", + "Name": "W12x152", + "CellId": 25, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "507f0f4d-5d6d-485b-9a18-ff81fe18ccc5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -28.333333333333332, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -28.333333333333332, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "507f0f4d-5d6d-485b-9a18-ff81fe18ccc5", + "Name": null + }, + "7b6fd675-912b-4dde-a328-bae204f0ad7a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -26.666666666666668, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "7b6fd675-912b-4dde-a328-bae204f0ad7a", + "Name": "W12x152", + "CellId": 25, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "c038f132-fd60-4f08-bcf5-655d19117733": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -26.666666666666668, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -26.666666666666668, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c038f132-fd60-4f08-bcf5-655d19117733", + "Name": null + }, + "45494bc0-d354-40a6-9d9d-7933c9e00331": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "45494bc0-d354-40a6-9d9d-7933c9e00331", + "Name": "W12x152", + "CellId": 26, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a7b96791-9e77-4642-98a1-75c87267de1b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 24.625, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a7b96791-9e77-4642-98a1-75c87267de1b", + "Name": null + }, + "a208744d-1c3a-4cd2-bb8f-14082699838f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a208744d-1c3a-4cd2-bb8f-14082699838f", + "Name": "W12x152", + "CellId": 26, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "dda71185-3ffc-4b4b-b79e-23f4aaa9d3ca": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 26.25, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dda71185-3ffc-4b4b-b79e-23f4aaa9d3ca", + "Name": null + }, + "7e687872-ded4-48cd-8245-51f74404515c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "7e687872-ded4-48cd-8245-51f74404515c", + "Name": "W12x152", + "CellId": 26, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4e8c14c7-4008-4325-9ee2-ed9dac51efee": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 27.875, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4e8c14c7-4008-4325-9ee2-ed9dac51efee", + "Name": null + }, + "e4847f09-4b91-4e61-9379-9ee45e62c4e0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "e4847f09-4b91-4e61-9379-9ee45e62c4e0", + "Name": "W12x152", + "CellId": 27, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a209e7b8-c48d-4454-bc15-6a2401b89116": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 17.75, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a209e7b8-c48d-4454-bc15-6a2401b89116", + "Name": null + }, + "dae3bab9-0df0-473e-8d50-3d82a8d27a46": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "dae3bab9-0df0-473e-8d50-3d82a8d27a46", + "Name": "W12x152", + "CellId": 27, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1dbee02d-13f2-4056-83eb-966a267a952f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 19.5, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1dbee02d-13f2-4056-83eb-966a267a952f", + "Name": null + }, + "ec8a5c7f-9519-4aca-92e7-b6e58d02338d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "ec8a5c7f-9519-4aca-92e7-b6e58d02338d", + "Name": "W12x152", + "CellId": 27, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b783f26a-a206-45ed-be60-8a6647df0b2b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 21.25, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b783f26a-a206-45ed-be60-8a6647df0b2b", + "Name": null + }, + "09d57c6a-425a-43fb-8316-a0ec9de7ba5c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "09d57c6a-425a-43fb-8316-a0ec9de7ba5c", + "Name": "W12x152", + "CellId": 28, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "dae7d621-f7ab-4af7-ae9d-19cee40f808e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 10.75, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dae7d621-f7ab-4af7-ae9d-19cee40f808e", + "Name": null + }, + "bc9b0b17-5573-4b3f-a175-2657ed80643a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "bc9b0b17-5573-4b3f-a175-2657ed80643a", + "Name": "W12x152", + "CellId": 28, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d6afdf8a-baa6-4438-8178-23cba308f0a0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 12.5, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d6afdf8a-baa6-4438-8178-23cba308f0a0", + "Name": null + }, + "fcc52638-f388-4d47-bfd0-745b142e0487": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "fcc52638-f388-4d47-bfd0-745b142e0487", + "Name": "W12x152", + "CellId": 28, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c60a4a95-abec-478b-a76d-913fc8f0d88f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 14.25, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c60a4a95-abec-478b-a76d-913fc8f0d88f", + "Name": null + }, + "f3ee0cc1-3222-4845-9635-10e63227f319": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "f3ee0cc1-3222-4845-9635-10e63227f319", + "Name": "W12x152", + "CellId": 29, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "bcef46d8-677a-498f-a089-ea26f710c338": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 3.75, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bcef46d8-677a-498f-a089-ea26f710c338", + "Name": null + }, + "13c74fca-2e25-4b63-b3ad-e821b30b5df8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "13c74fca-2e25-4b63-b3ad-e821b30b5df8", + "Name": "W12x152", + "CellId": 29, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f1cf3cc1-be2b-4791-9cf7-3a205ea6cc62": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 5.5, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f1cf3cc1-be2b-4791-9cf7-3a205ea6cc62", + "Name": null + }, + "7c3ce826-496f-4c9d-98cb-d33004a59413": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "7c3ce826-496f-4c9d-98cb-d33004a59413", + "Name": "W12x152", + "CellId": 29, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "91f7b08a-4c26-4576-aedf-eb76b03f1434": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -35.0, + "Z": 0.0 + }, + "End": { + "X": 7.25, + "Y": -30.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "91f7b08a-4c26-4576-aedf-eb76b03f1434", + "Name": null + }, + "47ed683f-61a5-48f1-9238-7232ab540b4d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -33.333333333333336, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "47ed683f-61a5-48f1-9238-7232ab540b4d", + "Name": "W12x152", + "CellId": 30, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "ac5b2d66-73b0-441c-b75f-92a4024d5c2e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -33.333333333333336, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -33.333333333333336, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ac5b2d66-73b0-441c-b75f-92a4024d5c2e", + "Name": null + }, + "75d651b3-962f-4419-ba4b-3ee0ca67d410": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -31.666666666666668, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "75d651b3-962f-4419-ba4b-3ee0ca67d410", + "Name": "W12x152", + "CellId": 30, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "6ffa8756-8cc9-4c6f-b853-33672bf04b9f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -31.666666666666668, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -31.666666666666668, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6ffa8756-8cc9-4c6f-b853-33672bf04b9f", + "Name": null + }, + "51af5325-e2b1-492d-b6f5-40eab780def2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "51af5325-e2b1-492d-b6f5-40eab780def2", + "Name": "W12x152", + "CellId": 31, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "bef307c2-51db-4bca-bebb-75ea102175ae": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 24.625, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bef307c2-51db-4bca-bebb-75ea102175ae", + "Name": null + }, + "a2d43a20-26aa-43e7-ad44-6603b5475594": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a2d43a20-26aa-43e7-ad44-6603b5475594", + "Name": "W12x152", + "CellId": 31, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c00b4dda-8a7b-4046-b628-8a870e3cc223": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 26.25, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c00b4dda-8a7b-4046-b628-8a870e3cc223", + "Name": null + }, + "4bb5c6c3-bba0-4e94-a5cc-da6a39066226": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "4bb5c6c3-bba0-4e94-a5cc-da6a39066226", + "Name": "W12x152", + "CellId": 31, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e71c5e31-532e-425f-8647-fd38007b8fbb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 27.875, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e71c5e31-532e-425f-8647-fd38007b8fbb", + "Name": null + }, + "28f03623-691d-49ed-b8c2-43c1dfcbdac4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "28f03623-691d-49ed-b8c2-43c1dfcbdac4", + "Name": "W12x152", + "CellId": 32, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "cfc5377f-9b99-4141-86ee-d6d5a8c77d50": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 17.75, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cfc5377f-9b99-4141-86ee-d6d5a8c77d50", + "Name": null + }, + "c9231c44-34e0-41f1-bf2c-3eeec2e93c0c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "c9231c44-34e0-41f1-bf2c-3eeec2e93c0c", + "Name": "W12x152", + "CellId": 32, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "2254ec5c-dd41-4dcc-aaaf-8bfbc0e6f0fc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 19.5, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2254ec5c-dd41-4dcc-aaaf-8bfbc0e6f0fc", + "Name": null + }, + "4722a9e0-781a-4ebb-b58a-19ef0fcb05e8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "4722a9e0-781a-4ebb-b58a-19ef0fcb05e8", + "Name": "W12x152", + "CellId": 32, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "38e0ceb2-e476-49c6-bf4c-2929c5207a39": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 21.25, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "38e0ceb2-e476-49c6-bf4c-2929c5207a39", + "Name": null + }, + "521d5f5a-dc9d-4043-9e48-95cae654028c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "521d5f5a-dc9d-4043-9e48-95cae654028c", + "Name": "W12x152", + "CellId": 33, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d4d5f3e5-efe9-46fb-ab40-d41e667d7304": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 10.75, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d4d5f3e5-efe9-46fb-ab40-d41e667d7304", + "Name": null + }, + "8b9b12f9-cead-41a7-b3c8-90d2255ba341": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "8b9b12f9-cead-41a7-b3c8-90d2255ba341", + "Name": "W12x152", + "CellId": 33, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "2b91a5b9-6445-4500-9683-83bb0229bb29": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 12.5, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2b91a5b9-6445-4500-9683-83bb0229bb29", + "Name": null + }, + "1f132686-6a0e-4aa5-a6f6-45e9ec98b930": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "1f132686-6a0e-4aa5-a6f6-45e9ec98b930", + "Name": "W12x152", + "CellId": 33, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e21b5238-969f-439e-ac28-be8ed3b6e49b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 14.25, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e21b5238-969f-439e-ac28-be8ed3b6e49b", + "Name": null + }, + "04b9948e-e3a0-45eb-85ca-56a999587e53": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "04b9948e-e3a0-45eb-85ca-56a999587e53", + "Name": "W12x152", + "CellId": 34, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "91898d1b-18e3-4992-a53d-7e3f4ac1fa70": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 3.75, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "91898d1b-18e3-4992-a53d-7e3f4ac1fa70", + "Name": null + }, + "8ab06ea6-6b32-44d6-a59c-9209015c4cb3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "8ab06ea6-6b32-44d6-a59c-9209015c4cb3", + "Name": "W12x152", + "CellId": 34, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "63de46ec-9197-4579-b669-1da517c2386a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 5.5, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "63de46ec-9197-4579-b669-1da517c2386a", + "Name": null + }, + "c0397584-a924-4178-bf4a-0c502247ceda": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "c0397584-a924-4178-bf4a-0c502247ceda", + "Name": "W12x152", + "CellId": 34, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f1d2ff49-e219-4efb-affc-0570b81243c7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -40.0, + "Z": 0.0 + }, + "End": { + "X": 7.25, + "Y": -35.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f1d2ff49-e219-4efb-affc-0570b81243c7", + "Name": null + }, + "d7d293f7-27f8-4f57-9d43-e2729fca35b9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -38.333333333333336, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "d7d293f7-27f8-4f57-9d43-e2729fca35b9", + "Name": "W12x152", + "CellId": 35, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "009a3c04-7e3a-48df-8427-f2131f4e144a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -38.333333333333336, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -38.333333333333336, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "009a3c04-7e3a-48df-8427-f2131f4e144a", + "Name": null + }, + "3b58dd3e-881e-4c7e-ab80-924948ae8c5a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -36.666666666666664, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "3b58dd3e-881e-4c7e-ab80-924948ae8c5a", + "Name": "W12x152", + "CellId": 35, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "9983adec-488d-41d1-911a-fca8b52cd676": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -36.666666666666664, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -36.666666666666664, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9983adec-488d-41d1-911a-fca8b52cd676", + "Name": null + }, + "3978ae7b-3902-4c43-8242-64c8b3f264d9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "3978ae7b-3902-4c43-8242-64c8b3f264d9", + "Name": "W12x152", + "CellId": 36, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "266377a6-7a7e-435d-b2ce-4975ac80d6bf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 24.625, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "266377a6-7a7e-435d-b2ce-4975ac80d6bf", + "Name": null + }, + "eb0f333e-04ed-4fdc-beef-254f0220d5b8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "eb0f333e-04ed-4fdc-beef-254f0220d5b8", + "Name": "W12x152", + "CellId": 36, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e0bc6873-4b72-447d-b94a-6843dcaae93c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 26.25, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e0bc6873-4b72-447d-b94a-6843dcaae93c", + "Name": null + }, + "f7beb439-c888-4b32-bd40-ffd4d3de7619": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "f7beb439-c888-4b32-bd40-ffd4d3de7619", + "Name": "W12x152", + "CellId": 36, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "209f118b-c488-4497-89be-119d3045cd2f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 27.875, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "209f118b-c488-4497-89be-119d3045cd2f", + "Name": null + }, + "d0abd2c8-0137-4538-bce9-a3dc40cc61ec": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "d0abd2c8-0137-4538-bce9-a3dc40cc61ec", + "Name": "W12x152", + "CellId": 37, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d02220a4-0bc3-4822-9bab-36ddeaf63fdc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 17.75, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d02220a4-0bc3-4822-9bab-36ddeaf63fdc", + "Name": null + }, + "11b1b5d6-6d4d-4044-8b42-b4a172675f42": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "11b1b5d6-6d4d-4044-8b42-b4a172675f42", + "Name": "W12x152", + "CellId": 37, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "dc8b3c26-dcaa-4bf3-824f-377fe4e2be72": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 19.5, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dc8b3c26-dcaa-4bf3-824f-377fe4e2be72", + "Name": null + }, + "5bdd093c-be6f-4798-8e7e-50509a1d1027": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "5bdd093c-be6f-4798-8e7e-50509a1d1027", + "Name": "W12x152", + "CellId": 37, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ae2d289f-ecdb-437b-9d79-5143b76fdbe4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 21.25, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ae2d289f-ecdb-437b-9d79-5143b76fdbe4", + "Name": null + }, + "4dbaf034-8676-4d42-86b8-f5b58808dd1d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "4dbaf034-8676-4d42-86b8-f5b58808dd1d", + "Name": "W12x152", + "CellId": 38, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6a1595bf-5327-4d63-a808-b5df7d121c6c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 10.75, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6a1595bf-5327-4d63-a808-b5df7d121c6c", + "Name": null + }, + "401032fd-300d-4c1f-bb88-08004f58c78d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "401032fd-300d-4c1f-bb88-08004f58c78d", + "Name": "W12x152", + "CellId": 38, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "46aeb8af-ce91-458f-bb17-5d061dddf5ab": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 12.5, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "46aeb8af-ce91-458f-bb17-5d061dddf5ab", + "Name": null + }, + "f02a3449-c4ba-42d1-a80b-3f60d2ae4cac": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "f02a3449-c4ba-42d1-a80b-3f60d2ae4cac", + "Name": "W12x152", + "CellId": 38, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e5fbb417-902c-4ab9-9d0a-4ea91b5a9d72": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 14.25, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e5fbb417-902c-4ab9-9d0a-4ea91b5a9d72", + "Name": null + }, + "28d80df9-8635-4aea-8858-f6688917c042": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "28d80df9-8635-4aea-8858-f6688917c042", + "Name": "W12x152", + "CellId": 39, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "153b177f-7a25-464d-9c35-477e6a21b3b5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 3.75, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "153b177f-7a25-464d-9c35-477e6a21b3b5", + "Name": null + }, + "9aa11d96-4c02-4bd6-a9f5-cb0ff1ae89e7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "9aa11d96-4c02-4bd6-a9f5-cb0ff1ae89e7", + "Name": "W12x152", + "CellId": 39, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "23f6302f-4943-4e3c-9e45-285e356f7b54": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 5.5, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "23f6302f-4943-4e3c-9e45-285e356f7b54", + "Name": null + }, + "a0c519ce-9505-4648-aa29-ba28fc934e97": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "a0c519ce-9505-4648-aa29-ba28fc934e97", + "Name": "W12x152", + "CellId": 39, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "982d1253-9520-48bd-826f-85768f2746e4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -45.0, + "Z": 0.0 + }, + "End": { + "X": 7.25, + "Y": -40.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "982d1253-9520-48bd-826f-85768f2746e4", + "Name": null + }, + "6633755c-74a8-4b81-8a27-4bed972fe486": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -43.333333333333336, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "6633755c-74a8-4b81-8a27-4bed972fe486", + "Name": "W12x152", + "CellId": 40, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "9bd702cb-06a2-4907-9034-d1e2cb291833": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -43.333333333333336, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -43.333333333333336, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9bd702cb-06a2-4907-9034-d1e2cb291833", + "Name": null + }, + "5f1fc8d2-a4cd-4006-b093-f5b3f99acb01": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -41.666666666666664, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "5f1fc8d2-a4cd-4006-b093-f5b3f99acb01", + "Name": "W12x152", + "CellId": 40, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "b62aef0d-663c-45d6-a596-bfb9efb82f3f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -41.666666666666664, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -41.666666666666664, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b62aef0d-663c-45d6-a596-bfb9efb82f3f", + "Name": null + }, + "81ffe3d7-70c4-4c07-8a34-6fba513036d6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "81ffe3d7-70c4-4c07-8a34-6fba513036d6", + "Name": "W12x152", + "CellId": 41, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "35261318-f9b4-4d2e-b7b9-e6586a0d5a5a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 24.625, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "35261318-f9b4-4d2e-b7b9-e6586a0d5a5a", + "Name": null + }, + "f2a916d8-7814-4ad7-9a88-1f96d580a2a5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "f2a916d8-7814-4ad7-9a88-1f96d580a2a5", + "Name": "W12x152", + "CellId": 41, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "dbf78bea-0448-4edf-86ed-668d1c2f6d7a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 26.25, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dbf78bea-0448-4edf-86ed-668d1c2f6d7a", + "Name": null + }, + "84d82613-1663-47ed-b854-d61149a1ba45": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "84d82613-1663-47ed-b854-d61149a1ba45", + "Name": "W12x152", + "CellId": 41, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ffa65e98-279b-4838-bd1d-b61819892491": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 27.875, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ffa65e98-279b-4838-bd1d-b61819892491", + "Name": null + }, + "1defd089-935e-4a24-b99e-c13d0502a09d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "1defd089-935e-4a24-b99e-c13d0502a09d", + "Name": "W12x152", + "CellId": 42, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3dda4dbd-8b8d-4638-b874-e8221e9f45ba": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 17.75, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3dda4dbd-8b8d-4638-b874-e8221e9f45ba", + "Name": null + }, + "8149523d-6285-4cd6-97fd-ad49a05bf490": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "8149523d-6285-4cd6-97fd-ad49a05bf490", + "Name": "W12x152", + "CellId": 42, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0312cd53-fa86-4ac4-980b-e10998643044": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 19.5, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0312cd53-fa86-4ac4-980b-e10998643044", + "Name": null + }, + "25c866f6-b7be-4109-a373-06f2ad031549": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "25c866f6-b7be-4109-a373-06f2ad031549", + "Name": "W12x152", + "CellId": 42, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4a9110d6-0d5f-4f9d-9e82-218c1c256689": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 21.25, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4a9110d6-0d5f-4f9d-9e82-218c1c256689", + "Name": null + }, + "6397a936-d1b9-48b0-91ce-7bc44c5f4f78": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "6397a936-d1b9-48b0-91ce-7bc44c5f4f78", + "Name": "W12x152", + "CellId": 43, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "538cc0e5-6b6f-4595-9f77-cd6478003329": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 10.75, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "538cc0e5-6b6f-4595-9f77-cd6478003329", + "Name": null + }, + "85bdf280-2915-4ad7-9914-188f075856c9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "85bdf280-2915-4ad7-9914-188f075856c9", + "Name": "W12x152", + "CellId": 43, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ec630cc5-ff39-4cdc-bbbd-f587ca9bf7ad": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 12.5, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ec630cc5-ff39-4cdc-bbbd-f587ca9bf7ad", + "Name": null + }, + "56752b61-d7a6-47b6-8072-47dc61e93793": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "56752b61-d7a6-47b6-8072-47dc61e93793", + "Name": "W12x152", + "CellId": 43, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "82d39ff1-998f-4a17-84e4-331393f50f34": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 14.25, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "82d39ff1-998f-4a17-84e4-331393f50f34", + "Name": null + }, + "33b52d2b-f8a0-492b-8968-4ed518d6eee9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "33b52d2b-f8a0-492b-8968-4ed518d6eee9", + "Name": "W12x152", + "CellId": 44, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e6a55ae0-7c22-425e-9ae8-595ba5d2803b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 3.75, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e6a55ae0-7c22-425e-9ae8-595ba5d2803b", + "Name": null + }, + "1d409dbd-5056-42d8-aa40-2973d3e2d7c3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "1d409dbd-5056-42d8-aa40-2973d3e2d7c3", + "Name": "W12x152", + "CellId": 44, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "faf54d56-b8f3-4b07-b94b-604c1324f65c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 5.5, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "faf54d56-b8f3-4b07-b94b-604c1324f65c", + "Name": null + }, + "ec96e27f-b66b-445a-82cb-85bf8bc44063": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "ec96e27f-b66b-445a-82cb-85bf8bc44063", + "Name": "W12x152", + "CellId": 44, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b9441968-fa3c-4b93-aa8a-c22fd1a00435": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -50.0, + "Z": 0.0 + }, + "End": { + "X": 7.25, + "Y": -45.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b9441968-fa3c-4b93-aa8a-c22fd1a00435", + "Name": null + }, + "3048093c-84ba-4cdd-a861-f3fe3bf174ea": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -48.333333333333336, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "3048093c-84ba-4cdd-a861-f3fe3bf174ea", + "Name": "W12x152", + "CellId": 45, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "b2990e62-17ab-4dcb-9238-910a7e181b75": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -48.333333333333336, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -48.333333333333336, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b2990e62-17ab-4dcb-9238-910a7e181b75", + "Name": null + }, + "5186e40a-234f-43c7-9df7-b18b53944bf3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -46.666666666666664, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "5186e40a-234f-43c7-9df7-b18b53944bf3", + "Name": "W12x152", + "CellId": 45, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "faa6d2dc-4712-4f6c-8ed5-f08d0b9f9990": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -46.666666666666664, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -46.666666666666664, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "faa6d2dc-4712-4f6c-8ed5-f08d0b9f9990", + "Name": null + }, + "ff7a015a-8459-44a6-a363-543bb7a0ad23": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "ff7a015a-8459-44a6-a363-543bb7a0ad23", + "Name": "W12x152", + "CellId": 46, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "15cdca0f-25aa-4287-9e32-85d1d91cfff8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 24.625, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "15cdca0f-25aa-4287-9e32-85d1d91cfff8", + "Name": null + }, + "fab6a8d3-4942-4112-9ba7-ed958b4bbc2b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "fab6a8d3-4942-4112-9ba7-ed958b4bbc2b", + "Name": "W12x152", + "CellId": 46, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9a11745d-ed4c-4caf-84e0-8284a1a3e7ac": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 26.25, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9a11745d-ed4c-4caf-84e0-8284a1a3e7ac", + "Name": null + }, + "0bce3971-c00b-4adc-8b73-e1b5881300a0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "0bce3971-c00b-4adc-8b73-e1b5881300a0", + "Name": "W12x152", + "CellId": 46, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "47151969-1411-4cd4-a8e7-0b12a144292c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 27.875, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "47151969-1411-4cd4-a8e7-0b12a144292c", + "Name": null + }, + "54b14074-d71e-438e-81e2-ab436c2ff359": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "54b14074-d71e-438e-81e2-ab436c2ff359", + "Name": "W12x152", + "CellId": 47, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "feb5ef92-59c7-410b-99f9-00b0fca9415f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 17.75, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "feb5ef92-59c7-410b-99f9-00b0fca9415f", + "Name": null + }, + "d2705ada-62cf-4c15-b9e7-89039d07dcfe": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "d2705ada-62cf-4c15-b9e7-89039d07dcfe", + "Name": "W12x152", + "CellId": 47, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0041a7fe-72f5-4b49-a8ef-c6fa9da5136f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 19.5, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0041a7fe-72f5-4b49-a8ef-c6fa9da5136f", + "Name": null + }, + "d097b48a-7968-4c68-bfa5-888badba72a6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "d097b48a-7968-4c68-bfa5-888badba72a6", + "Name": "W12x152", + "CellId": 47, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d0c5af5f-1bd1-467a-affd-30d78ae2a10f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 21.25, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d0c5af5f-1bd1-467a-affd-30d78ae2a10f", + "Name": null + }, + "258b3022-b11f-4961-b5a2-6fff2538d5e2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "258b3022-b11f-4961-b5a2-6fff2538d5e2", + "Name": "W12x152", + "CellId": 48, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e5334086-20d8-43d8-afcd-779e88da33a9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 10.75, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e5334086-20d8-43d8-afcd-779e88da33a9", + "Name": null + }, + "6e6b024b-64ed-471e-ac9b-008ac3d24ba1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "6e6b024b-64ed-471e-ac9b-008ac3d24ba1", + "Name": "W12x152", + "CellId": 48, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "dc7eb616-2236-4d18-9e2d-7c882556ee97": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 12.5, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dc7eb616-2236-4d18-9e2d-7c882556ee97", + "Name": null + }, + "4bb67059-5567-471b-beb3-db6ca779f84e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "4bb67059-5567-471b-beb3-db6ca779f84e", + "Name": "W12x152", + "CellId": 48, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "001a6dce-2246-4e22-83d1-73feb574d55f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 14.25, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "001a6dce-2246-4e22-83d1-73feb574d55f", + "Name": null + }, + "06fdb599-0bc9-43d3-9017-f88c3bc7fd88": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "06fdb599-0bc9-43d3-9017-f88c3bc7fd88", + "Name": "W12x152", + "CellId": 49, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "341ac4e5-c785-4871-905d-a558945e0340": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 3.75, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "341ac4e5-c785-4871-905d-a558945e0340", + "Name": null + }, + "6fd0dcd2-2419-4329-80b7-e20af2dfdb74": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "6fd0dcd2-2419-4329-80b7-e20af2dfdb74", + "Name": "W12x152", + "CellId": 49, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ea4d4086-ba12-4519-bbb5-8a9000e2ab82": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 5.5, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ea4d4086-ba12-4519-bbb5-8a9000e2ab82", + "Name": null + }, + "7701b0d6-8e86-4a06-a93a-8acdc7941c8b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "7701b0d6-8e86-4a06-a93a-8acdc7941c8b", + "Name": "W12x152", + "CellId": 49, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4fa85be3-f0a4-48f6-8852-742df1089b7a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -55.0, + "Z": 0.0 + }, + "End": { + "X": 7.25, + "Y": -50.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4fa85be3-f0a4-48f6-8852-742df1089b7a", + "Name": null + }, + "1f90d02b-8571-4f67-afe2-24a28461f9dc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -53.333333333333336, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "1f90d02b-8571-4f67-afe2-24a28461f9dc", + "Name": "W12x152", + "CellId": 50, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "87fe4c99-5d96-4e17-bfc0-049056f687e3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -53.333333333333336, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -53.333333333333336, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "87fe4c99-5d96-4e17-bfc0-049056f687e3", + "Name": null + }, + "32ad6738-92e1-4538-a30b-635baf62844e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -51.666666666666664, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "32ad6738-92e1-4538-a30b-635baf62844e", + "Name": "W12x152", + "CellId": 50, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "b2080833-e891-4dd1-9754-20b1fbdaf1f3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -51.666666666666664, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -51.666666666666664, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b2080833-e891-4dd1-9754-20b1fbdaf1f3", + "Name": null + }, + "e8935f23-dd81-4ea7-bf7d-f5e2ad573662": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "e8935f23-dd81-4ea7-bf7d-f5e2ad573662", + "Name": "W12x152", + "CellId": 51, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e8125461-d3f9-4b89-a188-46993d6aa68d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 24.625, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e8125461-d3f9-4b89-a188-46993d6aa68d", + "Name": null + }, + "c7863400-3b54-493a-8faa-38df573f3405": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "c7863400-3b54-493a-8faa-38df573f3405", + "Name": "W12x152", + "CellId": 51, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c77bcd6b-6571-4605-b316-fe4d1f5e2486": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 26.25, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c77bcd6b-6571-4605-b316-fe4d1f5e2486", + "Name": null + }, + "0455ce8d-663f-4318-aad5-0273f391f0de": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "0455ce8d-663f-4318-aad5-0273f391f0de", + "Name": "W12x152", + "CellId": 51, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "36cb2c1d-0483-40d4-8cb0-a5761f913dac": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 27.875, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "36cb2c1d-0483-40d4-8cb0-a5761f913dac", + "Name": null + }, + "7600ab4a-8e78-4509-bb27-31e149b89521": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "7600ab4a-8e78-4509-bb27-31e149b89521", + "Name": "W12x152", + "CellId": 52, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fb4ca93f-0a6e-425d-8c4a-6636016e8459": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 17.75, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fb4ca93f-0a6e-425d-8c4a-6636016e8459", + "Name": null + }, + "00d95ddf-1c46-4185-a929-a31e677bf546": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "00d95ddf-1c46-4185-a929-a31e677bf546", + "Name": "W12x152", + "CellId": 52, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e7e849a6-dac6-478e-a435-adfa132a5cf5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 19.5, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e7e849a6-dac6-478e-a435-adfa132a5cf5", + "Name": null + }, + "690009a1-6505-410a-bc6c-9868cdb0666e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "690009a1-6505-410a-bc6c-9868cdb0666e", + "Name": "W12x152", + "CellId": 52, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b625663c-6efb-4989-80f1-38e0519fab1f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 21.25, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b625663c-6efb-4989-80f1-38e0519fab1f", + "Name": null + }, + "15100931-1975-43c6-991b-5d63b38d6121": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "15100931-1975-43c6-991b-5d63b38d6121", + "Name": "W12x152", + "CellId": 53, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "17961a87-10bc-4933-affc-e5b725a2b2b9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 10.75, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "17961a87-10bc-4933-affc-e5b725a2b2b9", + "Name": null + }, + "d8243927-456e-40f2-8664-99435be45590": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "d8243927-456e-40f2-8664-99435be45590", + "Name": "W12x152", + "CellId": 53, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "70dccfe1-19d9-446c-ba4c-e407b7665f98": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 12.5, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "70dccfe1-19d9-446c-ba4c-e407b7665f98", + "Name": null + }, + "075ba440-62c6-4b8b-a21c-82e3cb321e5f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "075ba440-62c6-4b8b-a21c-82e3cb321e5f", + "Name": "W12x152", + "CellId": 53, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "465388dd-8bb2-49f9-83ee-5e5c40dc351c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 14.25, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "465388dd-8bb2-49f9-83ee-5e5c40dc351c", + "Name": null + }, + "637a75a3-2d39-4442-930e-18f572fcdab2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "637a75a3-2d39-4442-930e-18f572fcdab2", + "Name": "W12x152", + "CellId": 54, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1f1f386b-a948-493b-aaa5-f520eda392de": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 3.75, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1f1f386b-a948-493b-aaa5-f520eda392de", + "Name": null + }, + "0964864d-4de1-4504-a3f3-f1be62322303": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "0964864d-4de1-4504-a3f3-f1be62322303", + "Name": "W12x152", + "CellId": 54, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "788cc98b-c790-4090-a5b3-2cf6d735d915": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 5.5, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "788cc98b-c790-4090-a5b3-2cf6d735d915", + "Name": null + }, + "f0a1ec0a-34d1-4cf0-aeb2-55e6775acdbb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "f0a1ec0a-34d1-4cf0-aeb2-55e6775acdbb", + "Name": "W12x152", + "CellId": 54, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5c2ba50c-d268-407a-b3fa-424a3aff5b4e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -59.5, + "Z": 0.0 + }, + "End": { + "X": 7.25, + "Y": -55.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5c2ba50c-d268-407a-b3fa-424a3aff5b4e", + "Name": null + }, + "968f45da-4b94-4439-8f65-786a8c2c82bc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -58.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "968f45da-4b94-4439-8f65-786a8c2c82bc", + "Name": "W12x152", + "CellId": 55, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "9a769399-8a56-49d8-9dc7-7a28897dd8eb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -58.0, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -58.0, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9a769399-8a56-49d8-9dc7-7a28897dd8eb", + "Name": null + }, + "80d4719d-16d2-4c85-abc7-2c9bf1c9062f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -56.5, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Id": "80d4719d-16d2-4c85-abc7-2c9bf1c9062f", + "Name": "W12x152", + "CellId": 55, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "e0227426-93d4-4c10-9641-ba01a1b25013": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -56.5, + "Z": 0.0 + }, + "End": { + "X": 0.5, + "Y": -56.5, + "Z": 0.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e0227426-93d4-4c10-9641-ba01a1b25013", + "Name": null + }, + "6701434d-0f43-4246-8fc0-421add9c4114": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "0a4b6575-3b0a-47a0-834e-6e427af090ca", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -2.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "6701434d-0f43-4246-8fc0-421add9c4114", + "Name": "W12x152", + "CellId": 56, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "fa62210f-3d65-4b42-90bc-d2c9550d00a2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -2.0, + "Z": 4.5 + }, + "End": { + "X": 10.7324, + "Y": -2.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fa62210f-3d65-4b42-90bc-d2c9550d00a2", + "Name": null + }, + "55b9bef1-cc8f-4fc0-8160-e9c175b12363": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c30b6320-d3a9-4244-9b8e-ff895659beb0", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -3.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "55b9bef1-cc8f-4fc0-8160-e9c175b12363", + "Name": "W12x152", + "CellId": 56, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "fa279c34-e83f-48c1-89ad-f82b855a07a3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -3.5, + "Z": 4.5 + }, + "End": { + "X": 11.7324, + "Y": -3.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fa279c34-e83f-48c1-89ad-f82b855a07a3", + "Name": null + }, + "b261ade4-365e-4274-a1b2-bb9f2e4399ea": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "b261ade4-365e-4274-a1b2-bb9f2e4399ea", + "Name": "W12x152", + "CellId": 57, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3c028b52-430a-4892-911a-df5bd0dc4492": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -5.0, + "Z": 4.5 + }, + "End": { + "X": 3.75, + "Y": -0.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3c028b52-430a-4892-911a-df5bd0dc4492", + "Name": null + }, + "2ad7ec5a-6b8f-49bc-a1f4-592ecfe3d430": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "2ad7ec5a-6b8f-49bc-a1f4-592ecfe3d430", + "Name": "W12x152", + "CellId": 57, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ed853a84-b441-4419-9c02-38391678d16c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -5.0, + "Z": 4.5 + }, + "End": { + "X": 5.5, + "Y": -0.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ed853a84-b441-4419-9c02-38391678d16c", + "Name": null + }, + "c5616dd2-01d9-455a-8dae-bf1a3e1df618": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c5616dd2-01d9-455a-8dae-bf1a3e1df618", + "Name": "W12x152", + "CellId": 57, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "dd32bd8f-19ae-46f3-a1d4-69931b5fab33": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -5.0, + "Z": 4.5 + }, + "End": { + "X": 7.25, + "Y": -0.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dd32bd8f-19ae-46f3-a1d4-69931b5fab33", + "Name": null + }, + "ce6c1c76-0402-40ec-a4a6-5739e5bebdb0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -3.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "ce6c1c76-0402-40ec-a4a6-5739e5bebdb0", + "Name": "W12x152", + "CellId": 58, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "0cbe0dc7-9d97-46f9-9aab-85b721d12dea": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -3.5, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -3.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0cbe0dc7-9d97-46f9-9aab-85b721d12dea", + "Name": null + }, + "396986ce-fdd9-4e55-9803-3f40f334b605": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -2.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "396986ce-fdd9-4e55-9803-3f40f334b605", + "Name": "W12x152", + "CellId": 58, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "a5f9b05d-6042-44a6-81dd-fd14baa81b26": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -2.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -2.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a5f9b05d-6042-44a6-81dd-fd14baa81b26", + "Name": null + }, + "b3f3256f-e85a-4c39-8456-7f7db0909cbd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "b3f3256f-e85a-4c39-8456-7f7db0909cbd", + "Name": "W12x152", + "CellId": 60, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a93f0007-a3c0-4bdd-8602-5b81f4ee15b9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 10.75, + "Y": -5.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a93f0007-a3c0-4bdd-8602-5b81f4ee15b9", + "Name": null + }, + "619afdb1-6256-4100-a479-e72b85ddb8d7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "619afdb1-6256-4100-a479-e72b85ddb8d7", + "Name": "W12x152", + "CellId": 60, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "09cb8cd4-ee2b-4010-8d00-fddb0bb2c0dd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 12.5, + "Y": -5.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "09cb8cd4-ee2b-4010-8d00-fddb0bb2c0dd", + "Name": null + }, + "83bc39ab-b84a-4605-b9d1-7bd340157ecb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d463367e-606b-478f-9829-18208e0b592e", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "83bc39ab-b84a-4605-b9d1-7bd340157ecb", + "Name": "W12x152", + "CellId": 60, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7bcc7b5f-a821-4961-842e-1d49d2bd924b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 14.25, + "Y": -7.276400000000001, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7bcc7b5f-a821-4961-842e-1d49d2bd924b", + "Name": null + }, + "fb504016-2527-4dad-b430-898193a2a808": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "fb504016-2527-4dad-b430-898193a2a808", + "Name": "W12x152", + "CellId": 61, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c26c2b26-077b-4fa3-96b3-f8d0772adf48": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 3.75, + "Y": -5.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c26c2b26-077b-4fa3-96b3-f8d0772adf48", + "Name": null + }, + "1dedd239-f930-4799-a4a2-3ec4dc482d0f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "1dedd239-f930-4799-a4a2-3ec4dc482d0f", + "Name": "W12x152", + "CellId": 61, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "68869671-7da9-43c6-ad06-fd254e03bd04": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 5.5, + "Y": -5.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "68869671-7da9-43c6-ad06-fd254e03bd04", + "Name": null + }, + "a507e084-1bbf-40e5-9008-5a244321c8c9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "a507e084-1bbf-40e5-9008-5a244321c8c9", + "Name": "W12x152", + "CellId": 61, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3e7a6f04-3b8d-4752-89b7-2d65a9b8c63d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -10.0, + "Z": 4.5 + }, + "End": { + "X": 7.25, + "Y": -5.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3e7a6f04-3b8d-4752-89b7-2d65a9b8c63d", + "Name": null + }, + "561a7c11-8eb7-414e-93b3-064e99c27024": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -8.333333333333334, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "561a7c11-8eb7-414e-93b3-064e99c27024", + "Name": "W12x152", + "CellId": 62, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "0f07076a-f4c8-46ff-8c75-14c538502b11": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -8.333333333333334, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -8.333333333333334, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0f07076a-f4c8-46ff-8c75-14c538502b11", + "Name": null + }, + "593ac25c-f4cd-4f0c-bc54-1286d139fef4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -6.666666666666667, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "593ac25c-f4cd-4f0c-bc54-1286d139fef4", + "Name": "W12x152", + "CellId": 62, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "3c0330fb-e6fd-4ea6-9a94-72f074c3d0be": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -6.666666666666667, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -6.666666666666667, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3c0330fb-e6fd-4ea6-9a94-72f074c3d0be", + "Name": null + }, + "d5e236ee-8fd5-4394-9ec2-963c2d7d7dc2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e9998d1f-f37e-4ec1-9a37-d6129df9567b", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -11.666666666666666, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "d5e236ee-8fd5-4394-9ec2-963c2d7d7dc2", + "Name": "W12x152", + "CellId": 63, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "1c829662-b34d-48e2-827f-b944f894d46c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -11.666666666666666, + "Z": 4.5 + }, + "End": { + "X": 17.176846666666666, + "Y": -11.666666666666666, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1c829662-b34d-48e2-827f-b944f894d46c", + "Name": null + }, + "0a3921b5-8260-4ec0-9e21-5d23d7706107": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "48a4ab2f-6f28-414c-be2a-e0687d5249cc", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -13.333333333333332, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "0a3921b5-8260-4ec0-9e21-5d23d7706107", + "Name": "W12x152", + "CellId": 63, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "a0dbc267-3a59-44e9-bda6-9a3c40211482": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -13.333333333333332, + "Z": 4.5 + }, + "End": { + "X": 18.287953333333334, + "Y": -13.333333333333332, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a0dbc267-3a59-44e9-bda6-9a3c40211482", + "Name": null + }, + "b44d84ab-0c0c-4ff5-816a-237a24954bf0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "b44d84ab-0c0c-4ff5-816a-237a24954bf0", + "Name": "W12x152", + "CellId": 64, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0c0ac027-58cc-4653-a763-f0a6ad80eab1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 10.75, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0c0ac027-58cc-4653-a763-f0a6ad80eab1", + "Name": null + }, + "f3e2deb1-5266-4012-a2fe-6b3980208a9d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "f3e2deb1-5266-4012-a2fe-6b3980208a9d", + "Name": "W12x152", + "CellId": 64, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "187270af-2998-465d-8803-c94142b6b374": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 12.5, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "187270af-2998-465d-8803-c94142b6b374", + "Name": null + }, + "f4ae489d-2ea4-49ef-89e1-daf21f599be7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "f4ae489d-2ea4-49ef-89e1-daf21f599be7", + "Name": "W12x152", + "CellId": 64, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9b558d81-2d62-45ba-8fa8-ae6848d3cfa9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 14.25, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9b558d81-2d62-45ba-8fa8-ae6848d3cfa9", + "Name": null + }, + "d4cf8946-a98d-4965-b70e-c621562d9bdc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "d4cf8946-a98d-4965-b70e-c621562d9bdc", + "Name": "W12x152", + "CellId": 65, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "384a95c6-4953-46fa-b771-6f672153c731": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 3.75, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "384a95c6-4953-46fa-b771-6f672153c731", + "Name": null + }, + "aa4f7acd-cdd7-4fb9-819e-f790b6c87622": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "aa4f7acd-cdd7-4fb9-819e-f790b6c87622", + "Name": "W12x152", + "CellId": 65, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fd91afa9-d003-4d87-8299-b62124f26285": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 5.5, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fd91afa9-d003-4d87-8299-b62124f26285", + "Name": null + }, + "f13cb1cc-45eb-46d7-a1ad-ca7ac1c0f613": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "f13cb1cc-45eb-46d7-a1ad-ca7ac1c0f613", + "Name": "W12x152", + "CellId": 65, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "97199b05-25d4-4f57-92a1-a5d55f0bde36": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -15.0, + "Z": 4.5 + }, + "End": { + "X": 7.25, + "Y": -10.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "97199b05-25d4-4f57-92a1-a5d55f0bde36", + "Name": null + }, + "16ad6ad7-fe6d-4074-a6d5-253d3d759b79": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -13.333333333333334, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "16ad6ad7-fe6d-4074-a6d5-253d3d759b79", + "Name": "W12x152", + "CellId": 66, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "dd9cf534-54ef-4b97-af2a-e5dd0d4bb853": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -13.333333333333334, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -13.333333333333334, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dd9cf534-54ef-4b97-af2a-e5dd0d4bb853", + "Name": null + }, + "cf08ea34-f3d6-47dc-9502-1089b294828b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -11.666666666666668, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "cf08ea34-f3d6-47dc-9502-1089b294828b", + "Name": "W12x152", + "CellId": 66, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "b1bb3b10-90d7-48f2-8318-1bfb91b6dfce": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -11.666666666666668, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -11.666666666666668, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b1bb3b10-90d7-48f2-8318-1bfb91b6dfce", + "Name": null + }, + "5387c4d5-641f-4bac-a9c6-6259305d7787": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.6831, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "5387c4d5-641f-4bac-a9c6-6259305d7787", + "Name": "W12x152", + "CellId": 67, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7413e4a7-ed66-467c-a440-73d9e3be0b4a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.6831, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 17.6831, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7413e4a7-ed66-467c-a440-73d9e3be0b4a", + "Name": null + }, + "31670057-d19b-4857-a81f-584a52e80a4c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.3662, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "31670057-d19b-4857-a81f-584a52e80a4c", + "Name": "W12x152", + "CellId": 67, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0e3b7d71-85cb-47c2-9179-bd4fc7d4b2b0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.3662, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 19.3662, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0e3b7d71-85cb-47c2-9179-bd4fc7d4b2b0", + "Name": null + }, + "0c33af87-2d2c-4039-aafe-fd070c760e90": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "a14957ee-e204-468a-8e80-821f5ea2eabc", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.0493, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "0c33af87-2d2c-4039-aafe-fd070c760e90", + "Name": "W12x152", + "CellId": 67, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6c8e64bc-97f7-4e16-a58d-4e930eebfc62": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.0493, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 21.0493, + "Y": -17.475355049289902, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6c8e64bc-97f7-4e16-a58d-4e930eebfc62", + "Name": null + }, + "84b99e41-0bd6-49f2-a31f-345b4c7fe62a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "84b99e41-0bd6-49f2-a31f-345b4c7fe62a", + "Name": "W12x152", + "CellId": 68, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3aec494c-22f6-4806-8e62-dac0f8956738": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 10.75, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3aec494c-22f6-4806-8e62-dac0f8956738", + "Name": null + }, + "5c4364fd-a54d-467e-b4ea-a977a7f455fa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "5c4364fd-a54d-467e-b4ea-a977a7f455fa", + "Name": "W12x152", + "CellId": 68, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "8b4af1e4-d2e0-4f47-ae08-a058ecebfab1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 12.5, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8b4af1e4-d2e0-4f47-ae08-a058ecebfab1", + "Name": null + }, + "584198b5-38c5-4905-b375-cd8c3bb74cd3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "584198b5-38c5-4905-b375-cd8c3bb74cd3", + "Name": "W12x152", + "CellId": 68, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c921e919-9129-413d-8167-6436911aab30": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 14.25, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c921e919-9129-413d-8167-6436911aab30", + "Name": null + }, + "0f977749-1e6a-4b94-8dd5-92cd801508e6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "0f977749-1e6a-4b94-8dd5-92cd801508e6", + "Name": "W12x152", + "CellId": 69, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9fbc3ea3-67b6-4638-a3e8-a0607df86e16": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 3.75, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9fbc3ea3-67b6-4638-a3e8-a0607df86e16", + "Name": null + }, + "c99b9077-2dfb-4357-aeb8-88c50b2e28df": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c99b9077-2dfb-4357-aeb8-88c50b2e28df", + "Name": "W12x152", + "CellId": 69, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "96b4ac7e-0c48-46cb-a449-71956a0b00d3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 5.5, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "96b4ac7e-0c48-46cb-a449-71956a0b00d3", + "Name": null + }, + "6143794a-f527-4389-8969-2288540ddb06": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "6143794a-f527-4389-8969-2288540ddb06", + "Name": "W12x152", + "CellId": 69, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3d5cfaf9-d5f3-493f-9a1f-77de7f77a3d7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -20.0, + "Z": 4.5 + }, + "End": { + "X": 7.25, + "Y": -15.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3d5cfaf9-d5f3-493f-9a1f-77de7f77a3d7", + "Name": null + }, + "e9a53ced-f7fd-4c27-97df-0659dcec6f5a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -18.333333333333332, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e9a53ced-f7fd-4c27-97df-0659dcec6f5a", + "Name": "W12x152", + "CellId": 70, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "e0ec27ac-bfc3-4d43-bbde-234a262529f9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -18.333333333333332, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -18.333333333333332, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e0ec27ac-bfc3-4d43-bbde-234a262529f9", + "Name": null + }, + "e67e7c2f-4f6c-4888-a0dd-1b5a87c0f1d7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -16.666666666666668, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e67e7c2f-4f6c-4888-a0dd-1b5a87c0f1d7", + "Name": "W12x152", + "CellId": 70, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "16379624-1663-4e12-aee8-04fb723bc2c3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -16.666666666666668, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -16.666666666666668, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "16379624-1663-4e12-aee8-04fb723bc2c3", + "Name": null + }, + "de17ad04-469e-42a8-89a6-68b273095909": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "00428e4f-d368-4fa9-9b91-6b35a98db880", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -21.934266666666666, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "de17ad04-469e-42a8-89a6-68b273095909", + "Name": "W12x152", + "CellId": 71, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "80a77184-39e3-4051-9413-677980823a6d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -21.934266666666666, + "Z": 4.5 + }, + "End": { + "X": 24.021913333333334, + "Y": -21.934266666666666, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "80a77184-39e3-4051-9413-677980823a6d", + "Name": null + }, + "455c663c-ba94-4218-b4f9-f751b931fb58": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2a51b0ec-7a36-4993-b509-32bf4c52b9b4", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -23.467133333333333, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "455c663c-ba94-4218-b4f9-f751b931fb58", + "Name": "W12x152", + "CellId": 71, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "784cd6a2-5278-451e-a627-8b0de0665249": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -23.467133333333333, + "Z": 4.5 + }, + "End": { + "X": 25.043826666666668, + "Y": -23.467133333333333, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "784cd6a2-5278-451e-a627-8b0de0665249", + "Name": null + }, + "a46a60c9-261c-4731-b26f-83039fec692b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "a46a60c9-261c-4731-b26f-83039fec692b", + "Name": "W12x152", + "CellId": 72, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "39e5e052-ac85-4db4-9af2-3dcaa6ec765f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 17.75, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "39e5e052-ac85-4db4-9af2-3dcaa6ec765f", + "Name": null + }, + "1e202d8a-3a21-49e2-bf9d-e4b6c177e437": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "1e202d8a-3a21-49e2-bf9d-e4b6c177e437", + "Name": "W12x152", + "CellId": 72, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "2a1f2e64-9736-4479-9325-f622a3b7c674": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 19.5, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2a1f2e64-9736-4479-9325-f622a3b7c674", + "Name": null + }, + "ee069bf7-c16f-4d4e-91b5-054a7aff4278": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "ee069bf7-c16f-4d4e-91b5-054a7aff4278", + "Name": "W12x152", + "CellId": 72, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "8f04c1d6-b90d-49ee-b10f-63bea865cbcc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 21.25, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8f04c1d6-b90d-49ee-b10f-63bea865cbcc", + "Name": null + }, + "7297ec1a-8930-4e06-a866-31fb8d94d186": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "7297ec1a-8930-4e06-a866-31fb8d94d186", + "Name": "W12x152", + "CellId": 73, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f0cf8f2d-73e9-4b97-b838-24fdcbec3068": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 10.75, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f0cf8f2d-73e9-4b97-b838-24fdcbec3068", + "Name": null + }, + "e26b9d77-9456-4938-94fe-278794ddfae2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e26b9d77-9456-4938-94fe-278794ddfae2", + "Name": "W12x152", + "CellId": 73, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "87873f2a-a7ba-459d-b78c-eb877ee54129": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 12.5, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "87873f2a-a7ba-459d-b78c-eb877ee54129", + "Name": null + }, + "cb2520cf-e040-4f08-91b8-7dea1e8aaa3f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "cb2520cf-e040-4f08-91b8-7dea1e8aaa3f", + "Name": "W12x152", + "CellId": 73, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "bb053993-6d3b-4807-abef-6536a0c9f798": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 14.25, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bb053993-6d3b-4807-abef-6536a0c9f798", + "Name": null + }, + "c2bc8e95-3dac-4fd9-b50d-0fb57ff6ccef": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c2bc8e95-3dac-4fd9-b50d-0fb57ff6ccef", + "Name": "W12x152", + "CellId": 74, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9fddaf8e-3717-4e3b-b29d-7ec212ddf88d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 3.75, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9fddaf8e-3717-4e3b-b29d-7ec212ddf88d", + "Name": null + }, + "1ba5e032-d676-418d-bc69-d1b8f5ea05c3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "1ba5e032-d676-418d-bc69-d1b8f5ea05c3", + "Name": "W12x152", + "CellId": 74, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a43995ae-ab4a-4b6b-9696-8e32bd8d7da7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 5.5, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a43995ae-ab4a-4b6b-9696-8e32bd8d7da7", + "Name": null + }, + "650bbc29-361f-48d5-bb33-3a53b6523c70": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "650bbc29-361f-48d5-bb33-3a53b6523c70", + "Name": "W12x152", + "CellId": 74, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1ad125a4-d6ba-420e-b4d1-ebc91ef566aa": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -25.0, + "Z": 4.5 + }, + "End": { + "X": 7.25, + "Y": -20.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1ad125a4-d6ba-420e-b4d1-ebc91ef566aa", + "Name": null + }, + "db6462b2-4ec0-4687-82a4-8048e8dee909": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -23.333333333333332, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "db6462b2-4ec0-4687-82a4-8048e8dee909", + "Name": "W12x152", + "CellId": 75, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "e0f35987-516b-402b-9745-8f25b8cad172": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -23.333333333333332, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -23.333333333333332, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e0f35987-516b-402b-9745-8f25b8cad172", + "Name": null + }, + "49307561-c298-4bab-bf15-d6b5b8cb24c1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -21.666666666666668, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "49307561-c298-4bab-bf15-d6b5b8cb24c1", + "Name": "W12x152", + "CellId": 75, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "d80a7e53-a017-4385-a070-826b0c263816": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -21.666666666666668, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -21.666666666666668, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d80a7e53-a017-4385-a070-826b0c263816", + "Name": null + }, + "7ed98e55-424b-4007-95bd-766d79b88516": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.599764999999998, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "7ed98e55-424b-4007-95bd-766d79b88516", + "Name": "W12x152", + "CellId": 76, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d5f29363-2a98-460c-9ff9-4a17d2469386": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.599764999999998, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 24.599764999999998, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d5f29363-2a98-460c-9ff9-4a17d2469386", + "Name": null + }, + "d784f63f-d237-4ecc-9d75-d482131f64af": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c86c7794-702f-43dc-82a1-ccf5f1b5deea", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.19953, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "d784f63f-d237-4ecc-9d75-d482131f64af", + "Name": "W12x152", + "CellId": 76, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b0484559-5740-4c9c-ada2-0b2be1cd57ed": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.19953, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 26.19953, + "Y": -25.20068580274321, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b0484559-5740-4c9c-ada2-0b2be1cd57ed", + "Name": null + }, + "cedf693a-2b2b-4779-acd4-09643f472bb8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d27c8274-35d1-48e6-a623-33a7ddfb778f", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.799295, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "cedf693a-2b2b-4779-acd4-09643f472bb8", + "Name": "W12x152", + "CellId": 76, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "24e17091-89e4-4c6f-9814-563b4ef3b4c7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.799295, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 27.799295, + "Y": -27.600342901371604, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "24e17091-89e4-4c6f-9814-563b4ef3b4c7", + "Name": null + }, + "091fb905-c39f-4a71-ab72-6977e34a1b01": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "091fb905-c39f-4a71-ab72-6977e34a1b01", + "Name": "W12x152", + "CellId": 77, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "da578b44-6d47-47bb-a5cf-a809ea3c76b0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 17.75, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "da578b44-6d47-47bb-a5cf-a809ea3c76b0", + "Name": null + }, + "08ac7b3a-7dcd-4196-a189-9ac2f093982c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "08ac7b3a-7dcd-4196-a189-9ac2f093982c", + "Name": "W12x152", + "CellId": 77, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7fe6c584-2a56-4aa0-8e62-7af19e04bf5a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 19.5, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7fe6c584-2a56-4aa0-8e62-7af19e04bf5a", + "Name": null + }, + "530a41da-cf00-4aed-ad4c-040f592a9739": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "530a41da-cf00-4aed-ad4c-040f592a9739", + "Name": "W12x152", + "CellId": 77, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9506b85e-fbd5-49b8-8582-332db31df0d3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 21.25, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9506b85e-fbd5-49b8-8582-332db31df0d3", + "Name": null + }, + "e96bea8b-8554-452d-b3eb-1254958e5cfc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e96bea8b-8554-452d-b3eb-1254958e5cfc", + "Name": "W12x152", + "CellId": 78, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "97e39633-5e59-4689-8edb-0d00d60a345f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 10.75, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "97e39633-5e59-4689-8edb-0d00d60a345f", + "Name": null + }, + "ac4cf273-fb35-4567-9aaf-935618c9861d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "ac4cf273-fb35-4567-9aaf-935618c9861d", + "Name": "W12x152", + "CellId": 78, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "414482aa-3ada-467e-923b-1e5128b5ae1b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 12.5, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "414482aa-3ada-467e-923b-1e5128b5ae1b", + "Name": null + }, + "7d4edaec-5a71-43a4-b59c-225ff1c9d24b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "7d4edaec-5a71-43a4-b59c-225ff1c9d24b", + "Name": "W12x152", + "CellId": 78, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9ff6e2dc-6e80-4c26-b47a-36ba5fd395d9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 14.25, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9ff6e2dc-6e80-4c26-b47a-36ba5fd395d9", + "Name": null + }, + "e25a8f0b-0e07-4280-9447-23cf0348081c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e25a8f0b-0e07-4280-9447-23cf0348081c", + "Name": "W12x152", + "CellId": 79, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f0e254c4-1ed7-4afd-9601-7baf69ff1d59": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 3.75, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f0e254c4-1ed7-4afd-9601-7baf69ff1d59", + "Name": null + }, + "80552cf6-b8f4-4f21-a3e4-1444243061c1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "80552cf6-b8f4-4f21-a3e4-1444243061c1", + "Name": "W12x152", + "CellId": 79, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1f7734bf-68d8-404b-a87d-d410ef575ff4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 5.5, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1f7734bf-68d8-404b-a87d-d410ef575ff4", + "Name": null + }, + "f189330e-e564-4a61-82e5-0c962217dc42": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "f189330e-e564-4a61-82e5-0c962217dc42", + "Name": "W12x152", + "CellId": 79, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ea8a0107-23da-46a5-9b38-5f482d4d34ab": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -30.0, + "Z": 4.5 + }, + "End": { + "X": 7.25, + "Y": -25.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ea8a0107-23da-46a5-9b38-5f482d4d34ab", + "Name": null + }, + "a62fbb4f-299f-409b-9b9a-3559f8211089": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -28.333333333333332, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "a62fbb4f-299f-409b-9b9a-3559f8211089", + "Name": "W12x152", + "CellId": 80, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "3753f0c9-bab2-4580-97b7-aad88b9e4c9a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -28.333333333333332, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -28.333333333333332, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3753f0c9-bab2-4580-97b7-aad88b9e4c9a", + "Name": null + }, + "8cd88dc3-de4b-464f-9945-1c99751c5bce": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -26.666666666666668, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "8cd88dc3-de4b-464f-9945-1c99751c5bce", + "Name": "W12x152", + "CellId": 80, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "9bf0167c-0909-4b79-ba21-accb7302dd0e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -26.666666666666668, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -26.666666666666668, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9bf0167c-0909-4b79-ba21-accb7302dd0e", + "Name": null + }, + "8a87f8ff-be8a-45ba-b196-dc0146b1c551": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "8a87f8ff-be8a-45ba-b196-dc0146b1c551", + "Name": "W12x152", + "CellId": 81, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1adbd266-7dda-4d9d-9bf9-90bb07d57701": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 24.625, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1adbd266-7dda-4d9d-9bf9-90bb07d57701", + "Name": null + }, + "472e5628-0755-4f92-8813-b55e66c28c8e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "472e5628-0755-4f92-8813-b55e66c28c8e", + "Name": "W12x152", + "CellId": 81, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "854a4e3b-cefd-4249-b29b-353a925154fe": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 26.25, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "854a4e3b-cefd-4249-b29b-353a925154fe", + "Name": null + }, + "4b004e60-701e-4c19-9fb2-128459ab6123": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "4b004e60-701e-4c19-9fb2-128459ab6123", + "Name": "W12x152", + "CellId": 81, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d9c2cf32-d0c9-43cb-97fe-0c4fd300acd4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 27.875, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d9c2cf32-d0c9-43cb-97fe-0c4fd300acd4", + "Name": null + }, + "ca675512-8c0d-4db3-a211-7136c759c266": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "ca675512-8c0d-4db3-a211-7136c759c266", + "Name": "W12x152", + "CellId": 82, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b62f0523-7bbb-43b5-9f51-e52e45719a9b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 17.75, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b62f0523-7bbb-43b5-9f51-e52e45719a9b", + "Name": null + }, + "57a4d532-95d8-40d8-8a3c-dadb9b91a0da": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "57a4d532-95d8-40d8-8a3c-dadb9b91a0da", + "Name": "W12x152", + "CellId": 82, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "99a9443c-366b-4fe3-a162-03568add5f0a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 19.5, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "99a9443c-366b-4fe3-a162-03568add5f0a", + "Name": null + }, + "72084327-e840-4655-a77f-2871e994016a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "72084327-e840-4655-a77f-2871e994016a", + "Name": "W12x152", + "CellId": 82, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1f7f1f50-1aaa-4ef9-9927-767dda547f45": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 21.25, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1f7f1f50-1aaa-4ef9-9927-767dda547f45", + "Name": null + }, + "985fa069-73da-4cd4-ac80-e591de4cf05c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "985fa069-73da-4cd4-ac80-e591de4cf05c", + "Name": "W12x152", + "CellId": 83, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ec420055-0334-45c8-98f1-6779c70b378a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 10.75, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ec420055-0334-45c8-98f1-6779c70b378a", + "Name": null + }, + "2f9f55e3-94c9-48ce-a437-c01fb86bd48b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "2f9f55e3-94c9-48ce-a437-c01fb86bd48b", + "Name": "W12x152", + "CellId": 83, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9b51973f-d6eb-4581-a6d4-268af1870004": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 12.5, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9b51973f-d6eb-4581-a6d4-268af1870004", + "Name": null + }, + "fb5d3aeb-b06a-4636-a922-83aed27a3387": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "fb5d3aeb-b06a-4636-a922-83aed27a3387", + "Name": "W12x152", + "CellId": 83, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b4ab9755-d182-4c52-adcd-cc613b4a06f2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 14.25, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b4ab9755-d182-4c52-adcd-cc613b4a06f2", + "Name": null + }, + "868f23f3-1290-4469-a2f6-910b831a8d60": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "868f23f3-1290-4469-a2f6-910b831a8d60", + "Name": "W12x152", + "CellId": 84, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "41291649-1152-4e1a-8409-e383dfcbe338": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 3.75, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "41291649-1152-4e1a-8409-e383dfcbe338", + "Name": null + }, + "ebf92b45-666c-4324-b75b-2c14136d32e1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "ebf92b45-666c-4324-b75b-2c14136d32e1", + "Name": "W12x152", + "CellId": 84, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "abe68cd4-6bae-40e9-8abc-6c2abc977f11": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 5.5, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "abe68cd4-6bae-40e9-8abc-6c2abc977f11", + "Name": null + }, + "8f10cee7-dd74-4dd6-aad3-df3c4c03397c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "8f10cee7-dd74-4dd6-aad3-df3c4c03397c", + "Name": "W12x152", + "CellId": 84, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b00d8de5-3502-4844-bcd0-344594843576": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -35.0, + "Z": 4.5 + }, + "End": { + "X": 7.25, + "Y": -30.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b00d8de5-3502-4844-bcd0-344594843576", + "Name": null + }, + "9445e30c-847e-4c80-97e7-64c8054fe149": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -33.333333333333336, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "9445e30c-847e-4c80-97e7-64c8054fe149", + "Name": "W12x152", + "CellId": 85, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "4d4ba358-61a9-4350-9730-fa258ddfbefe": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -33.333333333333336, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -33.333333333333336, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4d4ba358-61a9-4350-9730-fa258ddfbefe", + "Name": null + }, + "db87897e-ef58-4f5e-b0fd-4c151c2ba0c8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -31.666666666666668, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "db87897e-ef58-4f5e-b0fd-4c151c2ba0c8", + "Name": "W12x152", + "CellId": 85, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "7c93273e-adca-4a6e-a724-7f9675976203": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -31.666666666666668, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -31.666666666666668, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7c93273e-adca-4a6e-a724-7f9675976203", + "Name": null + }, + "7fa620a2-b6dc-45ae-9342-cfd6795811a5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "7fa620a2-b6dc-45ae-9342-cfd6795811a5", + "Name": "W12x152", + "CellId": 86, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4f1a4b96-9ad9-4a15-bee8-89590395f206": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 24.625, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4f1a4b96-9ad9-4a15-bee8-89590395f206", + "Name": null + }, + "ba1080b3-b4df-4de2-9a4a-a6a663b76798": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "ba1080b3-b4df-4de2-9a4a-a6a663b76798", + "Name": "W12x152", + "CellId": 86, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "20559687-8984-4eb1-8f25-a8b3ad56688d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 26.25, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "20559687-8984-4eb1-8f25-a8b3ad56688d", + "Name": null + }, + "b15a372d-354a-475a-b958-e163e1d920e2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "b15a372d-354a-475a-b958-e163e1d920e2", + "Name": "W12x152", + "CellId": 86, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5e4bd655-1f7d-474e-b876-8dc2a249a7d9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 27.875, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5e4bd655-1f7d-474e-b876-8dc2a249a7d9", + "Name": null + }, + "23f16ac2-62c4-48e6-a50c-960b7d2f6751": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "23f16ac2-62c4-48e6-a50c-960b7d2f6751", + "Name": "W12x152", + "CellId": 87, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "bda08893-2a23-4f30-9da6-0a4ffb947f7b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 17.75, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bda08893-2a23-4f30-9da6-0a4ffb947f7b", + "Name": null + }, + "f176bd91-c733-492b-ac66-7bb438e3c090": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "f176bd91-c733-492b-ac66-7bb438e3c090", + "Name": "W12x152", + "CellId": 87, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "cdfc1ab5-6e50-40a0-9c45-e7722fbc3933": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 19.5, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cdfc1ab5-6e50-40a0-9c45-e7722fbc3933", + "Name": null + }, + "09112f5d-ef48-49ba-b91b-04c03d22594f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "09112f5d-ef48-49ba-b91b-04c03d22594f", + "Name": "W12x152", + "CellId": 87, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "89010543-17ad-4758-848d-c8d4877595ac": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 21.25, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "89010543-17ad-4758-848d-c8d4877595ac", + "Name": null + }, + "94363c3e-a4b8-46da-b129-cb0507f73066": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "94363c3e-a4b8-46da-b129-cb0507f73066", + "Name": "W12x152", + "CellId": 88, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "019d2053-f00f-458a-bb0f-8948b7de9a57": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 10.75, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "019d2053-f00f-458a-bb0f-8948b7de9a57", + "Name": null + }, + "b8125327-c8fc-4a48-a65b-a3f7c36e64ed": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "b8125327-c8fc-4a48-a65b-a3f7c36e64ed", + "Name": "W12x152", + "CellId": 88, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5b3cc45b-0ed4-40b4-81c4-1b3234085cc7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 12.5, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5b3cc45b-0ed4-40b4-81c4-1b3234085cc7", + "Name": null + }, + "81f26160-5a66-4a2f-922d-1b6684694155": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "81f26160-5a66-4a2f-922d-1b6684694155", + "Name": "W12x152", + "CellId": 88, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ae112366-a67d-490a-bd3e-55ed10c9f41e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 14.25, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ae112366-a67d-490a-bd3e-55ed10c9f41e", + "Name": null + }, + "d543905f-9bb0-44eb-8362-b7069bdd7f88": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "d543905f-9bb0-44eb-8362-b7069bdd7f88", + "Name": "W12x152", + "CellId": 89, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "26a09e4b-04c5-4ec8-9c67-60854b917bfe": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 3.75, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "26a09e4b-04c5-4ec8-9c67-60854b917bfe", + "Name": null + }, + "d56f7076-a85d-40da-8d05-a52a58172ebf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "d56f7076-a85d-40da-8d05-a52a58172ebf", + "Name": "W12x152", + "CellId": 89, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a774e18b-b2a0-4b07-ab44-6035a8264e3d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 5.5, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a774e18b-b2a0-4b07-ab44-6035a8264e3d", + "Name": null + }, + "eeee4bb5-f8e7-4dc0-ac5d-292f8378964b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "eeee4bb5-f8e7-4dc0-ac5d-292f8378964b", + "Name": "W12x152", + "CellId": 89, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7c118b03-7249-497b-9f90-c6041a4a383d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -40.0, + "Z": 4.5 + }, + "End": { + "X": 7.25, + "Y": -35.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7c118b03-7249-497b-9f90-c6041a4a383d", + "Name": null + }, + "f68066ec-1877-4e38-b50c-36448a79bc89": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -38.333333333333336, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "f68066ec-1877-4e38-b50c-36448a79bc89", + "Name": "W12x152", + "CellId": 90, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "7caa3bbb-62c5-4a11-83a6-dd57eb0a4bd4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -38.333333333333336, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -38.333333333333336, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7caa3bbb-62c5-4a11-83a6-dd57eb0a4bd4", + "Name": null + }, + "20ac14d8-b8e8-4dd2-b07b-ce446884fee7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -36.666666666666664, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "20ac14d8-b8e8-4dd2-b07b-ce446884fee7", + "Name": "W12x152", + "CellId": 90, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "3a4b5ec0-3a25-4002-b48f-a4be5102b9c6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -36.666666666666664, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -36.666666666666664, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3a4b5ec0-3a25-4002-b48f-a4be5102b9c6", + "Name": null + }, + "38138424-49fb-44e8-9777-235820e76b22": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "38138424-49fb-44e8-9777-235820e76b22", + "Name": "W12x152", + "CellId": 91, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b1c0296f-0f88-47e2-b6ae-a6af15dded0a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 24.625, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b1c0296f-0f88-47e2-b6ae-a6af15dded0a", + "Name": null + }, + "2fad153e-9477-40fd-a125-7e6376368ae2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "2fad153e-9477-40fd-a125-7e6376368ae2", + "Name": "W12x152", + "CellId": 91, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5c6b6dd4-f899-436b-a5b6-a9c46fdce0d2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 26.25, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5c6b6dd4-f899-436b-a5b6-a9c46fdce0d2", + "Name": null + }, + "a8a2c8da-7f0c-41f0-9af6-436eda3f16c1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "a8a2c8da-7f0c-41f0-9af6-436eda3f16c1", + "Name": "W12x152", + "CellId": 91, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c45e9c45-30a2-4a97-9263-3ae640d8372d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 27.875, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c45e9c45-30a2-4a97-9263-3ae640d8372d", + "Name": null + }, + "7cf524c8-fc77-4f27-bca7-473b36d12b1d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "7cf524c8-fc77-4f27-bca7-473b36d12b1d", + "Name": "W12x152", + "CellId": 92, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c0ac59dd-60c0-45a5-9ac3-40ffac5b2917": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 17.75, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c0ac59dd-60c0-45a5-9ac3-40ffac5b2917", + "Name": null + }, + "ff8a7d3d-6f6c-4fe3-98b8-5a50b5e87068": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "ff8a7d3d-6f6c-4fe3-98b8-5a50b5e87068", + "Name": "W12x152", + "CellId": 92, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a83824af-3cc6-488f-84d1-28f7d6216a57": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 19.5, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a83824af-3cc6-488f-84d1-28f7d6216a57", + "Name": null + }, + "6a82be05-61ec-4069-b8a4-de89ae3fda0a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "6a82be05-61ec-4069-b8a4-de89ae3fda0a", + "Name": "W12x152", + "CellId": 92, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4fb0d988-92dd-4e1b-a4f9-03a336a74fd3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 21.25, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4fb0d988-92dd-4e1b-a4f9-03a336a74fd3", + "Name": null + }, + "d7e8efdd-a6ee-4635-9b8c-647d93363dc5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "d7e8efdd-a6ee-4635-9b8c-647d93363dc5", + "Name": "W12x152", + "CellId": 93, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7a959eb8-c56a-4b41-9f28-654a87af8109": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 10.75, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7a959eb8-c56a-4b41-9f28-654a87af8109", + "Name": null + }, + "c17fb3d7-9c48-43cc-94b3-bfd7ba0f27d9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c17fb3d7-9c48-43cc-94b3-bfd7ba0f27d9", + "Name": "W12x152", + "CellId": 93, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f8a5c277-d7da-47e9-b14c-dec597c481c5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 12.5, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f8a5c277-d7da-47e9-b14c-dec597c481c5", + "Name": null + }, + "6dd32a3f-72b4-4bb6-8d13-f3d524d3bd66": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "6dd32a3f-72b4-4bb6-8d13-f3d524d3bd66", + "Name": "W12x152", + "CellId": 93, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "09bffa52-dfc0-4b59-9df7-7d176961036c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 14.25, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "09bffa52-dfc0-4b59-9df7-7d176961036c", + "Name": null + }, + "61a79c6e-e17d-4f13-aedc-72f8b9e015be": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "61a79c6e-e17d-4f13-aedc-72f8b9e015be", + "Name": "W12x152", + "CellId": 94, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "12d365b6-514a-438c-bc3e-8c202b3e99d4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 3.75, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "12d365b6-514a-438c-bc3e-8c202b3e99d4", + "Name": null + }, + "bdd92973-7732-41bb-a80d-a014af1261d7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "bdd92973-7732-41bb-a80d-a014af1261d7", + "Name": "W12x152", + "CellId": 94, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a33203aa-e6f9-4a0b-ad0b-42b98347fba7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 5.5, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a33203aa-e6f9-4a0b-ad0b-42b98347fba7", + "Name": null + }, + "fd0237e9-c517-4181-b5f7-8417a7076732": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "fd0237e9-c517-4181-b5f7-8417a7076732", + "Name": "W12x152", + "CellId": 94, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "11b132e1-f8f5-4ecd-9797-1e651bc3506e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -45.0, + "Z": 4.5 + }, + "End": { + "X": 7.25, + "Y": -40.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "11b132e1-f8f5-4ecd-9797-1e651bc3506e", + "Name": null + }, + "88c0bce7-14e9-41f8-a83f-e4e0f1094500": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -43.333333333333336, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "88c0bce7-14e9-41f8-a83f-e4e0f1094500", + "Name": "W12x152", + "CellId": 95, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "50ed8ef2-9b42-416e-b21d-47f4ea876549": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -43.333333333333336, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -43.333333333333336, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "50ed8ef2-9b42-416e-b21d-47f4ea876549", + "Name": null + }, + "06e6dcb7-08ef-4fec-8a5d-c6713d48a875": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -41.666666666666664, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "06e6dcb7-08ef-4fec-8a5d-c6713d48a875", + "Name": "W12x152", + "CellId": 95, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "e97f2ad6-2970-41dd-a919-28efba655418": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -41.666666666666664, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -41.666666666666664, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e97f2ad6-2970-41dd-a919-28efba655418", + "Name": null + }, + "dbde0c7d-fced-4a97-af72-7f94e2924fae": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "dbde0c7d-fced-4a97-af72-7f94e2924fae", + "Name": "W12x152", + "CellId": 96, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "301e84bb-be71-41d9-81ea-f571b7394ae3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 24.625, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "301e84bb-be71-41d9-81ea-f571b7394ae3", + "Name": null + }, + "c809277a-ba5f-464a-b7bf-d048b82ab525": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c809277a-ba5f-464a-b7bf-d048b82ab525", + "Name": "W12x152", + "CellId": 96, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3122c236-62ac-4a60-92cb-95e4f4e70970": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 26.25, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3122c236-62ac-4a60-92cb-95e4f4e70970", + "Name": null + }, + "8751bfbc-a4f5-48a4-b6a5-c2ed184cb1a1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "8751bfbc-a4f5-48a4-b6a5-c2ed184cb1a1", + "Name": "W12x152", + "CellId": 96, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "bdd2b692-5881-4c1a-af43-e655599a9f44": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 27.875, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bdd2b692-5881-4c1a-af43-e655599a9f44", + "Name": null + }, + "a74b840c-153b-4020-bdb7-9f759e19c8f3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "a74b840c-153b-4020-bdb7-9f759e19c8f3", + "Name": "W12x152", + "CellId": 97, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "244ad100-5f95-4498-ba8f-333fe0c58bd5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 17.75, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "244ad100-5f95-4498-ba8f-333fe0c58bd5", + "Name": null + }, + "2575bbc0-9b83-4291-ae23-20c037d2ee36": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "2575bbc0-9b83-4291-ae23-20c037d2ee36", + "Name": "W12x152", + "CellId": 97, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "837e1ce8-893c-401a-85d4-889df3853395": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 19.5, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "837e1ce8-893c-401a-85d4-889df3853395", + "Name": null + }, + "587a874e-df36-47f7-8635-7987ac97e02d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "587a874e-df36-47f7-8635-7987ac97e02d", + "Name": "W12x152", + "CellId": 97, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "44b647e6-c7d6-4b75-aaee-59abc10fb6fa": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 21.25, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "44b647e6-c7d6-4b75-aaee-59abc10fb6fa", + "Name": null + }, + "9c084920-181e-41a4-9ad7-c799fa151ad0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "9c084920-181e-41a4-9ad7-c799fa151ad0", + "Name": "W12x152", + "CellId": 98, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "48e1b4c6-e8e1-4372-88b2-40b185215f1e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 10.75, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "48e1b4c6-e8e1-4372-88b2-40b185215f1e", + "Name": null + }, + "94db9086-a9aa-4033-9d5b-169625df35d1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "94db9086-a9aa-4033-9d5b-169625df35d1", + "Name": "W12x152", + "CellId": 98, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1283e5e3-a934-4884-b3aa-b490828f6a71": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 12.5, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1283e5e3-a934-4884-b3aa-b490828f6a71", + "Name": null + }, + "a3b42194-d84a-417e-b15c-fb4bc8b51172": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "a3b42194-d84a-417e-b15c-fb4bc8b51172", + "Name": "W12x152", + "CellId": 98, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d06b1a55-4a6f-43a9-88f1-def7e9245cc1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 14.25, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d06b1a55-4a6f-43a9-88f1-def7e9245cc1", + "Name": null + }, + "12534ec3-e53c-4e63-87ee-c0e95681540e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "12534ec3-e53c-4e63-87ee-c0e95681540e", + "Name": "W12x152", + "CellId": 99, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f1e55747-a38f-454a-a77e-7c275dc8c5a6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 3.75, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f1e55747-a38f-454a-a77e-7c275dc8c5a6", + "Name": null + }, + "7323d451-4b4a-490a-bb76-5095e26e7339": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "7323d451-4b4a-490a-bb76-5095e26e7339", + "Name": "W12x152", + "CellId": 99, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5a07d18e-75d2-4595-a2a7-431a9779534a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 5.5, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5a07d18e-75d2-4595-a2a7-431a9779534a", + "Name": null + }, + "c13167f9-cf5f-4b2b-94cf-fcee1f813e84": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c13167f9-cf5f-4b2b-94cf-fcee1f813e84", + "Name": "W12x152", + "CellId": 99, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "8caca0eb-72e4-4b43-9770-59cb5a5a0eba": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -50.0, + "Z": 4.5 + }, + "End": { + "X": 7.25, + "Y": -45.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8caca0eb-72e4-4b43-9770-59cb5a5a0eba", + "Name": null + }, + "41497c5d-0a8f-4378-a1ae-1a37cfc72681": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -48.333333333333336, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "41497c5d-0a8f-4378-a1ae-1a37cfc72681", + "Name": "W12x152", + "CellId": 100, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "94298309-a51a-4a9d-b1b8-d8061f7dc00f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -48.333333333333336, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -48.333333333333336, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "94298309-a51a-4a9d-b1b8-d8061f7dc00f", + "Name": null + }, + "837d20c4-4135-4375-a81c-becb22b2a525": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -46.666666666666664, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "837d20c4-4135-4375-a81c-becb22b2a525", + "Name": "W12x152", + "CellId": 100, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "340ced0e-99c1-4c32-ac13-86ff3b8edc1b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -46.666666666666664, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -46.666666666666664, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "340ced0e-99c1-4c32-ac13-86ff3b8edc1b", + "Name": null + }, + "c32f35f1-02c5-435d-aa77-702076dd9f5e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c32f35f1-02c5-435d-aa77-702076dd9f5e", + "Name": "W12x152", + "CellId": 101, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "38358a67-2305-43fd-bdd4-430cc4e7d185": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 24.625, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "38358a67-2305-43fd-bdd4-430cc4e7d185", + "Name": null + }, + "dde3e699-9b9b-4bb6-8fb2-36efc017f185": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "dde3e699-9b9b-4bb6-8fb2-36efc017f185", + "Name": "W12x152", + "CellId": 101, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ffd2a201-49f3-4313-b03a-0d3fcf53f692": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 26.25, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ffd2a201-49f3-4313-b03a-0d3fcf53f692", + "Name": null + }, + "fa768417-3f39-4dd0-9ef7-a5abfd9cad8d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "fa768417-3f39-4dd0-9ef7-a5abfd9cad8d", + "Name": "W12x152", + "CellId": 101, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "715abb32-aa67-4fa5-9a71-3a0e2c9cc34d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 27.875, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "715abb32-aa67-4fa5-9a71-3a0e2c9cc34d", + "Name": null + }, + "fcfc3fdc-cc09-4bb0-9301-3107b2ec09b5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "fcfc3fdc-cc09-4bb0-9301-3107b2ec09b5", + "Name": "W12x152", + "CellId": 102, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b12350f1-93ae-4b4e-aef9-a9d11f1cc70b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 17.75, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b12350f1-93ae-4b4e-aef9-a9d11f1cc70b", + "Name": null + }, + "1c3e85bc-eaf8-4789-917d-ebaacc3e04ed": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "1c3e85bc-eaf8-4789-917d-ebaacc3e04ed", + "Name": "W12x152", + "CellId": 102, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7c3fa944-3bca-4553-bb3d-3540c4ef9c3f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 19.5, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7c3fa944-3bca-4553-bb3d-3540c4ef9c3f", + "Name": null + }, + "c2bb8067-8ce2-4716-b0ea-9e51c0de32bf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "c2bb8067-8ce2-4716-b0ea-9e51c0de32bf", + "Name": "W12x152", + "CellId": 102, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f47c0ba6-5258-4b98-9fc9-d55fe50ca776": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 21.25, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f47c0ba6-5258-4b98-9fc9-d55fe50ca776", + "Name": null + }, + "5e1921c2-f48e-46f3-b70a-9f96018cdef6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "5e1921c2-f48e-46f3-b70a-9f96018cdef6", + "Name": "W12x152", + "CellId": 103, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "249e9edd-f462-4649-a02d-c0b800b5fba0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 10.75, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "249e9edd-f462-4649-a02d-c0b800b5fba0", + "Name": null + }, + "907e0a99-3385-4927-9c5c-c8f4c2cc8f99": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "907e0a99-3385-4927-9c5c-c8f4c2cc8f99", + "Name": "W12x152", + "CellId": 103, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "12109cc3-adb8-4d14-9c58-9f277a41a3d6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 12.5, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "12109cc3-adb8-4d14-9c58-9f277a41a3d6", + "Name": null + }, + "66065b78-d1bd-4579-ae78-8fc8846db8b9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "66065b78-d1bd-4579-ae78-8fc8846db8b9", + "Name": "W12x152", + "CellId": 103, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "dd464f5c-3bbc-4f04-8ebb-5662c92e7145": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 14.25, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dd464f5c-3bbc-4f04-8ebb-5662c92e7145", + "Name": null + }, + "e4a57ee6-905f-4152-89f9-0fff0df94503": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e4a57ee6-905f-4152-89f9-0fff0df94503", + "Name": "W12x152", + "CellId": 104, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7a0b6646-0627-438a-a68c-f0a10ec10b23": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 3.75, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7a0b6646-0627-438a-a68c-f0a10ec10b23", + "Name": null + }, + "dd6302d9-223a-4ec1-811b-0f230ed02c6d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "dd6302d9-223a-4ec1-811b-0f230ed02c6d", + "Name": "W12x152", + "CellId": 104, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "8777b188-5cd0-4d77-a99d-173aa1fd47a9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 5.5, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8777b188-5cd0-4d77-a99d-173aa1fd47a9", + "Name": null + }, + "742a562b-b1a4-41ae-89aa-0de5910f5980": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "742a562b-b1a4-41ae-89aa-0de5910f5980", + "Name": "W12x152", + "CellId": 104, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b77f177f-e06c-4639-8871-a97868414849": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -55.0, + "Z": 4.5 + }, + "End": { + "X": 7.25, + "Y": -50.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b77f177f-e06c-4639-8871-a97868414849", + "Name": null + }, + "b8427b4d-8d2d-420a-bd4d-67a336b332c3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -53.333333333333336, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "b8427b4d-8d2d-420a-bd4d-67a336b332c3", + "Name": "W12x152", + "CellId": 105, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "5c3a9963-457b-4660-a69a-f04b7b11a6c1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -53.333333333333336, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -53.333333333333336, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5c3a9963-457b-4660-a69a-f04b7b11a6c1", + "Name": null + }, + "b0a9d90f-95e7-4ec6-8a95-624982f903ad": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -51.666666666666664, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "b0a9d90f-95e7-4ec6-8a95-624982f903ad", + "Name": "W12x152", + "CellId": 105, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "64f6e482-c578-447d-be9c-dfae36efde83": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -51.666666666666664, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -51.666666666666664, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "64f6e482-c578-447d-be9c-dfae36efde83", + "Name": null + }, + "718c13ae-c1f6-4e2f-8cbb-a846a5c63b64": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "718c13ae-c1f6-4e2f-8cbb-a846a5c63b64", + "Name": "W12x152", + "CellId": 106, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "285a7451-1c3a-4da8-871b-ca1247e01a71": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 24.625, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "285a7451-1c3a-4da8-871b-ca1247e01a71", + "Name": null + }, + "f5f480e6-4e53-4f6b-8960-1e30935b2952": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "f5f480e6-4e53-4f6b-8960-1e30935b2952", + "Name": "W12x152", + "CellId": 106, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "25911c27-fb94-440e-b11c-e9d134dd2812": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 26.25, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "25911c27-fb94-440e-b11c-e9d134dd2812", + "Name": null + }, + "e3302218-aba3-4732-a59c-97854f2f5e90": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e3302218-aba3-4732-a59c-97854f2f5e90", + "Name": "W12x152", + "CellId": 106, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9f9777f8-e27d-454c-8e3a-b836d0bef3f3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 27.875, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9f9777f8-e27d-454c-8e3a-b836d0bef3f3", + "Name": null + }, + "e5704250-dbbd-4aec-b4c1-94fbc6d26a58": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e5704250-dbbd-4aec-b4c1-94fbc6d26a58", + "Name": "W12x152", + "CellId": 107, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "8127a497-ec7e-4bbb-aff7-98b5a59f5ae3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 17.75, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8127a497-ec7e-4bbb-aff7-98b5a59f5ae3", + "Name": null + }, + "98193cfe-efc4-4104-907b-c312a5e30327": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "98193cfe-efc4-4104-907b-c312a5e30327", + "Name": "W12x152", + "CellId": 107, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5b825108-6ce9-46a7-b339-0496bf4a68c4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 19.5, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5b825108-6ce9-46a7-b339-0496bf4a68c4", + "Name": null + }, + "e2ebe55b-e2c2-485b-9bd5-9e0163ccfce0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "e2ebe55b-e2c2-485b-9bd5-9e0163ccfce0", + "Name": "W12x152", + "CellId": 107, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "360e5e74-6dc8-439b-9c96-13b80f97ae57": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 21.25, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "360e5e74-6dc8-439b-9c96-13b80f97ae57", + "Name": null + }, + "279ee5d6-8a43-42a0-98d0-70ac7620039d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "279ee5d6-8a43-42a0-98d0-70ac7620039d", + "Name": "W12x152", + "CellId": 108, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1f18dd89-bdeb-4b7f-980f-49827657515a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 10.75, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1f18dd89-bdeb-4b7f-980f-49827657515a", + "Name": null + }, + "015619c5-7b42-48e9-93f5-bd19057da6f3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "015619c5-7b42-48e9-93f5-bd19057da6f3", + "Name": "W12x152", + "CellId": 108, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7e58e126-ccfb-40d1-b0ac-9552db9f183a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 12.5, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7e58e126-ccfb-40d1-b0ac-9552db9f183a", + "Name": null + }, + "1276a214-acd2-414c-aa82-bc21279c3894": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "1276a214-acd2-414c-aa82-bc21279c3894", + "Name": "W12x152", + "CellId": 108, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fbc84c78-b486-4653-85af-48fe69677590": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 14.25, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fbc84c78-b486-4653-85af-48fe69677590", + "Name": null + }, + "946cd615-5389-4aa3-b4f5-2594e713a89b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "946cd615-5389-4aa3-b4f5-2594e713a89b", + "Name": "W12x152", + "CellId": 109, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "46635043-5e75-4a5e-81da-d8ce4b515cfb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 3.75, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "46635043-5e75-4a5e-81da-d8ce4b515cfb", + "Name": null + }, + "27b4d720-f992-4be6-bec2-6bda611f469b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "27b4d720-f992-4be6-bec2-6bda611f469b", + "Name": "W12x152", + "CellId": 109, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "254316b8-8cdf-45ef-83b8-a156764589a2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 5.5, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "254316b8-8cdf-45ef-83b8-a156764589a2", + "Name": null + }, + "1e5253b9-9805-4b4d-903f-e5ed051330eb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "1e5253b9-9805-4b4d-903f-e5ed051330eb", + "Name": "W12x152", + "CellId": 109, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e603e264-3157-4c44-a587-f888c3b9546c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -59.5, + "Z": 4.5 + }, + "End": { + "X": 7.25, + "Y": -55.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e603e264-3157-4c44-a587-f888c3b9546c", + "Name": null + }, + "1528be08-697e-43ca-984e-1ebb3b76422d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -58.0, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "1528be08-697e-43ca-984e-1ebb3b76422d", + "Name": "W12x152", + "CellId": 110, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "9ab84336-afb3-4b62-9bf3-8ef5e7bbe326": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -58.0, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -58.0, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9ab84336-afb3-4b62-9bf3-8ef5e7bbe326", + "Name": null + }, + "ab875dfb-e8ab-4334-94f3-a5a14abe9807": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -56.5, + 0.0, + 0.0, + 1.0, + 4.5 + ] + } + }, + "Id": "ab875dfb-e8ab-4334-94f3-a5a14abe9807", + "Name": "W12x152", + "CellId": 110, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "4f30ea0b-dc40-44f6-a292-dc8e1c1a8db3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -56.5, + "Z": 4.5 + }, + "End": { + "X": 0.5, + "Y": -56.5, + "Z": 4.5 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4f30ea0b-dc40-44f6-a292-dc8e1c1a8db3", + "Name": null + }, + "a423ed06-99e1-42d6-beae-b17bcf5ea424": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "0a4b6575-3b0a-47a0-834e-6e427af090ca", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -2.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "a423ed06-99e1-42d6-beae-b17bcf5ea424", + "Name": "W12x152", + "CellId": 111, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "bc7f89f0-a791-464a-8d07-4cfa1a1234e4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -2.0, + "Z": 8.35 + }, + "End": { + "X": 10.7324, + "Y": -2.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bc7f89f0-a791-464a-8d07-4cfa1a1234e4", + "Name": null + }, + "56361388-1c04-4e09-80df-543d9114ac7c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c30b6320-d3a9-4244-9b8e-ff895659beb0", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -3.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "56361388-1c04-4e09-80df-543d9114ac7c", + "Name": "W12x152", + "CellId": 111, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "5f18ee85-cf99-4e38-ae9c-b6851302dcb4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -3.5, + "Z": 8.35 + }, + "End": { + "X": 11.7324, + "Y": -3.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5f18ee85-cf99-4e38-ae9c-b6851302dcb4", + "Name": null + }, + "8733f127-cbf9-4a15-ab26-7c5576271c6f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "8733f127-cbf9-4a15-ab26-7c5576271c6f", + "Name": "W12x152", + "CellId": 112, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d37e4e08-4442-48a5-88df-545e985e24eb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -5.0, + "Z": 8.35 + }, + "End": { + "X": 3.75, + "Y": -0.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d37e4e08-4442-48a5-88df-545e985e24eb", + "Name": null + }, + "02ba687d-8d23-4da1-bb0d-be8eb763ef39": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "02ba687d-8d23-4da1-bb0d-be8eb763ef39", + "Name": "W12x152", + "CellId": 112, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1e460d51-baf0-4571-b9d1-13aa2a764cea": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -5.0, + "Z": 8.35 + }, + "End": { + "X": 5.5, + "Y": -0.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1e460d51-baf0-4571-b9d1-13aa2a764cea", + "Name": null + }, + "90b5932e-9f38-4068-8c56-54950b80f167": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "90b5932e-9f38-4068-8c56-54950b80f167", + "Name": "W12x152", + "CellId": 112, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f20d27b7-4f3b-4e4b-929c-24f59f38d9aa": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -5.0, + "Z": 8.35 + }, + "End": { + "X": 7.25, + "Y": -0.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f20d27b7-4f3b-4e4b-929c-24f59f38d9aa", + "Name": null + }, + "857df830-8fdb-4c52-962d-e57805ed1d2a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -3.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "857df830-8fdb-4c52-962d-e57805ed1d2a", + "Name": "W12x152", + "CellId": 113, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "611cb493-a385-40c7-9c17-76298ee9168e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -3.5, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -3.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "611cb493-a385-40c7-9c17-76298ee9168e", + "Name": null + }, + "896a4e50-0e0b-4f5a-9ae3-5bb67c7f1d10": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -2.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "896a4e50-0e0b-4f5a-9ae3-5bb67c7f1d10", + "Name": "W12x152", + "CellId": 113, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "5500c2e2-9089-4836-9f66-1dbb7455e0b5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -2.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -2.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5500c2e2-9089-4836-9f66-1dbb7455e0b5", + "Name": null + }, + "f65580f7-7b51-45ac-ba5b-0323f2f670a9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "f65580f7-7b51-45ac-ba5b-0323f2f670a9", + "Name": "W12x152", + "CellId": 115, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "be3474d4-d8d1-42b5-bc87-8d940f84d0a7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 10.75, + "Y": -5.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "be3474d4-d8d1-42b5-bc87-8d940f84d0a7", + "Name": null + }, + "d0c9953e-29bb-446c-b923-08a4a5ca451c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d0c9953e-29bb-446c-b923-08a4a5ca451c", + "Name": "W12x152", + "CellId": 115, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "32d0097b-7d5f-4ae4-8247-591467691595": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 12.5, + "Y": -5.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "32d0097b-7d5f-4ae4-8247-591467691595", + "Name": null + }, + "2f1f85e0-8f06-417d-bae2-2d0f9eb275fd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d463367e-606b-478f-9829-18208e0b592e", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "2f1f85e0-8f06-417d-bae2-2d0f9eb275fd", + "Name": "W12x152", + "CellId": 115, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "44016be7-320a-45c1-be39-517e8733d20e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 14.25, + "Y": -7.276400000000001, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "44016be7-320a-45c1-be39-517e8733d20e", + "Name": null + }, + "0c593906-6b4d-4f14-a928-bdf550b68c15": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "0c593906-6b4d-4f14-a928-bdf550b68c15", + "Name": "W12x152", + "CellId": 116, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "69bfc7b5-9ce3-4291-bf16-640e28e08e16": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 3.75, + "Y": -5.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "69bfc7b5-9ce3-4291-bf16-640e28e08e16", + "Name": null + }, + "e8f3540b-64ed-495c-bd88-4a61d2ae72ee": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "e8f3540b-64ed-495c-bd88-4a61d2ae72ee", + "Name": "W12x152", + "CellId": 116, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "77edd577-d772-4e3f-8c66-bd827b65b59c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 5.5, + "Y": -5.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "77edd577-d772-4e3f-8c66-bd827b65b59c", + "Name": null + }, + "d82c5d2b-1601-4074-8f11-0e34b3a86249": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d82c5d2b-1601-4074-8f11-0e34b3a86249", + "Name": "W12x152", + "CellId": 116, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f8c8f74a-8be1-46ff-8852-d45af7b79009": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -10.0, + "Z": 8.35 + }, + "End": { + "X": 7.25, + "Y": -5.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f8c8f74a-8be1-46ff-8852-d45af7b79009", + "Name": null + }, + "fce5fbc7-0e51-4781-97ba-841e5675134c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -8.333333333333334, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "fce5fbc7-0e51-4781-97ba-841e5675134c", + "Name": "W12x152", + "CellId": 117, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "518cef14-f36c-48dc-b139-62d5ed69d4dc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -8.333333333333334, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -8.333333333333334, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "518cef14-f36c-48dc-b139-62d5ed69d4dc", + "Name": null + }, + "1d951d35-eac0-4da8-8036-1af34ad0a51b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -6.666666666666667, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "1d951d35-eac0-4da8-8036-1af34ad0a51b", + "Name": "W12x152", + "CellId": 117, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "b643fb07-f8e8-48b2-bf9d-558ef2651f0f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -6.666666666666667, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -6.666666666666667, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b643fb07-f8e8-48b2-bf9d-558ef2651f0f", + "Name": null + }, + "8c26ad90-e73c-4392-ae50-38dddecad8e8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e9998d1f-f37e-4ec1-9a37-d6129df9567b", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -11.666666666666666, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "8c26ad90-e73c-4392-ae50-38dddecad8e8", + "Name": "W12x152", + "CellId": 118, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "6f7c5bf8-783c-47fe-8774-1c748bf4cf8a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -11.666666666666666, + "Z": 8.35 + }, + "End": { + "X": 17.176846666666666, + "Y": -11.666666666666666, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6f7c5bf8-783c-47fe-8774-1c748bf4cf8a", + "Name": null + }, + "28c391f2-cd87-4fe8-b2e9-a03fa237d9d7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "48a4ab2f-6f28-414c-be2a-e0687d5249cc", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -13.333333333333332, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "28c391f2-cd87-4fe8-b2e9-a03fa237d9d7", + "Name": "W12x152", + "CellId": 118, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "6c4ea472-e246-4e45-a818-de1bd5ae8ea7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -13.333333333333332, + "Z": 8.35 + }, + "End": { + "X": 18.287953333333334, + "Y": -13.333333333333332, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6c4ea472-e246-4e45-a818-de1bd5ae8ea7", + "Name": null + }, + "d5df4dff-9864-4d1a-a9d9-091075c341fb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d5df4dff-9864-4d1a-a9d9-091075c341fb", + "Name": "W12x152", + "CellId": 119, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "eee6ec5c-aa20-462d-9060-25b949d8a67d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 10.75, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "eee6ec5c-aa20-462d-9060-25b949d8a67d", + "Name": null + }, + "a82f0c68-8977-4ba1-b4e2-7ff7a9140e13": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "a82f0c68-8977-4ba1-b4e2-7ff7a9140e13", + "Name": "W12x152", + "CellId": 119, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "833ad1f7-130a-44bd-bc9a-8edb55d458f5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 12.5, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "833ad1f7-130a-44bd-bc9a-8edb55d458f5", + "Name": null + }, + "71694e7d-8a93-4ff5-a2de-47f6ad610dc2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "71694e7d-8a93-4ff5-a2de-47f6ad610dc2", + "Name": "W12x152", + "CellId": 119, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "695d93e5-1ab5-41a3-b3f7-7df8dc9c0885": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 14.25, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "695d93e5-1ab5-41a3-b3f7-7df8dc9c0885", + "Name": null + }, + "6237770a-e419-4c62-a951-5665545981bc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "6237770a-e419-4c62-a951-5665545981bc", + "Name": "W12x152", + "CellId": 120, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b3b2a92f-6c75-4da6-b20f-5ec0dab40003": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 3.75, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b3b2a92f-6c75-4da6-b20f-5ec0dab40003", + "Name": null + }, + "191d0038-cfaa-44f4-ba51-4c09f362a85f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "191d0038-cfaa-44f4-ba51-4c09f362a85f", + "Name": "W12x152", + "CellId": 120, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "dea82b25-e735-46cf-afac-123dbc3aef09": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 5.5, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dea82b25-e735-46cf-afac-123dbc3aef09", + "Name": null + }, + "e827cbb4-f386-47d5-88cc-69811d46dffc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "e827cbb4-f386-47d5-88cc-69811d46dffc", + "Name": "W12x152", + "CellId": 120, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "2e3e9650-0b65-44c0-b7fb-f4e7e43078f1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -15.0, + "Z": 8.35 + }, + "End": { + "X": 7.25, + "Y": -10.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2e3e9650-0b65-44c0-b7fb-f4e7e43078f1", + "Name": null + }, + "fb82c9c8-7ee1-4d1f-b9aa-8b97b0a9ee63": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -13.333333333333334, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "fb82c9c8-7ee1-4d1f-b9aa-8b97b0a9ee63", + "Name": "W12x152", + "CellId": 121, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "5cb3b8e4-0eae-4a4d-8843-c09ec0f6ff66": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -13.333333333333334, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -13.333333333333334, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5cb3b8e4-0eae-4a4d-8843-c09ec0f6ff66", + "Name": null + }, + "0516e687-2a69-4d01-bd53-e363f229b0d8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -11.666666666666668, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "0516e687-2a69-4d01-bd53-e363f229b0d8", + "Name": "W12x152", + "CellId": 121, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "fbc450c9-551e-4bde-b3f5-90f8e8541139": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -11.666666666666668, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -11.666666666666668, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fbc450c9-551e-4bde-b3f5-90f8e8541139", + "Name": null + }, + "9c7c4f27-b4b4-4462-9dc4-e1c2194abb4e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.6831, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "9c7c4f27-b4b4-4462-9dc4-e1c2194abb4e", + "Name": "W12x152", + "CellId": 122, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9a80b62b-e8ef-450d-8d0c-f69949cae202": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.6831, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 17.6831, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9a80b62b-e8ef-450d-8d0c-f69949cae202", + "Name": null + }, + "aa2ddbf3-8985-43cb-8057-8cff39962960": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.3662, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "aa2ddbf3-8985-43cb-8057-8cff39962960", + "Name": "W12x152", + "CellId": 122, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4db49f8a-46fa-4566-99bb-f8723e1459b0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.3662, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 19.3662, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4db49f8a-46fa-4566-99bb-f8723e1459b0", + "Name": null + }, + "b0bb395b-2713-460c-b1ec-0928fc5553fb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "a14957ee-e204-468a-8e80-821f5ea2eabc", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.0493, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "b0bb395b-2713-460c-b1ec-0928fc5553fb", + "Name": "W12x152", + "CellId": 122, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "409a40e0-0936-44bb-b832-f400573122f2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.0493, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 21.0493, + "Y": -17.475355049289902, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "409a40e0-0936-44bb-b832-f400573122f2", + "Name": null + }, + "bf1c6115-21dd-4602-a869-4f7fec9867eb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "bf1c6115-21dd-4602-a869-4f7fec9867eb", + "Name": "W12x152", + "CellId": 123, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ae89ef64-85ab-4085-b80b-ed39a51cb81c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 10.75, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ae89ef64-85ab-4085-b80b-ed39a51cb81c", + "Name": null + }, + "273fa14f-8b08-4881-825e-5c4afef3faf3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "273fa14f-8b08-4881-825e-5c4afef3faf3", + "Name": "W12x152", + "CellId": 123, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "33bc06ed-a28d-4bea-b8c4-fa1a635e8bb1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 12.5, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "33bc06ed-a28d-4bea-b8c4-fa1a635e8bb1", + "Name": null + }, + "5331748d-3b27-4f5e-953f-d6609ec8347c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "5331748d-3b27-4f5e-953f-d6609ec8347c", + "Name": "W12x152", + "CellId": 123, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9de88070-18c3-4b09-a7b1-9a98c800825b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 14.25, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9de88070-18c3-4b09-a7b1-9a98c800825b", + "Name": null + }, + "4d6c5141-cf5d-4474-9637-532c7c5f840c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "4d6c5141-cf5d-4474-9637-532c7c5f840c", + "Name": "W12x152", + "CellId": 124, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b9226a64-566b-46b7-983d-f83b96df4180": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 3.75, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b9226a64-566b-46b7-983d-f83b96df4180", + "Name": null + }, + "b5ced065-40f8-4663-8e94-14db58298dd9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "b5ced065-40f8-4663-8e94-14db58298dd9", + "Name": "W12x152", + "CellId": 124, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "44a4cf96-66c1-41a4-95e1-3e69772bb66f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 5.5, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "44a4cf96-66c1-41a4-95e1-3e69772bb66f", + "Name": null + }, + "97959b76-12a3-45fc-aa7d-d60065afc3a6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "97959b76-12a3-45fc-aa7d-d60065afc3a6", + "Name": "W12x152", + "CellId": 124, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9677c504-046b-4cf0-b4f0-8f2d57af8d27": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -20.0, + "Z": 8.35 + }, + "End": { + "X": 7.25, + "Y": -15.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9677c504-046b-4cf0-b4f0-8f2d57af8d27", + "Name": null + }, + "48347742-67d1-40b6-b50c-dbd95a6cf6bc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -18.333333333333332, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "48347742-67d1-40b6-b50c-dbd95a6cf6bc", + "Name": "W12x152", + "CellId": 125, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "a8514b31-e653-4814-801b-c53ebfc222be": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -18.333333333333332, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -18.333333333333332, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a8514b31-e653-4814-801b-c53ebfc222be", + "Name": null + }, + "4223af6b-0754-427e-afa4-b5a1305e1c2e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -16.666666666666668, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "4223af6b-0754-427e-afa4-b5a1305e1c2e", + "Name": "W12x152", + "CellId": 125, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "3550462a-652f-4130-a17b-db4ca57be8b1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -16.666666666666668, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -16.666666666666668, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3550462a-652f-4130-a17b-db4ca57be8b1", + "Name": null + }, + "b1aacd16-71ab-4ff3-9b4c-1dbb543b9b40": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "00428e4f-d368-4fa9-9b91-6b35a98db880", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -21.934266666666666, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "b1aacd16-71ab-4ff3-9b4c-1dbb543b9b40", + "Name": "W12x152", + "CellId": 126, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "e6d78656-1e3b-45a3-be8a-9a5ad0418714": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -21.934266666666666, + "Z": 8.35 + }, + "End": { + "X": 24.021913333333334, + "Y": -21.934266666666666, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e6d78656-1e3b-45a3-be8a-9a5ad0418714", + "Name": null + }, + "79beb561-f861-4c6b-99e8-fb9533aed615": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2a51b0ec-7a36-4993-b509-32bf4c52b9b4", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -23.467133333333333, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "79beb561-f861-4c6b-99e8-fb9533aed615", + "Name": "W12x152", + "CellId": 126, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "51a1d733-53b6-4897-a648-e378cf7f42c5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -23.467133333333333, + "Z": 8.35 + }, + "End": { + "X": 25.043826666666668, + "Y": -23.467133333333333, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "51a1d733-53b6-4897-a648-e378cf7f42c5", + "Name": null + }, + "314aa189-d8f3-4d1f-a844-f385f987cd1c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "314aa189-d8f3-4d1f-a844-f385f987cd1c", + "Name": "W12x152", + "CellId": 127, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c00e9684-ec4c-49f7-91c4-fc8af7b5ccb5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 17.75, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c00e9684-ec4c-49f7-91c4-fc8af7b5ccb5", + "Name": null + }, + "deef9925-79d2-4c07-bbe0-0d0646b64498": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "deef9925-79d2-4c07-bbe0-0d0646b64498", + "Name": "W12x152", + "CellId": 127, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e4466be5-257d-456e-94ba-e8a1e58ad314": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 19.5, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e4466be5-257d-456e-94ba-e8a1e58ad314", + "Name": null + }, + "d54c94ea-3cf3-4582-93fa-13f93901f01e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d54c94ea-3cf3-4582-93fa-13f93901f01e", + "Name": "W12x152", + "CellId": 127, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "47ceae02-c01c-4bec-815e-007b3f52912c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 21.25, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "47ceae02-c01c-4bec-815e-007b3f52912c", + "Name": null + }, + "e1e4db56-cb24-443d-afcd-7172365b03c0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "e1e4db56-cb24-443d-afcd-7172365b03c0", + "Name": "W12x152", + "CellId": 128, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "dee1ee2f-07aa-41f9-9bea-33192597af42": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 10.75, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dee1ee2f-07aa-41f9-9bea-33192597af42", + "Name": null + }, + "e6b2d3e7-eb42-43b5-8358-0fbb780ad9d8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "e6b2d3e7-eb42-43b5-8358-0fbb780ad9d8", + "Name": "W12x152", + "CellId": 128, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a40e3de5-84e5-4d16-88ab-f0bbfd7d638c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 12.5, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a40e3de5-84e5-4d16-88ab-f0bbfd7d638c", + "Name": null + }, + "b92465d3-94f9-48b9-86df-cd0e69c5d11c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "b92465d3-94f9-48b9-86df-cd0e69c5d11c", + "Name": "W12x152", + "CellId": 128, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a99b78b9-1a53-4298-a83d-ecdc224d6896": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 14.25, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a99b78b9-1a53-4298-a83d-ecdc224d6896", + "Name": null + }, + "80edf25f-40f1-4da4-842b-ddafbd72ba07": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "80edf25f-40f1-4da4-842b-ddafbd72ba07", + "Name": "W12x152", + "CellId": 129, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "15442d84-5cd2-4573-a4e1-8640a0c7a685": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 3.75, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "15442d84-5cd2-4573-a4e1-8640a0c7a685", + "Name": null + }, + "d0fd8fcc-22e2-46b5-8a2a-bad5dafbfa6f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d0fd8fcc-22e2-46b5-8a2a-bad5dafbfa6f", + "Name": "W12x152", + "CellId": 129, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f1d2e163-4b56-45e0-a2df-4a3b842cbb75": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 5.5, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f1d2e163-4b56-45e0-a2df-4a3b842cbb75", + "Name": null + }, + "dee68dad-8c4b-40b8-8937-3b236cb92879": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "dee68dad-8c4b-40b8-8937-3b236cb92879", + "Name": "W12x152", + "CellId": 129, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3c38fafc-0ba4-46ae-a608-1bbb1118917f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -25.0, + "Z": 8.35 + }, + "End": { + "X": 7.25, + "Y": -20.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3c38fafc-0ba4-46ae-a608-1bbb1118917f", + "Name": null + }, + "e012fa67-1ed0-4853-a1ed-24d472b3bcc8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -23.333333333333332, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "e012fa67-1ed0-4853-a1ed-24d472b3bcc8", + "Name": "W12x152", + "CellId": 130, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "113811da-2a7c-4a87-91d0-d1716b0832d9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -23.333333333333332, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -23.333333333333332, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "113811da-2a7c-4a87-91d0-d1716b0832d9", + "Name": null + }, + "e2355a3d-bb3b-4f99-807b-d252ae117df9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -21.666666666666668, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "e2355a3d-bb3b-4f99-807b-d252ae117df9", + "Name": "W12x152", + "CellId": 130, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "08462a57-829e-46c2-96d9-d744b9346d2c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -21.666666666666668, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -21.666666666666668, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "08462a57-829e-46c2-96d9-d744b9346d2c", + "Name": null + }, + "f18e6cac-b014-4a2e-8a6b-be7be4625497": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.599764999999998, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "f18e6cac-b014-4a2e-8a6b-be7be4625497", + "Name": "W12x152", + "CellId": 131, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "31820af5-195c-4604-8874-d121d7800c4a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.599764999999998, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 24.599764999999998, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "31820af5-195c-4604-8874-d121d7800c4a", + "Name": null + }, + "9ce09f8c-9cd5-4051-a30a-06e7f696e29b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c86c7794-702f-43dc-82a1-ccf5f1b5deea", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.19953, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "9ce09f8c-9cd5-4051-a30a-06e7f696e29b", + "Name": "W12x152", + "CellId": 131, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "57a9a5ad-f8c2-41eb-bcee-a92268194699": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.19953, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 26.19953, + "Y": -25.20068580274321, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "57a9a5ad-f8c2-41eb-bcee-a92268194699", + "Name": null + }, + "443ebff2-6f6a-49ea-9a47-20679ac56570": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d27c8274-35d1-48e6-a623-33a7ddfb778f", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.799295, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "443ebff2-6f6a-49ea-9a47-20679ac56570", + "Name": "W12x152", + "CellId": 131, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4ce9179d-e337-41f3-8260-5ab28efc75e9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.799295, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 27.799295, + "Y": -27.600342901371604, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4ce9179d-e337-41f3-8260-5ab28efc75e9", + "Name": null + }, + "fd3a4bc1-791b-4368-b0dc-8f1f3e33c805": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "fd3a4bc1-791b-4368-b0dc-8f1f3e33c805", + "Name": "W12x152", + "CellId": 132, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1fab71e0-db8c-4a85-a8ff-e2ade6df39c8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 17.75, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1fab71e0-db8c-4a85-a8ff-e2ade6df39c8", + "Name": null + }, + "6bf0e4ac-daec-4d78-98a2-5af9de6ca547": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "6bf0e4ac-daec-4d78-98a2-5af9de6ca547", + "Name": "W12x152", + "CellId": 132, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "965e6ec5-8f58-4e92-a29f-96525af40a5e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 19.5, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "965e6ec5-8f58-4e92-a29f-96525af40a5e", + "Name": null + }, + "7aab72f0-9bbd-4acd-8e3f-b2a213d91372": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "7aab72f0-9bbd-4acd-8e3f-b2a213d91372", + "Name": "W12x152", + "CellId": 132, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3c200b98-5a8e-4aeb-85c4-ce00089a4fda": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 21.25, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3c200b98-5a8e-4aeb-85c4-ce00089a4fda", + "Name": null + }, + "b189e315-3852-4b8e-8d53-655974713495": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "b189e315-3852-4b8e-8d53-655974713495", + "Name": "W12x152", + "CellId": 133, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f64bc09a-fb38-43a9-8d5c-cf6789e4d70a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 10.75, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f64bc09a-fb38-43a9-8d5c-cf6789e4d70a", + "Name": null + }, + "c653d702-89cb-4da0-8c97-245e855ce740": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "c653d702-89cb-4da0-8c97-245e855ce740", + "Name": "W12x152", + "CellId": 133, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "55f502f9-f8c7-487e-b1f7-365362fa5b89": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 12.5, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "55f502f9-f8c7-487e-b1f7-365362fa5b89", + "Name": null + }, + "f1a71c3c-44f4-4a34-9da7-dea9271fb18b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "f1a71c3c-44f4-4a34-9da7-dea9271fb18b", + "Name": "W12x152", + "CellId": 133, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "14054fed-e391-42a6-89b4-70b58d1198a9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 14.25, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "14054fed-e391-42a6-89b4-70b58d1198a9", + "Name": null + }, + "2db75b9a-e385-4d91-ad5d-718e0928d9ff": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "2db75b9a-e385-4d91-ad5d-718e0928d9ff", + "Name": "W12x152", + "CellId": 134, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ea4498c0-85a0-4acb-992b-c841920caf6f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 3.75, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ea4498c0-85a0-4acb-992b-c841920caf6f", + "Name": null + }, + "4109e616-84cd-437b-90ed-8e0321fc42cd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "4109e616-84cd-437b-90ed-8e0321fc42cd", + "Name": "W12x152", + "CellId": 134, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e8abdc9e-e865-465d-bd76-f24da225b216": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 5.5, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e8abdc9e-e865-465d-bd76-f24da225b216", + "Name": null + }, + "ba9f3b69-ff77-49a3-b6a6-7bcd39f39db4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "ba9f3b69-ff77-49a3-b6a6-7bcd39f39db4", + "Name": "W12x152", + "CellId": 134, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "267b785c-f9b1-4e46-90d8-3d799cfa9f01": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -30.0, + "Z": 8.35 + }, + "End": { + "X": 7.25, + "Y": -25.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "267b785c-f9b1-4e46-90d8-3d799cfa9f01", + "Name": null + }, + "b15a1f9f-8b18-460b-b5cb-45cd7691b98b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -28.333333333333332, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "b15a1f9f-8b18-460b-b5cb-45cd7691b98b", + "Name": "W12x152", + "CellId": 135, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "c15b9fae-76b9-42eb-91e1-4156b4845187": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -28.333333333333332, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -28.333333333333332, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c15b9fae-76b9-42eb-91e1-4156b4845187", + "Name": null + }, + "65b61764-95e8-430f-af44-9b70989925f1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -26.666666666666668, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "65b61764-95e8-430f-af44-9b70989925f1", + "Name": "W12x152", + "CellId": 135, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "dfcb6340-3553-481b-95bd-c589823ec345": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -26.666666666666668, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -26.666666666666668, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dfcb6340-3553-481b-95bd-c589823ec345", + "Name": null + }, + "44d835f6-abd6-4f56-a3af-61120c80a4e9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "44d835f6-abd6-4f56-a3af-61120c80a4e9", + "Name": "W12x152", + "CellId": 136, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "2ff8c2de-88a9-4ec8-b727-b92d9c8684f1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 24.625, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2ff8c2de-88a9-4ec8-b727-b92d9c8684f1", + "Name": null + }, + "111a317d-c187-433c-bcdf-cf38e0c0919f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "111a317d-c187-433c-bcdf-cf38e0c0919f", + "Name": "W12x152", + "CellId": 136, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7615eab2-f3da-4815-b0c0-b599f22aa45b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 26.25, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7615eab2-f3da-4815-b0c0-b599f22aa45b", + "Name": null + }, + "03daab14-9d3e-4386-99be-6a7fa5766238": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "03daab14-9d3e-4386-99be-6a7fa5766238", + "Name": "W12x152", + "CellId": 136, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3dcd3860-a44d-45eb-8294-8e7e98d07f36": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 27.875, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3dcd3860-a44d-45eb-8294-8e7e98d07f36", + "Name": null + }, + "8a75167e-4761-4ad5-93da-4120eee527d6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "8a75167e-4761-4ad5-93da-4120eee527d6", + "Name": "W12x152", + "CellId": 137, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e706466f-854f-4c22-973c-bdfcbad92e3b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 17.75, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e706466f-854f-4c22-973c-bdfcbad92e3b", + "Name": null + }, + "00b06eba-24c6-44ef-b7c6-8f0321a98f60": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "00b06eba-24c6-44ef-b7c6-8f0321a98f60", + "Name": "W12x152", + "CellId": 137, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1dcbf458-0422-4b0b-b07b-53a18da7dd40": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 19.5, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1dcbf458-0422-4b0b-b07b-53a18da7dd40", + "Name": null + }, + "107a10af-fb72-4b65-be6b-96b2419d20a3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "107a10af-fb72-4b65-be6b-96b2419d20a3", + "Name": "W12x152", + "CellId": 137, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "038a057e-b7ea-421c-84cc-989b494856e3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 21.25, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "038a057e-b7ea-421c-84cc-989b494856e3", + "Name": null + }, + "71190757-c4a9-444c-97e7-d13e4413485a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "71190757-c4a9-444c-97e7-d13e4413485a", + "Name": "W12x152", + "CellId": 138, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e288d513-4e46-412a-8ce0-c1bf7c475cc2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 10.75, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e288d513-4e46-412a-8ce0-c1bf7c475cc2", + "Name": null + }, + "f6c92f22-e259-4aea-954c-87f508dac334": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "f6c92f22-e259-4aea-954c-87f508dac334", + "Name": "W12x152", + "CellId": 138, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9c2d0aea-4464-4f8b-972f-12d28278eed0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 12.5, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9c2d0aea-4464-4f8b-972f-12d28278eed0", + "Name": null + }, + "124446a4-6f2e-407a-95b1-5bb37ef70ce9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "124446a4-6f2e-407a-95b1-5bb37ef70ce9", + "Name": "W12x152", + "CellId": 138, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6c093c49-36b9-4f76-acb5-93b83e9b063d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 14.25, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6c093c49-36b9-4f76-acb5-93b83e9b063d", + "Name": null + }, + "c9d70166-8075-4d93-8c3e-52fdcf30465d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "c9d70166-8075-4d93-8c3e-52fdcf30465d", + "Name": "W12x152", + "CellId": 139, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e0419874-3f7c-4e0b-8dd2-06cf5de9a0bf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 3.75, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e0419874-3f7c-4e0b-8dd2-06cf5de9a0bf", + "Name": null + }, + "11663140-d2a1-4f0d-8d3b-bd1da352d26f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "11663140-d2a1-4f0d-8d3b-bd1da352d26f", + "Name": "W12x152", + "CellId": 139, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "dfc121e2-1189-44b3-b494-ff2adf6ece37": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 5.5, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dfc121e2-1189-44b3-b494-ff2adf6ece37", + "Name": null + }, + "6ef3d237-535d-40c0-a379-b5a9be6c8c4b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "6ef3d237-535d-40c0-a379-b5a9be6c8c4b", + "Name": "W12x152", + "CellId": 139, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a2c49997-8de7-4a17-8472-f4e189334b18": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -35.0, + "Z": 8.35 + }, + "End": { + "X": 7.25, + "Y": -30.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a2c49997-8de7-4a17-8472-f4e189334b18", + "Name": null + }, + "01cd4ad2-88ea-48c8-96aa-f8aef45d289b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -33.333333333333336, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "01cd4ad2-88ea-48c8-96aa-f8aef45d289b", + "Name": "W12x152", + "CellId": 140, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "955cf3c3-e560-4058-9412-09694f3b711c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -33.333333333333336, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -33.333333333333336, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "955cf3c3-e560-4058-9412-09694f3b711c", + "Name": null + }, + "d8926a33-84d2-46af-9118-87c1f296cf49": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -31.666666666666668, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d8926a33-84d2-46af-9118-87c1f296cf49", + "Name": "W12x152", + "CellId": 140, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "ba47c0e9-b9ff-440a-a811-e514f2a55726": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -31.666666666666668, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -31.666666666666668, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ba47c0e9-b9ff-440a-a811-e514f2a55726", + "Name": null + }, + "0fffbcde-e93e-495f-9e24-cb28148d14fa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "0fffbcde-e93e-495f-9e24-cb28148d14fa", + "Name": "W12x152", + "CellId": 141, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9e055710-192c-4993-aed5-d09db0473a27": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 24.625, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9e055710-192c-4993-aed5-d09db0473a27", + "Name": null + }, + "5feb5b94-fc0d-46b7-878e-1762c3550963": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "5feb5b94-fc0d-46b7-878e-1762c3550963", + "Name": "W12x152", + "CellId": 141, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4bd8fa70-1fea-4106-84ee-abd34049fa0b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 26.25, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4bd8fa70-1fea-4106-84ee-abd34049fa0b", + "Name": null + }, + "68e84e78-a5f3-4ab5-a9de-d1da36ea5e6c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "68e84e78-a5f3-4ab5-a9de-d1da36ea5e6c", + "Name": "W12x152", + "CellId": 141, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "195851ae-ec6d-4908-b29d-fa59b08f00e7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 27.875, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "195851ae-ec6d-4908-b29d-fa59b08f00e7", + "Name": null + }, + "01fdc5db-ba5d-4c4a-9122-9faa4a6856b3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "01fdc5db-ba5d-4c4a-9122-9faa4a6856b3", + "Name": "W12x152", + "CellId": 142, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "115e2243-6a71-47e3-a158-200ed78e0198": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 17.75, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "115e2243-6a71-47e3-a158-200ed78e0198", + "Name": null + }, + "fa722ee5-1016-4c3c-89a8-0556afdaae2f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "fa722ee5-1016-4c3c-89a8-0556afdaae2f", + "Name": "W12x152", + "CellId": 142, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c88aefd7-3824-4879-bd65-f06be40d5121": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 19.5, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c88aefd7-3824-4879-bd65-f06be40d5121", + "Name": null + }, + "904588f5-994f-47ec-b3d4-aa0e6f045819": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "904588f5-994f-47ec-b3d4-aa0e6f045819", + "Name": "W12x152", + "CellId": 142, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "cf2140d0-c668-4c77-9435-ab6b76c4bf9a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 21.25, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cf2140d0-c668-4c77-9435-ab6b76c4bf9a", + "Name": null + }, + "99eaca0d-c7c5-486b-acd6-17cb9339388d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "99eaca0d-c7c5-486b-acd6-17cb9339388d", + "Name": "W12x152", + "CellId": 143, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c35e8989-d6f6-4f63-89c8-750e6e5f689b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 10.75, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c35e8989-d6f6-4f63-89c8-750e6e5f689b", + "Name": null + }, + "a8253de2-3dff-48fa-ab7d-836d03c632ef": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "a8253de2-3dff-48fa-ab7d-836d03c632ef", + "Name": "W12x152", + "CellId": 143, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "980eb774-e2c2-4468-9a59-dc2b64473345": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 12.5, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "980eb774-e2c2-4468-9a59-dc2b64473345", + "Name": null + }, + "8260c836-3a75-4a32-9344-ebb8ddb807f4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "8260c836-3a75-4a32-9344-ebb8ddb807f4", + "Name": "W12x152", + "CellId": 143, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f8e7c515-6f47-44e6-9682-c621514db6a8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 14.25, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f8e7c515-6f47-44e6-9682-c621514db6a8", + "Name": null + }, + "5a4710d8-10e7-4ed8-8da8-0f410a310a0c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "5a4710d8-10e7-4ed8-8da8-0f410a310a0c", + "Name": "W12x152", + "CellId": 144, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e6d0d107-0d88-42b3-a8e3-9363931cfa21": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 3.75, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e6d0d107-0d88-42b3-a8e3-9363931cfa21", + "Name": null + }, + "02c34d52-6494-4258-ab36-e6397f629ea7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "02c34d52-6494-4258-ab36-e6397f629ea7", + "Name": "W12x152", + "CellId": 144, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ebe14b50-a00c-4821-a50c-72f4f310406f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 5.5, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ebe14b50-a00c-4821-a50c-72f4f310406f", + "Name": null + }, + "14e99bf6-b932-4483-b3b9-3e0e61c9d181": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "14e99bf6-b932-4483-b3b9-3e0e61c9d181", + "Name": "W12x152", + "CellId": 144, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5b05b22d-21fb-40e6-a8c4-a078e30e8adc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -40.0, + "Z": 8.35 + }, + "End": { + "X": 7.25, + "Y": -35.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5b05b22d-21fb-40e6-a8c4-a078e30e8adc", + "Name": null + }, + "ce0d6c02-aa7e-43e6-b3a9-461f7128f2e2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -38.333333333333336, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "ce0d6c02-aa7e-43e6-b3a9-461f7128f2e2", + "Name": "W12x152", + "CellId": 145, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "ed564d3a-0c40-4486-a4ab-51a2d4a93069": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -38.333333333333336, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -38.333333333333336, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ed564d3a-0c40-4486-a4ab-51a2d4a93069", + "Name": null + }, + "c9a74174-9119-4e43-8eec-e97fe5c52b18": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -36.666666666666664, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "c9a74174-9119-4e43-8eec-e97fe5c52b18", + "Name": "W12x152", + "CellId": 145, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "1e1e6558-76fd-40bc-9333-0cfa5204d330": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -36.666666666666664, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -36.666666666666664, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1e1e6558-76fd-40bc-9333-0cfa5204d330", + "Name": null + }, + "2142ebca-3c21-497e-9609-59a25f70cdb4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "2142ebca-3c21-497e-9609-59a25f70cdb4", + "Name": "W12x152", + "CellId": 146, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "2e4e5409-7ab6-4fef-af59-61e3be57f08d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 24.625, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2e4e5409-7ab6-4fef-af59-61e3be57f08d", + "Name": null + }, + "347f0c3b-f24b-4fa3-a426-49d79b9e9bdc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "347f0c3b-f24b-4fa3-a426-49d79b9e9bdc", + "Name": "W12x152", + "CellId": 146, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9821b949-03f9-4d04-aad7-1e9303ec545e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 26.25, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9821b949-03f9-4d04-aad7-1e9303ec545e", + "Name": null + }, + "70f7b738-433f-4df5-96b2-a9131400293f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "70f7b738-433f-4df5-96b2-a9131400293f", + "Name": "W12x152", + "CellId": 146, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "8ff74b24-56f8-4fdc-9bd1-20cb96b41967": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 27.875, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8ff74b24-56f8-4fdc-9bd1-20cb96b41967", + "Name": null + }, + "e4432fa8-92f6-49cc-b1a1-bbf356edcb1b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "e4432fa8-92f6-49cc-b1a1-bbf356edcb1b", + "Name": "W12x152", + "CellId": 147, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a76592f3-8131-40a0-9c5d-1504a70a01c5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 17.75, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a76592f3-8131-40a0-9c5d-1504a70a01c5", + "Name": null + }, + "88e68ac3-1ab5-40da-b29c-ac914b2d96e1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "88e68ac3-1ab5-40da-b29c-ac914b2d96e1", + "Name": "W12x152", + "CellId": 147, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "44a14673-329f-4fdf-a4b0-2221d4dddd5c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 19.5, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "44a14673-329f-4fdf-a4b0-2221d4dddd5c", + "Name": null + }, + "cb03cd3b-2e3d-4c78-9b9a-7cac8298d674": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "cb03cd3b-2e3d-4c78-9b9a-7cac8298d674", + "Name": "W12x152", + "CellId": 147, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "47d964f1-6a70-4406-bbc1-5a3f35bce76d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 21.25, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "47d964f1-6a70-4406-bbc1-5a3f35bce76d", + "Name": null + }, + "ef5acfea-143e-4678-9ebe-aff8993f2aa7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "ef5acfea-143e-4678-9ebe-aff8993f2aa7", + "Name": "W12x152", + "CellId": 148, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ddb5f93b-698e-4b57-874d-4b4e660e0219": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 10.75, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ddb5f93b-698e-4b57-874d-4b4e660e0219", + "Name": null + }, + "ccdaebdb-633a-44f0-aa19-41f747ffddf2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "ccdaebdb-633a-44f0-aa19-41f747ffddf2", + "Name": "W12x152", + "CellId": 148, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "64e1257e-01f3-485a-ae6e-dcf8d535e426": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 12.5, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "64e1257e-01f3-485a-ae6e-dcf8d535e426", + "Name": null + }, + "bc24f565-1a11-4b7f-a7f4-15cdab75cf55": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "bc24f565-1a11-4b7f-a7f4-15cdab75cf55", + "Name": "W12x152", + "CellId": 148, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "cca8c72e-6c97-4790-8998-bae6bacd8343": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 14.25, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cca8c72e-6c97-4790-8998-bae6bacd8343", + "Name": null + }, + "5eee5b7d-e4bd-4092-af64-b3a623e6de4f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "5eee5b7d-e4bd-4092-af64-b3a623e6de4f", + "Name": "W12x152", + "CellId": 149, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "aff7bd80-a1e7-46f8-8af8-a4beae6b71e3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 3.75, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "aff7bd80-a1e7-46f8-8af8-a4beae6b71e3", + "Name": null + }, + "a7e9574a-31e0-4f34-bb5a-137f59929a28": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "a7e9574a-31e0-4f34-bb5a-137f59929a28", + "Name": "W12x152", + "CellId": 149, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e380a03a-4417-49a6-bd4c-8fabd9a71222": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 5.5, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e380a03a-4417-49a6-bd4c-8fabd9a71222", + "Name": null + }, + "df3100f6-94e1-45e6-8359-d528b366ff71": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "df3100f6-94e1-45e6-8359-d528b366ff71", + "Name": "W12x152", + "CellId": 149, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0e4e7eef-56ed-4eac-bc7d-5951164bfa9a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -45.0, + "Z": 8.35 + }, + "End": { + "X": 7.25, + "Y": -40.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0e4e7eef-56ed-4eac-bc7d-5951164bfa9a", + "Name": null + }, + "9c24d1aa-cbee-4bdc-a33a-7894b0d24bf2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -43.333333333333336, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "9c24d1aa-cbee-4bdc-a33a-7894b0d24bf2", + "Name": "W12x152", + "CellId": 150, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "7c87ee2a-6a23-4cd3-9eac-c6257749faee": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -43.333333333333336, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -43.333333333333336, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7c87ee2a-6a23-4cd3-9eac-c6257749faee", + "Name": null + }, + "a69a2334-feb7-4734-b36d-a7a2908fb10c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -41.666666666666664, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "a69a2334-feb7-4734-b36d-a7a2908fb10c", + "Name": "W12x152", + "CellId": 150, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "cad570f5-d050-49e9-a41a-053830e4d3c9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -41.666666666666664, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -41.666666666666664, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cad570f5-d050-49e9-a41a-053830e4d3c9", + "Name": null + }, + "9ceeec99-a948-41d7-952a-de6b077d7dde": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "9ceeec99-a948-41d7-952a-de6b077d7dde", + "Name": "W12x152", + "CellId": 151, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fa7abb7c-2c84-4980-8e9c-2349ede0d5fb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 24.625, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fa7abb7c-2c84-4980-8e9c-2349ede0d5fb", + "Name": null + }, + "16b9e9c9-27c3-421c-8e23-1673d97291c5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "16b9e9c9-27c3-421c-8e23-1673d97291c5", + "Name": "W12x152", + "CellId": 151, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "07c19924-5df4-4c83-9b31-9a3115e1bd01": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 26.25, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "07c19924-5df4-4c83-9b31-9a3115e1bd01", + "Name": null + }, + "3e1b2f51-25b2-4888-8dd2-ad8249172097": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "3e1b2f51-25b2-4888-8dd2-ad8249172097", + "Name": "W12x152", + "CellId": 151, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d62ef690-9226-4125-b3d6-5f496211c9ac": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 27.875, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d62ef690-9226-4125-b3d6-5f496211c9ac", + "Name": null + }, + "816d26d1-fa60-471e-99f3-573438a17351": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "816d26d1-fa60-471e-99f3-573438a17351", + "Name": "W12x152", + "CellId": 152, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1ddffee6-9e67-471d-881e-01ee8c2a03db": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 17.75, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1ddffee6-9e67-471d-881e-01ee8c2a03db", + "Name": null + }, + "279d8968-2b89-46aa-be33-a115a2cc81ab": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "279d8968-2b89-46aa-be33-a115a2cc81ab", + "Name": "W12x152", + "CellId": 152, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9f1a700c-b32a-447d-b9e0-af9e9da751a5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 19.5, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9f1a700c-b32a-447d-b9e0-af9e9da751a5", + "Name": null + }, + "133d4b7c-1c55-462a-bc1e-2f5477f69037": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "133d4b7c-1c55-462a-bc1e-2f5477f69037", + "Name": "W12x152", + "CellId": 152, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "32ebc887-88e3-44cd-9792-29fca5927025": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 21.25, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "32ebc887-88e3-44cd-9792-29fca5927025", + "Name": null + }, + "540067dc-7a46-4bf1-a270-8e7d033d05b3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "540067dc-7a46-4bf1-a270-8e7d033d05b3", + "Name": "W12x152", + "CellId": 153, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d1c40869-50cf-4f9f-84b7-79a0eeb0d49a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 10.75, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d1c40869-50cf-4f9f-84b7-79a0eeb0d49a", + "Name": null + }, + "d78b8175-a450-4ada-977e-58df17871fb7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d78b8175-a450-4ada-977e-58df17871fb7", + "Name": "W12x152", + "CellId": 153, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "53062684-81b4-4cf9-b521-fc06ffddde3a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 12.5, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "53062684-81b4-4cf9-b521-fc06ffddde3a", + "Name": null + }, + "d01e3d5e-4c36-474f-bc44-713efec62aeb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d01e3d5e-4c36-474f-bc44-713efec62aeb", + "Name": "W12x152", + "CellId": 153, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "10692b6c-4c42-4291-81ff-633ea040ae0b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 14.25, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "10692b6c-4c42-4291-81ff-633ea040ae0b", + "Name": null + }, + "0d756bc5-5678-45aa-bd91-2270099f79e4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "0d756bc5-5678-45aa-bd91-2270099f79e4", + "Name": "W12x152", + "CellId": 154, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "10b9b980-2932-4f68-8e53-633edfe18e32": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 3.75, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "10b9b980-2932-4f68-8e53-633edfe18e32", + "Name": null + }, + "9bcb2a21-a75c-464d-9418-29b9c4219b2f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "9bcb2a21-a75c-464d-9418-29b9c4219b2f", + "Name": "W12x152", + "CellId": 154, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9b5ecc0d-47f7-4d2c-a27c-c64a7871b900": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 5.5, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9b5ecc0d-47f7-4d2c-a27c-c64a7871b900", + "Name": null + }, + "24f0a58b-1e34-47aa-90c9-4f23a76e02f2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "24f0a58b-1e34-47aa-90c9-4f23a76e02f2", + "Name": "W12x152", + "CellId": 154, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "49ebe05d-1c4e-47c5-b079-797917b3e8fc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -50.0, + "Z": 8.35 + }, + "End": { + "X": 7.25, + "Y": -45.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "49ebe05d-1c4e-47c5-b079-797917b3e8fc", + "Name": null + }, + "51a11f9e-ec12-4f95-87e4-06cdd72b8533": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -48.333333333333336, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "51a11f9e-ec12-4f95-87e4-06cdd72b8533", + "Name": "W12x152", + "CellId": 155, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "f9f400f9-d4ef-45c7-bd99-1cababf36542": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -48.333333333333336, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -48.333333333333336, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f9f400f9-d4ef-45c7-bd99-1cababf36542", + "Name": null + }, + "b6b0ff09-24a8-43d9-8b5c-094a3dd18f6d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -46.666666666666664, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "b6b0ff09-24a8-43d9-8b5c-094a3dd18f6d", + "Name": "W12x152", + "CellId": 155, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "9c9e5ad5-2d9b-41e5-b893-e669fadb81f5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -46.666666666666664, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -46.666666666666664, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9c9e5ad5-2d9b-41e5-b893-e669fadb81f5", + "Name": null + }, + "b27a551d-22de-4219-860e-fcc014915556": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "b27a551d-22de-4219-860e-fcc014915556", + "Name": "W12x152", + "CellId": 156, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fce653f6-5e01-41f4-9d8d-52d54c4332d0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 24.625, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fce653f6-5e01-41f4-9d8d-52d54c4332d0", + "Name": null + }, + "51ae1991-6e92-4d38-8b9f-e15a50ec6281": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "51ae1991-6e92-4d38-8b9f-e15a50ec6281", + "Name": "W12x152", + "CellId": 156, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7bd146c0-867f-4966-834e-ed39c254a4b5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 26.25, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7bd146c0-867f-4966-834e-ed39c254a4b5", + "Name": null + }, + "f46806fa-2238-41a4-8352-06475f834eca": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "f46806fa-2238-41a4-8352-06475f834eca", + "Name": "W12x152", + "CellId": 156, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "486e1191-3f72-4940-a410-6259f864747a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 27.875, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "486e1191-3f72-4940-a410-6259f864747a", + "Name": null + }, + "fa96713a-211a-468f-a330-bdade2343a0f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "fa96713a-211a-468f-a330-bdade2343a0f", + "Name": "W12x152", + "CellId": 157, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "49751d31-477a-4f77-bd5f-7156092f1c49": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 17.75, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "49751d31-477a-4f77-bd5f-7156092f1c49", + "Name": null + }, + "1d25c174-bdc2-4b22-bdcc-1dfedccac0a6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "1d25c174-bdc2-4b22-bdcc-1dfedccac0a6", + "Name": "W12x152", + "CellId": 157, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3fe3e6fe-edb1-4600-8131-6898c47ac457": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 19.5, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3fe3e6fe-edb1-4600-8131-6898c47ac457", + "Name": null + }, + "20b6e150-e315-40ea-9a33-58435bbbf525": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "20b6e150-e315-40ea-9a33-58435bbbf525", + "Name": "W12x152", + "CellId": 157, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9c5cf233-1337-47c3-9c33-4c6b64e6e8ed": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 21.25, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9c5cf233-1337-47c3-9c33-4c6b64e6e8ed", + "Name": null + }, + "ba05ed80-509b-4a21-9334-83b9eab3f5cd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "ba05ed80-509b-4a21-9334-83b9eab3f5cd", + "Name": "W12x152", + "CellId": 158, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "80703c97-7d41-490a-9fb6-641545c18701": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 10.75, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "80703c97-7d41-490a-9fb6-641545c18701", + "Name": null + }, + "a3303247-51d8-4dc6-863c-276ad9c53b10": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "a3303247-51d8-4dc6-863c-276ad9c53b10", + "Name": "W12x152", + "CellId": 158, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7f131c91-5984-4621-a19b-fd41302d8f7a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 12.5, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7f131c91-5984-4621-a19b-fd41302d8f7a", + "Name": null + }, + "ea05ea04-97ec-4ef4-849d-5d25fa89d3e8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "ea05ea04-97ec-4ef4-849d-5d25fa89d3e8", + "Name": "W12x152", + "CellId": 158, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9a9e03bb-d329-4021-aef5-f0c1124ec604": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 14.25, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9a9e03bb-d329-4021-aef5-f0c1124ec604", + "Name": null + }, + "64f66117-2ee5-4d8c-8913-04d3686d8b36": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "64f66117-2ee5-4d8c-8913-04d3686d8b36", + "Name": "W12x152", + "CellId": 159, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f78632e7-7490-471c-9924-e77359eeb9a2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 3.75, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f78632e7-7490-471c-9924-e77359eeb9a2", + "Name": null + }, + "8c3895b5-7536-4b11-aaae-17a904510532": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "8c3895b5-7536-4b11-aaae-17a904510532", + "Name": "W12x152", + "CellId": 159, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "761ad38e-b6c9-4878-b9ee-1c347435c611": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 5.5, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "761ad38e-b6c9-4878-b9ee-1c347435c611", + "Name": null + }, + "95869294-87d4-4e2c-9433-bd5cd525fc71": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "95869294-87d4-4e2c-9433-bd5cd525fc71", + "Name": "W12x152", + "CellId": 159, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0544ced9-d1a9-43d9-9814-2588b1f45274": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -55.0, + "Z": 8.35 + }, + "End": { + "X": 7.25, + "Y": -50.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0544ced9-d1a9-43d9-9814-2588b1f45274", + "Name": null + }, + "d4754413-96c6-4217-ac64-07ceb86139bb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -53.333333333333336, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "d4754413-96c6-4217-ac64-07ceb86139bb", + "Name": "W12x152", + "CellId": 160, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "b8b74c9a-8e0f-4cd9-a9cc-c72193f7c8ed": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -53.333333333333336, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -53.333333333333336, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b8b74c9a-8e0f-4cd9-a9cc-c72193f7c8ed", + "Name": null + }, + "2e9a581a-4ecf-467f-b271-16fe8d38b979": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -51.666666666666664, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "2e9a581a-4ecf-467f-b271-16fe8d38b979", + "Name": "W12x152", + "CellId": 160, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "8389a62a-e511-4483-93c0-dd61dd272d43": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -51.666666666666664, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -51.666666666666664, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8389a62a-e511-4483-93c0-dd61dd272d43", + "Name": null + }, + "91a80d94-3ee7-4457-9587-6903c814a970": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "91a80d94-3ee7-4457-9587-6903c814a970", + "Name": "W12x152", + "CellId": 161, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "134d8208-4aba-4460-b89f-8729c56dff53": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 24.625, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "134d8208-4aba-4460-b89f-8729c56dff53", + "Name": null + }, + "9739d31c-abcc-4e29-b195-7214b7b4553f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "9739d31c-abcc-4e29-b195-7214b7b4553f", + "Name": "W12x152", + "CellId": 161, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "294283d2-9d25-4827-8f42-af3d66f6c056": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 26.25, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "294283d2-9d25-4827-8f42-af3d66f6c056", + "Name": null + }, + "2ff192d8-990d-4020-8008-38dffb686d2a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "2ff192d8-990d-4020-8008-38dffb686d2a", + "Name": "W12x152", + "CellId": 161, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "15c1a361-0a63-4c18-8033-391cf48f11f2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 27.875, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "15c1a361-0a63-4c18-8033-391cf48f11f2", + "Name": null + }, + "3ad2730e-3f76-49ad-be41-dedafbb6cc75": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "3ad2730e-3f76-49ad-be41-dedafbb6cc75", + "Name": "W12x152", + "CellId": 162, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "148790d0-4444-4030-a748-2e9813eb71eb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 17.75, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "148790d0-4444-4030-a748-2e9813eb71eb", + "Name": null + }, + "205a6c33-1c3d-4d33-8c9d-9e921e97dcca": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "205a6c33-1c3d-4d33-8c9d-9e921e97dcca", + "Name": "W12x152", + "CellId": 162, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3d6a606f-e487-4b59-9b45-110c71bc0b86": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 19.5, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3d6a606f-e487-4b59-9b45-110c71bc0b86", + "Name": null + }, + "819c7c12-8ed0-47a7-86fb-7404d9b4adf5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "819c7c12-8ed0-47a7-86fb-7404d9b4adf5", + "Name": "W12x152", + "CellId": 162, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4624841d-7093-4269-b9f7-3dfd217d5ba2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 21.25, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4624841d-7093-4269-b9f7-3dfd217d5ba2", + "Name": null + }, + "abd69d33-fd83-49e2-91f1-0b8fcdc33b26": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "abd69d33-fd83-49e2-91f1-0b8fcdc33b26", + "Name": "W12x152", + "CellId": 163, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f05dc298-d720-4a03-9067-3cb94bf85bef": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 10.75, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f05dc298-d720-4a03-9067-3cb94bf85bef", + "Name": null + }, + "9b9bb570-57dd-4c3e-817b-4b9d03c36c08": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "9b9bb570-57dd-4c3e-817b-4b9d03c36c08", + "Name": "W12x152", + "CellId": 163, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3a0ad797-6c81-488c-887e-16b5f4814c9e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 12.5, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3a0ad797-6c81-488c-887e-16b5f4814c9e", + "Name": null + }, + "b0bdd28c-3e3a-4f05-8ef6-2a6f9839cf22": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "b0bdd28c-3e3a-4f05-8ef6-2a6f9839cf22", + "Name": "W12x152", + "CellId": 163, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "083368c1-07fd-4845-8f85-c66792dea379": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 14.25, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "083368c1-07fd-4845-8f85-c66792dea379", + "Name": null + }, + "c7adc3e0-b641-49c9-867a-22b1913055b7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "c7adc3e0-b641-49c9-867a-22b1913055b7", + "Name": "W12x152", + "CellId": 164, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "bf518c02-83fa-463d-9845-4d0dc3678cf6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 3.75, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bf518c02-83fa-463d-9845-4d0dc3678cf6", + "Name": null + }, + "e4e01a5b-b7ca-4450-a30b-586787147f31": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "e4e01a5b-b7ca-4450-a30b-586787147f31", + "Name": "W12x152", + "CellId": 164, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7cb42a51-3be4-48e2-b853-bd599c11f9ab": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 5.5, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7cb42a51-3be4-48e2-b853-bd599c11f9ab", + "Name": null + }, + "cb34c68d-1ca1-4cd3-b0fd-c55dd6e57bbb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "cb34c68d-1ca1-4cd3-b0fd-c55dd6e57bbb", + "Name": "W12x152", + "CellId": 164, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "2b8c9a87-4a5d-4f78-abc2-732119cb03d1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -59.5, + "Z": 8.35 + }, + "End": { + "X": 7.25, + "Y": -55.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2b8c9a87-4a5d-4f78-abc2-732119cb03d1", + "Name": null + }, + "a5b85343-2322-41ef-a285-b12fb36a9279": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -58.0, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "a5b85343-2322-41ef-a285-b12fb36a9279", + "Name": "W12x152", + "CellId": 165, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "bbc7e0ea-0e5a-4320-8374-066799f01ff9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -58.0, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -58.0, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bbc7e0ea-0e5a-4320-8374-066799f01ff9", + "Name": null + }, + "f719e3f8-74a3-4620-a7b0-1e7ab2b7603e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -56.5, + 0.0, + 0.0, + 1.0, + 8.35 + ] + } + }, + "Id": "f719e3f8-74a3-4620-a7b0-1e7ab2b7603e", + "Name": "W12x152", + "CellId": 165, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "4ecb11ff-6f24-496e-a495-f12b929d5cc1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -56.5, + "Z": 8.35 + }, + "End": { + "X": 0.5, + "Y": -56.5, + "Z": 8.35 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4ecb11ff-6f24-496e-a495-f12b929d5cc1", + "Name": null + }, + "456a00e5-0976-4cff-a80f-dba13079602a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "0a4b6575-3b0a-47a0-834e-6e427af090ca", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -2.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "456a00e5-0976-4cff-a80f-dba13079602a", + "Name": "W12x152", + "CellId": 166, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "e9bc7c87-f4a0-4520-a7e3-a01caa45ece7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -2.0, + "Z": 12.2 + }, + "End": { + "X": 10.7324, + "Y": -2.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e9bc7c87-f4a0-4520-a7e3-a01caa45ece7", + "Name": null + }, + "478b906b-c233-46a2-bea9-5591a6d37bba": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c30b6320-d3a9-4244-9b8e-ff895659beb0", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -3.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "478b906b-c233-46a2-bea9-5591a6d37bba", + "Name": "W12x152", + "CellId": 166, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "04ece645-f181-4bc3-a06b-ac931f7feef8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -3.5, + "Z": 12.2 + }, + "End": { + "X": 11.7324, + "Y": -3.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "04ece645-f181-4bc3-a06b-ac931f7feef8", + "Name": null + }, + "399465e3-a9e7-425c-bbc4-a02f40696fb8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "0a4b6575-3b0a-47a0-834e-6e427af090ca", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -2.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "399465e3-a9e7-425c-bbc4-a02f40696fb8", + "Name": "W12x152", + "CellId": 167, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "119afa48-4722-4939-aeb7-d1aaa8a4f672": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -2.0, + "Z": 20.0 + }, + "End": { + "X": 10.7324, + "Y": -2.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "119afa48-4722-4939-aeb7-d1aaa8a4f672", + "Name": null + }, + "7910d5f6-9bb4-407e-bf75-6e49457f7a34": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c30b6320-d3a9-4244-9b8e-ff895659beb0", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 9.0, + 0.0, + 1.0, + 0.0, + -3.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "7910d5f6-9bb4-407e-bf75-6e49457f7a34", + "Name": "W12x152", + "CellId": 167, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "9c9b0aaa-0b94-4ed3-b95e-4e24bde94398": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 9.0, + "Y": -3.5, + "Z": 20.0 + }, + "End": { + "X": 11.7324, + "Y": -3.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9c9b0aaa-0b94-4ed3-b95e-4e24bde94398", + "Name": null + }, + "62976abb-e91c-4cb9-89e7-55992fb709c6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "62976abb-e91c-4cb9-89e7-55992fb709c6", + "Name": "W12x152", + "CellId": 168, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7a1fc0dc-28fd-46e5-8bdb-4eaf2110b422": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -5.0, + "Z": 12.2 + }, + "End": { + "X": 3.75, + "Y": -0.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7a1fc0dc-28fd-46e5-8bdb-4eaf2110b422", + "Name": null + }, + "7a91d33e-b882-4552-9f14-f0073b7bd896": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "7a91d33e-b882-4552-9f14-f0073b7bd896", + "Name": "W12x152", + "CellId": 168, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "420fdfee-4264-429e-954b-b400aff6dfa8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -5.0, + "Z": 12.2 + }, + "End": { + "X": 5.5, + "Y": -0.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "420fdfee-4264-429e-954b-b400aff6dfa8", + "Name": null + }, + "7328d769-5ee3-47ea-8d0f-5576319940d3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "7328d769-5ee3-47ea-8d0f-5576319940d3", + "Name": "W12x152", + "CellId": 168, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "af0a62a1-5100-4c40-a804-9a63157c004b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -5.0, + "Z": 12.2 + }, + "End": { + "X": 7.25, + "Y": -0.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "af0a62a1-5100-4c40-a804-9a63157c004b", + "Name": null + }, + "2ba2b496-922a-496e-a7b9-31b4803df00f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "2ba2b496-922a-496e-a7b9-31b4803df00f", + "Name": "W12x152", + "CellId": 169, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "72b9f740-af7e-4fa4-a80f-b55d3df028dd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -5.0, + "Z": 20.0 + }, + "End": { + "X": 3.75, + "Y": -0.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "72b9f740-af7e-4fa4-a80f-b55d3df028dd", + "Name": null + }, + "8d2d9125-05de-4bec-be44-a6138b6e46f7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "8d2d9125-05de-4bec-be44-a6138b6e46f7", + "Name": "W12x152", + "CellId": 169, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4de065a2-c3c4-4bb7-bed6-cf4a6145b8a1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -5.0, + "Z": 20.0 + }, + "End": { + "X": 5.5, + "Y": -0.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4de065a2-c3c4-4bb7-bed6-cf4a6145b8a1", + "Name": null + }, + "81a83a1a-c188-4937-b133-74ffbe83e3d1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -5.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "81a83a1a-c188-4937-b133-74ffbe83e3d1", + "Name": "W12x152", + "CellId": 169, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "de0f69d3-ae3d-4676-bf9a-ae7c75c4f673": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -5.0, + "Z": 20.0 + }, + "End": { + "X": 7.25, + "Y": -0.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "de0f69d3-ae3d-4676-bf9a-ae7c75c4f673", + "Name": null + }, + "77b92ad6-ff9f-4efa-9089-1ad62eca1232": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -3.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "77b92ad6-ff9f-4efa-9089-1ad62eca1232", + "Name": "W12x152", + "CellId": 170, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "30ea848a-0294-49fa-bcbd-f7d93b21e581": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -3.5, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -3.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "30ea848a-0294-49fa-bcbd-f7d93b21e581", + "Name": null + }, + "06ff9abd-95ac-4a77-ae34-090c45ebde46": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -2.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "06ff9abd-95ac-4a77-ae34-090c45ebde46", + "Name": "W12x152", + "CellId": 170, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "57a8abaa-7900-411a-a85f-b3589c824777": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -2.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -2.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "57a8abaa-7900-411a-a85f-b3589c824777", + "Name": null + }, + "7d708dab-d00b-4fa7-8f87-ddabb39ac0e9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -3.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "7d708dab-d00b-4fa7-8f87-ddabb39ac0e9", + "Name": "W12x152", + "CellId": 171, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "a5d6bffc-2f9c-4269-816b-ab51cdce0df3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -3.5, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -3.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a5d6bffc-2f9c-4269-816b-ab51cdce0df3", + "Name": null + }, + "79996cda-4a35-4db8-9e25-b11da6aa130e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -2.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "79996cda-4a35-4db8-9e25-b11da6aa130e", + "Name": "W12x152", + "CellId": 171, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "5c285561-8617-4345-9d86-6a5f394128d2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -2.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -2.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5c285561-8617-4345-9d86-6a5f394128d2", + "Name": null + }, + "2d7f011c-35bd-42a5-bc69-83762623e85d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "2d7f011c-35bd-42a5-bc69-83762623e85d", + "Name": "W12x152", + "CellId": 174, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "93b37eb9-a9ef-4910-8e0f-f5465225bcff": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 10.75, + "Y": -5.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "93b37eb9-a9ef-4910-8e0f-f5465225bcff", + "Name": null + }, + "40f4c3d8-30cb-47c4-ac28-fef115d569ba": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "40f4c3d8-30cb-47c4-ac28-fef115d569ba", + "Name": "W12x152", + "CellId": 174, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6879c94b-58c8-4011-9bd9-a71a2a4f42bf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 12.5, + "Y": -5.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6879c94b-58c8-4011-9bd9-a71a2a4f42bf", + "Name": null + }, + "21a1607d-4014-4161-8a0e-51df56470c58": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d463367e-606b-478f-9829-18208e0b592e", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "21a1607d-4014-4161-8a0e-51df56470c58", + "Name": "W12x152", + "CellId": 174, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "bd9ec718-38c5-49ac-9902-16a3fbda3e33": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 14.25, + "Y": -7.276400000000001, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bd9ec718-38c5-49ac-9902-16a3fbda3e33", + "Name": null + }, + "47f2ad8c-5585-4716-9f7a-061e73e1c8c3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "47f2ad8c-5585-4716-9f7a-061e73e1c8c3", + "Name": "W12x152", + "CellId": 175, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4179a531-3079-4091-a35e-695079ee2681": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 10.75, + "Y": -5.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4179a531-3079-4091-a35e-695079ee2681", + "Name": null + }, + "23b8d252-b18e-4a18-a9a9-a9c0f0ff91a4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "23b8d252-b18e-4a18-a9a9-a9c0f0ff91a4", + "Name": "W12x152", + "CellId": 175, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "83d1ade6-c290-4cc4-983b-f1bc2010b7f4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 12.5, + "Y": -5.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "83d1ade6-c290-4cc4-983b-f1bc2010b7f4", + "Name": null + }, + "6b7c48d4-ede3-4835-a771-d80a328dee34": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d463367e-606b-478f-9829-18208e0b592e", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "6b7c48d4-ede3-4835-a771-d80a328dee34", + "Name": "W12x152", + "CellId": 175, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e33fffa7-2387-42b6-85cc-665fa1ac6488": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 14.25, + "Y": -7.276400000000001, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e33fffa7-2387-42b6-85cc-665fa1ac6488", + "Name": null + }, + "1693234c-f4e6-4b74-9066-9679c53f91e7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "1693234c-f4e6-4b74-9066-9679c53f91e7", + "Name": "W12x152", + "CellId": 176, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ecfd40b5-e776-488b-b434-32878669781a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 3.75, + "Y": -5.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ecfd40b5-e776-488b-b434-32878669781a", + "Name": null + }, + "5fb9067e-4be9-4cfc-ad91-195c692a7a96": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "5fb9067e-4be9-4cfc-ad91-195c692a7a96", + "Name": "W12x152", + "CellId": 176, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b8a941b6-c188-4e4f-9e7a-227357badaf9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 5.5, + "Y": -5.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b8a941b6-c188-4e4f-9e7a-227357badaf9", + "Name": null + }, + "55555272-46ce-45c1-b859-7cec136715ab": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "55555272-46ce-45c1-b859-7cec136715ab", + "Name": "W12x152", + "CellId": 176, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4a289917-06b0-4e1e-8b52-77d5b3c060e3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -10.0, + "Z": 12.2 + }, + "End": { + "X": 7.25, + "Y": -5.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4a289917-06b0-4e1e-8b52-77d5b3c060e3", + "Name": null + }, + "7eb13d2c-6d9f-49b1-bb1a-6b1a686dfbc8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "7eb13d2c-6d9f-49b1-bb1a-6b1a686dfbc8", + "Name": "W12x152", + "CellId": 177, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "08dacb74-8e09-47a6-b26f-1ef4667b60f3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 3.75, + "Y": -5.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "08dacb74-8e09-47a6-b26f-1ef4667b60f3", + "Name": null + }, + "c4424000-6d32-46df-b2be-46fc77bc3c77": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "c4424000-6d32-46df-b2be-46fc77bc3c77", + "Name": "W12x152", + "CellId": 177, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "da556733-cae6-47fb-b974-9e71a569628a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 5.5, + "Y": -5.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "da556733-cae6-47fb-b974-9e71a569628a", + "Name": null + }, + "45070934-7cc0-40d7-bd4c-f0ee4c154a36": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -10.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "45070934-7cc0-40d7-bd4c-f0ee4c154a36", + "Name": "W12x152", + "CellId": 177, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "cc17786a-59d5-426b-ab95-a1b1d4495e61": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -10.0, + "Z": 20.0 + }, + "End": { + "X": 7.25, + "Y": -5.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cc17786a-59d5-426b-ab95-a1b1d4495e61", + "Name": null + }, + "1a8f205c-78a9-44f7-b5b0-3fbf277da1ce": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -8.333333333333334, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "1a8f205c-78a9-44f7-b5b0-3fbf277da1ce", + "Name": "W12x152", + "CellId": 178, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "c8c2b44e-68bd-4ab3-b7e6-12637334bf62": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -8.333333333333334, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -8.333333333333334, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c8c2b44e-68bd-4ab3-b7e6-12637334bf62", + "Name": null + }, + "acfe23ec-1a98-43f6-9a18-6f40f7f0a67f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -6.666666666666667, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "acfe23ec-1a98-43f6-9a18-6f40f7f0a67f", + "Name": "W12x152", + "CellId": 178, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "138580b3-43d0-415c-9ac7-aa856541739b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -6.666666666666667, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -6.666666666666667, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "138580b3-43d0-415c-9ac7-aa856541739b", + "Name": null + }, + "4677d8f0-10b1-482f-9216-438977be98fe": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -8.333333333333334, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "4677d8f0-10b1-482f-9216-438977be98fe", + "Name": "W12x152", + "CellId": 179, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "48f760e8-6bcd-49fa-96bf-bff52eafa2dd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -8.333333333333334, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -8.333333333333334, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "48f760e8-6bcd-49fa-96bf-bff52eafa2dd", + "Name": null + }, + "4509346a-4565-41c8-8216-62e7a9f9d6f5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -6.666666666666667, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "4509346a-4565-41c8-8216-62e7a9f9d6f5", + "Name": "W12x152", + "CellId": 179, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "375765f1-658d-4257-8c8b-4413fa8847ac": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -6.666666666666667, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -6.666666666666667, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "375765f1-658d-4257-8c8b-4413fa8847ac", + "Name": null + }, + "678e7bf6-d340-435b-9325-dff86003541d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e9998d1f-f37e-4ec1-9a37-d6129df9567b", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -11.666666666666666, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "678e7bf6-d340-435b-9325-dff86003541d", + "Name": "W12x152", + "CellId": 180, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "4de736fd-1caa-41ef-b639-22116450ad86": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -11.666666666666666, + "Z": 12.2 + }, + "End": { + "X": 17.176846666666666, + "Y": -11.666666666666666, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4de736fd-1caa-41ef-b639-22116450ad86", + "Name": null + }, + "efc32026-72ac-4dcf-a090-28f1022f2915": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "48a4ab2f-6f28-414c-be2a-e0687d5249cc", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -13.333333333333332, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "efc32026-72ac-4dcf-a090-28f1022f2915", + "Name": "W12x152", + "CellId": 180, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "8a108595-59e9-4078-b917-a5856b804ef7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -13.333333333333332, + "Z": 12.2 + }, + "End": { + "X": 18.287953333333334, + "Y": -13.333333333333332, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8a108595-59e9-4078-b917-a5856b804ef7", + "Name": null + }, + "45fe2d51-5eb7-4801-a5e2-e33c28a1a853": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "e9998d1f-f37e-4ec1-9a37-d6129df9567b", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -11.666666666666666, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "45fe2d51-5eb7-4801-a5e2-e33c28a1a853", + "Name": "W12x152", + "CellId": 181, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "0a6bfffb-2ec8-48c0-a31e-e92f20a066b5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -11.666666666666666, + "Z": 20.0 + }, + "End": { + "X": 17.176846666666666, + "Y": -11.666666666666666, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0a6bfffb-2ec8-48c0-a31e-e92f20a066b5", + "Name": null + }, + "8416c996-4b82-434e-9a32-5ef860f1d831": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "48a4ab2f-6f28-414c-be2a-e0687d5249cc", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 16.0, + 0.0, + 1.0, + 0.0, + -13.333333333333332, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "8416c996-4b82-434e-9a32-5ef860f1d831", + "Name": "W12x152", + "CellId": 181, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "4a627c3a-cea9-4c41-a10e-04be43fe5b8b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 16.0, + "Y": -13.333333333333332, + "Z": 20.0 + }, + "End": { + "X": 18.287953333333334, + "Y": -13.333333333333332, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4a627c3a-cea9-4c41-a10e-04be43fe5b8b", + "Name": null + }, + "78a00951-be91-4ea4-a0e6-2033075b0a40": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "78a00951-be91-4ea4-a0e6-2033075b0a40", + "Name": "W12x152", + "CellId": 182, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "91dbec9a-ec5c-472d-bd6b-594c8234eba6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 10.75, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "91dbec9a-ec5c-472d-bd6b-594c8234eba6", + "Name": null + }, + "c3bff4e7-f635-4bee-882c-cb66c50a1220": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "c3bff4e7-f635-4bee-882c-cb66c50a1220", + "Name": "W12x152", + "CellId": 182, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9d073786-1864-4a00-95fa-d1aa2b9fd691": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 12.5, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9d073786-1864-4a00-95fa-d1aa2b9fd691", + "Name": null + }, + "e014e074-8376-4cf6-816c-2be7b099fe6b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "e014e074-8376-4cf6-816c-2be7b099fe6b", + "Name": "W12x152", + "CellId": 182, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d89539a7-fd59-4c55-b67c-802085e4688b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 14.25, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d89539a7-fd59-4c55-b67c-802085e4688b", + "Name": null + }, + "6c202453-3870-4e84-ad4b-59cd4364334d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "6c202453-3870-4e84-ad4b-59cd4364334d", + "Name": "W12x152", + "CellId": 183, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1a8fa706-a1bb-4f26-b7af-7db964862c16": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 10.75, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1a8fa706-a1bb-4f26-b7af-7db964862c16", + "Name": null + }, + "84dc1b5c-ca3c-4aa3-ab1d-68514d3400a1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "84dc1b5c-ca3c-4aa3-ab1d-68514d3400a1", + "Name": "W12x152", + "CellId": 183, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b1dd924c-2c03-4a38-97a5-4c5bebaee529": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 12.5, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b1dd924c-2c03-4a38-97a5-4c5bebaee529", + "Name": null + }, + "2315a225-027f-4c02-a69e-964ce5fd0fdf": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "2315a225-027f-4c02-a69e-964ce5fd0fdf", + "Name": "W12x152", + "CellId": 183, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "32cc37b7-9233-45a0-b0ac-72e15f7bcaed": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 14.25, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "32cc37b7-9233-45a0-b0ac-72e15f7bcaed", + "Name": null + }, + "ce7736be-1028-4430-8471-743ac284ccb6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "ce7736be-1028-4430-8471-743ac284ccb6", + "Name": "W12x152", + "CellId": 184, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1635a1c4-18a0-494a-ba33-907c1d0c71d0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 3.75, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1635a1c4-18a0-494a-ba33-907c1d0c71d0", + "Name": null + }, + "0436140c-409e-4844-aed9-9329f5218859": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "0436140c-409e-4844-aed9-9329f5218859", + "Name": "W12x152", + "CellId": 184, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4d423244-1fb9-4f61-ab07-754733e6cab3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 5.5, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4d423244-1fb9-4f61-ab07-754733e6cab3", + "Name": null + }, + "7302abfd-c537-4c63-aed5-41da2dae2807": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "7302abfd-c537-4c63-aed5-41da2dae2807", + "Name": "W12x152", + "CellId": 184, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "dd84f3a4-b7e1-4656-88f7-f98f2fc83da5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -15.0, + "Z": 12.2 + }, + "End": { + "X": 7.25, + "Y": -10.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dd84f3a4-b7e1-4656-88f7-f98f2fc83da5", + "Name": null + }, + "a8c4ff3d-dafe-44a9-9252-a250f9a3d23c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "a8c4ff3d-dafe-44a9-9252-a250f9a3d23c", + "Name": "W12x152", + "CellId": 185, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "2517f473-0911-4989-998f-6bd1af7d15fb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 3.75, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2517f473-0911-4989-998f-6bd1af7d15fb", + "Name": null + }, + "89fb5b8b-220d-4912-9a51-6fc9d38af9db": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "89fb5b8b-220d-4912-9a51-6fc9d38af9db", + "Name": "W12x152", + "CellId": 185, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e871beb2-c8b8-4007-a9f4-11257761e8f3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 5.5, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e871beb2-c8b8-4007-a9f4-11257761e8f3", + "Name": null + }, + "c582815b-73dc-4bf4-b8ff-dfd0bc226bb9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -15.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "c582815b-73dc-4bf4-b8ff-dfd0bc226bb9", + "Name": "W12x152", + "CellId": 185, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "352be2b2-3f40-4621-b889-3c0ce0094922": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -15.0, + "Z": 20.0 + }, + "End": { + "X": 7.25, + "Y": -10.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "352be2b2-3f40-4621-b889-3c0ce0094922", + "Name": null + }, + "9bb7fb56-f02f-4c86-8d3a-077a3e8febbd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -13.333333333333334, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "9bb7fb56-f02f-4c86-8d3a-077a3e8febbd", + "Name": "W12x152", + "CellId": 186, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "a31192a9-673e-453c-8638-03f1630df8bf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -13.333333333333334, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -13.333333333333334, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a31192a9-673e-453c-8638-03f1630df8bf", + "Name": null + }, + "02e0cd86-d09b-45a8-a8b4-b43b55be9f19": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -11.666666666666668, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "02e0cd86-d09b-45a8-a8b4-b43b55be9f19", + "Name": "W12x152", + "CellId": 186, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "8564dc1d-768d-49bb-a8c9-dd19f7e5d4b7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -11.666666666666668, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -11.666666666666668, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8564dc1d-768d-49bb-a8c9-dd19f7e5d4b7", + "Name": null + }, + "175586ad-3d2d-49ee-aeb5-bfaf26ae185d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -13.333333333333334, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "175586ad-3d2d-49ee-aeb5-bfaf26ae185d", + "Name": "W12x152", + "CellId": 187, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "b9881d29-6912-40bb-ab1b-b64f38877d5a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -13.333333333333334, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -13.333333333333334, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b9881d29-6912-40bb-ab1b-b64f38877d5a", + "Name": null + }, + "918e1d1a-2e53-474b-91c7-74fe5fa4c1df": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -11.666666666666668, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "918e1d1a-2e53-474b-91c7-74fe5fa4c1df", + "Name": "W12x152", + "CellId": 187, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "3ca80ce3-22d4-4e14-9b5e-3c62b2373e35": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -11.666666666666668, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -11.666666666666668, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3ca80ce3-22d4-4e14-9b5e-3c62b2373e35", + "Name": null + }, + "5fa5d14c-6910-4d25-a7c2-44b95c9b0861": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.6831, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "5fa5d14c-6910-4d25-a7c2-44b95c9b0861", + "Name": "W12x152", + "CellId": 188, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "8b7d4c7c-c0af-4bd1-860c-9d11e3f004d7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.6831, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 17.6831, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8b7d4c7c-c0af-4bd1-860c-9d11e3f004d7", + "Name": null + }, + "e9062f1b-62a2-4cbf-aa2d-568fe572b438": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.3662, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "e9062f1b-62a2-4cbf-aa2d-568fe572b438", + "Name": "W12x152", + "CellId": 188, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6a55be65-fd71-4675-bb07-2cd35418905b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.3662, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 19.3662, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6a55be65-fd71-4675-bb07-2cd35418905b", + "Name": null + }, + "4a42f77d-9df3-422b-b4c9-d7f315b94213": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "a14957ee-e204-468a-8e80-821f5ea2eabc", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.0493, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "4a42f77d-9df3-422b-b4c9-d7f315b94213", + "Name": "W12x152", + "CellId": 188, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "49381491-2759-4463-9512-3bd29c63d5d0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.0493, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 21.0493, + "Y": -17.475355049289902, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "49381491-2759-4463-9512-3bd29c63d5d0", + "Name": null + }, + "a45341b9-79ed-44b4-818e-3586c236a657": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.6831, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "a45341b9-79ed-44b4-818e-3586c236a657", + "Name": "W12x152", + "CellId": 189, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "04f85841-5018-4b22-8845-115b359254cf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.6831, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 17.6831, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "04f85841-5018-4b22-8845-115b359254cf", + "Name": null + }, + "657315a3-33c4-4894-80c0-a7ce29e98756": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.3662, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "657315a3-33c4-4894-80c0-a7ce29e98756", + "Name": "W12x152", + "CellId": 189, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d9e5b18e-bda2-4c25-a88a-2c779d557839": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.3662, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 19.3662, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d9e5b18e-bda2-4c25-a88a-2c779d557839", + "Name": null + }, + "803350bd-d04d-4acf-b263-c13f7cde8db7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "a14957ee-e204-468a-8e80-821f5ea2eabc", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.0493, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "803350bd-d04d-4acf-b263-c13f7cde8db7", + "Name": "W12x152", + "CellId": 189, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "780b1b40-dfe9-415c-8baf-c2e727a55eba": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.0493, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 21.0493, + "Y": -17.475355049289902, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "780b1b40-dfe9-415c-8baf-c2e727a55eba", + "Name": null + }, + "5208aee4-a370-4b00-b81d-2a8d1208cc64": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "5208aee4-a370-4b00-b81d-2a8d1208cc64", + "Name": "W12x152", + "CellId": 190, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6fa2d040-bdd8-44da-93a2-9259698904b4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 10.75, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6fa2d040-bdd8-44da-93a2-9259698904b4", + "Name": null + }, + "806cf697-e31e-4887-935f-7987920c5433": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "806cf697-e31e-4887-935f-7987920c5433", + "Name": "W12x152", + "CellId": 190, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0a636e3c-8750-4775-8cef-3259815aa117": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 12.5, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0a636e3c-8750-4775-8cef-3259815aa117", + "Name": null + }, + "9feb53d5-7151-447e-a797-a56b43122e6f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "9feb53d5-7151-447e-a797-a56b43122e6f", + "Name": "W12x152", + "CellId": 190, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a38793d8-4d83-456c-a232-95d4562ac063": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 14.25, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a38793d8-4d83-456c-a232-95d4562ac063", + "Name": null + }, + "dcdff75d-e2b8-4965-942f-a8db5356e5b8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "dcdff75d-e2b8-4965-942f-a8db5356e5b8", + "Name": "W12x152", + "CellId": 191, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "00e0e333-9e2d-4413-a9f3-899b413e8d83": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 10.75, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "00e0e333-9e2d-4413-a9f3-899b413e8d83", + "Name": null + }, + "fec41a59-2d7f-40fe-8be6-578364312850": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "fec41a59-2d7f-40fe-8be6-578364312850", + "Name": "W12x152", + "CellId": 191, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7e8e07bf-0499-47d8-b942-3e1e4ea6ebd8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 12.5, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7e8e07bf-0499-47d8-b942-3e1e4ea6ebd8", + "Name": null + }, + "b2c09cf3-987a-4054-845f-ad7d9e5705a9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "b2c09cf3-987a-4054-845f-ad7d9e5705a9", + "Name": "W12x152", + "CellId": 191, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "072d60e9-bcd3-4262-a3c3-009491b6aeb6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 14.25, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "072d60e9-bcd3-4262-a3c3-009491b6aeb6", + "Name": null + }, + "dbd44ba8-c286-4648-9b24-32adf723eb72": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "dbd44ba8-c286-4648-9b24-32adf723eb72", + "Name": "W12x152", + "CellId": 192, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e1bf0b72-8971-44a9-9362-a2b74e24535e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 3.75, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e1bf0b72-8971-44a9-9362-a2b74e24535e", + "Name": null + }, + "869a235e-0bd5-4d79-8580-f1c610b267aa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "869a235e-0bd5-4d79-8580-f1c610b267aa", + "Name": "W12x152", + "CellId": 192, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fb7b6147-28cd-48f2-8008-0e5216590695": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 5.5, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fb7b6147-28cd-48f2-8008-0e5216590695", + "Name": null + }, + "6abd1bc6-caf1-4941-a087-bdd9651a363c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "6abd1bc6-caf1-4941-a087-bdd9651a363c", + "Name": "W12x152", + "CellId": 192, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c0dd109e-dd8d-4ccb-b386-85be046920c6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -20.0, + "Z": 12.2 + }, + "End": { + "X": 7.25, + "Y": -15.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c0dd109e-dd8d-4ccb-b386-85be046920c6", + "Name": null + }, + "45dcd078-3cd9-48d9-89c4-21e22cdbf8e1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "45dcd078-3cd9-48d9-89c4-21e22cdbf8e1", + "Name": "W12x152", + "CellId": 193, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e1f08dfe-02e2-40d5-81c3-8b023ea4123f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 3.75, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e1f08dfe-02e2-40d5-81c3-8b023ea4123f", + "Name": null + }, + "926659b7-5457-4518-9acb-b3883bec4bed": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "926659b7-5457-4518-9acb-b3883bec4bed", + "Name": "W12x152", + "CellId": 193, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5fe6d622-1c95-4afa-923a-362031a12f94": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 5.5, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5fe6d622-1c95-4afa-923a-362031a12f94", + "Name": null + }, + "babb4564-0b8f-4b9b-ad73-6acbafebe585": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -20.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "babb4564-0b8f-4b9b-ad73-6acbafebe585", + "Name": "W12x152", + "CellId": 193, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "8ae6e5a9-acab-42b5-a3ba-b09d0f091919": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -20.0, + "Z": 20.0 + }, + "End": { + "X": 7.25, + "Y": -15.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8ae6e5a9-acab-42b5-a3ba-b09d0f091919", + "Name": null + }, + "2f9b1433-430f-43e5-bddb-99084832c977": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -18.333333333333332, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "2f9b1433-430f-43e5-bddb-99084832c977", + "Name": "W12x152", + "CellId": 194, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "07ebd760-e8cf-4966-bb33-226ec140ae04": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -18.333333333333332, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -18.333333333333332, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "07ebd760-e8cf-4966-bb33-226ec140ae04", + "Name": null + }, + "455dff05-37ba-4c8e-af56-fd7619fc0d06": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -16.666666666666668, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "455dff05-37ba-4c8e-af56-fd7619fc0d06", + "Name": "W12x152", + "CellId": 194, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "092b1a88-f60e-4241-b8bc-cf3503111eab": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -16.666666666666668, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -16.666666666666668, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "092b1a88-f60e-4241-b8bc-cf3503111eab", + "Name": null + }, + "68abaf05-12ef-4aeb-a598-6ea43759b67f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -18.333333333333332, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "68abaf05-12ef-4aeb-a598-6ea43759b67f", + "Name": "W12x152", + "CellId": 195, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "3d34fba3-24a6-437e-ae07-5c36c6153f22": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -18.333333333333332, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -18.333333333333332, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3d34fba3-24a6-437e-ae07-5c36c6153f22", + "Name": null + }, + "37ff2700-6f59-4206-bff8-7e191867381e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -16.666666666666668, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "37ff2700-6f59-4206-bff8-7e191867381e", + "Name": "W12x152", + "CellId": 195, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "59ee5752-6dfa-4418-bc62-8a0b4bae932e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -16.666666666666668, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -16.666666666666668, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "59ee5752-6dfa-4418-bc62-8a0b4bae932e", + "Name": null + }, + "6b8d7332-dfc3-4156-980d-aaf94f145927": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "00428e4f-d368-4fa9-9b91-6b35a98db880", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -21.934266666666666, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "6b8d7332-dfc3-4156-980d-aaf94f145927", + "Name": "W12x152", + "CellId": 196, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "0821665f-6a7e-411e-9cae-f53615a35b76": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -21.934266666666666, + "Z": 12.2 + }, + "End": { + "X": 24.021913333333334, + "Y": -21.934266666666666, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0821665f-6a7e-411e-9cae-f53615a35b76", + "Name": null + }, + "a1c1fd95-bc25-49b5-a185-f833b95ae324": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2a51b0ec-7a36-4993-b509-32bf4c52b9b4", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -23.467133333333333, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "a1c1fd95-bc25-49b5-a185-f833b95ae324", + "Name": "W12x152", + "CellId": 196, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "c7111c59-5113-4c7c-9d5f-aab2104319f2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -23.467133333333333, + "Z": 12.2 + }, + "End": { + "X": 25.043826666666668, + "Y": -23.467133333333333, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c7111c59-5113-4c7c-9d5f-aab2104319f2", + "Name": null + }, + "3fc54c2f-e338-492f-a4c2-2dab38aba237": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "00428e4f-d368-4fa9-9b91-6b35a98db880", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -21.934266666666666, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "3fc54c2f-e338-492f-a4c2-2dab38aba237", + "Name": "W12x152", + "CellId": 197, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "7d4e0492-ce01-4131-8be4-34204a9103da": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -21.934266666666666, + "Z": 20.0 + }, + "End": { + "X": 24.021913333333334, + "Y": -21.934266666666666, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7d4e0492-ce01-4131-8be4-34204a9103da", + "Name": null + }, + "4f4c0a1c-529d-40ec-b3d0-45ddc0fc55e1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "2a51b0ec-7a36-4993-b509-32bf4c52b9b4", + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 23.0, + 0.0, + 1.0, + 0.0, + -23.467133333333333, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "4f4c0a1c-529d-40ec-b3d0-45ddc0fc55e1", + "Name": "W12x152", + "CellId": 197, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "9efb49e1-5574-49ef-a9e7-8617888beb1f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 23.0, + "Y": -23.467133333333333, + "Z": 20.0 + }, + "End": { + "X": 25.043826666666668, + "Y": -23.467133333333333, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9efb49e1-5574-49ef-a9e7-8617888beb1f", + "Name": null + }, + "f21b6af8-29eb-4a5c-8a13-d452b569abf8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "f21b6af8-29eb-4a5c-8a13-d452b569abf8", + "Name": "W12x152", + "CellId": 198, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "8c80997b-0327-446d-bfa2-569022693147": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 17.75, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8c80997b-0327-446d-bfa2-569022693147", + "Name": null + }, + "d445ba24-0ec4-4f2c-ac03-60a81876ce2e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d445ba24-0ec4-4f2c-ac03-60a81876ce2e", + "Name": "W12x152", + "CellId": 198, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "22e8f68f-b6a3-4d84-bbbe-719868d2e9a8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 19.5, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "22e8f68f-b6a3-4d84-bbbe-719868d2e9a8", + "Name": null + }, + "768a6187-ea5e-48f0-9b3e-bd6b1738760b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "768a6187-ea5e-48f0-9b3e-bd6b1738760b", + "Name": "W12x152", + "CellId": 198, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fbbf3977-ae7f-4d34-8a1d-fae2d128d998": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 21.25, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fbbf3977-ae7f-4d34-8a1d-fae2d128d998", + "Name": null + }, + "08974404-c81a-499e-8100-df78b963755a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "08974404-c81a-499e-8100-df78b963755a", + "Name": "W12x152", + "CellId": 199, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "caa28c24-6f72-42e0-8fc8-95b30a8523ba": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 17.75, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "caa28c24-6f72-42e0-8fc8-95b30a8523ba", + "Name": null + }, + "6bbb3cc0-b123-4deb-ae11-b9b62a62f534": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "6bbb3cc0-b123-4deb-ae11-b9b62a62f534", + "Name": "W12x152", + "CellId": 199, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "85f97a5a-c575-48d0-8a7e-b51a8dae04f1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 19.5, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "85f97a5a-c575-48d0-8a7e-b51a8dae04f1", + "Name": null + }, + "cd45d1dc-11ad-4790-a8a1-f097edc3e41c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "cd45d1dc-11ad-4790-a8a1-f097edc3e41c", + "Name": "W12x152", + "CellId": 199, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b6b09ae8-10cb-4c53-9beb-885b784e3475": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 21.25, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b6b09ae8-10cb-4c53-9beb-885b784e3475", + "Name": null + }, + "069b8c79-6db9-4469-90b1-5ed49999c6cc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "069b8c79-6db9-4469-90b1-5ed49999c6cc", + "Name": "W12x152", + "CellId": 200, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6a5f16db-984e-42a9-9ba0-3f35d63b826e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 10.75, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6a5f16db-984e-42a9-9ba0-3f35d63b826e", + "Name": null + }, + "832beff2-8eba-4891-a099-3fd7e276aa78": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "832beff2-8eba-4891-a099-3fd7e276aa78", + "Name": "W12x152", + "CellId": 200, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ba10ece4-35a6-4c76-9a0d-6be6d16250cc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 12.5, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ba10ece4-35a6-4c76-9a0d-6be6d16250cc", + "Name": null + }, + "c2d66f60-1d4c-4668-8c4e-20d8bef1c9ae": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "c2d66f60-1d4c-4668-8c4e-20d8bef1c9ae", + "Name": "W12x152", + "CellId": 200, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "8f80c72e-a275-4b00-b29c-f085c75ea30f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 14.25, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8f80c72e-a275-4b00-b29c-f085c75ea30f", + "Name": null + }, + "a1ce30db-7058-4874-a2be-09fcad3027a1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "a1ce30db-7058-4874-a2be-09fcad3027a1", + "Name": "W12x152", + "CellId": 201, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "561735c1-a7e7-4782-ac62-19dade6b0a44": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 10.75, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "561735c1-a7e7-4782-ac62-19dade6b0a44", + "Name": null + }, + "277280b3-9009-41a8-9e9a-074f384d7408": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "277280b3-9009-41a8-9e9a-074f384d7408", + "Name": "W12x152", + "CellId": 201, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "167cc197-981b-4be2-9429-2273e5124e68": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 12.5, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "167cc197-981b-4be2-9429-2273e5124e68", + "Name": null + }, + "6563640a-3792-468c-80d1-6def1cb2b385": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "6563640a-3792-468c-80d1-6def1cb2b385", + "Name": "W12x152", + "CellId": 201, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "37ae3b49-0a75-4ec9-9c7d-e6266e74d65b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 14.25, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "37ae3b49-0a75-4ec9-9c7d-e6266e74d65b", + "Name": null + }, + "c743df53-7060-4bb4-b0f0-89438144e9e4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "c743df53-7060-4bb4-b0f0-89438144e9e4", + "Name": "W12x152", + "CellId": 202, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e11612f5-fc25-47eb-a6de-67df8675ec68": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 3.75, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e11612f5-fc25-47eb-a6de-67df8675ec68", + "Name": null + }, + "8b963dd1-70e7-4a73-b210-00e3fd777c0e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "8b963dd1-70e7-4a73-b210-00e3fd777c0e", + "Name": "W12x152", + "CellId": 202, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b67dbff7-7b0f-4bd2-952b-dcdc26f339f9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 5.5, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b67dbff7-7b0f-4bd2-952b-dcdc26f339f9", + "Name": null + }, + "21833bb5-487c-4794-adfb-c3692418eca2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "21833bb5-487c-4794-adfb-c3692418eca2", + "Name": "W12x152", + "CellId": 202, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3df052d5-c394-43f6-b606-319ac6f4dabf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -25.0, + "Z": 12.2 + }, + "End": { + "X": 7.25, + "Y": -20.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3df052d5-c394-43f6-b606-319ac6f4dabf", + "Name": null + }, + "ed1d9837-e33a-4282-a104-6afe5769b750": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ed1d9837-e33a-4282-a104-6afe5769b750", + "Name": "W12x152", + "CellId": 203, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "cc84f90b-31c6-419f-adf6-3a9fa5ffb2c5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 3.75, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cc84f90b-31c6-419f-adf6-3a9fa5ffb2c5", + "Name": null + }, + "e1b543d4-23ed-4837-b848-15f96ec467a5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "e1b543d4-23ed-4837-b848-15f96ec467a5", + "Name": "W12x152", + "CellId": 203, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "30361e75-1064-461d-8da1-98404f84df45": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 5.5, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "30361e75-1064-461d-8da1-98404f84df45", + "Name": null + }, + "ef396437-d73a-4243-8797-e70e13dc8177": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -25.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ef396437-d73a-4243-8797-e70e13dc8177", + "Name": "W12x152", + "CellId": 203, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d626bc41-f934-4974-8d89-3e4abeca81dd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -25.0, + "Z": 20.0 + }, + "End": { + "X": 7.25, + "Y": -20.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d626bc41-f934-4974-8d89-3e4abeca81dd", + "Name": null + }, + "065ca07d-819a-40be-a3ac-26216a6b5b30": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -23.333333333333332, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "065ca07d-819a-40be-a3ac-26216a6b5b30", + "Name": "W12x152", + "CellId": 204, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "dc5c9c85-d2bc-490a-b9d7-bc32c7bdcb4d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -23.333333333333332, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -23.333333333333332, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dc5c9c85-d2bc-490a-b9d7-bc32c7bdcb4d", + "Name": null + }, + "d6257d6d-c5de-48df-9259-91e139e0b997": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -21.666666666666668, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d6257d6d-c5de-48df-9259-91e139e0b997", + "Name": "W12x152", + "CellId": 204, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "f8eac900-ca0f-4691-8ec0-131f5223c9f4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -21.666666666666668, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -21.666666666666668, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f8eac900-ca0f-4691-8ec0-131f5223c9f4", + "Name": null + }, + "3df9ddfa-45b2-4186-acb0-515a1cd9c5bc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -23.333333333333332, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "3df9ddfa-45b2-4186-acb0-515a1cd9c5bc", + "Name": "W12x152", + "CellId": 205, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "7dc84077-9d1c-46cd-9f14-7544ee900002": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -23.333333333333332, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -23.333333333333332, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7dc84077-9d1c-46cd-9f14-7544ee900002", + "Name": null + }, + "e42711ab-e9e6-41b9-8898-9c50d96da17f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -21.666666666666668, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "e42711ab-e9e6-41b9-8898-9c50d96da17f", + "Name": "W12x152", + "CellId": 205, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "7d053e85-6985-428f-9afb-d113613472d1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -21.666666666666668, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -21.666666666666668, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7d053e85-6985-428f-9afb-d113613472d1", + "Name": null + }, + "d129e60f-a050-4b33-beaf-103857669bac": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.599764999999998, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d129e60f-a050-4b33-beaf-103857669bac", + "Name": "W12x152", + "CellId": 206, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b0e04628-93fa-4358-87f2-69a32d36c205": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.599764999999998, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 24.599764999999998, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b0e04628-93fa-4358-87f2-69a32d36c205", + "Name": null + }, + "34a22241-0baf-464b-af39-75e40cd99124": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c86c7794-702f-43dc-82a1-ccf5f1b5deea", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.19953, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "34a22241-0baf-464b-af39-75e40cd99124", + "Name": "W12x152", + "CellId": 206, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b16f94a2-037b-4a9e-8718-b82dfbaa202f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.19953, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 26.19953, + "Y": -25.20068580274321, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b16f94a2-037b-4a9e-8718-b82dfbaa202f", + "Name": null + }, + "bffa9fab-0948-45ed-bb8b-dde1f079ae7d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d27c8274-35d1-48e6-a623-33a7ddfb778f", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.799295, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "bffa9fab-0948-45ed-bb8b-dde1f079ae7d", + "Name": "W12x152", + "CellId": 206, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "875db678-b544-4a32-9d3c-497b77d66005": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.799295, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 27.799295, + "Y": -27.600342901371604, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "875db678-b544-4a32-9d3c-497b77d66005", + "Name": null + }, + "4eef22d2-8521-4228-95ed-82f4813cd0fa": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.599764999999998, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "4eef22d2-8521-4228-95ed-82f4813cd0fa", + "Name": "W12x152", + "CellId": 207, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ec1ea603-4c2a-4bd3-ab34-0bb2feb41252": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.599764999999998, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 24.599764999999998, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ec1ea603-4c2a-4bd3-ab34-0bb2feb41252", + "Name": null + }, + "ed6a939e-bcef-4fc8-96c5-e504dc3177d1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "c86c7794-702f-43dc-82a1-ccf5f1b5deea", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.19953, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ed6a939e-bcef-4fc8-96c5-e504dc3177d1", + "Name": "W12x152", + "CellId": 207, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "59eac6cc-d39b-4bea-9b0f-3bdf73f0b3a0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.19953, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 26.19953, + "Y": -25.20068580274321, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "59eac6cc-d39b-4bea-9b0f-3bdf73f0b3a0", + "Name": null + }, + "6c06a6e5-3f77-455d-b216-06f8a721d6b0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "d27c8274-35d1-48e6-a623-33a7ddfb778f", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.799295, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "6c06a6e5-3f77-455d-b216-06f8a721d6b0", + "Name": "W12x152", + "CellId": 207, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a4c0fb2c-0fcf-4b7b-b94a-1aeb9d1d19b8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.799295, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 27.799295, + "Y": -27.600342901371604, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a4c0fb2c-0fcf-4b7b-b94a-1aeb9d1d19b8", + "Name": null + }, + "e74b14cb-27a8-4f05-b1de-2f8fde66bdce": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "e74b14cb-27a8-4f05-b1de-2f8fde66bdce", + "Name": "W12x152", + "CellId": 208, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "8cc7a260-5acf-4a27-96f9-14690518d676": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 17.75, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8cc7a260-5acf-4a27-96f9-14690518d676", + "Name": null + }, + "547fec0b-c560-4cca-9b0e-c660adb6b6a8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "547fec0b-c560-4cca-9b0e-c660adb6b6a8", + "Name": "W12x152", + "CellId": 208, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "19bc9928-74eb-491d-aab0-3a4f61d02baf": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 19.5, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "19bc9928-74eb-491d-aab0-3a4f61d02baf", + "Name": null + }, + "b260b5e2-ab32-40d8-af3f-b37c3054da93": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "b260b5e2-ab32-40d8-af3f-b37c3054da93", + "Name": "W12x152", + "CellId": 208, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "12c29383-db53-4900-8a0e-34c812913bef": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 21.25, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "12c29383-db53-4900-8a0e-34c812913bef", + "Name": null + }, + "a45d4390-8524-4dfb-b797-64fff3a4974b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "a45d4390-8524-4dfb-b797-64fff3a4974b", + "Name": "W12x152", + "CellId": 209, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a38a44a1-1087-43bb-b25b-79cec82e65d6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 17.75, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a38a44a1-1087-43bb-b25b-79cec82e65d6", + "Name": null + }, + "e4e865e9-8101-4f34-bb0e-54af8a930291": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "e4e865e9-8101-4f34-bb0e-54af8a930291", + "Name": "W12x152", + "CellId": 209, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "244b52bc-43bb-47d9-af1d-c0716206c7d3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 19.5, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "244b52bc-43bb-47d9-af1d-c0716206c7d3", + "Name": null + }, + "6e011abf-1c77-44b9-ba2e-3fdeaeac84be": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "6e011abf-1c77-44b9-ba2e-3fdeaeac84be", + "Name": "W12x152", + "CellId": 209, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b3ab0e4d-9e4d-4225-9ab4-ae3c4dd3dc22": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 21.25, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b3ab0e4d-9e4d-4225-9ab4-ae3c4dd3dc22", + "Name": null + }, + "cb83bf19-5724-4a83-841c-c1f379dce549": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "cb83bf19-5724-4a83-841c-c1f379dce549", + "Name": "W12x152", + "CellId": 210, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "870f733c-7b91-4e8b-b2ab-be1009055ede": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 10.75, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "870f733c-7b91-4e8b-b2ab-be1009055ede", + "Name": null + }, + "36ef32a4-2d6d-4b50-b35c-492d021b9bf6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "36ef32a4-2d6d-4b50-b35c-492d021b9bf6", + "Name": "W12x152", + "CellId": 210, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4daca590-a3f5-404c-84d9-5ca3fd6d8eed": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 12.5, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4daca590-a3f5-404c-84d9-5ca3fd6d8eed", + "Name": null + }, + "9b6a9d7d-304b-40a0-aae5-840d5c0f8dcb": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "9b6a9d7d-304b-40a0-aae5-840d5c0f8dcb", + "Name": "W12x152", + "CellId": 210, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fb078d9e-9ab3-4363-ba98-c7a9b31c7667": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 14.25, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fb078d9e-9ab3-4363-ba98-c7a9b31c7667", + "Name": null + }, + "ea472623-c07a-4df3-a711-8c17920c994c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ea472623-c07a-4df3-a711-8c17920c994c", + "Name": "W12x152", + "CellId": 211, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e38ad8ba-e1da-4bfe-8a5a-b56128e139d6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 10.75, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e38ad8ba-e1da-4bfe-8a5a-b56128e139d6", + "Name": null + }, + "026c292b-e07b-4abd-aec3-72ea71b76613": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "026c292b-e07b-4abd-aec3-72ea71b76613", + "Name": "W12x152", + "CellId": 211, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7b925f08-e710-4308-af12-3d871292c787": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 12.5, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7b925f08-e710-4308-af12-3d871292c787", + "Name": null + }, + "8ec4ac2e-bb1e-4d0a-853a-934a4013370b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "8ec4ac2e-bb1e-4d0a-853a-934a4013370b", + "Name": "W12x152", + "CellId": 211, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f76815cf-ba4f-42af-8fad-d6b91514d6c2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 14.25, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f76815cf-ba4f-42af-8fad-d6b91514d6c2", + "Name": null + }, + "18599b4e-e8bd-48a4-87a5-0c94e9c96c36": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "18599b4e-e8bd-48a4-87a5-0c94e9c96c36", + "Name": "W12x152", + "CellId": 212, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f5951f67-16fe-4bd2-87ad-e9a4408af79d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 3.75, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f5951f67-16fe-4bd2-87ad-e9a4408af79d", + "Name": null + }, + "edefbfaf-3f9f-4995-b0a6-7611859e7e01": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "edefbfaf-3f9f-4995-b0a6-7611859e7e01", + "Name": "W12x152", + "CellId": 212, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "73dd04e5-eb26-4bb1-9545-85d959811912": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 5.5, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "73dd04e5-eb26-4bb1-9545-85d959811912", + "Name": null + }, + "2d6a5ca8-367d-4528-a056-f3086fcabfc0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "2d6a5ca8-367d-4528-a056-f3086fcabfc0", + "Name": "W12x152", + "CellId": 212, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e3f9bb45-1bb6-4e94-b397-d0c82c0fef99": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -30.0, + "Z": 12.2 + }, + "End": { + "X": 7.25, + "Y": -25.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e3f9bb45-1bb6-4e94-b397-d0c82c0fef99", + "Name": null + }, + "0b5d5713-7111-477a-b4c7-4fb752da3716": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "0b5d5713-7111-477a-b4c7-4fb752da3716", + "Name": "W12x152", + "CellId": 213, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e252c25e-026b-4dd8-8266-5cc91c6de4b4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 3.75, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e252c25e-026b-4dd8-8266-5cc91c6de4b4", + "Name": null + }, + "7ed90077-d0d7-4d7d-a816-e3c6781e1473": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "7ed90077-d0d7-4d7d-a816-e3c6781e1473", + "Name": "W12x152", + "CellId": 213, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c29c71a4-e896-461d-80d5-0faa316cfe73": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 5.5, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c29c71a4-e896-461d-80d5-0faa316cfe73", + "Name": null + }, + "2b202578-d3c5-4403-bac5-067335364f50": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -30.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "2b202578-d3c5-4403-bac5-067335364f50", + "Name": "W12x152", + "CellId": 213, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "51bc9c1a-836f-440c-a972-ef4009fc1b35": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -30.0, + "Z": 20.0 + }, + "End": { + "X": 7.25, + "Y": -25.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "51bc9c1a-836f-440c-a972-ef4009fc1b35", + "Name": null + }, + "d52e9cb5-d938-4fcd-a3a8-2a293d32d37c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -28.333333333333332, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d52e9cb5-d938-4fcd-a3a8-2a293d32d37c", + "Name": "W12x152", + "CellId": 214, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "1d05b534-f99f-4d7c-aba7-ae6996a44dc6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -28.333333333333332, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -28.333333333333332, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1d05b534-f99f-4d7c-aba7-ae6996a44dc6", + "Name": null + }, + "b13176bc-d39e-46ba-aa1b-d320b128c007": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -26.666666666666668, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "b13176bc-d39e-46ba-aa1b-d320b128c007", + "Name": "W12x152", + "CellId": 214, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "e226f9ab-8053-4ef6-ac5a-64ca65d473b3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -26.666666666666668, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -26.666666666666668, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e226f9ab-8053-4ef6-ac5a-64ca65d473b3", + "Name": null + }, + "5b031f7c-8880-45f0-b389-b75d37e0dfe7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -28.333333333333332, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5b031f7c-8880-45f0-b389-b75d37e0dfe7", + "Name": "W12x152", + "CellId": 215, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "c5c95476-58ec-40a8-943c-1c0806638e3b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -28.333333333333332, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -28.333333333333332, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c5c95476-58ec-40a8-943c-1c0806638e3b", + "Name": null + }, + "1597e7d0-858a-4987-8f86-6d18a7ae2489": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -26.666666666666668, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "1597e7d0-858a-4987-8f86-6d18a7ae2489", + "Name": "W12x152", + "CellId": 215, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "97667cd1-3413-4b52-b864-5f2daa66e759": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -26.666666666666668, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -26.666666666666668, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "97667cd1-3413-4b52-b864-5f2daa66e759", + "Name": null + }, + "3e197679-628f-4561-91db-f2638adcf0c8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "3e197679-628f-4561-91db-f2638adcf0c8", + "Name": "W12x152", + "CellId": 216, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6c498eec-16da-4e81-8dc7-cbae02ae3bb4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 24.625, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6c498eec-16da-4e81-8dc7-cbae02ae3bb4", + "Name": null + }, + "1f854031-a2a6-475c-95b9-8634046a664f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "1f854031-a2a6-475c-95b9-8634046a664f", + "Name": "W12x152", + "CellId": 216, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a41c3bcf-f57a-44b2-a61c-80aaf6815a93": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 26.25, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a41c3bcf-f57a-44b2-a61c-80aaf6815a93", + "Name": null + }, + "e88d051b-6025-486d-91cf-779763c00756": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "e88d051b-6025-486d-91cf-779763c00756", + "Name": "W12x152", + "CellId": 216, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e6b562cd-08fa-4d40-90f2-c78833520dc5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 27.875, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e6b562cd-08fa-4d40-90f2-c78833520dc5", + "Name": null + }, + "d585d892-5088-4f36-b75d-300228d84fd5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "d585d892-5088-4f36-b75d-300228d84fd5", + "Name": "W12x152", + "CellId": 217, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "76ac7e82-8199-4db7-bbba-23f6672562ed": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 24.625, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "76ac7e82-8199-4db7-bbba-23f6672562ed", + "Name": null + }, + "3c1df616-8ffd-4d51-b489-c51bc5683277": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "3c1df616-8ffd-4d51-b489-c51bc5683277", + "Name": "W12x152", + "CellId": 217, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fc61d93e-3648-4452-9d0d-a49e30e30851": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 26.25, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fc61d93e-3648-4452-9d0d-a49e30e30851", + "Name": null + }, + "255170f6-7cc8-4a84-80a8-7533b861fd3a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "255170f6-7cc8-4a84-80a8-7533b861fd3a", + "Name": "W12x152", + "CellId": 217, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c2dd4093-f942-46e3-ab4c-ce2a29c653dc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 27.875, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c2dd4093-f942-46e3-ab4c-ce2a29c653dc", + "Name": null + }, + "3f74a732-5fbf-4754-a108-6f6c54a3f031": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "3f74a732-5fbf-4754-a108-6f6c54a3f031", + "Name": "W12x152", + "CellId": 218, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f46fe036-92ea-4beb-980e-35bebbcc8c35": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 17.75, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f46fe036-92ea-4beb-980e-35bebbcc8c35", + "Name": null + }, + "bad1438c-07f8-4a5e-97a0-a9d12ed9558b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "bad1438c-07f8-4a5e-97a0-a9d12ed9558b", + "Name": "W12x152", + "CellId": 218, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e62f178e-5c57-4aaa-ab08-db92dd71936c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 19.5, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e62f178e-5c57-4aaa-ab08-db92dd71936c", + "Name": null + }, + "364bb937-c1a8-4c1e-a91e-289943104dc6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "364bb937-c1a8-4c1e-a91e-289943104dc6", + "Name": "W12x152", + "CellId": 218, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fb6277f4-c47f-4ad8-bee6-347016b7880a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 21.25, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fb6277f4-c47f-4ad8-bee6-347016b7880a", + "Name": null + }, + "2fda33e4-86d1-4199-a5e1-d3192ce74f4f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "2fda33e4-86d1-4199-a5e1-d3192ce74f4f", + "Name": "W12x152", + "CellId": 219, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "7ac9155a-03cb-4c51-8bdb-a28b5901dce7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 17.75, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7ac9155a-03cb-4c51-8bdb-a28b5901dce7", + "Name": null + }, + "082c37fb-f440-4a9c-a2ac-260ad53e3b48": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "082c37fb-f440-4a9c-a2ac-260ad53e3b48", + "Name": "W12x152", + "CellId": 219, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9beba32b-c21b-464b-a103-76d084d9bb9a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 19.5, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9beba32b-c21b-464b-a103-76d084d9bb9a", + "Name": null + }, + "cc584d7d-c674-42fe-a4ee-23244b9a0766": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "cc584d7d-c674-42fe-a4ee-23244b9a0766", + "Name": "W12x152", + "CellId": 219, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f1307c1d-3908-473b-8e5c-a50a569544db": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 21.25, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f1307c1d-3908-473b-8e5c-a50a569544db", + "Name": null + }, + "84452574-19b9-42af-85f4-3723d2a23438": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "84452574-19b9-42af-85f4-3723d2a23438", + "Name": "W12x152", + "CellId": 220, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9b5a6bd9-bb5b-4e8b-97a8-4eee9d658943": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 10.75, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9b5a6bd9-bb5b-4e8b-97a8-4eee9d658943", + "Name": null + }, + "bcaedb7c-5d5a-4c55-bc76-2361ff7ba401": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "bcaedb7c-5d5a-4c55-bc76-2361ff7ba401", + "Name": "W12x152", + "CellId": 220, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "df542904-bc2a-4b32-b715-1dfa41ff1244": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 12.5, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "df542904-bc2a-4b32-b715-1dfa41ff1244", + "Name": null + }, + "9ecd8a2a-8713-4b45-93ef-6b0b74a70999": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "9ecd8a2a-8713-4b45-93ef-6b0b74a70999", + "Name": "W12x152", + "CellId": 220, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "325f792a-7538-45db-a18a-108a931b2172": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 14.25, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "325f792a-7538-45db-a18a-108a931b2172", + "Name": null + }, + "79660b23-c5ed-4f6f-a309-8704ae4dc902": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "79660b23-c5ed-4f6f-a309-8704ae4dc902", + "Name": "W12x152", + "CellId": 221, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1c413d8e-01e7-4665-b913-cec16aae0062": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 10.75, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1c413d8e-01e7-4665-b913-cec16aae0062", + "Name": null + }, + "ae8dd1a3-79eb-494c-874b-ea593bd987e9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ae8dd1a3-79eb-494c-874b-ea593bd987e9", + "Name": "W12x152", + "CellId": 221, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "8756bf20-af1d-4426-b1ad-37222cfaf216": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 12.5, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8756bf20-af1d-4426-b1ad-37222cfaf216", + "Name": null + }, + "9f4fe35f-f720-43d8-904b-bf71815097a2": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "9f4fe35f-f720-43d8-904b-bf71815097a2", + "Name": "W12x152", + "CellId": 221, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "2fca96ea-26d9-4629-8021-d5086fc29c81": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 14.25, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2fca96ea-26d9-4629-8021-d5086fc29c81", + "Name": null + }, + "ddecf78b-9217-4846-8ae3-72cc5510db4f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "ddecf78b-9217-4846-8ae3-72cc5510db4f", + "Name": "W12x152", + "CellId": 222, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "851734ef-8ab4-4fac-b505-4e9002e3e6f5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 3.75, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "851734ef-8ab4-4fac-b505-4e9002e3e6f5", + "Name": null + }, + "811ec478-87f0-4ced-8d8d-8ebb17ca08de": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "811ec478-87f0-4ced-8d8d-8ebb17ca08de", + "Name": "W12x152", + "CellId": 222, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b687f437-1712-4691-8618-27233bcc8520": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 5.5, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b687f437-1712-4691-8618-27233bcc8520", + "Name": null + }, + "def0c310-7f28-4243-89bf-151c062ec409": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "def0c310-7f28-4243-89bf-151c062ec409", + "Name": "W12x152", + "CellId": 222, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ed820986-7a30-47e5-b34c-4c604334d7da": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -35.0, + "Z": 12.2 + }, + "End": { + "X": 7.25, + "Y": -30.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ed820986-7a30-47e5-b34c-4c604334d7da", + "Name": null + }, + "663e7262-b904-421f-bda0-ae64aa1042c7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "663e7262-b904-421f-bda0-ae64aa1042c7", + "Name": "W12x152", + "CellId": 223, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "56990425-50ea-4919-9159-dddc118f17c1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 3.75, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "56990425-50ea-4919-9159-dddc118f17c1", + "Name": null + }, + "e5cbd9c4-b7c5-4f45-bdce-f016fca8f837": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "e5cbd9c4-b7c5-4f45-bdce-f016fca8f837", + "Name": "W12x152", + "CellId": 223, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d106b2ec-9dcf-4ae9-8b66-1fde9d4fdc7e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 5.5, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d106b2ec-9dcf-4ae9-8b66-1fde9d4fdc7e", + "Name": null + }, + "cad0f28f-d4f3-4f5d-9e9e-2ae84b5b78af": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -35.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "cad0f28f-d4f3-4f5d-9e9e-2ae84b5b78af", + "Name": "W12x152", + "CellId": 223, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "885d039c-4a38-4a2f-aeb4-e5e3241a4895": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -35.0, + "Z": 20.0 + }, + "End": { + "X": 7.25, + "Y": -30.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "885d039c-4a38-4a2f-aeb4-e5e3241a4895", + "Name": null + }, + "45406ae3-095d-436c-9137-b5b9a771ad36": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -33.333333333333336, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "45406ae3-095d-436c-9137-b5b9a771ad36", + "Name": "W12x152", + "CellId": 224, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "21303814-8937-4177-b497-d1eeb1a6512a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -33.333333333333336, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -33.333333333333336, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "21303814-8937-4177-b497-d1eeb1a6512a", + "Name": null + }, + "4c629d37-679b-4782-8361-c4f10d2fe145": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -31.666666666666668, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "4c629d37-679b-4782-8361-c4f10d2fe145", + "Name": "W12x152", + "CellId": 224, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "ef1ad821-8d4c-4edd-9f3b-43a8d04ec84b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -31.666666666666668, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -31.666666666666668, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ef1ad821-8d4c-4edd-9f3b-43a8d04ec84b", + "Name": null + }, + "934b8ffa-4aad-4203-9685-d43d646ff198": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -33.333333333333336, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "934b8ffa-4aad-4203-9685-d43d646ff198", + "Name": "W12x152", + "CellId": 225, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "74c64b2f-5f72-4c9b-8df0-2086d92b795f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -33.333333333333336, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -33.333333333333336, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "74c64b2f-5f72-4c9b-8df0-2086d92b795f", + "Name": null + }, + "6a014b81-fd5e-441b-ad94-b6ccaf769e0e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -31.666666666666668, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "6a014b81-fd5e-441b-ad94-b6ccaf769e0e", + "Name": "W12x152", + "CellId": 225, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "e152f5d9-d4cd-45f7-a779-80666c1b58cd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -31.666666666666668, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -31.666666666666668, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e152f5d9-d4cd-45f7-a779-80666c1b58cd", + "Name": null + }, + "ea155018-d6a8-45ec-be7d-98dc99a346b0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "ea155018-d6a8-45ec-be7d-98dc99a346b0", + "Name": "W12x152", + "CellId": 226, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "87fecbcd-b941-46d4-9c5a-9b5fe8546b04": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 24.625, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "87fecbcd-b941-46d4-9c5a-9b5fe8546b04", + "Name": null + }, + "1da03dd4-c188-46ec-a065-064dd57a45c1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "1da03dd4-c188-46ec-a065-064dd57a45c1", + "Name": "W12x152", + "CellId": 226, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "011a7377-e389-4165-b172-c2325dc74969": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 26.25, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "011a7377-e389-4165-b172-c2325dc74969", + "Name": null + }, + "d970935a-6d6b-446f-ac4b-86ae2d8589e5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d970935a-6d6b-446f-ac4b-86ae2d8589e5", + "Name": "W12x152", + "CellId": 226, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0b695268-b427-4a19-aff5-d1ac3da20af0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 27.875, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0b695268-b427-4a19-aff5-d1ac3da20af0", + "Name": null + }, + "613ec427-10d7-4cd9-9e39-30f03eee66cd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "613ec427-10d7-4cd9-9e39-30f03eee66cd", + "Name": "W12x152", + "CellId": 227, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "acf256ea-1eb1-4946-8f81-eb61e0db97b6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 24.625, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "acf256ea-1eb1-4946-8f81-eb61e0db97b6", + "Name": null + }, + "e8a9d8f8-9b2e-47ba-b1a4-7d4dc07a728e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "e8a9d8f8-9b2e-47ba-b1a4-7d4dc07a728e", + "Name": "W12x152", + "CellId": 227, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "cfec69ce-ba73-4acd-9182-2afa04b1e7e0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 26.25, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cfec69ce-ba73-4acd-9182-2afa04b1e7e0", + "Name": null + }, + "372d2924-99b9-41a9-b505-4a9d25cb9a38": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "372d2924-99b9-41a9-b505-4a9d25cb9a38", + "Name": "W12x152", + "CellId": 227, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b41d3767-2cb4-46d1-a384-4e00cf608371": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 27.875, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b41d3767-2cb4-46d1-a384-4e00cf608371", + "Name": null + }, + "7bdf3a5a-cfeb-43bd-8c80-aba81ecc4de8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "7bdf3a5a-cfeb-43bd-8c80-aba81ecc4de8", + "Name": "W12x152", + "CellId": 228, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b069a2fd-eed8-48c1-aefc-76861ea29ba3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 17.75, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b069a2fd-eed8-48c1-aefc-76861ea29ba3", + "Name": null + }, + "e413a7bc-6737-49b2-859d-b06df4de670d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "e413a7bc-6737-49b2-859d-b06df4de670d", + "Name": "W12x152", + "CellId": 228, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "54855627-0ef1-4df4-add4-db2c0b16b8cd": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 19.5, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "54855627-0ef1-4df4-add4-db2c0b16b8cd", + "Name": null + }, + "fc782bda-eef7-4813-a3c9-073fc4f6b698": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "fc782bda-eef7-4813-a3c9-073fc4f6b698", + "Name": "W12x152", + "CellId": 228, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "2428b65d-2a11-4eab-99fb-e02a01f16fc3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 21.25, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2428b65d-2a11-4eab-99fb-e02a01f16fc3", + "Name": null + }, + "db472b91-797c-45b6-aff4-c035dc507a92": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "db472b91-797c-45b6-aff4-c035dc507a92", + "Name": "W12x152", + "CellId": 229, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "8c21e6c3-01c5-4d2b-9d02-0905102d9569": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 17.75, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "8c21e6c3-01c5-4d2b-9d02-0905102d9569", + "Name": null + }, + "a9a316a9-6176-47f4-8081-f1ac7a3cddda": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "a9a316a9-6176-47f4-8081-f1ac7a3cddda", + "Name": "W12x152", + "CellId": 229, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4958da19-b711-4c84-8b38-562996913023": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 19.5, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4958da19-b711-4c84-8b38-562996913023", + "Name": null + }, + "587b0c40-151d-4b31-b53f-47607b6f2d73": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "587b0c40-151d-4b31-b53f-47607b6f2d73", + "Name": "W12x152", + "CellId": 229, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "27ddac7f-3e47-4674-b6ed-2d43d1c09d45": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 21.25, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "27ddac7f-3e47-4674-b6ed-2d43d1c09d45", + "Name": null + }, + "4771d0ce-22c0-47f8-baf7-1162039146d9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "4771d0ce-22c0-47f8-baf7-1162039146d9", + "Name": "W12x152", + "CellId": 230, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "17f193a3-0106-4635-bc77-ed06f320579d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 10.75, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "17f193a3-0106-4635-bc77-ed06f320579d", + "Name": null + }, + "ff8cb904-950c-49c0-9d60-1e1386cfa67b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "ff8cb904-950c-49c0-9d60-1e1386cfa67b", + "Name": "W12x152", + "CellId": 230, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d22d672d-beb8-46e3-9438-d1ede2463e2a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 12.5, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d22d672d-beb8-46e3-9438-d1ede2463e2a", + "Name": null + }, + "2280b289-df8e-4ccf-9799-428ab67f6f6a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "2280b289-df8e-4ccf-9799-428ab67f6f6a", + "Name": "W12x152", + "CellId": 230, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c2c48efb-7a6a-4009-a770-b148c479314a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 14.25, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c2c48efb-7a6a-4009-a770-b148c479314a", + "Name": null + }, + "b86371f3-ca46-4df3-b8e1-88430fcd0ac6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "b86371f3-ca46-4df3-b8e1-88430fcd0ac6", + "Name": "W12x152", + "CellId": 231, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f2b758ce-3084-4aef-a9b3-5ab83123b8a1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 10.75, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f2b758ce-3084-4aef-a9b3-5ab83123b8a1", + "Name": null + }, + "55c54232-07e8-4c9e-84d0-28c23b39a20d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "55c54232-07e8-4c9e-84d0-28c23b39a20d", + "Name": "W12x152", + "CellId": 231, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3749d1fd-745c-4076-a29b-f6fe805e204c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 12.5, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3749d1fd-745c-4076-a29b-f6fe805e204c", + "Name": null + }, + "dbb07699-ed96-41eb-87ec-1707c99d11ff": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "dbb07699-ed96-41eb-87ec-1707c99d11ff", + "Name": "W12x152", + "CellId": 231, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9cee85c7-2f30-4406-98c4-344687fefb96": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 14.25, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9cee85c7-2f30-4406-98c4-344687fefb96", + "Name": null + }, + "2c413d70-b89b-4dfe-98dc-4f68ad2f0c32": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "2c413d70-b89b-4dfe-98dc-4f68ad2f0c32", + "Name": "W12x152", + "CellId": 232, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fa67952b-3d21-48d1-b7ca-d631633ab602": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 3.75, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fa67952b-3d21-48d1-b7ca-d631633ab602", + "Name": null + }, + "685cb765-b243-4192-bbb0-3687040b932b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "685cb765-b243-4192-bbb0-3687040b932b", + "Name": "W12x152", + "CellId": 232, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ede7c8b0-d7f8-4947-b672-39426dee7169": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 5.5, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ede7c8b0-d7f8-4947-b672-39426dee7169", + "Name": null + }, + "691dae18-2e52-403e-911b-dc03b5e033ed": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "691dae18-2e52-403e-911b-dc03b5e033ed", + "Name": "W12x152", + "CellId": 232, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "db4df6c6-bba0-493f-833c-a54622efba8c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -40.0, + "Z": 12.2 + }, + "End": { + "X": 7.25, + "Y": -35.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "db4df6c6-bba0-493f-833c-a54622efba8c", + "Name": null + }, + "b932259d-ee09-49c4-9a15-7afbabeffd0c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "b932259d-ee09-49c4-9a15-7afbabeffd0c", + "Name": "W12x152", + "CellId": 233, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "eb7f9148-b878-431d-a8a0-e5323678a0c2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 3.75, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "eb7f9148-b878-431d-a8a0-e5323678a0c2", + "Name": null + }, + "cebc18fc-4b7b-4303-9bd8-2fa57c46b9b4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "cebc18fc-4b7b-4303-9bd8-2fa57c46b9b4", + "Name": "W12x152", + "CellId": 233, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6fb3887d-632c-41df-9ba7-7976baa6fb21": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 5.5, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6fb3887d-632c-41df-9ba7-7976baa6fb21", + "Name": null + }, + "639cb86d-3294-4b91-ac07-87fe4b0cfa2b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -40.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "639cb86d-3294-4b91-ac07-87fe4b0cfa2b", + "Name": "W12x152", + "CellId": 233, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c4d8044b-2c39-407a-a38c-d57a8f61f39d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -40.0, + "Z": 20.0 + }, + "End": { + "X": 7.25, + "Y": -35.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c4d8044b-2c39-407a-a38c-d57a8f61f39d", + "Name": null + }, + "bf654b89-75c5-4883-b420-c71e5b354d65": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -38.333333333333336, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "bf654b89-75c5-4883-b420-c71e5b354d65", + "Name": "W12x152", + "CellId": 234, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "96d4a7e1-9550-48cf-805d-28924f4f3736": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -38.333333333333336, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -38.333333333333336, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "96d4a7e1-9550-48cf-805d-28924f4f3736", + "Name": null + }, + "b282442c-e08e-4e53-b297-140a4f282653": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -36.666666666666664, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "b282442c-e08e-4e53-b297-140a4f282653", + "Name": "W12x152", + "CellId": 234, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "978425b2-4721-4938-b081-f15f2befa319": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -36.666666666666664, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -36.666666666666664, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "978425b2-4721-4938-b081-f15f2befa319", + "Name": null + }, + "d1570447-e37a-41a4-85ce-77dd9f6864a3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -38.333333333333336, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "d1570447-e37a-41a4-85ce-77dd9f6864a3", + "Name": "W12x152", + "CellId": 235, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "d2812af3-58b9-415f-84ef-8d18cd6c9ae3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -38.333333333333336, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -38.333333333333336, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d2812af3-58b9-415f-84ef-8d18cd6c9ae3", + "Name": null + }, + "05c250b5-23da-401d-bcfe-306283615248": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -36.666666666666664, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "05c250b5-23da-401d-bcfe-306283615248", + "Name": "W12x152", + "CellId": 235, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "bd1dbb83-4009-4f82-8f05-5d84368dd6a4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -36.666666666666664, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -36.666666666666664, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bd1dbb83-4009-4f82-8f05-5d84368dd6a4", + "Name": null + }, + "5965ce61-d619-4720-8e95-aa3d1594a602": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "5965ce61-d619-4720-8e95-aa3d1594a602", + "Name": "W12x152", + "CellId": 236, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1342e22d-2d32-4d0d-8821-311a38a02257": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 24.625, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1342e22d-2d32-4d0d-8821-311a38a02257", + "Name": null + }, + "7a6d1edf-ade7-4fba-b5f2-fdbee070a8dd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "7a6d1edf-ade7-4fba-b5f2-fdbee070a8dd", + "Name": "W12x152", + "CellId": 236, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "298c2da8-ba43-486a-b887-2869517eb333": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 26.25, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "298c2da8-ba43-486a-b887-2869517eb333", + "Name": null + }, + "ad4d422b-b1e0-46fa-8e69-e451f38f52f3": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "ad4d422b-b1e0-46fa-8e69-e451f38f52f3", + "Name": "W12x152", + "CellId": 236, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "29533858-6cda-418c-91fa-2c95b7501176": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 27.875, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "29533858-6cda-418c-91fa-2c95b7501176", + "Name": null + }, + "aaed6f50-a4a5-4515-bfc1-728ed9f5be78": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "aaed6f50-a4a5-4515-bfc1-728ed9f5be78", + "Name": "W12x152", + "CellId": 237, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9196f4cd-101f-46e2-97f6-a6b0818ad5a8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 24.625, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9196f4cd-101f-46e2-97f6-a6b0818ad5a8", + "Name": null + }, + "17757663-20f0-4880-882c-33ec87980546": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "17757663-20f0-4880-882c-33ec87980546", + "Name": "W12x152", + "CellId": 237, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "97eb7f8b-1ed2-446f-bd9e-c656243d7e04": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 26.25, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "97eb7f8b-1ed2-446f-bd9e-c656243d7e04", + "Name": null + }, + "6a4fb796-a7e4-427d-b20d-16953a5ba202": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "6a4fb796-a7e4-427d-b20d-16953a5ba202", + "Name": "W12x152", + "CellId": 237, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "10be4eec-8c4c-42f0-8f5d-8faafae0d62c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 27.875, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "10be4eec-8c4c-42f0-8f5d-8faafae0d62c", + "Name": null + }, + "944c69c3-5a99-4aba-9466-3c3d3cda32cd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "944c69c3-5a99-4aba-9466-3c3d3cda32cd", + "Name": "W12x152", + "CellId": 238, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9b57078c-6572-4643-8b51-e66217bb7c16": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 17.75, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9b57078c-6572-4643-8b51-e66217bb7c16", + "Name": null + }, + "8e984be4-72f1-4cd2-b2e0-d337ee61f6a4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "8e984be4-72f1-4cd2-b2e0-d337ee61f6a4", + "Name": "W12x152", + "CellId": 238, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fc2eb208-332f-4546-9b19-c358dd562fc5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 19.5, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fc2eb208-332f-4546-9b19-c358dd562fc5", + "Name": null + }, + "3df84bb7-64dd-4424-bd24-d9fc7c34e3b7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "3df84bb7-64dd-4424-bd24-d9fc7c34e3b7", + "Name": "W12x152", + "CellId": 238, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4c6f224c-9e44-4f16-a6ac-f5d89a046fed": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 21.25, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4c6f224c-9e44-4f16-a6ac-f5d89a046fed", + "Name": null + }, + "ebda2594-e0cd-40d0-8e9e-d73ea638c33b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ebda2594-e0cd-40d0-8e9e-d73ea638c33b", + "Name": "W12x152", + "CellId": 239, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "42b4736e-bc0c-4ec4-8d14-965a27c57235": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 17.75, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "42b4736e-bc0c-4ec4-8d14-965a27c57235", + "Name": null + }, + "512a6c3e-99e7-413e-91d2-3d9d38a5907a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "512a6c3e-99e7-413e-91d2-3d9d38a5907a", + "Name": "W12x152", + "CellId": 239, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0e8c6ee2-e14e-4372-a5a8-e29943437c9e": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 19.5, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0e8c6ee2-e14e-4372-a5a8-e29943437c9e", + "Name": null + }, + "ee558dd0-a58c-481f-bc29-b27c5bbe496e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ee558dd0-a58c-481f-bc29-b27c5bbe496e", + "Name": "W12x152", + "CellId": 239, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1873d4e1-ae2c-49e6-b5a1-b9ec68cc8799": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 21.25, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1873d4e1-ae2c-49e6-b5a1-b9ec68cc8799", + "Name": null + }, + "05e9ae11-7756-437a-9576-b97f8ae01d44": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "05e9ae11-7756-437a-9576-b97f8ae01d44", + "Name": "W12x152", + "CellId": 240, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3fda42c8-9224-4a22-8eb2-29927380329b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 10.75, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3fda42c8-9224-4a22-8eb2-29927380329b", + "Name": null + }, + "4dc6a0df-b463-4ea1-acf0-5431a7842eb0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "4dc6a0df-b463-4ea1-acf0-5431a7842eb0", + "Name": "W12x152", + "CellId": 240, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "588587ad-52c5-4323-af56-7ddc53d392ff": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 12.5, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "588587ad-52c5-4323-af56-7ddc53d392ff", + "Name": null + }, + "f36cd6f2-dbf4-4219-ae01-6f8b652ec912": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "f36cd6f2-dbf4-4219-ae01-6f8b652ec912", + "Name": "W12x152", + "CellId": 240, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "bbaedc8d-4f04-4f70-9fe8-5a69c67c42eb": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 14.25, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bbaedc8d-4f04-4f70-9fe8-5a69c67c42eb", + "Name": null + }, + "fe65f187-ede0-47ac-a3ea-fd92fa0dde50": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "fe65f187-ede0-47ac-a3ea-fd92fa0dde50", + "Name": "W12x152", + "CellId": 241, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "100aa06a-2c7d-4d79-bfe1-b21c46d771a3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 10.75, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "100aa06a-2c7d-4d79-bfe1-b21c46d771a3", + "Name": null + }, + "1ea5b51c-7bb8-474f-94c5-80a95808c4c9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "1ea5b51c-7bb8-474f-94c5-80a95808c4c9", + "Name": "W12x152", + "CellId": 241, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b7cf7e78-9f91-423d-8f81-62267d1db3f9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 12.5, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b7cf7e78-9f91-423d-8f81-62267d1db3f9", + "Name": null + }, + "4d195ba8-42a3-4553-b5eb-157712a54e0a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "4d195ba8-42a3-4553-b5eb-157712a54e0a", + "Name": "W12x152", + "CellId": 241, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "bdde7b4e-3cba-4e78-aff5-ea7b730286a8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 14.25, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bdde7b4e-3cba-4e78-aff5-ea7b730286a8", + "Name": null + }, + "17100a29-699e-443c-b8cc-81698949477b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "17100a29-699e-443c-b8cc-81698949477b", + "Name": "W12x152", + "CellId": 242, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ba03af26-3c7d-4d57-ac14-eb48dc47413a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 3.75, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ba03af26-3c7d-4d57-ac14-eb48dc47413a", + "Name": null + }, + "ae866f1a-131b-4a93-b3b0-b74715f8f334": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "ae866f1a-131b-4a93-b3b0-b74715f8f334", + "Name": "W12x152", + "CellId": 242, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6d944e73-4ad4-4498-ae86-39dd7b9ea4b3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 5.5, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6d944e73-4ad4-4498-ae86-39dd7b9ea4b3", + "Name": null + }, + "313b23d6-1351-45eb-bc81-5efba9356a04": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "313b23d6-1351-45eb-bc81-5efba9356a04", + "Name": "W12x152", + "CellId": 242, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "25b26d36-deef-4921-916a-bb8a253ae307": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -45.0, + "Z": 12.2 + }, + "End": { + "X": 7.25, + "Y": -40.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "25b26d36-deef-4921-916a-bb8a253ae307", + "Name": null + }, + "b7662883-3457-4d5b-afff-27f3a918e868": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "b7662883-3457-4d5b-afff-27f3a918e868", + "Name": "W12x152", + "CellId": 243, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "444e3b25-6388-4f01-8d69-2633f937666d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 3.75, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "444e3b25-6388-4f01-8d69-2633f937666d", + "Name": null + }, + "ea15ef06-b78f-47f0-9967-d08070e32a44": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ea15ef06-b78f-47f0-9967-d08070e32a44", + "Name": "W12x152", + "CellId": 243, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5b311da2-51f7-4311-80f8-b25a85944f22": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 5.5, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5b311da2-51f7-4311-80f8-b25a85944f22", + "Name": null + }, + "73110a40-8766-46d0-8ee1-1311c76754fd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -45.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "73110a40-8766-46d0-8ee1-1311c76754fd", + "Name": "W12x152", + "CellId": 243, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "22456005-3290-4f0b-846a-77d71dc9f364": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -45.0, + "Z": 20.0 + }, + "End": { + "X": 7.25, + "Y": -40.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "22456005-3290-4f0b-846a-77d71dc9f364", + "Name": null + }, + "240f2f16-20c3-42f6-9926-a53dcd47f3e8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -43.333333333333336, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "240f2f16-20c3-42f6-9926-a53dcd47f3e8", + "Name": "W12x152", + "CellId": 244, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "0827e9d2-9420-4b2b-962c-58123c21e458": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -43.333333333333336, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -43.333333333333336, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0827e9d2-9420-4b2b-962c-58123c21e458", + "Name": null + }, + "f8d6f24e-c068-4b20-bb0f-bd978800fb77": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -41.666666666666664, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "f8d6f24e-c068-4b20-bb0f-bd978800fb77", + "Name": "W12x152", + "CellId": 244, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "7d5ebb43-399c-4e4a-b987-cafa280ddd2b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -41.666666666666664, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -41.666666666666664, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "7d5ebb43-399c-4e4a-b987-cafa280ddd2b", + "Name": null + }, + "02825d5e-c867-413d-8add-c8a19dcff584": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -43.333333333333336, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "02825d5e-c867-413d-8add-c8a19dcff584", + "Name": "W12x152", + "CellId": 245, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "106d56b2-500e-42eb-9807-3992857463f3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -43.333333333333336, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -43.333333333333336, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "106d56b2-500e-42eb-9807-3992857463f3", + "Name": null + }, + "b0af0b92-9b6a-43b4-b37b-195eec7088d6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -41.666666666666664, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "b0af0b92-9b6a-43b4-b37b-195eec7088d6", + "Name": "W12x152", + "CellId": 245, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "ba16b5b2-2eee-419a-8478-119857f64e81": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -41.666666666666664, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -41.666666666666664, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ba16b5b2-2eee-419a-8478-119857f64e81", + "Name": null + }, + "048a5dd2-740e-46ec-a302-db658c75bb08": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "048a5dd2-740e-46ec-a302-db658c75bb08", + "Name": "W12x152", + "CellId": 246, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4a4e51b9-5d85-4a0d-a619-f2aae9c7e8e4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 24.625, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4a4e51b9-5d85-4a0d-a619-f2aae9c7e8e4", + "Name": null + }, + "ffc00d8d-a179-4b3e-88e6-7e4cc92714ed": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "ffc00d8d-a179-4b3e-88e6-7e4cc92714ed", + "Name": "W12x152", + "CellId": 246, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "df82553e-92f6-476e-beed-2220e7adfba2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 26.25, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "df82553e-92f6-476e-beed-2220e7adfba2", + "Name": null + }, + "45872959-839a-4717-87d2-292282b53f12": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "45872959-839a-4717-87d2-292282b53f12", + "Name": "W12x152", + "CellId": 246, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a6320dcb-1279-4e9f-989c-d56b8785e225": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 27.875, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a6320dcb-1279-4e9f-989c-d56b8785e225", + "Name": null + }, + "62fa5673-e833-4b4c-8a9e-cd9fa8612e7c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "62fa5673-e833-4b4c-8a9e-cd9fa8612e7c", + "Name": "W12x152", + "CellId": 247, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "533c5a09-08ea-4458-a9c6-53aea20dc0af": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 24.625, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "533c5a09-08ea-4458-a9c6-53aea20dc0af", + "Name": null + }, + "cbc2a5af-27d4-4660-92f6-8fee42305709": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "cbc2a5af-27d4-4660-92f6-8fee42305709", + "Name": "W12x152", + "CellId": 247, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "82e81bef-8321-4799-85a8-13db922bc32b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 26.25, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "82e81bef-8321-4799-85a8-13db922bc32b", + "Name": null + }, + "3c59eba8-4d49-456c-ad78-1f49864b24e0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "3c59eba8-4d49-456c-ad78-1f49864b24e0", + "Name": "W12x152", + "CellId": 247, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "dc8e4b3a-7c3b-42e9-aeb7-8fd1d16e3367": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 27.875, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "dc8e4b3a-7c3b-42e9-aeb7-8fd1d16e3367", + "Name": null + }, + "4ccecdfc-a628-4f7b-bf2f-8d600a2006a6": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "4ccecdfc-a628-4f7b-bf2f-8d600a2006a6", + "Name": "W12x152", + "CellId": 248, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e6b2edff-701d-4928-a207-afbdcb4cce94": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 17.75, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e6b2edff-701d-4928-a207-afbdcb4cce94", + "Name": null + }, + "c1544570-e92e-49c1-9018-c9386a121a28": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "c1544570-e92e-49c1-9018-c9386a121a28", + "Name": "W12x152", + "CellId": 248, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "31e11c25-0974-4866-9ecc-90bf4211f2fe": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 19.5, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "31e11c25-0974-4866-9ecc-90bf4211f2fe", + "Name": null + }, + "8ab12a94-61cd-4465-9743-7a2ffb54b876": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "8ab12a94-61cd-4465-9743-7a2ffb54b876", + "Name": "W12x152", + "CellId": 248, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "bc67482b-41a3-4417-902e-478b36a9636b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 21.25, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bc67482b-41a3-4417-902e-478b36a9636b", + "Name": null + }, + "7878b4da-f5db-458d-93e8-689522e338c4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "7878b4da-f5db-458d-93e8-689522e338c4", + "Name": "W12x152", + "CellId": 249, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fd70ea10-84f9-4cde-9b3a-0cd10cc1cff8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 17.75, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fd70ea10-84f9-4cde-9b3a-0cd10cc1cff8", + "Name": null + }, + "1f2f6ac5-c9e3-4533-9c65-e96fcfe7a3a9": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "1f2f6ac5-c9e3-4533-9c65-e96fcfe7a3a9", + "Name": "W12x152", + "CellId": 249, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fc739526-aac6-481b-8b32-486370c71055": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 19.5, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fc739526-aac6-481b-8b32-486370c71055", + "Name": null + }, + "5814510a-a2c2-40e6-ac04-e74f3b07d58c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5814510a-a2c2-40e6-ac04-e74f3b07d58c", + "Name": "W12x152", + "CellId": 249, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "cf463490-a6f5-4054-b9a8-aa2560ec9864": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 21.25, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cf463490-a6f5-4054-b9a8-aa2560ec9864", + "Name": null + }, + "df2cb33c-030f-4c8d-9bcb-a859decfa455": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "df2cb33c-030f-4c8d-9bcb-a859decfa455", + "Name": "W12x152", + "CellId": 250, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "a9effb7a-af8e-4219-a14d-b1fd51719f34": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 10.75, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "a9effb7a-af8e-4219-a14d-b1fd51719f34", + "Name": null + }, + "7473238f-88ec-43bc-ad2a-0c73fd07e393": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "7473238f-88ec-43bc-ad2a-0c73fd07e393", + "Name": "W12x152", + "CellId": 250, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "9de1bd77-70f7-4d49-b601-67079cb94294": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 12.5, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9de1bd77-70f7-4d49-b601-67079cb94294", + "Name": null + }, + "16820ee6-9dc4-4324-9ad9-aa79becf0601": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "16820ee6-9dc4-4324-9ad9-aa79becf0601", + "Name": "W12x152", + "CellId": 250, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "98aed35a-480a-433f-a928-3fc6959e5d1b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 14.25, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "98aed35a-480a-433f-a928-3fc6959e5d1b", + "Name": null + }, + "443754f2-27ca-4e63-bf19-8cb8d5d4904a": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "443754f2-27ca-4e63-bf19-8cb8d5d4904a", + "Name": "W12x152", + "CellId": 251, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "41d16b7d-f2ea-43e8-88ef-b3092ca281c8": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 10.75, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "41d16b7d-f2ea-43e8-88ef-b3092ca281c8", + "Name": null + }, + "f419123f-0b3d-4f1c-8ccb-8f2b4899187e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "f419123f-0b3d-4f1c-8ccb-8f2b4899187e", + "Name": "W12x152", + "CellId": 251, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0ba689d3-f39e-4730-971d-8e91c1cb7eb0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 12.5, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0ba689d3-f39e-4730-971d-8e91c1cb7eb0", + "Name": null + }, + "5f3a62be-74a9-44df-952e-155390397ac1": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5f3a62be-74a9-44df-952e-155390397ac1", + "Name": "W12x152", + "CellId": 251, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "86327474-4649-4060-a0b2-c5ce9814ff95": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 14.25, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "86327474-4649-4060-a0b2-c5ce9814ff95", + "Name": null + }, + "a4577dba-fca3-4d3f-9ad9-bc7066cd86b8": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "a4577dba-fca3-4d3f-9ad9-bc7066cd86b8", + "Name": "W12x152", + "CellId": 252, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "cad17d14-1b7e-4416-add4-a3a5481e684a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 3.75, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cad17d14-1b7e-4416-add4-a3a5481e684a", + "Name": null + }, + "6c33a11b-c08b-4217-8e60-17b3e339d48f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "6c33a11b-c08b-4217-8e60-17b3e339d48f", + "Name": "W12x152", + "CellId": 252, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "566b174f-383b-4657-ab0a-10c8e42e1257": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 5.5, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "566b174f-383b-4657-ab0a-10c8e42e1257", + "Name": null + }, + "d76e5f68-d384-41ba-9338-acf5e565b26c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d76e5f68-d384-41ba-9338-acf5e565b26c", + "Name": "W12x152", + "CellId": 252, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4527cc90-6e18-437e-bf44-429dc97f1689": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -50.0, + "Z": 12.2 + }, + "End": { + "X": 7.25, + "Y": -45.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4527cc90-6e18-437e-bf44-429dc97f1689", + "Name": null + }, + "873f52f7-4d94-42c5-bef1-9e5724c0df8e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "873f52f7-4d94-42c5-bef1-9e5724c0df8e", + "Name": "W12x152", + "CellId": 253, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5253dbca-0546-4d16-81b1-7253886db9ee": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 3.75, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5253dbca-0546-4d16-81b1-7253886db9ee", + "Name": null + }, + "ae10f866-38ed-4026-a627-23218bada770": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ae10f866-38ed-4026-a627-23218bada770", + "Name": "W12x152", + "CellId": 253, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "72224995-fe0e-49f1-b734-437661ae909d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 5.5, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "72224995-fe0e-49f1-b734-437661ae909d", + "Name": null + }, + "9150b0a7-b2c0-42c8-8340-4675dee03140": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -50.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "9150b0a7-b2c0-42c8-8340-4675dee03140", + "Name": "W12x152", + "CellId": 253, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ee78cbd5-0c32-4f68-b68f-0ada1d5e7169": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -50.0, + "Z": 20.0 + }, + "End": { + "X": 7.25, + "Y": -45.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ee78cbd5-0c32-4f68-b68f-0ada1d5e7169", + "Name": null + }, + "2f4d8014-07ff-4c8d-a693-95aa68237191": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -48.333333333333336, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "2f4d8014-07ff-4c8d-a693-95aa68237191", + "Name": "W12x152", + "CellId": 254, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "411ef4f3-d050-4274-8ee6-69403f44208b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -48.333333333333336, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -48.333333333333336, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "411ef4f3-d050-4274-8ee6-69403f44208b", + "Name": null + }, + "d65f119f-2ba9-4532-82f4-1bb2e9859fea": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -46.666666666666664, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d65f119f-2ba9-4532-82f4-1bb2e9859fea", + "Name": "W12x152", + "CellId": 254, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "60af6a0d-44af-4395-96a7-c826f119faf9": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -46.666666666666664, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -46.666666666666664, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "60af6a0d-44af-4395-96a7-c826f119faf9", + "Name": null + }, + "ca5a7a69-0a2a-4ae9-9401-492b61a74f4b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -48.333333333333336, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "ca5a7a69-0a2a-4ae9-9401-492b61a74f4b", + "Name": "W12x152", + "CellId": 255, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "c4dbab9c-9eb3-4bdb-9e57-8b95f971d8f0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -48.333333333333336, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -48.333333333333336, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c4dbab9c-9eb3-4bdb-9e57-8b95f971d8f0", + "Name": null + }, + "149036c1-d7f1-4cec-973f-615b557f18e5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -46.666666666666664, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "149036c1-d7f1-4cec-973f-615b557f18e5", + "Name": "W12x152", + "CellId": 255, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "2d44e3b4-b048-473d-a459-7b683b3b9bcc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -46.666666666666664, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -46.666666666666664, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2d44e3b4-b048-473d-a459-7b683b3b9bcc", + "Name": null + }, + "a7017c19-bc35-45c7-867e-7f6043c6e936": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "a7017c19-bc35-45c7-867e-7f6043c6e936", + "Name": "W12x152", + "CellId": 256, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "41525725-aa89-4235-9ce5-c490b094ea9c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 24.625, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "41525725-aa89-4235-9ce5-c490b094ea9c", + "Name": null + }, + "3538d801-2160-48c7-bfbd-13a025c01ccd": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "3538d801-2160-48c7-bfbd-13a025c01ccd", + "Name": "W12x152", + "CellId": 256, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d1a72875-efe4-48c0-80e8-5e1589400419": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 26.25, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d1a72875-efe4-48c0-80e8-5e1589400419", + "Name": null + }, + "246e9b6d-c577-4de7-ba7d-2c67e09f0c0e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "246e9b6d-c577-4de7-ba7d-2c67e09f0c0e", + "Name": "W12x152", + "CellId": 256, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1be20819-dc87-4828-93d3-3b64ff7edf52": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 27.875, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1be20819-dc87-4828-93d3-3b64ff7edf52", + "Name": null + }, + "5e7f2f0b-ef5e-47fe-b656-e066d75351cc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5e7f2f0b-ef5e-47fe-b656-e066d75351cc", + "Name": "W12x152", + "CellId": 257, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5e57cd56-af58-4928-8f7d-95877cb417a6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 24.625, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5e57cd56-af58-4928-8f7d-95877cb417a6", + "Name": null + }, + "16f4c555-b3a4-433f-bae0-9a2606d44bc5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "16f4c555-b3a4-433f-bae0-9a2606d44bc5", + "Name": "W12x152", + "CellId": 257, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "413a0db5-cf3e-469e-aab7-57ec80fc6367": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 26.25, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "413a0db5-cf3e-469e-aab7-57ec80fc6367", + "Name": null + }, + "c313180a-d7d8-4886-abc8-ba83456a767d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "c313180a-d7d8-4886-abc8-ba83456a767d", + "Name": "W12x152", + "CellId": 257, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "97976d78-2b8f-42b2-8021-7fd11c9d442a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 27.875, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "97976d78-2b8f-42b2-8021-7fd11c9d442a", + "Name": null + }, + "d87f3bea-564d-4371-bdc6-3bd6eebd30c7": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d87f3bea-564d-4371-bdc6-3bd6eebd30c7", + "Name": "W12x152", + "CellId": 258, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "3813856e-47a5-4ec3-86e8-60bb9098a640": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 17.75, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "3813856e-47a5-4ec3-86e8-60bb9098a640", + "Name": null + }, + "1670dc25-da98-481b-ad39-2d88c2790003": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "1670dc25-da98-481b-ad39-2d88c2790003", + "Name": "W12x152", + "CellId": 258, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c8afeb62-331d-45f3-af3c-7054ec969ef0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 19.5, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c8afeb62-331d-45f3-af3c-7054ec969ef0", + "Name": null + }, + "156a8484-51bc-4d59-86b5-8e10ca0485fc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "156a8484-51bc-4d59-86b5-8e10ca0485fc", + "Name": "W12x152", + "CellId": 258, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "911bc420-2b57-4e6f-8288-ad88fb2780be": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 21.25, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "911bc420-2b57-4e6f-8288-ad88fb2780be", + "Name": null + }, + "6a1e5b5a-09cc-468b-95db-f1f020bdea60": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "6a1e5b5a-09cc-468b-95db-f1f020bdea60", + "Name": "W12x152", + "CellId": 259, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "bee6abd3-b6d1-4925-8545-b6d18874df51": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 17.75, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "bee6abd3-b6d1-4925-8545-b6d18874df51", + "Name": null + }, + "5c8c79b0-1335-49d7-b6bf-6a9e16da3efc": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5c8c79b0-1335-49d7-b6bf-6a9e16da3efc", + "Name": "W12x152", + "CellId": 259, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "ed8c49cc-c239-4679-85c7-78529eac0874": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 19.5, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "ed8c49cc-c239-4679-85c7-78529eac0874", + "Name": null + }, + "be7bf444-9662-4021-86bd-79de80328ec4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "be7bf444-9662-4021-86bd-79de80328ec4", + "Name": "W12x152", + "CellId": 259, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "0c94689a-4c67-4aa5-a603-bff5c59fe504": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 21.25, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "0c94689a-4c67-4aa5-a603-bff5c59fe504", + "Name": null + }, + "1bc744f5-79f3-4d6f-82af-f078d0e7f0ee": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "1bc744f5-79f3-4d6f-82af-f078d0e7f0ee", + "Name": "W12x152", + "CellId": 260, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "42bbaf5c-4116-4570-a43a-cf8e8883d965": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 10.75, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "42bbaf5c-4116-4570-a43a-cf8e8883d965", + "Name": null + }, + "048943f4-a51c-4616-9e13-7bdffac362fe": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "048943f4-a51c-4616-9e13-7bdffac362fe", + "Name": "W12x152", + "CellId": 260, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6b696faa-20c2-4947-a1b2-9ec79df578db": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 12.5, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6b696faa-20c2-4947-a1b2-9ec79df578db", + "Name": null + }, + "f972a672-4859-4bec-b0ef-b80822ee2b0e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "f972a672-4859-4bec-b0ef-b80822ee2b0e", + "Name": "W12x152", + "CellId": 260, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e79f37b5-a7c0-47ca-aa18-b02b781a7dba": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 14.25, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e79f37b5-a7c0-47ca-aa18-b02b781a7dba", + "Name": null + }, + "2cefb9a0-5285-4584-9dde-4f3162116893": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "2cefb9a0-5285-4584-9dde-4f3162116893", + "Name": "W12x152", + "CellId": 261, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6eff5319-96fc-4c64-8271-e75f566631a2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 10.75, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6eff5319-96fc-4c64-8271-e75f566631a2", + "Name": null + }, + "f8f4967a-5420-4e7d-af42-82e5bfa9dc89": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "f8f4967a-5420-4e7d-af42-82e5bfa9dc89", + "Name": "W12x152", + "CellId": 261, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "412fe3ef-5827-43c6-b24f-683966d143bc": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 12.5, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "412fe3ef-5827-43c6-b24f-683966d143bc", + "Name": null + }, + "5e357f0a-5698-4516-9ca6-b20637f8ecde": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5e357f0a-5698-4516-9ca6-b20637f8ecde", + "Name": "W12x152", + "CellId": 261, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "55da54ec-2cdf-4ce7-856c-1653bb4a193b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 14.25, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "55da54ec-2cdf-4ce7-856c-1653bb4a193b", + "Name": null + }, + "e76ca618-0f58-4388-94cc-757cefd6a01c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "e76ca618-0f58-4388-94cc-757cefd6a01c", + "Name": "W12x152", + "CellId": 262, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "4efb47d9-897a-48d7-9b8e-04b2d914e397": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 3.75, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "4efb47d9-897a-48d7-9b8e-04b2d914e397", + "Name": null + }, + "4c6ad451-6f4c-482a-a810-c820d4931e91": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "4c6ad451-6f4c-482a-a810-c820d4931e91", + "Name": "W12x152", + "CellId": 262, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "b68fba6a-0c19-40b2-a997-9e1a3d7cfe58": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 5.5, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b68fba6a-0c19-40b2-a997-9e1a3d7cfe58", + "Name": null + }, + "09d91bb1-e826-47c4-a20e-2f3799b3913f": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "09d91bb1-e826-47c4-a20e-2f3799b3913f", + "Name": "W12x152", + "CellId": 262, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "462f7acf-6443-480f-b047-4f1d18497669": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -55.0, + "Z": 12.2 + }, + "End": { + "X": 7.25, + "Y": -50.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "462f7acf-6443-480f-b047-4f1d18497669", + "Name": null + }, + "8fdfef3a-2092-431d-b3bc-3198971c5b3e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "8fdfef3a-2092-431d-b3bc-3198971c5b3e", + "Name": "W12x152", + "CellId": 263, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "d17dab8a-14c6-4ed8-a3b7-9a0eef759859": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 3.75, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "d17dab8a-14c6-4ed8-a3b7-9a0eef759859", + "Name": null + }, + "f033586d-b5cf-4305-bb33-2a90fdb2a009": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "f033586d-b5cf-4305-bb33-2a90fdb2a009", + "Name": "W12x152", + "CellId": 263, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5d57755c-039e-4eb7-a9d1-924b2f5db8a0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 5.5, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5d57755c-039e-4eb7-a9d1-924b2f5db8a0", + "Name": null + }, + "f379c24e-e809-4141-9bc7-99a3eb08c692": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b835b073-27e7-4087-a023-3557ecf67ad3", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -55.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "f379c24e-e809-4141-9bc7-99a3eb08c692", + "Name": "W12x152", + "CellId": 263, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "878a8c32-7829-48fb-baf5-3b72e91d0f2b": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -55.0, + "Z": 20.0 + }, + "End": { + "X": 7.25, + "Y": -50.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "878a8c32-7829-48fb-baf5-3b72e91d0f2b", + "Name": null + }, + "a9317422-7903-4d44-8b83-a69138a19246": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -53.333333333333336, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "a9317422-7903-4d44-8b83-a69138a19246", + "Name": "W12x152", + "CellId": 264, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "388f554e-f1db-487c-beed-eeaf1cdb91a6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -53.333333333333336, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -53.333333333333336, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "388f554e-f1db-487c-beed-eeaf1cdb91a6", + "Name": null + }, + "444e31a9-b442-4a6a-a1a0-0675734fd896": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -51.666666666666664, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "444e31a9-b442-4a6a-a1a0-0675734fd896", + "Name": "W12x152", + "CellId": 264, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "e36f8b53-d537-4d45-9d83-59c60c9948de": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -51.666666666666664, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -51.666666666666664, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e36f8b53-d537-4d45-9d83-59c60c9948de", + "Name": null + }, + "5229ba1f-76f0-4c56-a9b4-677e5f14fb7e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -53.333333333333336, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5229ba1f-76f0-4c56-a9b4-677e5f14fb7e", + "Name": "W12x152", + "CellId": 265, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "9b9bfc3c-69c5-47aa-becf-e3f44ecc38c3": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -53.333333333333336, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -53.333333333333336, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9b9bfc3c-69c5-47aa-becf-e3f44ecc38c3", + "Name": null + }, + "280ca4c5-fdab-41a3-96b2-5cfd62c3b52e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -51.666666666666664, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "280ca4c5-fdab-41a3-96b2-5cfd62c3b52e", + "Name": "W12x152", + "CellId": 265, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "b14eb587-28c2-4c27-a824-4f1cb8ecff44": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -51.666666666666664, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -51.666666666666664, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b14eb587-28c2-4c27-a824-4f1cb8ecff44", + "Name": null + }, + "bc5f6760-d8e3-457e-b263-3f27315c8bef": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "bc5f6760-d8e3-457e-b263-3f27315c8bef", + "Name": "W12x152", + "CellId": 266, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "2d76032c-5167-4eaf-b533-15a5d0a0e1d6": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 24.625, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "2d76032c-5167-4eaf-b533-15a5d0a0e1d6", + "Name": null + }, + "9ff6d3a4-4e1b-40a8-939e-ba9372e6b653": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "9ff6d3a4-4e1b-40a8-939e-ba9372e6b653", + "Name": "W12x152", + "CellId": 266, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "e4dff7bc-5d64-4d24-b65f-0bf31fa180a5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 26.25, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "e4dff7bc-5d64-4d24-b65f-0bf31fa180a5", + "Name": null + }, + "32e04c9f-57cd-4e0c-8d6b-bd931556ab1e": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "32e04c9f-57cd-4e0c-8d6b-bd931556ab1e", + "Name": "W12x152", + "CellId": 266, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "43a886f3-3a6c-4277-9d1b-b8631fc69730": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 27.875, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "43a886f3-3a6c-4277-9d1b-b8631fc69730", + "Name": null + }, + "d999c815-d4e7-41cd-a54a-97f0c6599679": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 24.625, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "d999c815-d4e7-41cd-a54a-97f0c6599679", + "Name": "W12x152", + "CellId": 267, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "14fac723-342d-4afe-9317-f567a2a76bab": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 24.625, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 24.625, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "14fac723-342d-4afe-9317-f567a2a76bab", + "Name": null + }, + "9883b48f-2ac0-4a0e-9798-c5367a0cb6ba": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 26.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "9883b48f-2ac0-4a0e-9798-c5367a0cb6ba", + "Name": "W12x152", + "CellId": 267, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "5f064f21-d776-4257-9c80-7fc752be4d20": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 26.25, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 26.25, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5f064f21-d776-4257-9c80-7fc752be4d20", + "Name": null + }, + "c3b789ee-6fbf-453c-8532-e907bd9c4c38": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 27.875, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "c3b789ee-6fbf-453c-8532-e907bd9c4c38", + "Name": "W12x152", + "CellId": 267, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "74dda031-834c-4a01-b4eb-89665cb5f69d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 27.875, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 27.875, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "74dda031-834c-4a01-b4eb-89665cb5f69d", + "Name": null + }, + "d59f2f4a-6f65-49af-8114-98769cbffcd0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d59f2f4a-6f65-49af-8114-98769cbffcd0", + "Name": "W12x152", + "CellId": 268, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1396e7b8-80d2-4c3b-9934-d3d9cce40d8d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 17.75, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1396e7b8-80d2-4c3b-9934-d3d9cce40d8d", + "Name": null + }, + "a97f33cd-19b1-492d-95c9-ff0b87f383f4": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "a97f33cd-19b1-492d-95c9-ff0b87f383f4", + "Name": "W12x152", + "CellId": 268, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "745ea2ae-e26b-4d69-b9c1-afaac1ea181c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 19.5, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "745ea2ae-e26b-4d69-b9c1-afaac1ea181c", + "Name": null + }, + "13a39e14-51fe-4535-a4ea-7ed181947930": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "13a39e14-51fe-4535-a4ea-7ed181947930", + "Name": "W12x152", + "CellId": 268, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "41027711-0a10-4e07-9646-77d1fd896100": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 21.25, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "41027711-0a10-4e07-9646-77d1fd896100", + "Name": null + }, + "0f78be49-af48-461e-89e5-df2a556d406b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 17.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "0f78be49-af48-461e-89e5-df2a556d406b", + "Name": "W12x152", + "CellId": 269, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1b1bf6d5-6bf3-4990-9bf5-712d4f1e771c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 17.75, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 17.75, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1b1bf6d5-6bf3-4990-9bf5-712d4f1e771c", + "Name": null + }, + "13a2150b-ed26-4c73-98e3-11bbf1594b96": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 19.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "13a2150b-ed26-4c73-98e3-11bbf1594b96", + "Name": "W12x152", + "CellId": 269, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "f2dd9e84-9745-4f50-8484-4243385f01b4": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 19.5, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 19.5, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "f2dd9e84-9745-4f50-8484-4243385f01b4", + "Name": null + }, + "a42d84c3-ce88-4459-aa43-1714ce5285c5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 21.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "a42d84c3-ce88-4459-aa43-1714ce5285c5", + "Name": "W12x152", + "CellId": 269, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "c9a59aa1-f9e8-447f-bbc4-526ed65e1567": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 21.25, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 21.25, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "c9a59aa1-f9e8-447f-bbc4-526ed65e1567", + "Name": null + }, + "71500eb7-44b5-410a-ac2e-821c46f2b0d5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "71500eb7-44b5-410a-ac2e-821c46f2b0d5", + "Name": "W12x152", + "CellId": 270, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "cefdf73a-a9eb-4207-820f-6c684f1ebaf5": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 10.75, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "cefdf73a-a9eb-4207-820f-6c684f1ebaf5", + "Name": null + }, + "748b51f4-b37d-41ab-a7f1-fb4c95f6b87b": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "748b51f4-b37d-41ab-a7f1-fb4c95f6b87b", + "Name": "W12x152", + "CellId": 270, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "97ea8fc6-866d-431f-80a3-9fb7874b6331": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 12.5, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "97ea8fc6-866d-431f-80a3-9fb7874b6331", + "Name": null + }, + "ba71dab4-412d-42c3-9da3-a3a2cf1c5d74": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "ba71dab4-412d-42c3-9da3-a3a2cf1c5d74", + "Name": "W12x152", + "CellId": 270, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "390e1daa-5313-48c4-90cc-85262a0adc2c": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 14.25, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "390e1daa-5313-48c4-90cc-85262a0adc2c", + "Name": null + }, + "eefcb350-7559-40bc-bd6b-03f49138a1e5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 10.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "eefcb350-7559-40bc-bd6b-03f49138a1e5", + "Name": "W12x152", + "CellId": 271, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fe9b5fe2-9171-4350-85fe-f165fe2e5b34": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 10.75, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 10.75, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fe9b5fe2-9171-4350-85fe-f165fe2e5b34", + "Name": null + }, + "bee869ce-3cba-44af-9b05-a52f1edd012c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 12.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "bee869ce-3cba-44af-9b05-a52f1edd012c", + "Name": "W12x152", + "CellId": 271, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "50f20255-5701-45d2-b9d4-d04a2972d03a": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 12.5, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 12.5, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "50f20255-5701-45d2-b9d4-d04a2972d03a", + "Name": null + }, + "8fb765da-b3f0-4794-afb5-bba89e4e5fb0": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 14.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "8fb765da-b3f0-4794-afb5-bba89e4e5fb0", + "Name": "W12x152", + "CellId": 271, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6c4afac9-cb8d-4d1c-8129-c23fbb5ecbc7": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 14.25, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 14.25, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6c4afac9-cb8d-4d1c-8129-c23fbb5ecbc7", + "Name": null + }, + "7d9f43ce-53b5-45f0-93d7-b79a14756407": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "7d9f43ce-53b5-45f0-93d7-b79a14756407", + "Name": "W12x152", + "CellId": 272, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6131b992-e1c1-483a-9a64-c33ebbc90dd0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 3.75, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6131b992-e1c1-483a-9a64-c33ebbc90dd0", + "Name": null + }, + "45ec6bd2-d8e0-427b-b22d-a2b4d4e87816": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "45ec6bd2-d8e0-427b-b22d-a2b4d4e87816", + "Name": "W12x152", + "CellId": 272, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "fcecb8b9-633f-4c1d-a66c-5333076ece4f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 5.5, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "fcecb8b9-633f-4c1d-a66c-5333076ece4f", + "Name": null + }, + "d15e65f4-7369-4487-870d-5cea884dde8d": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "d15e65f4-7369-4487-870d-5cea884dde8d", + "Name": "W12x152", + "CellId": 272, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1b6200e3-049b-40fa-a04c-c3aa421122b2": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -59.5, + "Z": 12.2 + }, + "End": { + "X": 7.25, + "Y": -55.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1b6200e3-049b-40fa-a04c-c3aa421122b2", + "Name": null + }, + "57cccd3c-36f6-43f4-aa93-b2a3c4ce3e8c": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 3.75, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "57cccd3c-36f6-43f4-aa93-b2a3c4ce3e8c", + "Name": "W12x152", + "CellId": 273, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "22e47cff-164b-4caf-9bdf-4fc5fd166054": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 3.75, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 3.75, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "22e47cff-164b-4caf-9bdf-4fc5fd166054", + "Name": null + }, + "66bedf0a-43ef-48b3-933f-d94499bd09a5": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 5.5, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "66bedf0a-43ef-48b3-933f-d94499bd09a5", + "Name": "W12x152", + "CellId": 273, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "1b4389c9-9d7f-431b-9174-360210e8aed1": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 5.5, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 5.5, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "1b4389c9-9d7f-431b-9174-360210e8aed1", + "Name": null + }, + "cf1fca3d-49e2-493f-8a0e-1acd16f9e469": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "b9a5c1bf-ec34-4289-94bf-bd23932fc8cb", + "Transform": { + "Matrix": { + "Components": [ + 0.0, + -1.0, + 0.0, + 7.25, + 1.0, + 0.0, + 0.0, + -59.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "cf1fca3d-49e2-493f-8a0e-1acd16f9e469", + "Name": "W12x152", + "CellId": 273, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": 0.0, + "Y": 1.0, + "Z": 0.0 + } + } + }, + "6feed7bc-0c30-4474-9390-68c7b3162f4d": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 7.25, + "Y": -59.5, + "Z": 20.0 + }, + "End": { + "X": 7.25, + "Y": -55.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "6feed7bc-0c30-4474-9390-68c7b3162f4d", + "Name": null + }, + "a01530e4-6aae-4644-b01c-73e9643425af": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -58.0, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "a01530e4-6aae-4644-b01c-73e9643425af", + "Name": "W12x152", + "CellId": 274, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "682f5afe-b727-495e-ad4e-0f1aee3d1b90": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -58.0, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -58.0, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "682f5afe-b727-495e-ad4e-0f1aee3d1b90", + "Name": null + }, + "82d7a3b5-934c-4816-9fa5-f232cbd03614": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -56.5, + 0.0, + 0.0, + 1.0, + 12.2 + ] + } + }, + "Id": "82d7a3b5-934c-4816-9fa5-f232cbd03614", + "Name": "W12x152", + "CellId": 274, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "9a51c66f-00b9-4e36-bf68-270d72af299f": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -56.5, + "Z": 12.2 + }, + "End": { + "X": 0.5, + "Y": -56.5, + "Z": 12.2 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "9a51c66f-00b9-4e36-bf68-270d72af299f", + "Name": null + }, + "cfe5a9d8-68e0-4c21-a9a1-6cf29eea4779": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -58.0, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "cfe5a9d8-68e0-4c21-a9a1-6cf29eea4779", + "Name": "W12x152", + "CellId": 275, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "b065c194-aae9-49f6-897b-0b818b83edba": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -58.0, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -58.0, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "b065c194-aae9-49f6-897b-0b818b83edba", + "Name": null + }, + "5e49c96a-87d6-440e-8b30-f005b23fe570": { + "discriminator": "Elements.ElementInstance", + "BaseDefinition": "671f5123-41bb-4c51-acf5-878316d496f4", + "Transform": { + "Matrix": { + "Components": [ + -1.0, + 0.0, + 0.0, + 2.0, + 0.0, + -1.0, + 0.0, + -56.5, + 0.0, + 0.0, + 1.0, + 20.0 + ] + } + }, + "Id": "5e49c96a-87d6-440e-8b30-f005b23fe570", + "Name": "W12x152", + "CellId": 275, + "LabelConfiguration": { + "discriminator": "Elements.LabelConfiguration", + "Color": { + "Red": 1.0, + "Green": 1.0, + "Blue": 1.0, + "Alpha": 0.0 + }, + "Offset": { + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + }, + "Direction": { + "X": -1.0, + "Y": 0.0, + "Z": 0.0 + } + } + }, + "5251f782-70ab-48e9-b27f-16ff7f4e05d0": { + "discriminator": "Elements.ModelCurve", + "Curve": { + "discriminator": "Elements.Geometry.Line", + "Start": { + "X": 2.0, + "Y": -56.5, + "Z": 20.0 + }, + "End": { + "X": 0.5, + "Y": -56.5, + "Z": 20.0 + } + }, + "Transform": { + "Matrix": { + "Components": [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0 + ] + } + }, + "Material": "0dd0b2da-f4ca-47c5-a50e-6d4f8b044c36", + "Representation": null, + "IsElementDefinition": false, + "Id": "5251f782-70ab-48e9-b27f-16ff7f4e05d0", + "Name": null + }, + "8ee6a4e1-c16e-4107-9d52-d829cd99f9d4": { + "discriminator": "Elements.ViewScope", + "Bounding Box": { + "discriminator": "Elements.Geometry.BBox3", + "Min": { + "X": 0.5, + "Y": -59.5, + "Z": -1.0 + }, + "Max": { + "X": 29.5, + "Y": -0.5, + "Z": 1.0 + } + }, + "Camera": { + "discriminator": "Elements.Camera", + "angle": { + "X": 0.0, + "Y": 0.0, + "Z": -1.0 + }, + "projection": "orthographic" + }, + "Inclusive": false, + "Id": "8ee6a4e1-c16e-4107-9d52-d829cd99f9d4", + "Name": "Structure elevation 0" + }, + "28c13cc4-c6a9-4c09-a188-6393d21c8567": { + "discriminator": "Elements.ViewScope", + "Bounding Box": { + "discriminator": "Elements.Geometry.BBox3", + "Min": { + "X": 0.5, + "Y": -59.5, + "Z": 3.5 + }, + "Max": { + "X": 29.5, + "Y": -0.5, + "Z": 5.5 + } + }, + "Camera": { + "discriminator": "Elements.Camera", + "angle": { + "X": 0.0, + "Y": 0.0, + "Z": -1.0 + }, + "projection": "orthographic" + }, + "Inclusive": false, + "Id": "28c13cc4-c6a9-4c09-a188-6393d21c8567", + "Name": "Structure elevation 4.5" + }, + "00ee9017-7840-4190-89fc-13099697449d": { + "discriminator": "Elements.ViewScope", + "Bounding Box": { + "discriminator": "Elements.Geometry.BBox3", + "Min": { + "X": 0.5, + "Y": -59.5, + "Z": 7.35 + }, + "Max": { + "X": 29.5, + "Y": -0.5, + "Z": 9.35 + } + }, + "Camera": { + "discriminator": "Elements.Camera", + "angle": { + "X": 0.0, + "Y": 0.0, + "Z": -1.0 + }, + "projection": "orthographic" + }, + "Inclusive": false, + "Id": "00ee9017-7840-4190-89fc-13099697449d", + "Name": "Structure elevation 8.35" + }, + "47a069c2-7e15-4f66-a4d0-9b09e74492fc": { + "discriminator": "Elements.ViewScope", + "Bounding Box": { + "discriminator": "Elements.Geometry.BBox3", + "Min": { + "X": 0.5, + "Y": -59.5, + "Z": 11.2 + }, + "Max": { + "X": 29.5, + "Y": -0.5, + "Z": 13.2 + } + }, + "Camera": { + "discriminator": "Elements.Camera", + "angle": { + "X": 0.0, + "Y": 0.0, + "Z": -1.0 + }, + "projection": "orthographic" + }, + "Inclusive": false, + "Id": "47a069c2-7e15-4f66-a4d0-9b09e74492fc", + "Name": "Structure elevation 12.2" + }, + "8f602a08-fa4f-4c4b-a208-728c0c39ba41": { + "discriminator": "Elements.ViewScope", + "Bounding Box": { + "discriminator": "Elements.Geometry.BBox3", + "Min": { + "X": 0.5, + "Y": -59.5, + "Z": 19.0 + }, + "Max": { + "X": 29.5, + "Y": -0.5, + "Z": 21.0 + } + }, + "Camera": { + "discriminator": "Elements.Camera", + "angle": { + "X": 0.0, + "Y": 0.0, + "Z": -1.0 + }, + "projection": "orthographic" + }, + "Inclusive": false, + "Id": "8f602a08-fa4f-4c4b-a208-728c0c39ba41", + "Name": "Structure elevation 20" + } + } +} \ No newline at end of file From 99f6143231b334c805af34bb17be5d5424a9628b Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Wed, 13 Jul 2022 14:24:29 -0700 Subject: [PATCH 119/150] Convert to debug statements. --- Elements/src/Serialization/glTF/GltfExtensions.cs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Elements/src/Serialization/glTF/GltfExtensions.cs b/Elements/src/Serialization/glTF/GltfExtensions.cs index a72c2af4b..c22397bd8 100644 --- a/Elements/src/Serialization/glTF/GltfExtensions.cs +++ b/Elements/src/Serialization/glTF/GltfExtensions.cs @@ -128,7 +128,7 @@ public static byte[] ToGlTF(this Model model, bool drawEdges = false, bool merge { var sw = new Stopwatch(); var gltf = InitializeGlTF(model, out var buffers, out _, drawEdges, mergeVertices); - Console.WriteLine($"{sw.ElapsedMilliseconds}ms for initializing the glTF"); + Debug.WriteLine($"{sw.ElapsedMilliseconds}ms for initializing the glTF"); sw.Restart(); if (gltf == null) @@ -136,7 +136,7 @@ public static byte[] ToGlTF(this Model model, bool drawEdges = false, bool merge return null; } var mergedBuffer = gltf.CombineBufferAndFixRefs(buffers.ToArray(buffers.Count)); - Console.WriteLine($"{sw.ElapsedMilliseconds}ms for merging the buffers"); + Debug.WriteLine($"{sw.ElapsedMilliseconds}ms for merging the buffers"); sw.Restart(); byte[] bytes; @@ -145,7 +145,7 @@ public static byte[] ToGlTF(this Model model, bool drawEdges = false, bool merge gltf.SaveBinaryModel(mergedBuffer, ms); bytes = ms.ToArray(); } - Console.WriteLine($"{sw.ElapsedMilliseconds}ms for saving the binary model"); + Debug.WriteLine($"{sw.ElapsedMilliseconds}ms for saving the binary model"); sw.Restart(); return bytes; @@ -982,7 +982,7 @@ internal static Gltf InitializeGlTF(Model model, var nodeElementMap = new Dictionary(); var meshTransformMap = new Dictionary(); - Console.WriteLine($"{sw.ElapsedMilliseconds}ms for initializing the glTF"); + Debug.WriteLine($"{sw.ElapsedMilliseconds}ms for initializing."); sw.Restart(); foreach (var e in elements) @@ -1024,6 +1024,10 @@ internal static Gltf InitializeGlTF(Model model, errors.Add(new ElementError(e.Id, ex)); } } + + Debug.WriteLine($"glTF: {sw.ElapsedMilliseconds}ms for gathering element geometry."); + sw.Restart(); + if (allBuffers.Sum(b => b.Count()) + buffer.Count == 0 && lights.Count == 0) { return null; @@ -1078,7 +1082,7 @@ internal static Gltf InitializeGlTF(Model model, allBuffers[0] = buffer.ToArray(buffer.Count); - Console.WriteLine($"{sw.ElapsedMilliseconds}ms for finalizing the glTF"); + Debug.WriteLine($"glTF: {sw.ElapsedMilliseconds}ms for finalizing."); sw.Restart(); return gltf; From 7f8fa2003a6f1ca88f11fab08a24e632a6e6c812 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Wed, 13 Jul 2022 14:25:44 -0700 Subject: [PATCH 120/150] Convert to debug statements. --- Elements.Wasm/ElementsAPI.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Elements.Wasm/ElementsAPI.cs b/Elements.Wasm/ElementsAPI.cs index 6ce782f04..c2fac1523 100644 --- a/Elements.Wasm/ElementsAPI.cs +++ b/Elements.Wasm/ElementsAPI.cs @@ -34,10 +34,10 @@ public static Task ModelToGlbBytes(string json) var sw = new Stopwatch(); sw.Start(); var model = Model.GeometricElementModelFromJson(json); - Console.WriteLine($"{sw.ElapsedMilliseconds}ms for creating the model from json."); + Debug.WriteLine($"{sw.ElapsedMilliseconds}ms for creating the model from json."); sw.Restart(); var result = Task.FromResult(model.ToGlTF()); - Console.WriteLine($"{sw.ElapsedMilliseconds}ms for creating the glb from json."); + Debug.WriteLine($"{sw.ElapsedMilliseconds}ms for creating the glb from json."); return result; } From 3cd35c1c7562f511518c4d16b15b22d9cff90772 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Wed, 13 Jul 2022 15:00:36 -0700 Subject: [PATCH 121/150] Invalidate after deploy. --- Elements.Wasm/deploy.sh | 39 +++++++++------------------------------ 1 file changed, 9 insertions(+), 30 deletions(-) diff --git a/Elements.Wasm/deploy.sh b/Elements.Wasm/deploy.sh index 1a0e67d57..694ace300 100755 --- a/Elements.Wasm/deploy.sh +++ b/Elements.Wasm/deploy.sh @@ -1,48 +1,27 @@ #!/usr/bin/env bash -configuration='debug' +source='./bin/Release/net6.0/wwwroot/_framework' -while getopts c: flag -do - case "${flag}" in - c) configuration=${OPTARG};; - esac -done +echo "Building the app..." +dotnet publish -c release -if [ $configuration == 'release' ] -then - source='./bin/Release/net6.0/wwwroot/_framework' -elif [ $configuration == 'debug' ] -then - source='./bin/Debug/net6.0/wwwroot/_framework' -else - echo "The configuration, $configuration, is invalid. Only 'release' and 'debug' are supported." - exit -fi - -# echo "Building the app in $configuration configuration." -# if [ $configuration == 'release' ] -# then -# dotnet publish -c release -# elif [ $configuration == 'debug' ] -# then -# dotnet build -c release -# fi - -echo 'Echo creating deploy directory.' +echo 'Creating deploy directory...' rm -r deploy mkdir deploy mkdir deploy/elements mkdir deploy/elements/_framework -echo "Copying assets from $source" +echo "Copying assets from $source..." rsync -av $source deploy/elements cp ./wwwroot/elements.js deploy/elements/elements.js cp ./wwwroot/index.html deploy/index.html -echo "Uploading assets to s3" +echo "Uploading assets to s3..." aws s3 sync "$source" s3://elements-wasm/ --exclude "*.gz" --exclude "*.br" +echo "Creating an invalidation..." +aws cloudfront create-invalidation --distribution-id E19YQ16H2KTDNU --paths "/*" + # echo 'Running the test application.' # cd deploy # python3 -m http.server \ No newline at end of file From 7ee4ff2cc59e95a64ae620bea88fac30da2132a0 Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Wed, 13 Jul 2022 15:00:46 -0700 Subject: [PATCH 122/150] Mode debug statements. --- Elements/src/Model.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Elements/src/Model.cs b/Elements/src/Model.cs index f91e38273..a2073c9da 100644 --- a/Elements/src/Model.cs +++ b/Elements/src/Model.cs @@ -278,7 +278,7 @@ public static Model GeometricElementModelFromJson(string json) var elementsElement = root.GetProperty("Elements"); var transform = JsonSerializer.Deserialize(root.GetProperty("Transform")); - Console.WriteLine($"{sw.ElapsedMilliseconds}ms for parsing json"); + Debug.WriteLine($"JSON: {sw.ElapsedMilliseconds}ms for parsing json"); sw.Restart(); foreach (var element in elementsElement.EnumerateObject()) @@ -395,11 +395,11 @@ public static Model GeometricElementModelFromJson(string json) elements.Add(id, e); resolver.AddReference(id.ToString(), e); } - - // Console.WriteLine($"{sw.ElapsedMilliseconds}ms for deserializing {id}:{discriminator}"); - // sw.Restart(); } + Debug.WriteLine($"JSON: {sw.ElapsedMilliseconds}ms for deserializing all elements."); + sw.Restart(); + var model = new Model(transform, elements); return model; } From 42b0f7a9dafbd9d72276fd548abb45fdbcefb7de Mon Sep 17 00:00:00 2001 From: Ian Keough Date: Wed, 13 Jul 2022 15:11:56 -0700 Subject: [PATCH 123/150] Make the local example work. --- Elements.Wasm/wwwroot/index.html | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/Elements.Wasm/wwwroot/index.html b/Elements.Wasm/wwwroot/index.html index a761b3851..2e7aba0f5 100644 --- a/Elements.Wasm/wwwroot/index.html +++ b/Elements.Wasm/wwwroot/index.html @@ -18,8 +18,8 @@ - - + + - + +